From 212830bf3b9f8c79ebb9904fb05803e67ab2e574 Mon Sep 17 00:00:00 2001 From: justinfargnoli <34139864+justinfargnoli@users.noreply.github.com> Date: Fri, 5 Dec 2025 09:26:09 +0800 Subject: [PATCH 1/3] pre-commit: PR167771 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..bdcc08b00fd 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/167771 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME="" From b903eaacfae811fad9b69d106eccfcd982b7779b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 01:43:08 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/assimp/optimized/zip.ll | 246 +++--- bench/box2d/optimized/world.ll | 42 +- bench/ceres/optimized/block_sparse_matrix.ll | 34 +- bench/ceres/optimized/cgnr_solver.ll | 4 +- bench/cmake/optimized/cmComputeLinkDepends.ll | 624 +++++++------- bench/duckdb/optimized/fastcover.ll | 44 +- bench/duckdb/optimized/miniz.ll | 220 ++--- bench/faiss/optimized/Clustering.ll | 424 +++++----- bench/g2o/optimized/edge_project_xyz.ll | 200 ++--- bench/g2o/optimized/optimizable_graph.ll | 40 +- .../optimization_algorithm_dogleg.ll | 254 +++--- bench/g2o/optimized/slam2d_linear.ll | 112 +-- bench/g2o/optimized/solver_dense.ll | 32 +- bench/hdf5/optimized/sio_perf.ll | 66 +- bench/libigl/optimized/eigs.ll | 194 ++--- bench/llvm/optimized/ASTReader.ll | 26 +- bench/llvm/optimized/MsgPackDocument.ll | 328 ++++---- bench/meshlab/optimized/edit_align.ll | 28 +- bench/meshlab/optimized/miniz.ll | 60 +- bench/meshlab/optimized/shell.ll | 308 +++---- bench/nlohmann_json/optimized/diag_on.ll | 2 +- bench/nori/optimized/accel.ll | 350 ++++---- bench/ockam-rs/optimized/1411u8drt798uxi8.ll | 12 +- bench/open3d/optimized/Geometry3D.ll | 10 +- bench/open3d/optimized/VoxelGrid.ll | 456 ++++++----- bench/opencv/optimized/gfluidbackend.ll | 54 +- bench/openvdb/optimized/Prune.ll | 762 ++++++++--------- bench/pbrt-v4/optimized/integrator.ll | 8 +- bench/pbrt-v4/optimized/integrators.ll | 24 +- bench/php/optimized/zip.ll | 36 +- bench/proj/optimized/adams.ll | 192 ++--- bench/proj/optimized/airocean.ll | 314 +++---- bench/proj/optimized/datum_set.ll | 358 ++++---- bench/proj/optimized/geod_set.ll | 306 +++---- bench/proj/optimized/helmert.ll | 70 +- bench/proj/optimized/horner.ll | 50 +- bench/proj/optimized/info.ll | 252 +++--- bench/proj/optimized/param.ll | 172 ++-- bench/proj/optimized/tmerc.ll | 116 +-- bench/quickjs/optimized/qjsc.ll | 80 +- bench/quickjs/optimized/quickjs-libc.ll | 150 ++-- bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll | 16 +- bench/typst-rs/optimized/2i78fvbm4wocuesi.ll | 765 +++++++++--------- bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll | 138 ++-- .../wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll | 426 +++++----- 45 files changed, 4181 insertions(+), 4224 deletions(-) diff --git a/bench/assimp/optimized/zip.ll b/bench/assimp/optimized/zip.ll index 9693db70ad8..b5419e0ea7f 100644 --- a/bench/assimp/optimized/zip.ll +++ b/bench/assimp/optimized/zip.ll @@ -12251,8 +12251,8 @@ mz_zip_set_error.exit271: ; preds = %132 143: ; preds = %132 %144 = call i32 @llvm.umax.i32(i32 %78, i32 %86) - %.not430 = icmp eq i32 %144, 0 - br i1 %.not430, label %154, label %145 + %.not428 = icmp eq i32 %144, 0 + br i1 %.not428, label %154, label %145 145: ; preds = %143 %146 = zext nneg i32 %144 to i64 @@ -12267,7 +12267,7 @@ mz_zip_set_error.exit271: ; preds = %132 mz_zip_set_error.exit269: ; preds = %145 %153 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 16, ptr %153, align 4 - br label %.thread399 + br label %.thread397 154: ; preds = %145, %143 %.sroa.0.1.ph = phi ptr [ %151, %145 ], [ null, %143 ] @@ -12284,7 +12284,7 @@ mz_zip_set_error.exit269: ; preds = %145 mz_zip_set_error.exit267: ; preds = %155 %159 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 20, ptr %159, align 4 - br label %.thread399 + br label %.thread397 160: ; preds = %155 %bcmp = call i32 @bcmp(ptr nonnull %129, ptr %.sroa.0.1.ph, i64 %128) @@ -12294,17 +12294,17 @@ mz_zip_set_error.exit267: ; preds = %155 mz_zip_set_error.exit265: ; preds = %160 %161 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 30, ptr %161, align 4 - br label %.thread399 + br label %.thread397 162: ; preds = %160, %154 %.not233 = icmp eq i32 %86, 0 - br i1 %.not233, label %.thread422, label %163 + br i1 %.not233, label %.thread420, label %163 163: ; preds = %162 %164 = icmp eq i64 %99, 4294967295 %165 = icmp eq i64 %112, 4294967295 %or.cond8 = select i1 %164, i1 true, i1 %165 - br i1 %or.cond8, label %166, label %.thread422 + br i1 %or.cond8, label %166, label %.thread420 166: ; preds = %163 %167 = load ptr, ptr %19, align 8 @@ -12316,7 +12316,7 @@ mz_zip_set_error.exit265: ; preds = %160 mz_zip_set_error.exit263: ; preds = %166 %170 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 20, ptr %170, align 4 - br label %.thread399 + br label %.thread397 .preheader: ; preds = %166, %209 %.0209 = phi ptr [ %211, %209 ], [ %.sroa.0.1.ph, %166 ] @@ -12327,7 +12327,7 @@ mz_zip_set_error.exit263: ; preds = %166 mz_zip_set_error.exit261: ; preds = %.preheader %172 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 9, ptr %172, align 4 - br label %.thread399 + br label %.thread397 173: ; preds = %.preheader %174 = getelementptr inbounds nuw i8, ptr %.0209, i64 2 @@ -12346,7 +12346,7 @@ mz_zip_set_error.exit261: ; preds = %.preheader mz_zip_set_error.exit259: ; preds = %173 %185 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 9, ptr %185, align 4 - br label %.thread399 + br label %.thread397 186: ; preds = %173 %187 = load i16, ptr %.0209, align 1 @@ -12360,7 +12360,7 @@ mz_zip_set_error.exit259: ; preds = %173 mz_zip_set_error.exit257: ; preds = %189 %191 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 9, ptr %191, align 4 - br label %.thread399 + br label %.thread397 192: ; preds = %189 %193 = getelementptr inbounds nuw i8, ptr %.0209, i64 4 @@ -12379,16 +12379,16 @@ mz_zip_set_error.exit257: ; preds = %189 %206 = zext i32 %205 to i64 %207 = shl nuw i64 %206, 32 %208 = or disjoint i64 %207, %203 - br label %.thread422 + br label %.thread420 209: ; preds = %186 %210 = zext nneg i32 %183 to i64 %211 = getelementptr inbounds nuw i8, ptr %.0209, i64 %210 %212 = sub i32 %.0207, %183 %.not235 = icmp eq i32 %212, 0 - br i1 %.not235, label %.thread422, label %.preheader + br i1 %.not235, label %.thread420, label %.preheader -.thread422: ; preds = %209, %192, %163, %162 +.thread420: ; preds = %209, %192, %163, %162 %.0198 = phi i64 [ %112, %163 ], [ %112, %162 ], [ %200, %192 ], [ %112, %209 ] %.0193 = phi i64 [ %99, %163 ], [ %99, %162 ], [ %208, %192 ], [ %99, %209 ] %213 = phi i1 [ false, %163 ], [ false, %162 ], [ true, %192 ], [ false, %209 ] @@ -12400,7 +12400,7 @@ mz_zip_set_error.exit257: ; preds = %189 %or.cond12 = select i1 %or.cond10, i1 true, i1 %217 br i1 %or.cond12, label %331, label %218 -218: ; preds = %.thread422 +218: ; preds = %.thread420 call void @llvm.lifetime.start.p0(ptr nonnull %8) %219 = getelementptr inbounds nuw i8, ptr %11, i64 100 %220 = load i32, ptr %219, align 4 @@ -12411,7 +12411,7 @@ mz_zip_set_error.exit257: ; preds = %189 %225 = select i1 %222, i64 24, i64 16 %226 = call i64 %223(ptr noundef %224, i64 noundef %139, ptr noundef nonnull %8, i64 noundef %225) #36 %.not236 = icmp eq i64 %226, %225 - br i1 %.not236, label %227, label %.thread428 + br i1 %.not236, label %227, label %.thread426 227: ; preds = %218 %228 = load i32, ptr %8, align 16 @@ -12452,49 +12452,49 @@ mz_zip_set_error.exit257: ; preds = %189 %.sroa.gep.sroa.gep360.val = load i8, ptr %.sroa.gep.sroa.gep360, align 8 %253 = select i1 %229, i8 %.sroa.gep.sroa.gep360.val, i8 %.sroa.gep.val %254 = zext i8 %253 to i64 - %.sroa.gep460 = getelementptr inbounds nuw i8, ptr %8, i64 9 - %.sroa.gep460.val = load i8, ptr %.sroa.gep460, align 1 - %.sroa.gep.sroa.gep369.val513 = load i8, ptr %.sroa.gep.sroa.gep369, align 1 - %255 = select i1 %229, i8 %.sroa.gep460.val, i8 %.sroa.gep.sroa.gep369.val513 + %.sroa.gep458 = getelementptr inbounds nuw i8, ptr %8, i64 9 + %.sroa.gep458.val = load i8, ptr %.sroa.gep458, align 1 + %.sroa.gep.sroa.gep369.val511 = load i8, ptr %.sroa.gep.sroa.gep369, align 1 + %255 = select i1 %229, i8 %.sroa.gep458.val, i8 %.sroa.gep.sroa.gep369.val511 %256 = zext i8 %255 to i64 %257 = shl nuw nsw i64 %256, 8 %258 = or disjoint i64 %257, %254 - %.sroa.gep462 = getelementptr inbounds nuw i8, ptr %8, i64 10 - %.sroa.gep462.val = load i8, ptr %.sroa.gep462, align 2 - %.sroa.gep.sroa.gep366.val514 = load i8, ptr %.sroa.gep.sroa.gep366, align 2 - %259 = select i1 %229, i8 %.sroa.gep462.val, i8 %.sroa.gep.sroa.gep366.val514 + %.sroa.gep460 = getelementptr inbounds nuw i8, ptr %8, i64 10 + %.sroa.gep460.val = load i8, ptr %.sroa.gep460, align 2 + %.sroa.gep.sroa.gep366.val512 = load i8, ptr %.sroa.gep.sroa.gep366, align 2 + %259 = select i1 %229, i8 %.sroa.gep460.val, i8 %.sroa.gep.sroa.gep366.val512 %260 = zext i8 %259 to i64 %261 = shl nuw nsw i64 %260, 16 %262 = or disjoint i64 %258, %261 - %.sroa.gep464 = getelementptr inbounds nuw i8, ptr %8, i64 11 - %.sroa.gep464.val = load i8, ptr %.sroa.gep464, align 1 - %.sroa.gep.sroa.gep363.val515 = load i8, ptr %.sroa.gep.sroa.gep363, align 1 - %263 = select i1 %229, i8 %.sroa.gep464.val, i8 %.sroa.gep.sroa.gep363.val515 + %.sroa.gep462 = getelementptr inbounds nuw i8, ptr %8, i64 11 + %.sroa.gep462.val = load i8, ptr %.sroa.gep462, align 1 + %.sroa.gep.sroa.gep363.val513 = load i8, ptr %.sroa.gep.sroa.gep363, align 1 + %263 = select i1 %229, i8 %.sroa.gep462.val, i8 %.sroa.gep.sroa.gep363.val513 %264 = zext i8 %263 to i64 %265 = shl nuw nsw i64 %264, 24 %266 = or disjoint i64 %262, %265 - %.sroa.gep466 = getelementptr inbounds nuw i8, ptr %8, i64 12 - %.sroa.gep466.val = load i8, ptr %.sroa.gep466, align 4 - %.sroa.gep.sroa.gep360.val516 = load i8, ptr %.sroa.gep.sroa.gep360, align 8 - %267 = select i1 %229, i8 %.sroa.gep466.val, i8 %.sroa.gep.sroa.gep360.val516 + %.sroa.gep464 = getelementptr inbounds nuw i8, ptr %8, i64 12 + %.sroa.gep464.val = load i8, ptr %.sroa.gep464, align 4 + %.sroa.gep.sroa.gep360.val514 = load i8, ptr %.sroa.gep.sroa.gep360, align 8 + %267 = select i1 %229, i8 %.sroa.gep464.val, i8 %.sroa.gep.sroa.gep360.val514 %268 = zext i8 %267 to i64 - %.sroa.gep468 = getelementptr inbounds nuw i8, ptr %8, i64 13 - %.sroa.gep468.val = load i8, ptr %.sroa.gep468, align 1 - %.sroa.gep460.val517 = load i8, ptr %.sroa.gep460, align 1 - %269 = select i1 %229, i8 %.sroa.gep468.val, i8 %.sroa.gep460.val517 + %.sroa.gep466 = getelementptr inbounds nuw i8, ptr %8, i64 13 + %.sroa.gep466.val = load i8, ptr %.sroa.gep466, align 1 + %.sroa.gep458.val515 = load i8, ptr %.sroa.gep458, align 1 + %269 = select i1 %229, i8 %.sroa.gep466.val, i8 %.sroa.gep458.val515 %270 = zext i8 %269 to i64 br i1 %or.cond14, label %271, label %314 271: ; preds = %227 - %.sroa.gep470 = getelementptr inbounds nuw i8, ptr %8, i64 14 - %.sroa.gep470.val = load i8, ptr %.sroa.gep470, align 2 - %.sroa.gep462.val518 = load i8, ptr %.sroa.gep462, align 2 - %272 = select i1 %229, i8 %.sroa.gep470.val, i8 %.sroa.gep462.val518 + %.sroa.gep468 = getelementptr inbounds nuw i8, ptr %8, i64 14 + %.sroa.gep468.val = load i8, ptr %.sroa.gep468, align 2 + %.sroa.gep460.val516 = load i8, ptr %.sroa.gep460, align 2 + %272 = select i1 %229, i8 %.sroa.gep468.val, i8 %.sroa.gep460.val516 %273 = zext i8 %272 to i64 - %.sroa.gep472 = getelementptr inbounds nuw i8, ptr %8, i64 15 - %.sroa.gep472.val = load i8, ptr %.sroa.gep472, align 1 - %.sroa.gep464.val519 = load i8, ptr %.sroa.gep464, align 1 - %274 = select i1 %229, i8 %.sroa.gep472.val, i8 %.sroa.gep464.val519 + %.sroa.gep470 = getelementptr inbounds nuw i8, ptr %8, i64 15 + %.sroa.gep470.val = load i8, ptr %.sroa.gep470, align 1 + %.sroa.gep462.val517 = load i8, ptr %.sroa.gep462, align 1 + %274 = select i1 %229, i8 %.sroa.gep470.val, i8 %.sroa.gep462.val517 %275 = zext i8 %274 to i64 %276 = shl nuw i64 %275, 56 %277 = shl nuw nsw i64 %273, 48 @@ -12504,48 +12504,48 @@ mz_zip_set_error.exit257: ; preds = %189 %281 = or disjoint i64 %280, %277 %282 = or disjoint i64 %281, %276 %283 = or disjoint i64 %282, %266 - %.sroa.gep474 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %.sroa.gep474.val = load i8, ptr %.sroa.gep474, align 16 - %.sroa.gep466.val520 = load i8, ptr %.sroa.gep466, align 4 - %284 = select i1 %229, i8 %.sroa.gep474.val, i8 %.sroa.gep466.val520 + %.sroa.gep472 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %.sroa.gep472.val = load i8, ptr %.sroa.gep472, align 16 + %.sroa.gep464.val518 = load i8, ptr %.sroa.gep464, align 4 + %284 = select i1 %229, i8 %.sroa.gep472.val, i8 %.sroa.gep464.val518 %285 = zext i8 %284 to i64 - %.sroa.gep476 = getelementptr inbounds nuw i8, ptr %8, i64 17 - %.sroa.gep476.val = load i8, ptr %.sroa.gep476, align 1 - %.sroa.gep468.val521 = load i8, ptr %.sroa.gep468, align 1 - %286 = select i1 %229, i8 %.sroa.gep476.val, i8 %.sroa.gep468.val521 + %.sroa.gep474 = getelementptr inbounds nuw i8, ptr %8, i64 17 + %.sroa.gep474.val = load i8, ptr %.sroa.gep474, align 1 + %.sroa.gep466.val519 = load i8, ptr %.sroa.gep466, align 1 + %286 = select i1 %229, i8 %.sroa.gep474.val, i8 %.sroa.gep466.val519 %287 = zext i8 %286 to i64 %288 = shl nuw nsw i64 %287, 8 - %.sroa.gep478 = getelementptr inbounds nuw i8, ptr %8, i64 18 - %.sroa.gep478.val = load i8, ptr %.sroa.gep478, align 2 - %.sroa.gep470.val522 = load i8, ptr %.sroa.gep470, align 2 - %289 = select i1 %229, i8 %.sroa.gep478.val, i8 %.sroa.gep470.val522 + %.sroa.gep476 = getelementptr inbounds nuw i8, ptr %8, i64 18 + %.sroa.gep476.val = load i8, ptr %.sroa.gep476, align 2 + %.sroa.gep468.val520 = load i8, ptr %.sroa.gep468, align 2 + %289 = select i1 %229, i8 %.sroa.gep476.val, i8 %.sroa.gep468.val520 %290 = zext i8 %289 to i64 %291 = shl nuw nsw i64 %290, 16 - %.sroa.gep480 = getelementptr inbounds nuw i8, ptr %8, i64 19 - %.sroa.gep480.val = load i8, ptr %.sroa.gep480, align 1 - %.sroa.gep472.val523 = load i8, ptr %.sroa.gep472, align 1 - %292 = select i1 %229, i8 %.sroa.gep480.val, i8 %.sroa.gep472.val523 + %.sroa.gep478 = getelementptr inbounds nuw i8, ptr %8, i64 19 + %.sroa.gep478.val = load i8, ptr %.sroa.gep478, align 1 + %.sroa.gep470.val521 = load i8, ptr %.sroa.gep470, align 1 + %292 = select i1 %229, i8 %.sroa.gep478.val, i8 %.sroa.gep470.val521 %293 = zext i8 %292 to i64 %294 = shl nuw nsw i64 %293, 24 - %.sroa.gep482 = getelementptr inbounds nuw i8, ptr %8, i64 20 - %.sroa.gep482.val = load i8, ptr %.sroa.gep482, align 4 - %.sroa.gep474.val524 = load i8, ptr %.sroa.gep474, align 16 - %295 = select i1 %229, i8 %.sroa.gep482.val, i8 %.sroa.gep474.val524 + %.sroa.gep480 = getelementptr inbounds nuw i8, ptr %8, i64 20 + %.sroa.gep480.val = load i8, ptr %.sroa.gep480, align 4 + %.sroa.gep472.val522 = load i8, ptr %.sroa.gep472, align 16 + %295 = select i1 %229, i8 %.sroa.gep480.val, i8 %.sroa.gep472.val522 %296 = zext i8 %295 to i64 - %.sroa.gep484 = getelementptr inbounds nuw i8, ptr %8, i64 21 - %.sroa.gep484.val = load i8, ptr %.sroa.gep484, align 1 - %.sroa.gep476.val525 = load i8, ptr %.sroa.gep476, align 1 - %297 = select i1 %229, i8 %.sroa.gep484.val, i8 %.sroa.gep476.val525 + %.sroa.gep482 = getelementptr inbounds nuw i8, ptr %8, i64 21 + %.sroa.gep482.val = load i8, ptr %.sroa.gep482, align 1 + %.sroa.gep474.val523 = load i8, ptr %.sroa.gep474, align 1 + %297 = select i1 %229, i8 %.sroa.gep482.val, i8 %.sroa.gep474.val523 %298 = zext i8 %297 to i64 - %.sroa.gep486 = getelementptr inbounds nuw i8, ptr %8, i64 22 - %.sroa.gep486.val = load i8, ptr %.sroa.gep486, align 2 - %.sroa.gep478.val526 = load i8, ptr %.sroa.gep478, align 2 - %299 = select i1 %229, i8 %.sroa.gep486.val, i8 %.sroa.gep478.val526 + %.sroa.gep484 = getelementptr inbounds nuw i8, ptr %8, i64 22 + %.sroa.gep484.val = load i8, ptr %.sroa.gep484, align 2 + %.sroa.gep476.val524 = load i8, ptr %.sroa.gep476, align 2 + %299 = select i1 %229, i8 %.sroa.gep484.val, i8 %.sroa.gep476.val524 %300 = zext i8 %299 to i64 - %.sroa.gep488 = getelementptr inbounds nuw i8, ptr %8, i64 23 - %.sroa.gep488.val = load i8, ptr %.sroa.gep488, align 1 - %.sroa.gep480.val527 = load i8, ptr %.sroa.gep480, align 1 - %301 = select i1 %229, i8 %.sroa.gep488.val, i8 %.sroa.gep480.val527 + %.sroa.gep486 = getelementptr inbounds nuw i8, ptr %8, i64 23 + %.sroa.gep486.val = load i8, ptr %.sroa.gep486, align 1 + %.sroa.gep478.val525 = load i8, ptr %.sroa.gep478, align 1 + %301 = select i1 %229, i8 %.sroa.gep486.val, i8 %.sroa.gep478.val525 %302 = zext i8 %301 to i64 %303 = shl nuw i64 %302, 56 %304 = shl nuw nsw i64 %300, 48 @@ -12563,17 +12563,17 @@ mz_zip_set_error.exit257: ; preds = %189 314: ; preds = %227 %315 = shl nuw nsw i64 %270, 8 - %.sroa.gep456 = getelementptr inbounds nuw i8, ptr %8, i64 14 - %.sroa.gep456.val = load i8, ptr %.sroa.gep456, align 2 - %.sroa.gep448.val511 = load i8, ptr %.sroa.gep462, align 2 - %316 = select i1 %229, i8 %.sroa.gep456.val, i8 %.sroa.gep448.val511 + %.sroa.gep454 = getelementptr inbounds nuw i8, ptr %8, i64 14 + %.sroa.gep454.val = load i8, ptr %.sroa.gep454, align 2 + %.sroa.gep446.val509 = load i8, ptr %.sroa.gep460, align 2 + %316 = select i1 %229, i8 %.sroa.gep454.val, i8 %.sroa.gep446.val509 %317 = zext i8 %316 to i64 %318 = shl nuw nsw i64 %317, 16 %319 = or disjoint i64 %315, %318 - %.sroa.gep458 = getelementptr inbounds nuw i8, ptr %8, i64 15 - %.sroa.gep458.val = load i8, ptr %.sroa.gep458, align 1 - %.sroa.gep450.val512 = load i8, ptr %.sroa.gep464, align 1 - %320 = select i1 %229, i8 %.sroa.gep458.val, i8 %.sroa.gep450.val512 + %.sroa.gep456 = getelementptr inbounds nuw i8, ptr %8, i64 15 + %.sroa.gep456.val = load i8, ptr %.sroa.gep456, align 1 + %.sroa.gep448.val510 = load i8, ptr %.sroa.gep462, align 1 + %320 = select i1 %229, i8 %.sroa.gep456.val, i8 %.sroa.gep448.val510 %321 = zext i8 %320 to i64 %322 = shl nuw nsw i64 %321, 24 %323 = or disjoint i64 %319, %322 @@ -12591,20 +12591,20 @@ mz_zip_set_error.exit257: ; preds = %189 %or.cond245 = select i1 %.not237, i1 %.not238, i1 false %.not239 = icmp eq i64 %.0190, %326 %or.cond246 = select i1 %or.cond245, i1 %.not239, i1 false - br i1 %or.cond246, label %330, label %.thread428 + br i1 %or.cond246, label %330, label %.thread426 -.thread428: ; preds = %325, %218 +.thread426: ; preds = %325, %218 %.sink = phi i32 [ 20, %218 ], [ 30, %325 ] %329 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 %.sink, ptr %329, align 4 call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %.thread399 + br label %.thread397 330: ; preds = %325 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %335 -331: ; preds = %.thread422 +331: ; preds = %.thread420 %332 = getelementptr inbounds nuw i8, ptr %4, i64 24 %333 = load i32, ptr %332, align 8 %.not240 = icmp eq i32 %125, %333 @@ -12617,7 +12617,7 @@ mz_zip_set_error.exit257: ; preds = %189 mz_zip_set_error.exit251: ; preds = %331 %334 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 30, ptr %334, align 4 - br label %.thread399 + br label %.thread397 335: ; preds = %330, %331 %336 = phi i32 [ %250, %330 ], [ %125, %331 ] @@ -12644,16 +12644,16 @@ mz_zip_set_error.exit: ; preds = %344 store i32 30, ptr %346, align 4 br label %mz_zip_set_error.exit287 -.thread399: ; preds = %mz_zip_set_error.exit257, %mz_zip_set_error.exit259, %mz_zip_set_error.exit261, %.thread428, %mz_zip_set_error.exit263, %mz_zip_set_error.exit251, %mz_zip_set_error.exit265, %mz_zip_set_error.exit267, %mz_zip_set_error.exit269 - %.sroa.0.1396 = phi ptr [ %.sroa.0.1.ph, %mz_zip_set_error.exit251 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit265 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit267 ], [ null, %mz_zip_set_error.exit269 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit263 ], [ %.sroa.0.1.ph, %.thread428 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit261 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit259 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit257 ] +.thread397: ; preds = %mz_zip_set_error.exit257, %mz_zip_set_error.exit259, %mz_zip_set_error.exit261, %.thread426, %mz_zip_set_error.exit263, %mz_zip_set_error.exit251, %mz_zip_set_error.exit265, %mz_zip_set_error.exit267, %mz_zip_set_error.exit269 + %.sroa.0.1394 = phi ptr [ %.sroa.0.1.ph, %mz_zip_set_error.exit251 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit265 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit267 ], [ null, %mz_zip_set_error.exit269 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit263 ], [ %.sroa.0.1.ph, %.thread426 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit261 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit259 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit257 ] %347 = load ptr, ptr %16, align 8 %348 = getelementptr inbounds nuw i8, ptr %0, i64 64 %349 = load ptr, ptr %348, align 8 - call void %347(ptr noundef %349, ptr noundef %.sroa.0.1396) #36 + call void %347(ptr noundef %349, ptr noundef %.sroa.0.1394) #36 br label %mz_zip_set_error.exit287 -mz_zip_set_error.exit287: ; preds = %21, %3, %335, %344, %342, %39, %mz_zip_get_cdh.exit, %.thread399, %mz_zip_set_error.exit, %mz_zip_set_error.exit271, %mz_zip_set_error.exit273, %mz_zip_set_error.exit275, %mz_zip_set_error.exit277, %mz_zip_set_error.exit279, %mz_zip_set_error.exit281, %mz_zip_set_error.exit283, %mz_zip_set_error.exit285 - %.0 = phi i32 [ 0, %mz_zip_set_error.exit285 ], [ 0, %mz_zip_set_error.exit283 ], [ 0, %mz_zip_set_error.exit281 ], [ 0, %mz_zip_set_error.exit277 ], [ 0, %mz_zip_set_error.exit275 ], [ 0, %mz_zip_set_error.exit273 ], [ 0, %mz_zip_set_error.exit271 ], [ 0, %.thread399 ], [ 0, %mz_zip_set_error.exit ], [ 0, %mz_zip_set_error.exit279 ], [ 0, %mz_zip_get_cdh.exit ], [ 1, %39 ], [ 0, %342 ], [ 1, %344 ], [ 1, %335 ], [ 0, %3 ], [ 0, %21 ] +mz_zip_set_error.exit287: ; preds = %21, %3, %335, %344, %342, %39, %mz_zip_get_cdh.exit, %.thread397, %mz_zip_set_error.exit, %mz_zip_set_error.exit271, %mz_zip_set_error.exit273, %mz_zip_set_error.exit275, %mz_zip_set_error.exit277, %mz_zip_set_error.exit279, %mz_zip_set_error.exit281, %mz_zip_set_error.exit283, %mz_zip_set_error.exit285 + %.0 = phi i32 [ 0, %mz_zip_set_error.exit285 ], [ 0, %mz_zip_set_error.exit283 ], [ 0, %mz_zip_set_error.exit281 ], [ 0, %mz_zip_set_error.exit277 ], [ 0, %mz_zip_set_error.exit275 ], [ 0, %mz_zip_set_error.exit273 ], [ 0, %mz_zip_set_error.exit271 ], [ 0, %.thread397 ], [ 0, %mz_zip_set_error.exit ], [ 0, %mz_zip_set_error.exit279 ], [ 0, %mz_zip_get_cdh.exit ], [ 1, %39 ], [ 0, %342 ], [ 1, %344 ], [ 1, %335 ], [ 0, %3 ], [ 0, %21 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) @@ -17450,7 +17450,7 @@ mz_zip_array_resize.exit459: ; preds = %143 %155 = add i64 %114, %154 %156 = call i64 %152(ptr noundef %153, i64 noundef %155, ptr noundef nonnull %149, i64 noundef %144) #36 %.not353 = icmp eq i64 %156, %144 - br i1 %.not353, label %.preheader661, label %mz_zip_set_error.exit418 + br i1 %.not353, label %.preheader653, label %mz_zip_set_error.exit418 mz_zip_set_error.exit418: ; preds = %mz_zip_array_resize.exit459 %157 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -17461,13 +17461,13 @@ mz_zip_set_error.exit418: ; preds = %mz_zip_array_resize store i32 20, ptr %160, align 4 br label %mz_zip_set_error.exit438 -.preheader661: ; preds = %mz_zip_array_resize.exit459, %191 +.preheader653: ; preds = %mz_zip_array_resize.exit459, %191 %.0330 = phi i32 [ %194, %191 ], [ %130, %mz_zip_array_resize.exit459 ] %.0328 = phi ptr [ %193, %191 ], [ %149, %mz_zip_array_resize.exit459 ] %161 = icmp ult i32 %.0330, 4 br i1 %161, label %mz_zip_set_error.exit416, label %166 -mz_zip_set_error.exit416: ; preds = %.preheader661 +mz_zip_set_error.exit416: ; preds = %.preheader653 %162 = getelementptr inbounds nuw i8, ptr %0, i64 48 %163 = load ptr, ptr %162, align 8 %164 = load ptr, ptr %147, align 8 @@ -17476,7 +17476,7 @@ mz_zip_set_error.exit416: ; preds = %.preheader661 store i32 9, ptr %165, align 4 br label %mz_zip_set_error.exit438 -166: ; preds = %.preheader661 +166: ; preds = %.preheader653 %167 = getelementptr inbounds nuw i8, ptr %.0328, i64 2 %168 = load i8, ptr %167, align 1 %169 = zext i8 %168 to i64 @@ -17522,7 +17522,7 @@ mz_zip_set_error.exit412: ; preds = %185 %193 = getelementptr inbounds nuw i8, ptr %.0328, i64 %192 %194 = sub i32 %.0330, %176 %.not354 = icmp eq i32 %194, 0 - br i1 %.not354, label %.loopexit, label %.preheader661 + br i1 %.not354, label %.loopexit, label %.preheader653 .loopexit: ; preds = %191, %185 %195 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -17587,8 +17587,8 @@ mz_zip_set_error.exit408: ; preds = %211 .preheader: ; preds = %220 %229 = add i64 %213, 30 - %.not358672 = icmp eq i64 %135, 0 - br i1 %.not358672, label %252, label %.lr.ph + %.not358664 = icmp eq i64 %135, 0 + br i1 %.not358664, label %252, label %.lr.ph mz_zip_set_error.exit406: ; preds = %220 %230 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -17596,13 +17596,13 @@ mz_zip_set_error.exit406: ; preds = %220 br label %mz_zip_set_error.exit438 .lr.ph: ; preds = %.preheader, %247 - %.0313675 = phi i64 [ %250, %247 ], [ %135, %.preheader ] - %.0314674 = phi i64 [ %248, %247 ], [ %114, %.preheader ] - %.0315673 = phi i64 [ %249, %247 ], [ %229, %.preheader ] - %231 = call i64 @llvm.umin.i64(i64 %.0313675, i64 65536) + %.0313667 = phi i64 [ %250, %247 ], [ %135, %.preheader ] + %.0314666 = phi i64 [ %248, %247 ], [ %114, %.preheader ] + %.0315665 = phi i64 [ %249, %247 ], [ %229, %.preheader ] + %231 = call i64 @llvm.umin.i64(i64 %.0313667, i64 65536) %232 = load ptr, ptr %16, align 8 %233 = load ptr, ptr %106, align 8 - %234 = call i64 %232(ptr noundef %233, i64 noundef %.0314674, ptr noundef %227, i64 noundef %231) #36 + %234 = call i64 %232(ptr noundef %233, i64 noundef %.0314666, ptr noundef %227, i64 noundef %231) #36 %.not373 = icmp eq i64 %234, %231 br i1 %.not373, label %239, label %mz_zip_set_error.exit404 @@ -17618,7 +17618,7 @@ mz_zip_set_error.exit404: ; preds = %.lr.ph 239: ; preds = %.lr.ph %240 = load ptr, ptr %214, align 8 %241 = load ptr, ptr %216, align 8 - %242 = call i64 %240(ptr noundef %241, i64 noundef %.0315673, ptr noundef %227, i64 noundef %231) #36 + %242 = call i64 %240(ptr noundef %241, i64 noundef %.0315665, ptr noundef %227, i64 noundef %231) #36 %.not374 = icmp eq i64 %242, %231 br i1 %.not374, label %247, label %mz_zip_set_error.exit402 @@ -17632,9 +17632,9 @@ mz_zip_set_error.exit402: ; preds = %239 br label %mz_zip_set_error.exit438 247: ; preds = %239 - %248 = add i64 %231, %.0314674 - %249 = add i64 %231, %.0315673 - %250 = sub i64 %.0313675, %231 + %248 = add i64 %231, %.0314666 + %249 = add i64 %231, %.0315665 + %250 = sub i64 %.0313667, %231 %.not358 = icmp eq i64 %250, 0 br i1 %.not358, label %._crit_edge, label %.lr.ph @@ -17681,7 +17681,7 @@ mz_zip_set_error.exit400: ; preds = %263 %270 = load i32, ptr %227, align 1 %271 = icmp eq i32 %270, 134695760 %272 = select i1 %271, i32 24, i32 20 - br label %.thread619 + br label %.thread611 273: ; preds = %256 %274 = call i64 %261(ptr noundef %262, i64 noundef %.0314.lcssa, ptr noundef %227, i64 noundef 16) #36 @@ -17758,11 +17758,11 @@ mz_zip_set_error.exit400: ; preds = %263 store i8 %309, ptr %322, align 1 %323 = getelementptr inbounds nuw i8, ptr %227, i64 20 store i32 0, ptr %323, align 1 - br label %.thread619 + br label %.thread611 324: ; preds = %275 %325 = select i1 %277, i32 16, i32 12 - br label %.thread619 + br label %.thread611 326: ; preds = %273 %327 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -17773,17 +17773,17 @@ mz_zip_set_error.exit400: ; preds = %263 store i32 20, ptr %330, align 4 br label %mz_zip_set_error.exit438 -.thread619: ; preds = %324, %281, %269 - %storemerge660 = phi i32 [ %272, %269 ], [ %325, %324 ], [ 24, %281 ] - store i32 %storemerge660, ptr %4, align 4 +.thread611: ; preds = %324, %281, %269 + %storemerge652 = phi i32 [ %272, %269 ], [ %325, %324 ], [ 24, %281 ] + store i32 %storemerge652, ptr %4, align 4 %331 = load ptr, ptr %214, align 8 %332 = load ptr, ptr %216, align 8 - %333 = zext nneg i32 %storemerge660 to i64 + %333 = zext nneg i32 %storemerge652 to i64 %334 = call i64 %331(ptr noundef %332, i64 noundef %.0315.lcssa, ptr noundef nonnull %227, i64 noundef %333) #36 %.not363 = icmp eq i64 %334, %333 br i1 %.not363, label %339, label %mz_zip_set_error.exit396 -mz_zip_set_error.exit396: ; preds = %.thread619 +mz_zip_set_error.exit396: ; preds = %.thread611 %335 = getelementptr inbounds nuw i8, ptr %0, i64 48 %336 = load ptr, ptr %335, align 8 %337 = load ptr, ptr %223, align 8 @@ -17792,7 +17792,7 @@ mz_zip_set_error.exit396: ; preds = %.thread619 store i32 19, ptr %338, align 4 br label %mz_zip_set_error.exit438 -339: ; preds = %.thread619 +339: ; preds = %.thread611 %340 = add i64 %.0315.lcssa, %333 br label %341 @@ -17819,8 +17819,8 @@ mz_zip_set_error.exit396: ; preds = %.thread619 %352 = getelementptr inbounds nuw i8, ptr %7, i64 40 %.20..20..20..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 20 store i64 -1, ptr %.20..20..20..sroa_idx, align 4 - %.42..42..42..sroa_idx753 = getelementptr inbounds nuw i8, ptr %6, i64 42 - store i32 -1, ptr %.42..42..42..sroa_idx753, align 2 + %.42..42..42..sroa_idx745 = getelementptr inbounds nuw i8, ptr %6, i64 42 + store i32 -1, ptr %.42..42..42..sroa_idx745, align 2 %.val501 = load i64, ptr %352, align 8 %353 = call fastcc i32 @mz_zip_writer_update_zip64_extension_block(ptr noundef %8, ptr noundef %0, ptr noundef %350, i32 noundef %69, i64 %134, i64 %.val501, i64 %213) %.not367 = icmp eq i32 %353, 0 @@ -17957,7 +17957,7 @@ mz_zip_set_error.exit392: ; preds = %400, %409 %425 = getelementptr inbounds nuw i8, ptr %421, i64 %424 %426 = mul i64 %360, %423 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %425, ptr align 1 %413, i64 %426, i1 false) - %.pre692 = load i64, ptr %72, align 8 + %.pre684 = load i64, ptr %72, align 8 br label %442 mz_zip_array_push_back.exit474: ; preds = %417 @@ -17994,7 +17994,7 @@ mz_zip_set_error.exit390: ; preds = %431, %440 br label %477 442: ; preds = %420, %419 - %443 = phi i64 [ %.pre692, %420 ], [ %414, %419 ] + %443 = phi i64 [ %.pre684, %420 ], [ %414, %419 ] %444 = zext nneg i32 %69 to i64 %445 = getelementptr inbounds nuw i8, ptr %350, i64 %444 %446 = zext nneg i32 %61 to i64 diff --git a/bench/box2d/optimized/world.ll b/bench/box2d/optimized/world.ll index 89c3a7e2b9a..af8dda46fdd 100644 --- a/bench/box2d/optimized/world.ll +++ b/bench/box2d/optimized/world.ll @@ -617,8 +617,8 @@ b2SolverSetArray_Push.exit: ; preds = %16, %42 %49 = sext i32 %47 to i64 %50 = getelementptr inbounds %struct.b2SolverSet, ptr %48, i64 %49 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %50, i8 0, i64 80, i1 false) - %.sroa.4.0..sroa_idx210 = getelementptr inbounds nuw i8, ptr %50, i64 80 - store i32 %37, ptr %.sroa.4.0..sroa_idx210, align 8, !tbaa !86 + %.sroa.4.0..sroa_idx212 = getelementptr inbounds nuw i8, ptr %50, i64 80 + store i32 %37, ptr %.sroa.4.0..sroa_idx212, align 8, !tbaa !86 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %50, i64 84 store i32 0, ptr %.sroa.5.0..sroa_idx, align 4 %51 = load i32, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 @@ -645,10 +645,10 @@ b2SolverSetArray_Push.exit180: ; preds = %b2SolverSetArray_Pu %64 = sext i32 %62 to i64 %65 = getelementptr inbounds %struct.b2SolverSet, ptr %63, i64 %64 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %65, i8 0, i64 80, i1 false) - %.sroa.4212.0..sroa_idx = getelementptr inbounds nuw i8, ptr %65, i64 80 - store i32 %53, ptr %.sroa.4212.0..sroa_idx, align 8, !tbaa !86 - %.sroa.5213.0..sroa_idx = getelementptr inbounds nuw i8, ptr %65, i64 84 - store i32 0, ptr %.sroa.5213.0..sroa_idx, align 4 + %.sroa.4214.0..sroa_idx = getelementptr inbounds nuw i8, ptr %65, i64 80 + store i32 %53, ptr %.sroa.4214.0..sroa_idx, align 8, !tbaa !86 + %.sroa.5215.0..sroa_idx = getelementptr inbounds nuw i8, ptr %65, i64 84 + store i32 0, ptr %.sroa.5215.0..sroa_idx, align 4 %66 = load i32, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 %67 = add nsw i32 %66, 1 store i32 %67, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 @@ -673,10 +673,10 @@ b2SolverSetArray_Push.exit182: ; preds = %b2SolverSetArray_Pu %79 = sext i32 %77 to i64 %80 = getelementptr inbounds %struct.b2SolverSet, ptr %78, i64 %79 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %80, i8 0, i64 80, i1 false) - %.sroa.4215.0..sroa_idx = getelementptr inbounds nuw i8, ptr %80, i64 80 - store i32 %68, ptr %.sroa.4215.0..sroa_idx, align 8, !tbaa !86 - %.sroa.5216.0..sroa_idx = getelementptr inbounds nuw i8, ptr %80, i64 84 - store i32 0, ptr %.sroa.5216.0..sroa_idx, align 4 + %.sroa.4217.0..sroa_idx = getelementptr inbounds nuw i8, ptr %80, i64 80 + store i32 %68, ptr %.sroa.4217.0..sroa_idx, align 8, !tbaa !86 + %.sroa.5218.0..sroa_idx = getelementptr inbounds nuw i8, ptr %80, i64 84 + store i32 0, ptr %.sroa.5218.0..sroa_idx, align 4 %81 = load i32, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 %82 = add nsw i32 %81, 1 store i32 %82, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 @@ -841,9 +841,9 @@ b2SolverSetArray_Push.exit182: ; preds = %b2SolverSetArray_Pu %163 = getelementptr inbounds nuw i8, ptr %0, i64 48 %164 = load ptr, ptr %163, align 8, !tbaa !131 %165 = icmp eq ptr %164, null - %.sink226 = select i1 %165, ptr @b2DefaultRestitutionCallback, ptr %164 + %.sink228 = select i1 %165, ptr @b2DefaultRestitutionCallback, ptr %164 %166 = getelementptr inbounds nuw i8, ptr %19, i64 1584 - store ptr %.sink226, ptr %166, align 16, !tbaa !132 + store ptr %.sink228, ptr %166, align 16, !tbaa !132 %167 = getelementptr inbounds nuw i8, ptr %0, i64 56 %168 = load i8, ptr %167, align 8, !tbaa !133, !range !77, !noundef !78 %169 = getelementptr inbounds nuw i8, ptr %19, i64 1782 @@ -927,11 +927,11 @@ b2TaskContextArray_Create.exit: ; preds = %196, %189 %210 = call ptr @b2GrowAlloc(ptr noundef %205, i32 noundef %208, i32 noundef %209) #22 store ptr %210, ptr %202, align 8, !tbaa !34 store i32 %.pre, ptr %207, align 4, !tbaa !31 - %.pre227 = load i32, ptr %203, align 8, !tbaa !145 + %.pre229 = load i32, ptr %203, align 8, !tbaa !145 br label %b2TaskContextArray_Resize.exit b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_Create.exit, %206 - %211 = phi i32 [ %.pre, %b2TaskContextArray_Create.exit ], [ %.pre227, %206 ] + %211 = phi i32 [ %.pre, %b2TaskContextArray_Create.exit ], [ %.pre229, %206 ] store i32 %.pre, ptr %.sroa.421.0..sroa_idx, align 16, !tbaa !151 %212 = getelementptr inbounds nuw i8, ptr %19, i64 1320 %213 = call { ptr, i64 } @b2SensorTaskContextArray_Create(i32 noundef %211) #22 @@ -977,9 +977,9 @@ b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_ br label %.thread .lr.ph: ; preds = %b2TaskContextArray_Resize.exit, %.lr.ph - %indvars.iv223 = phi i64 [ %indvars.iv.next224, %.lr.ph ], [ 0, %b2TaskContextArray_Resize.exit ] + %indvars.iv225 = phi i64 [ %indvars.iv.next226, %.lr.ph ], [ 0, %b2TaskContextArray_Resize.exit ] %236 = load ptr, ptr %202, align 8, !tbaa !155 - %237 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %236, i64 %indvars.iv223 + %237 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %236, i64 %indvars.iv225 %238 = call { ptr, i64 } @b2CreateBitSet(i32 noundef 1024) #22 %239 = extractvalue { ptr, i64 } %238, 0 %240 = extractvalue { ptr, i64 } %238, 1 @@ -987,7 +987,7 @@ b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_ %.sroa.412.0..sroa_idx = getelementptr inbounds nuw i8, ptr %237, i64 8 store i64 %240, ptr %.sroa.412.0..sroa_idx, align 8 %241 = load ptr, ptr %202, align 8, !tbaa !155 - %242 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %241, i64 %indvars.iv223 + %242 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %241, i64 %indvars.iv225 %243 = getelementptr inbounds nuw i8, ptr %242, i64 16 %244 = call { ptr, i64 } @b2CreateBitSet(i32 noundef 256) #22 %245 = extractvalue { ptr, i64 } %244, 0 @@ -996,7 +996,7 @@ b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_ %.sroa.410.0..sroa_idx = getelementptr inbounds nuw i8, ptr %242, i64 24 store i64 %246, ptr %.sroa.410.0..sroa_idx, align 8 %247 = load ptr, ptr %202, align 8, !tbaa !155 - %248 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %247, i64 %indvars.iv223 + %248 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %247, i64 %indvars.iv225 %249 = getelementptr inbounds nuw i8, ptr %248, i64 32 %250 = call { ptr, i64 } @b2CreateBitSet(i32 noundef 256) #22 %251 = extractvalue { ptr, i64 } %250, 0 @@ -1005,17 +1005,17 @@ b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_ %.sroa.48.0..sroa_idx = getelementptr inbounds nuw i8, ptr %248, i64 40 store i64 %252, ptr %.sroa.48.0..sroa_idx, align 8 %253 = load ptr, ptr %212, align 8, !tbaa !156 - %254 = getelementptr inbounds nuw %struct.b2SensorTaskContext, ptr %253, i64 %indvars.iv223 + %254 = getelementptr inbounds nuw %struct.b2SensorTaskContext, ptr %253, i64 %indvars.iv225 %255 = call { ptr, i64 } @b2CreateBitSet(i32 noundef 128) #22 %256 = extractvalue { ptr, i64 } %255, 0 %257 = extractvalue { ptr, i64 } %255, 1 store ptr %256, ptr %254, align 8, !tbaa !154 %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %254, i64 8 store i64 %257, ptr %.sroa.46.0..sroa_idx, align 8 - %indvars.iv.next224 = add nuw nsw i64 %indvars.iv223, 1 + %indvars.iv.next226 = add nuw nsw i64 %indvars.iv225, 1 %258 = load i32, ptr %203, align 8, !tbaa !145 %259 = sext i32 %258 to i64 - %260 = icmp slt i64 %indvars.iv.next224, %259 + %260 = icmp slt i64 %indvars.iv.next226, %259 br i1 %260, label %.lr.ph, label %._crit_edge, !llvm.loop !157 .thread: ; preds = %15, %._crit_edge diff --git a/bench/ceres/optimized/block_sparse_matrix.ll b/bench/ceres/optimized/block_sparse_matrix.ll index 49264133c32..0cb4f70ada8 100644 --- a/bench/ceres/optimized/block_sparse_matrix.ll +++ b/bench/ceres/optimized/block_sparse_matrix.ll @@ -3873,27 +3873,27 @@ _ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideIL %37 = getelementptr inbounds nuw i8, ptr %35, i64 32 %38 = load ptr, ptr %37, align 8, !tbaa !30 %39 = load ptr, ptr %36, align 8, !tbaa !33 - %.not77 = icmp eq ptr %38, %39 - br i1 %.not77, label %._crit_edge76, label %.lr.ph75 + %.not78 = icmp eq ptr %38, %39 + br i1 %.not78, label %._crit_edge77, label %.lr.ph76 -.lr.ph75: ; preds = %_ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7setZeroEv.exit +.lr.ph76: ; preds = %_ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7setZeroEv.exit %40 = getelementptr inbounds nuw i8, ptr %0, i64 32 br label %41 -._crit_edge76: ; preds = %._crit_edge, %_ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7setZeroEv.exit +._crit_edge77: ; preds = %._crit_edge, %_ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7setZeroEv.exit ret void -41: ; preds = %.lr.ph75, %._crit_edge - %42 = phi ptr [ %35, %.lr.ph75 ], [ %56, %._crit_edge ] - %indvars.iv = phi i64 [ 0, %.lr.ph75 ], [ %indvars.iv.next, %._crit_edge ] - %43 = phi ptr [ %39, %.lr.ph75 ], [ %60, %._crit_edge ] +41: ; preds = %.lr.ph76, %._crit_edge + %42 = phi ptr [ %35, %.lr.ph76 ], [ %56, %._crit_edge ] + %indvars.iv = phi i64 [ 0, %.lr.ph76 ], [ %indvars.iv.next, %._crit_edge ] + %43 = phi ptr [ %39, %.lr.ph76 ], [ %60, %._crit_edge ] %44 = getelementptr inbounds nuw %"struct.ceres::internal::CompressedList", ptr %43, i64 %indvars.iv %45 = getelementptr inbounds nuw i8, ptr %44, i64 8 %46 = load ptr, ptr %45, align 8, !tbaa !44 %47 = getelementptr inbounds nuw i8, ptr %44, i64 16 %48 = load ptr, ptr %47, align 8, !tbaa !44 - %.not6372 = icmp eq ptr %46, %48 - br i1 %.not6372, label %._crit_edge, label %.lr.ph + %.not6473 = icmp eq ptr %46, %48 + br i1 %.not6473, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %41 %49 = load i32, ptr %44, align 8, !tbaa !37 @@ -3921,11 +3921,11 @@ _ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideIL %63 = sub i64 %61, %62 %64 = sdiv exact i64 %63, 40 %65 = icmp ugt i64 %64, %indvars.iv.next - br i1 %65, label %41, label %._crit_edge76, !llvm.loop !174 + br i1 %65, label %41, label %._crit_edge77, !llvm.loop !174 66: ; preds = %.lr.ph, %_ZN5Eigen8internal21dense_assignment_loopINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS3_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS5_INS6_IdLin1ELin1ELi1ELin1ELin1EEELi0ES9_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EEELi3ELi0EE3runERSS_.exit - %.sroa.034.073 = phi ptr [ %46, %.lr.ph ], [ %180, %_ZN5Eigen8internal21dense_assignment_loopINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS3_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS5_INS6_IdLin1ELin1ELi1ELin1ELin1EEELi0ES9_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EEELi3ELi0EE3runERSS_.exit ] - %67 = load i32, ptr %.sroa.034.073, align 4, !tbaa !47 + %.sroa.034.074 = phi ptr [ %46, %.lr.ph ], [ %180, %_ZN5Eigen8internal21dense_assignment_loopINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS3_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS5_INS6_IdLin1ELin1ELi1ELin1ELin1EEELi0ES9_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EEELi3ELi0EE3runERSS_.exit ] + %67 = load i32, ptr %.sroa.034.074, align 4, !tbaa !47 %68 = load ptr, ptr %34, align 8, !tbaa !25 %69 = sext i32 %67 to i64 %70 = load ptr, ptr %68, align 8, !tbaa !66 @@ -3934,7 +3934,7 @@ _ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideIL %73 = getelementptr inbounds nuw i8, ptr %71, i64 4 %74 = load i32, ptr %73, align 4, !tbaa !97 %75 = load ptr, ptr %40, align 8, !tbaa !60 - %76 = getelementptr inbounds nuw i8, ptr %.sroa.034.073, i64 4 + %76 = getelementptr inbounds nuw i8, ptr %.sroa.034.074, i64 4 %77 = load i32, ptr %76, align 4, !tbaa !82 %78 = sext i32 %77 to i64 %79 = getelementptr inbounds double, ptr %75, i64 %78 @@ -4152,9 +4152,9 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_9Transpose br i1 %179, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !179 _ZN5Eigen8internal21dense_assignment_loopINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS3_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS5_INS6_IdLin1ELin1ELi1ELin1ELin1EEELi0ES9_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EEELi3ELi0EE3runERSS_.exit: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS2_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS4_INS5_IdLin1ELin1ELi1ELin1ELin1EEELi0ES8_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EE11assignCoeffEl.exit.i21.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS2_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS4_INS5_IdLin1ELin1ELi1ELin1ELin1EEELi0ES8_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i33.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS2_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS4_INS5_IdLin1ELin1ELi1ELin1ELin1EEELi0ES8_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EE11assignCoeffEl.exit.us.i35.i, %._crit_edge.i - %180 = getelementptr inbounds nuw i8, ptr %.sroa.034.073, i64 8 - %.not63 = icmp eq ptr %180, %48 - br i1 %.not63, label %._crit_edge.loopexit, label %66 + %180 = getelementptr inbounds nuw i8, ptr %.sroa.034.074, i64 8 + %.not64 = icmp eq ptr %180, %48 + br i1 %.not64, label %._crit_edge.loopexit, label %66 } ; Function Attrs: mustprogress uwtable diff --git a/bench/ceres/optimized/cgnr_solver.ll b/bench/ceres/optimized/cgnr_solver.ll index 77b35a70279..b3ad0810451 100644 --- a/bench/ceres/optimized/cgnr_solver.ll +++ b/bench/ceres/optimized/cgnr_solver.ll @@ -3562,8 +3562,8 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred store i64 %40, ptr %6, align 8, !alias.scope !255 %41 = getelementptr inbounds nuw i8, ptr %6, i64 16 store ptr %37, ptr %41, align 8 - %.sroa.416.8..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 24 - store i64 %38, ptr %.sroa.416.8..sroa_idx, align 8 + %.sroa.415.8..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 24 + store i64 %38, ptr %.sroa.415.8..sroa_idx, align 8 %42 = getelementptr inbounds nuw i8, ptr %6, i64 48 store i64 %39, ptr %42, align 8, !alias.scope !255 %43 = getelementptr inbounds nuw i8, ptr %2, i64 8 diff --git a/bench/cmake/optimized/cmComputeLinkDepends.ll b/bench/cmake/optimized/cmComputeLinkDepends.ll index 90805dcef74..ed6e4eaa040 100644 --- a/bench/cmake/optimized/cmComputeLinkDepends.ll +++ b/bench/cmake/optimized/cmComputeLinkDepends.ll @@ -8523,7 +8523,7 @@ define dso_local void @_ZN20cmComputeLinkDepends20CleanConstraintGraphEv(ptr nou ret void .lr.ph: ; preds = %1, %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit - %.sroa.019.025 = phi ptr [ %135, %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit ], [ %3, %1 ] + %.sroa.019.025 = phi ptr [ %136, %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit ], [ %3, %1 ] %6 = load ptr, ptr %.sroa.019.025, align 8, !tbaa !681 %7 = getelementptr inbounds nuw i8, ptr %.sroa.019.025, i64 8 %8 = load ptr, ptr %7, align 8, !tbaa !681 @@ -8540,7 +8540,7 @@ define dso_local void @_ZN20cmComputeLinkDepends20CleanConstraintGraphEv(ptr nou %16 = xor i64 %15, 126 tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEElNS0_5__ops15_Iter_less_iterEEvT_SA_T0_T1_(ptr %6, ptr %8, i64 noundef %16) %17 = icmp sgt i64 %12, 512 - br i1 %17, label %18, label %79 + br i1 %17, label %18, label %80 18: ; preds = %9 %19 = getelementptr inbounds nuw i8, ptr %6, i64 512 @@ -8549,253 +8549,253 @@ define dso_local void @_ZN20cmComputeLinkDepends20CleanConstraintGraphEv(ptr nou br i1 %.not4.i.i.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %18, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit - %.sroa.0.05.i.i.i.i = phi ptr [ %78, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit ], [ %19, %18 ] + %.sroa.0.05.i.i.i.i = phi ptr [ %79, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit ], [ %19, %18 ] %.sroa.08.0.copyload.i = load i64, ptr %.sroa.0.05.i.i.i.i, align 8 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 8 - %.sroa.5.0.copyload.i = load i16, ptr %.sroa.5.0..sroa_idx.i, align 8 - %20 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 16 - %21 = load ptr, ptr %20, align 8, !tbaa !644 - %22 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 24 - %23 = load ptr, ptr %22, align 8, !tbaa !364 + %20 = load i16, ptr %.sroa.5.0..sroa_idx.i, align 8 + %21 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 16 + %22 = load ptr, ptr %21, align 8, !tbaa !644 + %23 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 24 + %24 = load ptr, ptr %23, align 8, !tbaa !364 %.sroa.0.016.i = getelementptr inbounds i8, ptr %.sroa.0.05.i.i.i.i, i64 -32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %20, i8 0, i64 16, i1 false) - %24 = load i64, ptr %.sroa.0.016.i, align 8, !tbaa !650 - %25 = icmp ult i64 %.sroa.08.0.copyload.i, %24 - br i1 %25, label %.lr.ph.i, label %._crit_edge.thread.i + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %21, i8 0, i64 16, i1 false) + %25 = load i64, ptr %.sroa.0.016.i, align 8, !tbaa !650 + %26 = icmp ult i64 %.sroa.08.0.copyload.i, %25 + br i1 %26, label %.lr.ph.i, label %._crit_edge.thread.i ._crit_edge.thread.i: ; preds = %.lr.ph.i.i.i.i - store ptr %21, ptr %20, align 8, !tbaa !683 - store ptr %23, ptr %22, align 8, !tbaa !364 + store ptr %22, ptr %21, align 8, !tbaa !683 + store ptr %24, ptr %23, align 8, !tbaa !364 br label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit .lr.ph.i: ; preds = %.lr.ph.i.i.i.i, %_ZN11cmGraphEdgeaSEOS_.exit.i %.sroa.0.018.i = phi ptr [ %.sroa.0.0.i, %_ZN11cmGraphEdgeaSEOS_.exit.i ], [ %.sroa.0.016.i, %.lr.ph.i.i.i.i ] %.sroa.013.017.i = phi ptr [ %.sroa.0.018.i, %_ZN11cmGraphEdgeaSEOS_.exit.i ], [ %.sroa.0.05.i.i.i.i, %.lr.ph.i.i.i.i ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.013.017.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.018.i, i64 10, i1 false) - %26 = getelementptr inbounds nuw i8, ptr %.sroa.013.017.i, i64 16 - %27 = getelementptr inbounds i8, ptr %.sroa.013.017.i, i64 -16 - %28 = load ptr, ptr %27, align 8, !tbaa !644 - %29 = getelementptr inbounds i8, ptr %.sroa.013.017.i, i64 -8 - %30 = load ptr, ptr %29, align 8, !tbaa !364 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %27, i8 0, i64 16, i1 false) - store ptr %28, ptr %26, align 8, !tbaa !683 - %31 = getelementptr inbounds nuw i8, ptr %.sroa.013.017.i, i64 24 - %32 = load ptr, ptr %31, align 8, !tbaa !364 - store ptr %30, ptr %31, align 8, !tbaa !364 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %32, null - br i1 %.not.i.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit.i, label %33 - -33: ; preds = %.lr.ph.i - %34 = getelementptr inbounds nuw i8, ptr %32, i64 8 - %35 = load atomic i64, ptr %34 acquire, align 8 - %36 = icmp eq i64 %35, 4294967297 - %37 = trunc i64 %35 to i32 - br i1 %36, label %38, label %46 - -38: ; preds = %33 - store i32 0, ptr %34, align 8, !tbaa !365 - %39 = getelementptr inbounds nuw i8, ptr %32, i64 12 - store i32 0, ptr %39, align 4, !tbaa !368 - %40 = load ptr, ptr %32, align 8, !tbaa !369 - %41 = getelementptr inbounds nuw i8, ptr %40, i64 16 - %42 = load ptr, ptr %41, align 8 - tail call void %42(ptr noundef nonnull align 8 dereferenceable(16) %32) #30 - %43 = load ptr, ptr %32, align 8, !tbaa !369 - %44 = getelementptr inbounds nuw i8, ptr %43, i64 24 - %45 = load ptr, ptr %44, align 8 - tail call void %45(ptr noundef nonnull align 8 dereferenceable(16) %32) #30 + %27 = getelementptr inbounds nuw i8, ptr %.sroa.013.017.i, i64 16 + %28 = getelementptr inbounds i8, ptr %.sroa.013.017.i, i64 -16 + %29 = load ptr, ptr %28, align 8, !tbaa !644 + %30 = getelementptr inbounds i8, ptr %.sroa.013.017.i, i64 -8 + %31 = load ptr, ptr %30, align 8, !tbaa !364 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %28, i8 0, i64 16, i1 false) + store ptr %29, ptr %27, align 8, !tbaa !683 + %32 = getelementptr inbounds nuw i8, ptr %.sroa.013.017.i, i64 24 + %33 = load ptr, ptr %32, align 8, !tbaa !364 + store ptr %31, ptr %32, align 8, !tbaa !364 + %.not.i.i.i.i.i.i.i.i = icmp eq ptr %33, null + br i1 %.not.i.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit.i, label %34 + +34: ; preds = %.lr.ph.i + %35 = getelementptr inbounds nuw i8, ptr %33, i64 8 + %36 = load atomic i64, ptr %35 acquire, align 8 + %37 = icmp eq i64 %36, 4294967297 + %38 = trunc i64 %36 to i32 + br i1 %37, label %39, label %47 + +39: ; preds = %34 + store i32 0, ptr %35, align 8, !tbaa !365 + %40 = getelementptr inbounds nuw i8, ptr %33, i64 12 + store i32 0, ptr %40, align 4, !tbaa !368 + %41 = load ptr, ptr %33, align 8, !tbaa !369 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 16 + %43 = load ptr, ptr %42, align 8 + tail call void %43(ptr noundef nonnull align 8 dereferenceable(16) %33) #30 + %44 = load ptr, ptr %33, align 8, !tbaa !369 + %45 = getelementptr inbounds nuw i8, ptr %44, i64 24 + %46 = load ptr, ptr %45, align 8 + tail call void %46(ptr noundef nonnull align 8 dereferenceable(16) %33) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit.i -46: ; preds = %33 - %47 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i.i14 = icmp eq i8 %47, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i14, label %50, label %48 +47: ; preds = %34 + %48 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i.i14 = icmp eq i8 %48, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i14, label %51, label %49 -48: ; preds = %46 - %49 = add nsw i32 %37, -1 - store i32 %49, ptr %34, align 4, !tbaa !371 +49: ; preds = %47 + %50 = add nsw i32 %38, -1 + store i32 %50, ptr %35, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i -50: ; preds = %46 - %51 = atomicrmw volatile add ptr %34, i32 -1 acq_rel, align 4 +51: ; preds = %47 + %52 = atomicrmw volatile add ptr %35, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i: ; preds = %50, %48 - %.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %37, %48 ], [ %51, %50 ] - %52 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i, 1 - br i1 %52, label %53, label %_ZN11cmGraphEdgeaSEOS_.exit.i, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i: ; preds = %51, %49 + %.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %38, %49 ], [ %52, %51 ] + %53 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i, 1 + br i1 %53, label %54, label %_ZN11cmGraphEdgeaSEOS_.exit.i, !prof !372 -53: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i - tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %32) #30 +54: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i + tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %33) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit.i -_ZN11cmGraphEdgeaSEOS_.exit.i: ; preds = %53, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i, %38, %.lr.ph.i +_ZN11cmGraphEdgeaSEOS_.exit.i: ; preds = %54, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i, %39, %.lr.ph.i %.sroa.0.0.i = getelementptr inbounds i8, ptr %.sroa.0.018.i, i64 -32 - %54 = load i64, ptr %.sroa.0.0.i, align 8, !tbaa !650 - %55 = icmp ult i64 %.sroa.08.0.copyload.i, %54 - br i1 %55, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !684 + %55 = load i64, ptr %.sroa.0.0.i, align 8, !tbaa !650 + %56 = icmp ult i64 %.sroa.08.0.copyload.i, %55 + br i1 %56, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !684 ._crit_edge.i: ; preds = %_ZN11cmGraphEdgeaSEOS_.exit.i %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i, i64 24 %.pre.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !364 store i64 %.sroa.08.0.copyload.i, ptr %.sroa.0.018.i, align 8 %.sroa.5.0..sroa_idx10.i = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i, i64 8 - store i16 %.sroa.5.0.copyload.i, ptr %.sroa.5.0..sroa_idx10.i, align 8 - %56 = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i, i64 16 - store ptr %21, ptr %56, align 8, !tbaa !683 - store ptr %23, ptr %.phi.trans.insert.i, align 8, !tbaa !364 + store i16 %20, ptr %.sroa.5.0..sroa_idx10.i, align 8 + %57 = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i, i64 16 + store ptr %22, ptr %57, align 8, !tbaa !683 + store ptr %24, ptr %.phi.trans.insert.i, align 8, !tbaa !364 %.not.i.i.i.i.i.i.i1.i = icmp eq ptr %.pre.i, null - br i1 %.not.i.i.i.i.i.i.i1.i, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, label %57 - -57: ; preds = %._crit_edge.i - %58 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 8 - %59 = load atomic i64, ptr %58 acquire, align 8 - %60 = icmp eq i64 %59, 4294967297 - %61 = trunc i64 %59 to i32 - br i1 %60, label %62, label %70 - -62: ; preds = %57 - store i32 0, ptr %58, align 8, !tbaa !365 - %63 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 12 - store i32 0, ptr %63, align 4, !tbaa !368 - %64 = load ptr, ptr %.pre.i, align 8, !tbaa !369 - %65 = getelementptr inbounds nuw i8, ptr %64, i64 16 - %66 = load ptr, ptr %65, align 8 - tail call void %66(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i) #30 - %67 = load ptr, ptr %.pre.i, align 8, !tbaa !369 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 24 - %69 = load ptr, ptr %68, align 8 - tail call void %69(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i) #30 + br i1 %.not.i.i.i.i.i.i.i1.i, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, label %58 + +58: ; preds = %._crit_edge.i + %59 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 8 + %60 = load atomic i64, ptr %59 acquire, align 8 + %61 = icmp eq i64 %60, 4294967297 + %62 = trunc i64 %60 to i32 + br i1 %61, label %63, label %71 + +63: ; preds = %58 + store i32 0, ptr %59, align 8, !tbaa !365 + %64 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 12 + store i32 0, ptr %64, align 4, !tbaa !368 + %65 = load ptr, ptr %.pre.i, align 8, !tbaa !369 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 16 + %67 = load ptr, ptr %66, align 8 + tail call void %67(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i) #30 + %68 = load ptr, ptr %.pre.i, align 8, !tbaa !369 + %69 = getelementptr inbounds nuw i8, ptr %68, i64 24 + %70 = load ptr, ptr %69, align 8 + tail call void %70(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i) #30 br label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit -70: ; preds = %57 - %71 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i2.i = icmp eq i8 %71, 0 - br i1 %.not.i.i.i.i.i.i.i.i2.i, label %74, label %72 +71: ; preds = %58 + %72 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i2.i = icmp eq i8 %72, 0 + br i1 %.not.i.i.i.i.i.i.i.i2.i, label %75, label %73 -72: ; preds = %70 - %73 = add nsw i32 %61, -1 - store i32 %73, ptr %58, align 4, !tbaa !371 +73: ; preds = %71 + %74 = add nsw i32 %62, -1 + store i32 %74, ptr %59, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i -74: ; preds = %70 - %75 = atomicrmw volatile add ptr %58, i32 -1 acq_rel, align 4 +75: ; preds = %71 + %76 = atomicrmw volatile add ptr %59, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i: ; preds = %74, %72 - %.0.i.i.i.i.i.i.i.i.i4.i = phi i32 [ %61, %72 ], [ %75, %74 ] - %76 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i4.i, 1 - br i1 %76, label %77, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i: ; preds = %75, %73 + %.0.i.i.i.i.i.i.i.i.i4.i = phi i32 [ %62, %73 ], [ %76, %75 ] + %77 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i4.i, 1 + br i1 %77, label %78, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, !prof !372 -77: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i +78: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i) #30 br label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit -_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit: ; preds = %._crit_edge.thread.i, %._crit_edge.i, %62, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i, %77 - %78 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 32 - %.not.i.i.i.i = icmp eq ptr %78, %8 +_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit: ; preds = %._crit_edge.thread.i, %._crit_edge.i, %63, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i, %78 + %79 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 32 + %.not.i.i.i.i = icmp eq ptr %79, %8 br i1 %.not.i.i.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, label %.lr.ph.i.i.i.i, !llvm.loop !685 -79: ; preds = %9 +80: ; preds = %9 tail call void @_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops15_Iter_less_iterEEvT_SA_T0_(ptr %6, ptr %8) br label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit -_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, %.lr.ph, %18, %79 - %80 = load ptr, ptr %.sroa.019.025, align 8, !tbaa !681 - %81 = load ptr, ptr %7, align 8, !tbaa !681 - %82 = icmp eq ptr %80, %81 - br i1 %82, label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit, label %.preheader.i.i.i - -.preheader.i.i.i: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, %84 - %.sroa.09.0.i.i.i = phi ptr [ %83, %84 ], [ %80, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ] - %83 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i.i.i, i64 32 - %.not.i.i.i = icmp eq ptr %83, %81 - br i1 %.not.i.i.i, label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit, label %84 - -84: ; preds = %.preheader.i.i.i - %85 = load i64, ptr %.sroa.09.0.i.i.i, align 8, !tbaa !650 - %86 = load i64, ptr %83, align 8, !tbaa !650 - %87 = icmp eq i64 %85, %86 - br i1 %87, label %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i, label %.preheader.i.i.i, !llvm.loop !686 - -_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i: ; preds = %84 - %88 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i.i.i, i64 64 - %.not18.i.i = icmp eq ptr %88, %81 +_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, %.lr.ph, %18, %80 + %81 = load ptr, ptr %.sroa.019.025, align 8, !tbaa !681 + %82 = load ptr, ptr %7, align 8, !tbaa !681 + %83 = icmp eq ptr %81, %82 + br i1 %83, label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit, label %.preheader.i.i.i + +.preheader.i.i.i: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, %85 + %.sroa.09.0.i.i.i = phi ptr [ %84, %85 ], [ %81, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ] + %84 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i.i.i, i64 32 + %.not.i.i.i = icmp eq ptr %84, %82 + br i1 %.not.i.i.i, label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit, label %85 + +85: ; preds = %.preheader.i.i.i + %86 = load i64, ptr %.sroa.09.0.i.i.i, align 8, !tbaa !650 + %87 = load i64, ptr %84, align 8, !tbaa !650 + %88 = icmp eq i64 %86, %87 + br i1 %88, label %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i, label %.preheader.i.i.i, !llvm.loop !686 + +_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i: ; preds = %85 + %89 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i.i.i, i64 64 + %.not18.i.i = icmp eq ptr %89, %82 br i1 %.not18.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i, %_ZN11cmGraphEdgeaSEOS_.exit.i.i - %89 = phi ptr [ %123, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %88, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] + %90 = phi ptr [ %124, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %89, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] %.sroa.0.020.i.i = phi ptr [ %.sroa.0.1.i.i, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %.sroa.09.0.i.i.i, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] - %.sroa.011.019.i.i = phi ptr [ %89, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %83, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] - %90 = load i64, ptr %.sroa.0.020.i.i, align 8, !tbaa !650 - %91 = load i64, ptr %89, align 8, !tbaa !650 - %92 = icmp eq i64 %90, %91 - br i1 %92, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, label %93 - -93: ; preds = %.lr.ph.i.i - %94 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 32 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(32) %89, i64 10, i1 false) - %95 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 48 - %96 = getelementptr inbounds nuw i8, ptr %.sroa.011.019.i.i, i64 48 - %97 = load ptr, ptr %96, align 8, !tbaa !644 - %98 = getelementptr inbounds nuw i8, ptr %.sroa.011.019.i.i, i64 56 - %99 = load ptr, ptr %98, align 8, !tbaa !364 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %96, i8 0, i64 16, i1 false) - store ptr %97, ptr %95, align 8, !tbaa !683 - %100 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 56 - %101 = load ptr, ptr %100, align 8, !tbaa !364 - store ptr %99, ptr %100, align 8, !tbaa !364 - %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %101, null - br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, label %102 - -102: ; preds = %93 - %103 = getelementptr inbounds nuw i8, ptr %101, i64 8 - %104 = load atomic i64, ptr %103 acquire, align 8 - %105 = icmp eq i64 %104, 4294967297 - %106 = trunc i64 %104 to i32 - br i1 %105, label %107, label %115 - -107: ; preds = %102 - store i32 0, ptr %103, align 8, !tbaa !365 - %108 = getelementptr inbounds nuw i8, ptr %101, i64 12 - store i32 0, ptr %108, align 4, !tbaa !368 - %109 = load ptr, ptr %101, align 8, !tbaa !369 - %110 = getelementptr inbounds nuw i8, ptr %109, i64 16 - %111 = load ptr, ptr %110, align 8 - tail call void %111(ptr noundef nonnull align 8 dereferenceable(16) %101) #30 - %112 = load ptr, ptr %101, align 8, !tbaa !369 - %113 = getelementptr inbounds nuw i8, ptr %112, i64 24 - %114 = load ptr, ptr %113, align 8 - tail call void %114(ptr noundef nonnull align 8 dereferenceable(16) %101) #30 + %.sroa.011.019.i.i = phi ptr [ %90, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %84, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] + %91 = load i64, ptr %.sroa.0.020.i.i, align 8, !tbaa !650 + %92 = load i64, ptr %90, align 8, !tbaa !650 + %93 = icmp eq i64 %91, %92 + br i1 %93, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, label %94 + +94: ; preds = %.lr.ph.i.i + %95 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 32 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(32) %90, i64 10, i1 false) + %96 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 48 + %97 = getelementptr inbounds nuw i8, ptr %.sroa.011.019.i.i, i64 48 + %98 = load ptr, ptr %97, align 8, !tbaa !644 + %99 = getelementptr inbounds nuw i8, ptr %.sroa.011.019.i.i, i64 56 + %100 = load ptr, ptr %99, align 8, !tbaa !364 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %97, i8 0, i64 16, i1 false) + store ptr %98, ptr %96, align 8, !tbaa !683 + %101 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 56 + %102 = load ptr, ptr %101, align 8, !tbaa !364 + store ptr %100, ptr %101, align 8, !tbaa !364 + %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %102, null + br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, label %103 + +103: ; preds = %94 + %104 = getelementptr inbounds nuw i8, ptr %102, i64 8 + %105 = load atomic i64, ptr %104 acquire, align 8 + %106 = icmp eq i64 %105, 4294967297 + %107 = trunc i64 %105 to i32 + br i1 %106, label %108, label %116 + +108: ; preds = %103 + store i32 0, ptr %104, align 8, !tbaa !365 + %109 = getelementptr inbounds nuw i8, ptr %102, i64 12 + store i32 0, ptr %109, align 4, !tbaa !368 + %110 = load ptr, ptr %102, align 8, !tbaa !369 + %111 = getelementptr inbounds nuw i8, ptr %110, i64 16 + %112 = load ptr, ptr %111, align 8 + tail call void %112(ptr noundef nonnull align 8 dereferenceable(16) %102) #30 + %113 = load ptr, ptr %102, align 8, !tbaa !369 + %114 = getelementptr inbounds nuw i8, ptr %113, i64 24 + %115 = load ptr, ptr %114, align 8 + tail call void %115(ptr noundef nonnull align 8 dereferenceable(16) %102) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit.i.i -115: ; preds = %102 - %116 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %116, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %119, label %117 +116: ; preds = %103 + %117 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %117, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %120, label %118 -117: ; preds = %115 - %118 = add nsw i32 %106, -1 - store i32 %118, ptr %103, align 4, !tbaa !371 +118: ; preds = %116 + %119 = add nsw i32 %107, -1 + store i32 %119, ptr %104, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i -119: ; preds = %115 - %120 = atomicrmw volatile add ptr %103, i32 -1 acq_rel, align 4 +120: ; preds = %116 + %121 = atomicrmw volatile add ptr %104, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i: ; preds = %119, %117 - %.0.i.i.i.i.i.i.i.i.i.i.i = phi i32 [ %106, %117 ], [ %120, %119 ] - %121 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i.i, 1 - br i1 %121, label %122, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i: ; preds = %120, %118 + %.0.i.i.i.i.i.i.i.i.i.i.i = phi i32 [ %107, %118 ], [ %121, %120 ] + %122 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i.i, 1 + br i1 %122, label %123, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, !prof !372 -122: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i - tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %101) #30 +123: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i + tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %102) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit.i.i -_ZN11cmGraphEdgeaSEOS_.exit.i.i: ; preds = %122, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i, %107, %93, %.lr.ph.i.i - %.sroa.0.1.i.i = phi ptr [ %.sroa.0.020.i.i, %.lr.ph.i.i ], [ %94, %93 ], [ %94, %107 ], [ %94, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i ], [ %94, %122 ] - %123 = getelementptr inbounds nuw i8, ptr %89, i64 32 - %.not.i.i13 = icmp eq ptr %123, %81 +_ZN11cmGraphEdgeaSEOS_.exit.i.i: ; preds = %123, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i, %108, %94, %.lr.ph.i.i + %.sroa.0.1.i.i = phi ptr [ %.sroa.0.020.i.i, %.lr.ph.i.i ], [ %95, %94 ], [ %95, %108 ], [ %95, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i ], [ %95, %123 ] + %124 = getelementptr inbounds nuw i8, ptr %90, i64 32 + %.not.i.i13 = icmp eq ptr %124, %82 br i1 %.not.i.i13, label %._crit_edge.i.i.loopexit, label %.lr.ph.i.i, !llvm.loop !687 ._crit_edge.i.i.loopexit: ; preds = %_ZN11cmGraphEdgeaSEOS_.exit.i.i @@ -8804,26 +8804,26 @@ _ZN11cmGraphEdgeaSEOS_.exit.i.i: ; preds = %122, %_ZN9__gnu_cxx br label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %._crit_edge.i.i.loopexit, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i - %.pre28 = phi ptr [ %80, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.pre28.pre, %._crit_edge.i.i.loopexit ] - %.pre = phi ptr [ %81, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.pre.pre, %._crit_edge.i.i.loopexit ] + %.pre28 = phi ptr [ %81, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.pre28.pre, %._crit_edge.i.i.loopexit ] + %.pre = phi ptr [ %82, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.pre.pre, %._crit_edge.i.i.loopexit ] %.sroa.0.0.lcssa.i.i = phi ptr [ %.sroa.09.0.i.i.i, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.sroa.0.1.i.i, %._crit_edge.i.i.loopexit ] - %124 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa.i.i, i64 32 + %125 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa.i.i, i64 32 br label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit _ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit: ; preds = %.preheader.i.i.i, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, %._crit_edge.i.i - %125 = phi ptr [ %.pre28, %._crit_edge.i.i ], [ %80, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %80, %.preheader.i.i.i ] - %126 = phi ptr [ %.pre, %._crit_edge.i.i ], [ %80, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %81, %.preheader.i.i.i ] - %.sroa.05.0.i.i = phi ptr [ %124, %._crit_edge.i.i ], [ %80, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %81, %.preheader.i.i.i ] - %127 = ptrtoint ptr %.sroa.05.0.i.i to i64 - %128 = ptrtoint ptr %125 to i64 - %129 = sub i64 %127, %128 - %130 = getelementptr inbounds i8, ptr %125, i64 %129 - %131 = ptrtoint ptr %126 to i64 - %132 = sub i64 %131, %128 - %133 = getelementptr inbounds i8, ptr %125, i64 %132 - %134 = tail call ptr @_ZNSt6vectorI11cmGraphEdgeSaIS0_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS0_S2_EES6_(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.019.025, ptr %130, ptr %133) - %135 = getelementptr inbounds nuw i8, ptr %.sroa.019.025, i64 24 - %.not = icmp eq ptr %135, %5 + %126 = phi ptr [ %.pre28, %._crit_edge.i.i ], [ %81, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %81, %.preheader.i.i.i ] + %127 = phi ptr [ %.pre, %._crit_edge.i.i ], [ %81, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %82, %.preheader.i.i.i ] + %.sroa.05.0.i.i = phi ptr [ %125, %._crit_edge.i.i ], [ %81, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %82, %.preheader.i.i.i ] + %128 = ptrtoint ptr %.sroa.05.0.i.i to i64 + %129 = ptrtoint ptr %126 to i64 + %130 = sub i64 %128, %129 + %131 = getelementptr inbounds i8, ptr %126, i64 %130 + %132 = ptrtoint ptr %127 to i64 + %133 = sub i64 %132, %129 + %134 = getelementptr inbounds i8, ptr %126, i64 %133 + %135 = tail call ptr @_ZNSt6vectorI11cmGraphEdgeSaIS0_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS0_S2_EES6_(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.019.025, ptr %131, ptr %134) + %136 = getelementptr inbounds nuw i8, ptr %.sroa.019.025, i64 24 + %.not = icmp eq ptr %136, %5 br i1 %.not, label %._crit_edge, label %.lr.ph } @@ -36360,151 +36360,151 @@ _ZN11cmGraphEdgeD2Ev.exit: ; preds = %74, %_ZN9__gnu_cxx2 define linkonce_odr dso_local void @_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_(ptr %0) local_unnamed_addr #6 comdat personality ptr @__gxx_personality_v0 { %.sroa.08.0.copyload = load i64, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.sroa.5.0.copyload = load i16, ptr %.sroa.5.0..sroa_idx, align 8 - %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %3 = load ptr, ptr %2, align 8, !tbaa !644 - %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %5 = load ptr, ptr %4, align 8, !tbaa !364 + %2 = load i16, ptr %.sroa.5.0..sroa_idx, align 8 + %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %4 = load ptr, ptr %3, align 8, !tbaa !644 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %6 = load ptr, ptr %5, align 8, !tbaa !364 %.sroa.0.016 = getelementptr inbounds i8, ptr %0, i64 -32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false) - %6 = load i64, ptr %.sroa.0.016, align 8, !tbaa !650 - %7 = icmp ult i64 %.sroa.08.0.copyload, %6 - br i1 %7, label %.lr.ph, label %._crit_edge.thread + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false) + %7 = load i64, ptr %.sroa.0.016, align 8, !tbaa !650 + %8 = icmp ult i64 %.sroa.08.0.copyload, %7 + br i1 %8, label %.lr.ph, label %._crit_edge.thread ._crit_edge.thread: ; preds = %1 %.sroa.5.0..sroa_idx1021 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i16 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx1021, align 8 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %3, ptr %8, align 8, !tbaa !683 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %5, ptr %9, align 8, !tbaa !364 + store i16 %2, ptr %.sroa.5.0..sroa_idx1021, align 8 + %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %4, ptr %9, align 8, !tbaa !683 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %6, ptr %10, align 8, !tbaa !364 br label %_ZN11cmGraphEdgeD2Ev.exit .lr.ph: ; preds = %1, %_ZN11cmGraphEdgeaSEOS_.exit %.sroa.0.018 = phi ptr [ %.sroa.0.0, %_ZN11cmGraphEdgeaSEOS_.exit ], [ %.sroa.0.016, %1 ] %.sroa.013.017 = phi ptr [ %.sroa.0.018, %_ZN11cmGraphEdgeaSEOS_.exit ], [ %0, %1 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.013.017, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.018, i64 10, i1 false) - %10 = getelementptr inbounds nuw i8, ptr %.sroa.013.017, i64 16 - %11 = getelementptr inbounds i8, ptr %.sroa.013.017, i64 -16 - %12 = load ptr, ptr %11, align 8, !tbaa !644 - %13 = getelementptr inbounds i8, ptr %.sroa.013.017, i64 -8 - %14 = load ptr, ptr %13, align 8, !tbaa !364 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, i8 0, i64 16, i1 false) - store ptr %12, ptr %10, align 8, !tbaa !683 - %15 = getelementptr inbounds nuw i8, ptr %.sroa.013.017, i64 24 - %16 = load ptr, ptr %15, align 8, !tbaa !364 - store ptr %14, ptr %15, align 8, !tbaa !364 - %.not.i.i.i.i.i.i.i = icmp eq ptr %16, null - br i1 %.not.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit, label %17 - -17: ; preds = %.lr.ph - %18 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %19 = load atomic i64, ptr %18 acquire, align 8 - %20 = icmp eq i64 %19, 4294967297 - %21 = trunc i64 %19 to i32 - br i1 %20, label %22, label %30 - -22: ; preds = %17 - store i32 0, ptr %18, align 8, !tbaa !365 - %23 = getelementptr inbounds nuw i8, ptr %16, i64 12 - store i32 0, ptr %23, align 4, !tbaa !368 - %24 = load ptr, ptr %16, align 8, !tbaa !369 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 16 - %26 = load ptr, ptr %25, align 8 - tail call void %26(ptr noundef nonnull align 8 dereferenceable(16) %16) #30 - %27 = load ptr, ptr %16, align 8, !tbaa !369 - %28 = getelementptr inbounds nuw i8, ptr %27, i64 24 - %29 = load ptr, ptr %28, align 8 - tail call void %29(ptr noundef nonnull align 8 dereferenceable(16) %16) #30 + %11 = getelementptr inbounds nuw i8, ptr %.sroa.013.017, i64 16 + %12 = getelementptr inbounds i8, ptr %.sroa.013.017, i64 -16 + %13 = load ptr, ptr %12, align 8, !tbaa !644 + %14 = getelementptr inbounds i8, ptr %.sroa.013.017, i64 -8 + %15 = load ptr, ptr %14, align 8, !tbaa !364 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %12, i8 0, i64 16, i1 false) + store ptr %13, ptr %11, align 8, !tbaa !683 + %16 = getelementptr inbounds nuw i8, ptr %.sroa.013.017, i64 24 + %17 = load ptr, ptr %16, align 8, !tbaa !364 + store ptr %15, ptr %16, align 8, !tbaa !364 + %.not.i.i.i.i.i.i.i = icmp eq ptr %17, null + br i1 %.not.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit, label %18 + +18: ; preds = %.lr.ph + %19 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %20 = load atomic i64, ptr %19 acquire, align 8 + %21 = icmp eq i64 %20, 4294967297 + %22 = trunc i64 %20 to i32 + br i1 %21, label %23, label %31 + +23: ; preds = %18 + store i32 0, ptr %19, align 8, !tbaa !365 + %24 = getelementptr inbounds nuw i8, ptr %17, i64 12 + store i32 0, ptr %24, align 4, !tbaa !368 + %25 = load ptr, ptr %17, align 8, !tbaa !369 + %26 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %27 = load ptr, ptr %26, align 8 + tail call void %27(ptr noundef nonnull align 8 dereferenceable(16) %17) #30 + %28 = load ptr, ptr %17, align 8, !tbaa !369 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 24 + %30 = load ptr, ptr %29, align 8 + tail call void %30(ptr noundef nonnull align 8 dereferenceable(16) %17) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit -30: ; preds = %17 - %31 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i = icmp eq i8 %31, 0 - br i1 %.not.i.i.i.i.i.i.i.i, label %34, label %32 +31: ; preds = %18 + %32 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i = icmp eq i8 %32, 0 + br i1 %.not.i.i.i.i.i.i.i.i, label %35, label %33 -32: ; preds = %30 - %33 = add nsw i32 %21, -1 - store i32 %33, ptr %18, align 4, !tbaa !371 +33: ; preds = %31 + %34 = add nsw i32 %22, -1 + store i32 %34, ptr %19, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i -34: ; preds = %30 - %35 = atomicrmw volatile add ptr %18, i32 -1 acq_rel, align 4 +35: ; preds = %31 + %36 = atomicrmw volatile add ptr %19, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i: ; preds = %34, %32 - %.0.i.i.i.i.i.i.i.i.i = phi i32 [ %21, %32 ], [ %35, %34 ] - %36 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i, 1 - br i1 %36, label %37, label %_ZN11cmGraphEdgeaSEOS_.exit, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i: ; preds = %35, %33 + %.0.i.i.i.i.i.i.i.i.i = phi i32 [ %22, %33 ], [ %36, %35 ] + %37 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i, 1 + br i1 %37, label %38, label %_ZN11cmGraphEdgeaSEOS_.exit, !prof !372 -37: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i - tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #30 +38: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i + tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %17) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit -_ZN11cmGraphEdgeaSEOS_.exit: ; preds = %.lr.ph, %22, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i, %37 +_ZN11cmGraphEdgeaSEOS_.exit: ; preds = %.lr.ph, %23, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i, %38 %.sroa.0.0 = getelementptr inbounds i8, ptr %.sroa.0.018, i64 -32 - %38 = load i64, ptr %.sroa.0.0, align 8, !tbaa !650 - %39 = icmp ult i64 %.sroa.08.0.copyload, %38 - br i1 %39, label %.lr.ph, label %._crit_edge, !llvm.loop !684 + %39 = load i64, ptr %.sroa.0.0, align 8, !tbaa !650 + %40 = icmp ult i64 %.sroa.08.0.copyload, %39 + br i1 %40, label %.lr.ph, label %._crit_edge, !llvm.loop !684 ._crit_edge: ; preds = %_ZN11cmGraphEdgeaSEOS_.exit %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 24 %.pre = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !364 store i64 %.sroa.08.0.copyload, ptr %.sroa.0.018, align 8 %.sroa.5.0..sroa_idx10 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 8 - store i16 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx10, align 8 - %40 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 16 - store ptr %3, ptr %40, align 8, !tbaa !683 - %41 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 24 - store ptr %5, ptr %41, align 8, !tbaa !364 + store i16 %2, ptr %.sroa.5.0..sroa_idx10, align 8 + %41 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 16 + store ptr %4, ptr %41, align 8, !tbaa !683 + %42 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 24 + store ptr %6, ptr %42, align 8, !tbaa !364 %.not.i.i.i.i.i.i.i1 = icmp eq ptr %.pre, null - br i1 %.not.i.i.i.i.i.i.i1, label %_ZN11cmGraphEdgeD2Ev.exit, label %42 - -42: ; preds = %._crit_edge - %43 = getelementptr inbounds nuw i8, ptr %.pre, i64 8 - %44 = load atomic i64, ptr %43 acquire, align 8 - %45 = icmp eq i64 %44, 4294967297 - %46 = trunc i64 %44 to i32 - br i1 %45, label %47, label %55 - -47: ; preds = %42 - store i32 0, ptr %43, align 8, !tbaa !365 - %48 = getelementptr inbounds nuw i8, ptr %.pre, i64 12 - store i32 0, ptr %48, align 4, !tbaa !368 - %49 = load ptr, ptr %.pre, align 8, !tbaa !369 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 16 - %51 = load ptr, ptr %50, align 8 - tail call void %51(ptr noundef nonnull align 8 dereferenceable(16) %.pre) #30 - %52 = load ptr, ptr %.pre, align 8, !tbaa !369 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 24 - %54 = load ptr, ptr %53, align 8 - tail call void %54(ptr noundef nonnull align 8 dereferenceable(16) %.pre) #30 + br i1 %.not.i.i.i.i.i.i.i1, label %_ZN11cmGraphEdgeD2Ev.exit, label %43 + +43: ; preds = %._crit_edge + %44 = getelementptr inbounds nuw i8, ptr %.pre, i64 8 + %45 = load atomic i64, ptr %44 acquire, align 8 + %46 = icmp eq i64 %45, 4294967297 + %47 = trunc i64 %45 to i32 + br i1 %46, label %48, label %56 + +48: ; preds = %43 + store i32 0, ptr %44, align 8, !tbaa !365 + %49 = getelementptr inbounds nuw i8, ptr %.pre, i64 12 + store i32 0, ptr %49, align 4, !tbaa !368 + %50 = load ptr, ptr %.pre, align 8, !tbaa !369 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 16 + %52 = load ptr, ptr %51, align 8 + tail call void %52(ptr noundef nonnull align 8 dereferenceable(16) %.pre) #30 + %53 = load ptr, ptr %.pre, align 8, !tbaa !369 + %54 = getelementptr inbounds nuw i8, ptr %53, i64 24 + %55 = load ptr, ptr %54, align 8 + tail call void %55(ptr noundef nonnull align 8 dereferenceable(16) %.pre) #30 br label %_ZN11cmGraphEdgeD2Ev.exit -55: ; preds = %42 - %56 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i2 = icmp eq i8 %56, 0 - br i1 %.not.i.i.i.i.i.i.i.i2, label %59, label %57 +56: ; preds = %43 + %57 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i2 = icmp eq i8 %57, 0 + br i1 %.not.i.i.i.i.i.i.i.i2, label %60, label %58 -57: ; preds = %55 - %58 = add nsw i32 %46, -1 - store i32 %58, ptr %43, align 4, !tbaa !371 +58: ; preds = %56 + %59 = add nsw i32 %47, -1 + store i32 %59, ptr %44, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3 -59: ; preds = %55 - %60 = atomicrmw volatile add ptr %43, i32 -1 acq_rel, align 4 +60: ; preds = %56 + %61 = atomicrmw volatile add ptr %44, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3 -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3: ; preds = %59, %57 - %.0.i.i.i.i.i.i.i.i.i4 = phi i32 [ %46, %57 ], [ %60, %59 ] - %61 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i4, 1 - br i1 %61, label %62, label %_ZN11cmGraphEdgeD2Ev.exit, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3: ; preds = %60, %58 + %.0.i.i.i.i.i.i.i.i.i4 = phi i32 [ %47, %58 ], [ %61, %60 ] + %62 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i4, 1 + br i1 %62, label %63, label %_ZN11cmGraphEdgeD2Ev.exit, !prof !372 -62: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3 +63: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3 tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %.pre) #30 br label %_ZN11cmGraphEdgeD2Ev.exit -_ZN11cmGraphEdgeD2Ev.exit: ; preds = %._crit_edge.thread, %62, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3, %47, %._crit_edge +_ZN11cmGraphEdgeD2Ev.exit: ; preds = %._crit_edge.thread, %63, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3, %48, %._crit_edge ret void } diff --git a/bench/duckdb/optimized/fastcover.ll b/bench/duckdb/optimized/fastcover.ll index caf5018b31d..325c6bdc2ff 100644 --- a/bench/duckdb/optimized/fastcover.ll +++ b/bench/duckdb/optimized/fastcover.ll @@ -61,39 +61,39 @@ define noundef i64 @_ZN11duckdb_zstd31ZDICT_trainFromBuffer_fastCoverEPvmPKvPKmj %16 = getelementptr inbounds nuw i8, ptr %5, i64 32 %17 = load i32, ptr %16, align 8, !tbaa !12 %18 = tail call i32 @llvm.umax.i32(i32 %17, i32 1) - %.sroa.048.0.copyload = load i32, ptr %5, align 8, !tbaa !10 - %.sroa.249.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 4 - %.sroa.249.0.copyload = load i32, ptr %.sroa.249.0..sroa_idx, align 4, !tbaa !10 - %.sroa.450.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 12 - %.sroa.450.0.copyload = load i32, ptr %.sroa.450.0..sroa_idx, align 4, !tbaa !10 - %.sroa.551.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 16 - %.sroa.551.0.copyload = load i32, ptr %.sroa.551.0..sroa_idx, align 8, !tbaa !10 - %.sroa.955.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 36 - %.sroa.955.0.copyload = load i32, ptr %.sroa.955.0..sroa_idx, align 4, !tbaa !10 + %.sroa.049.0.copyload = load i32, ptr %5, align 8, !tbaa !10 + %.sroa.250.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 4 + %.sroa.250.0.copyload = load i32, ptr %.sroa.250.0..sroa_idx, align 4, !tbaa !10 + %.sroa.451.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 12 + %.sroa.451.0.copyload = load i32, ptr %.sroa.451.0..sroa_idx, align 4, !tbaa !10 + %.sroa.552.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 16 + %.sroa.552.0.copyload = load i32, ptr %.sroa.552.0..sroa_idx, align 8, !tbaa !10 + %.sroa.956.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 36 + %.sroa.956.0.copyload = load i32, ptr %.sroa.956.0..sroa_idx, align 4, !tbaa !10 %19 = getelementptr inbounds nuw i8, ptr %5, i64 44 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.16.sroa.4, ptr noundef nonnull align 4 dereferenceable(12) %19, i64 12, i1 false) - %20 = icmp eq i32 %.sroa.249.0.copyload, 0 - %21 = icmp eq i32 %.sroa.048.0.copyload, 0 + %20 = icmp eq i32 %.sroa.250.0.copyload, 0 + %21 = icmp eq i32 %.sroa.049.0.copyload, 0 %or.cond.i = select i1 %20, i1 true, i1 %21 br i1 %or.cond.i, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread, label %22 22: ; preds = %6 - switch i32 %.sroa.249.0.copyload, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread [ + switch i32 %.sroa.250.0.copyload, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread [ i32 8, label %23 i32 6, label %23 ] 23: ; preds = %22, %22 - %24 = zext i32 %.sroa.048.0.copyload to i64 + %24 = zext i32 %.sroa.049.0.copyload to i64 %25 = icmp ult i64 %1, %24 - %26 = icmp ugt i32 %.sroa.249.0.copyload, %.sroa.048.0.copyload + %26 = icmp ugt i32 %.sroa.250.0.copyload, %.sroa.049.0.copyload %or.cond20.i = or i1 %26, %25 %27 = add i32 %15, -32 %or.cond7.i = icmp ult i32 %27, -31 %or.cond21.i = or i1 %or.cond7.i, %or.cond20.i %or.cond12.i = icmp ugt i32 %17, 10 - %or.cond58 = select i1 %or.cond21.i, i1 true, i1 %or.cond12.i - br i1 %or.cond58, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread, label %34 + %or.cond59 = select i1 %or.cond21.i, i1 true, i1 %or.cond12.i + br i1 %or.cond59, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread, label %34 _ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread: ; preds = %23, %22, %6 %28 = icmp sgt i32 %11, 0 @@ -140,7 +140,7 @@ _ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit. %53 = zext nneg i32 %18 to i64 %54 = getelementptr inbounds nuw %"struct.duckdb_zstd::FASTCOVER_accel_t", ptr @_ZN11duckdb_zstdL32FASTCOVER_defaultAccelParametersE, i64 %53 %.sroa.011.0.copyload = load i64, ptr %54, align 8 - %55 = call fastcc noundef i64 @_ZN11duckdb_zstdL18FASTCOVER_ctx_initEPNS_15FASTCOVER_ctx_tEPKvPKmjjdjNS_17FASTCOVER_accel_tE(ptr noundef %7, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %.sroa.249.0.copyload, double noundef 1.000000e+00, i32 noundef %15, i64 %.sroa.011.0.copyload) + %55 = call fastcc noundef i64 @_ZN11duckdb_zstdL18FASTCOVER_ctx_initEPNS_15FASTCOVER_ctx_tEPKvPKmjjdjNS_17FASTCOVER_accel_tE(ptr noundef %7, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %.sroa.250.0.copyload, double noundef 1.000000e+00, i32 noundef %15, i64 %.sroa.011.0.copyload) %56 = icmp ult i64 %55, -119 br i1 %56, label %.critedge, label %57 @@ -178,17 +178,17 @@ _ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit. %78 = tail call noalias ptr @calloc(i64 noundef %77, i64 noundef 2) #14 %79 = getelementptr inbounds nuw i8, ptr %7, i64 56 %80 = load ptr, ptr %79, align 8, !tbaa !23 - store i32 %.sroa.048.0.copyload, ptr %8, align 8, !tbaa !10 + store i32 %.sroa.049.0.copyload, ptr %8, align 8, !tbaa !10 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 4 - store i32 %.sroa.249.0.copyload, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !10 + store i32 %.sroa.250.0.copyload, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !10 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 8 - store i32 %.sroa.450.0.copyload, ptr %.sroa.9.0..sroa_idx, align 8, !tbaa !10 + store i32 %.sroa.451.0.copyload, ptr %.sroa.9.0..sroa_idx, align 8, !tbaa !10 %.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 12 - store i32 %.sroa.551.0.copyload, ptr %.sroa.11.0..sroa_idx, align 4, !tbaa !10 + store i32 %.sroa.552.0.copyload, ptr %.sroa.11.0..sroa_idx, align 4, !tbaa !10 %.sroa.12.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 16 store double 1.000000e+00, ptr %.sroa.12.0..sroa_idx, align 8, !tbaa !24 %.sroa.14.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 24 - store i32 %.sroa.955.0.copyload, ptr %.sroa.14.0..sroa_idx, align 8, !tbaa !10 + store i32 %.sroa.956.0.copyload, ptr %.sroa.14.0..sroa_idx, align 8, !tbaa !10 %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 28 store i32 0, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !10 %.sroa.16.sroa.4.0..sroa.16.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 32 diff --git a/bench/duckdb/optimized/miniz.ll b/bench/duckdb/optimized/miniz.ll index d53b121f6e7..0035480c2c1 100644 --- a/bench/duckdb/optimized/miniz.ll +++ b/bench/duckdb/optimized/miniz.ll @@ -11182,8 +11182,8 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi 143: ; preds = %132 %144 = call i32 @llvm.umax.i32(i32 %78, i32 %86) - %.not441 = icmp eq i32 %144, 0 - br i1 %.not441, label %154, label %145 + %.not439 = icmp eq i32 %144, 0 + br i1 %.not439, label %154, label %145 145: ; preds = %143 %146 = zext nneg i32 %144 to i64 @@ -11229,22 +11229,22 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi 162: ; preds = %160, %154 %.not237 = icmp eq i32 %86, 0 - br i1 %.not237, label %.thread425, label %163 + br i1 %.not237, label %.thread423, label %163 163: ; preds = %162 %164 = icmp eq i64 %99, 4294967295 %165 = icmp eq i64 %112, 4294967295 %or.cond8 = select i1 %164, i1 true, i1 %165 - br i1 %or.cond8, label %166, label %.thread425 + br i1 %or.cond8, label %166, label %.thread423 166: ; preds = %163 %167 = load ptr, ptr %19, align 8, !tbaa !215 %168 = load ptr, ptr %63, align 8, !tbaa !226 %169 = call noundef i64 %167(ptr noundef %168, i64 noundef %134, ptr noundef %.sroa.0.1.ph, i64 noundef %135) %.not238 = icmp eq i64 %169, %135 - br i1 %.not238, label %.preheader, label %.thread430 + br i1 %.not238, label %.preheader, label %.thread428 -.thread430: ; preds = %166 +.thread428: ; preds = %166 %170 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 20, ptr %170, align 4, !tbaa !211 br label %348 @@ -11305,21 +11305,21 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %205 = zext i32 %204 to i64 %206 = shl nuw i64 %205, 32 %207 = or disjoint i64 %206, %202 - br label %.thread425 + br label %.thread423 208: ; preds = %186 %209 = zext nneg i32 %183 to i64 %210 = getelementptr inbounds nuw i8, ptr %.0213, i64 %209 %211 = sub i32 %.0211, %183 %.not239 = icmp eq i32 %211, 0 - br i1 %.not239, label %.thread425, label %.preheader, !llvm.loop !280 + br i1 %.not239, label %.thread423, label %.preheader, !llvm.loop !280 212: ; preds = %189 %213 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 9, ptr %213, align 4, !tbaa !211 br label %348 -.thread425: ; preds = %208, %191, %163, %162 +.thread423: ; preds = %208, %191, %163, %162 %.0202 = phi i64 [ %112, %163 ], [ %112, %162 ], [ %199, %191 ], [ %112, %208 ] %.0197 = phi i64 [ %99, %163 ], [ %99, %162 ], [ %207, %191 ], [ %99, %208 ] %214 = phi i1 [ false, %163 ], [ false, %162 ], [ true, %191 ], [ false, %208 ] @@ -11331,7 +11331,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %or.cond12 = select i1 %or.cond10, i1 true, i1 %218 br i1 %or.cond12, label %332, label %219 -219: ; preds = %.thread425 +219: ; preds = %.thread423 call void @llvm.lifetime.start.p0(ptr nonnull %8) %220 = getelementptr inbounds nuw i8, ptr %11, i64 100 %221 = load i32, ptr %220, align 4, !tbaa !222 @@ -11342,7 +11342,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %226 = select i1 %223, i64 24, i64 16 %227 = call noundef i64 %224(ptr noundef %225, i64 noundef %139, ptr noundef nonnull %8, i64 noundef %226) %.not240 = icmp eq i64 %227, %226 - br i1 %.not240, label %228, label %.thread439 + br i1 %.not240, label %228, label %.thread437 228: ; preds = %219 %229 = load i32, ptr %8, align 16 @@ -11383,49 +11383,49 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %.sroa.gep.sroa.gep364.val = load i8, ptr %.sroa.gep.sroa.gep364, align 8 %254 = select i1 %230, i8 %.sroa.gep.sroa.gep364.val, i8 %.sroa.gep.val %255 = zext i8 %254 to i64 - %.sroa.gep471 = getelementptr inbounds nuw i8, ptr %8, i64 9 - %.sroa.gep471.val = load i8, ptr %.sroa.gep471, align 1 - %.sroa.gep.sroa.gep373.val524 = load i8, ptr %.sroa.gep.sroa.gep373, align 1 - %256 = select i1 %230, i8 %.sroa.gep471.val, i8 %.sroa.gep.sroa.gep373.val524 + %.sroa.gep469 = getelementptr inbounds nuw i8, ptr %8, i64 9 + %.sroa.gep469.val = load i8, ptr %.sroa.gep469, align 1 + %.sroa.gep.sroa.gep373.val522 = load i8, ptr %.sroa.gep.sroa.gep373, align 1 + %256 = select i1 %230, i8 %.sroa.gep469.val, i8 %.sroa.gep.sroa.gep373.val522 %257 = zext i8 %256 to i64 %258 = shl nuw nsw i64 %257, 8 %259 = or disjoint i64 %258, %255 - %.sroa.gep473 = getelementptr inbounds nuw i8, ptr %8, i64 10 - %.sroa.gep473.val = load i8, ptr %.sroa.gep473, align 2 - %.sroa.gep.sroa.gep370.val525 = load i8, ptr %.sroa.gep.sroa.gep370, align 2 - %260 = select i1 %230, i8 %.sroa.gep473.val, i8 %.sroa.gep.sroa.gep370.val525 + %.sroa.gep471 = getelementptr inbounds nuw i8, ptr %8, i64 10 + %.sroa.gep471.val = load i8, ptr %.sroa.gep471, align 2 + %.sroa.gep.sroa.gep370.val523 = load i8, ptr %.sroa.gep.sroa.gep370, align 2 + %260 = select i1 %230, i8 %.sroa.gep471.val, i8 %.sroa.gep.sroa.gep370.val523 %261 = zext i8 %260 to i64 %262 = shl nuw nsw i64 %261, 16 %263 = or disjoint i64 %259, %262 - %.sroa.gep475 = getelementptr inbounds nuw i8, ptr %8, i64 11 - %.sroa.gep475.val = load i8, ptr %.sroa.gep475, align 1 - %.sroa.gep.sroa.gep367.val526 = load i8, ptr %.sroa.gep.sroa.gep367, align 1 - %264 = select i1 %230, i8 %.sroa.gep475.val, i8 %.sroa.gep.sroa.gep367.val526 + %.sroa.gep473 = getelementptr inbounds nuw i8, ptr %8, i64 11 + %.sroa.gep473.val = load i8, ptr %.sroa.gep473, align 1 + %.sroa.gep.sroa.gep367.val524 = load i8, ptr %.sroa.gep.sroa.gep367, align 1 + %264 = select i1 %230, i8 %.sroa.gep473.val, i8 %.sroa.gep.sroa.gep367.val524 %265 = zext i8 %264 to i64 %266 = shl nuw nsw i64 %265, 24 %267 = or disjoint i64 %263, %266 - %.sroa.gep477 = getelementptr inbounds nuw i8, ptr %8, i64 12 - %.sroa.gep477.val = load i8, ptr %.sroa.gep477, align 4 - %.sroa.gep.sroa.gep364.val527 = load i8, ptr %.sroa.gep.sroa.gep364, align 8 - %268 = select i1 %230, i8 %.sroa.gep477.val, i8 %.sroa.gep.sroa.gep364.val527 + %.sroa.gep475 = getelementptr inbounds nuw i8, ptr %8, i64 12 + %.sroa.gep475.val = load i8, ptr %.sroa.gep475, align 4 + %.sroa.gep.sroa.gep364.val525 = load i8, ptr %.sroa.gep.sroa.gep364, align 8 + %268 = select i1 %230, i8 %.sroa.gep475.val, i8 %.sroa.gep.sroa.gep364.val525 %269 = zext i8 %268 to i64 - %.sroa.gep479 = getelementptr inbounds nuw i8, ptr %8, i64 13 - %.sroa.gep479.val = load i8, ptr %.sroa.gep479, align 1 - %.sroa.gep471.val528 = load i8, ptr %.sroa.gep471, align 1 - %270 = select i1 %230, i8 %.sroa.gep479.val, i8 %.sroa.gep471.val528 + %.sroa.gep477 = getelementptr inbounds nuw i8, ptr %8, i64 13 + %.sroa.gep477.val = load i8, ptr %.sroa.gep477, align 1 + %.sroa.gep469.val526 = load i8, ptr %.sroa.gep469, align 1 + %270 = select i1 %230, i8 %.sroa.gep477.val, i8 %.sroa.gep469.val526 %271 = zext i8 %270 to i64 br i1 %or.cond14, label %272, label %315 272: ; preds = %228 - %.sroa.gep481 = getelementptr inbounds nuw i8, ptr %8, i64 14 - %.sroa.gep481.val = load i8, ptr %.sroa.gep481, align 2 - %.sroa.gep473.val529 = load i8, ptr %.sroa.gep473, align 2 - %273 = select i1 %230, i8 %.sroa.gep481.val, i8 %.sroa.gep473.val529 + %.sroa.gep479 = getelementptr inbounds nuw i8, ptr %8, i64 14 + %.sroa.gep479.val = load i8, ptr %.sroa.gep479, align 2 + %.sroa.gep471.val527 = load i8, ptr %.sroa.gep471, align 2 + %273 = select i1 %230, i8 %.sroa.gep479.val, i8 %.sroa.gep471.val527 %274 = zext i8 %273 to i64 - %.sroa.gep483 = getelementptr inbounds nuw i8, ptr %8, i64 15 - %.sroa.gep483.val = load i8, ptr %.sroa.gep483, align 1 - %.sroa.gep475.val530 = load i8, ptr %.sroa.gep475, align 1 - %275 = select i1 %230, i8 %.sroa.gep483.val, i8 %.sroa.gep475.val530 + %.sroa.gep481 = getelementptr inbounds nuw i8, ptr %8, i64 15 + %.sroa.gep481.val = load i8, ptr %.sroa.gep481, align 1 + %.sroa.gep473.val528 = load i8, ptr %.sroa.gep473, align 1 + %275 = select i1 %230, i8 %.sroa.gep481.val, i8 %.sroa.gep473.val528 %276 = zext i8 %275 to i64 %277 = shl nuw i64 %276, 56 %278 = shl nuw nsw i64 %274, 48 @@ -11435,48 +11435,48 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %282 = or disjoint i64 %281, %278 %283 = or disjoint i64 %282, %277 %284 = or disjoint i64 %283, %267 - %.sroa.gep485 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %.sroa.gep485.val = load i8, ptr %.sroa.gep485, align 16 - %.sroa.gep477.val531 = load i8, ptr %.sroa.gep477, align 4 - %285 = select i1 %230, i8 %.sroa.gep485.val, i8 %.sroa.gep477.val531 + %.sroa.gep483 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %.sroa.gep483.val = load i8, ptr %.sroa.gep483, align 16 + %.sroa.gep475.val529 = load i8, ptr %.sroa.gep475, align 4 + %285 = select i1 %230, i8 %.sroa.gep483.val, i8 %.sroa.gep475.val529 %286 = zext i8 %285 to i64 - %.sroa.gep487 = getelementptr inbounds nuw i8, ptr %8, i64 17 - %.sroa.gep487.val = load i8, ptr %.sroa.gep487, align 1 - %.sroa.gep479.val532 = load i8, ptr %.sroa.gep479, align 1 - %287 = select i1 %230, i8 %.sroa.gep487.val, i8 %.sroa.gep479.val532 + %.sroa.gep485 = getelementptr inbounds nuw i8, ptr %8, i64 17 + %.sroa.gep485.val = load i8, ptr %.sroa.gep485, align 1 + %.sroa.gep477.val530 = load i8, ptr %.sroa.gep477, align 1 + %287 = select i1 %230, i8 %.sroa.gep485.val, i8 %.sroa.gep477.val530 %288 = zext i8 %287 to i64 %289 = shl nuw nsw i64 %288, 8 - %.sroa.gep489 = getelementptr inbounds nuw i8, ptr %8, i64 18 - %.sroa.gep489.val = load i8, ptr %.sroa.gep489, align 2 - %.sroa.gep481.val533 = load i8, ptr %.sroa.gep481, align 2 - %290 = select i1 %230, i8 %.sroa.gep489.val, i8 %.sroa.gep481.val533 + %.sroa.gep487 = getelementptr inbounds nuw i8, ptr %8, i64 18 + %.sroa.gep487.val = load i8, ptr %.sroa.gep487, align 2 + %.sroa.gep479.val531 = load i8, ptr %.sroa.gep479, align 2 + %290 = select i1 %230, i8 %.sroa.gep487.val, i8 %.sroa.gep479.val531 %291 = zext i8 %290 to i64 %292 = shl nuw nsw i64 %291, 16 - %.sroa.gep491 = getelementptr inbounds nuw i8, ptr %8, i64 19 - %.sroa.gep491.val = load i8, ptr %.sroa.gep491, align 1 - %.sroa.gep483.val534 = load i8, ptr %.sroa.gep483, align 1 - %293 = select i1 %230, i8 %.sroa.gep491.val, i8 %.sroa.gep483.val534 + %.sroa.gep489 = getelementptr inbounds nuw i8, ptr %8, i64 19 + %.sroa.gep489.val = load i8, ptr %.sroa.gep489, align 1 + %.sroa.gep481.val532 = load i8, ptr %.sroa.gep481, align 1 + %293 = select i1 %230, i8 %.sroa.gep489.val, i8 %.sroa.gep481.val532 %294 = zext i8 %293 to i64 %295 = shl nuw nsw i64 %294, 24 - %.sroa.gep493 = getelementptr inbounds nuw i8, ptr %8, i64 20 - %.sroa.gep493.val = load i8, ptr %.sroa.gep493, align 4 - %.sroa.gep485.val535 = load i8, ptr %.sroa.gep485, align 16 - %296 = select i1 %230, i8 %.sroa.gep493.val, i8 %.sroa.gep485.val535 + %.sroa.gep491 = getelementptr inbounds nuw i8, ptr %8, i64 20 + %.sroa.gep491.val = load i8, ptr %.sroa.gep491, align 4 + %.sroa.gep483.val533 = load i8, ptr %.sroa.gep483, align 16 + %296 = select i1 %230, i8 %.sroa.gep491.val, i8 %.sroa.gep483.val533 %297 = zext i8 %296 to i64 - %.sroa.gep495 = getelementptr inbounds nuw i8, ptr %8, i64 21 - %.sroa.gep495.val = load i8, ptr %.sroa.gep495, align 1 - %.sroa.gep487.val536 = load i8, ptr %.sroa.gep487, align 1 - %298 = select i1 %230, i8 %.sroa.gep495.val, i8 %.sroa.gep487.val536 + %.sroa.gep493 = getelementptr inbounds nuw i8, ptr %8, i64 21 + %.sroa.gep493.val = load i8, ptr %.sroa.gep493, align 1 + %.sroa.gep485.val534 = load i8, ptr %.sroa.gep485, align 1 + %298 = select i1 %230, i8 %.sroa.gep493.val, i8 %.sroa.gep485.val534 %299 = zext i8 %298 to i64 - %.sroa.gep497 = getelementptr inbounds nuw i8, ptr %8, i64 22 - %.sroa.gep497.val = load i8, ptr %.sroa.gep497, align 2 - %.sroa.gep489.val537 = load i8, ptr %.sroa.gep489, align 2 - %300 = select i1 %230, i8 %.sroa.gep497.val, i8 %.sroa.gep489.val537 + %.sroa.gep495 = getelementptr inbounds nuw i8, ptr %8, i64 22 + %.sroa.gep495.val = load i8, ptr %.sroa.gep495, align 2 + %.sroa.gep487.val535 = load i8, ptr %.sroa.gep487, align 2 + %300 = select i1 %230, i8 %.sroa.gep495.val, i8 %.sroa.gep487.val535 %301 = zext i8 %300 to i64 - %.sroa.gep499 = getelementptr inbounds nuw i8, ptr %8, i64 23 - %.sroa.gep499.val = load i8, ptr %.sroa.gep499, align 1 - %.sroa.gep491.val538 = load i8, ptr %.sroa.gep491, align 1 - %302 = select i1 %230, i8 %.sroa.gep499.val, i8 %.sroa.gep491.val538 + %.sroa.gep497 = getelementptr inbounds nuw i8, ptr %8, i64 23 + %.sroa.gep497.val = load i8, ptr %.sroa.gep497, align 1 + %.sroa.gep489.val536 = load i8, ptr %.sroa.gep489, align 1 + %302 = select i1 %230, i8 %.sroa.gep497.val, i8 %.sroa.gep489.val536 %303 = zext i8 %302 to i64 %304 = shl nuw i64 %303, 56 %305 = shl nuw nsw i64 %301, 48 @@ -11494,17 +11494,17 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi 315: ; preds = %228 %316 = shl nuw nsw i64 %271, 8 - %.sroa.gep467 = getelementptr inbounds nuw i8, ptr %8, i64 14 - %.sroa.gep467.val = load i8, ptr %.sroa.gep467, align 2 - %.sroa.gep459.val522 = load i8, ptr %.sroa.gep473, align 2 - %317 = select i1 %230, i8 %.sroa.gep467.val, i8 %.sroa.gep459.val522 + %.sroa.gep465 = getelementptr inbounds nuw i8, ptr %8, i64 14 + %.sroa.gep465.val = load i8, ptr %.sroa.gep465, align 2 + %.sroa.gep457.val520 = load i8, ptr %.sroa.gep471, align 2 + %317 = select i1 %230, i8 %.sroa.gep465.val, i8 %.sroa.gep457.val520 %318 = zext i8 %317 to i64 %319 = shl nuw nsw i64 %318, 16 %320 = or disjoint i64 %316, %319 - %.sroa.gep469 = getelementptr inbounds nuw i8, ptr %8, i64 15 - %.sroa.gep469.val = load i8, ptr %.sroa.gep469, align 1 - %.sroa.gep461.val523 = load i8, ptr %.sroa.gep475, align 1 - %321 = select i1 %230, i8 %.sroa.gep469.val, i8 %.sroa.gep461.val523 + %.sroa.gep467 = getelementptr inbounds nuw i8, ptr %8, i64 15 + %.sroa.gep467.val = load i8, ptr %.sroa.gep467, align 1 + %.sroa.gep459.val521 = load i8, ptr %.sroa.gep473, align 1 + %321 = select i1 %230, i8 %.sroa.gep467.val, i8 %.sroa.gep459.val521 %322 = zext i8 %321 to i64 %323 = shl nuw nsw i64 %322, 24 %324 = or disjoint i64 %320, %323 @@ -11522,9 +11522,9 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %or.cond249 = select i1 %.not241, i1 %.not242, i1 false %.not243 = icmp eq i64 %.0190, %327 %or.cond250 = select i1 %or.cond249, i1 %.not243, i1 false - br i1 %or.cond250, label %331, label %.thread439 + br i1 %or.cond250, label %331, label %.thread437 -.thread439: ; preds = %326, %219 +.thread437: ; preds = %326, %219 %.sink = phi i32 [ 20, %219 ], [ 30, %326 ] %330 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 %.sink, ptr %330, align 4, !tbaa !211 @@ -11535,7 +11535,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %336 -332: ; preds = %.thread425 +332: ; preds = %.thread423 %333 = getelementptr inbounds nuw i8, ptr %4, i64 24 %334 = load i32, ptr %333, align 8, !tbaa !251 %.not244 = icmp eq i32 %125, %334 @@ -11575,7 +11575,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 30, ptr %347, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit291 -348: ; preds = %.thread439, %212, %.thread430, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit255, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit269, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit271 +348: ; preds = %.thread437, %212, %.thread428, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit255, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit269, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit271 %349 = load ptr, ptr %16, align 8, !tbaa !209 %350 = getelementptr inbounds nuw i8, ptr %0, i64 64 %351 = load ptr, ptr %350, align 8, !tbaa !212 @@ -14599,7 +14599,7 @@ _ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayE %155 = add i64 %114, %154 %156 = call noundef i64 %152(ptr noundef %153, i64 noundef %155, ptr noundef nonnull %149, i64 noundef %144) %.not344 = icmp eq i64 %156, %144 - br i1 %.not344, label %.preheader649, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit409 + br i1 %.not344, label %.preheader641, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit409 _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit409: ; preds = %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450 %157 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -14610,13 +14610,13 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 20, ptr %160, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 -.preheader649: ; preds = %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450, %191 +.preheader641: ; preds = %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450, %191 %.0321 = phi i32 [ %194, %191 ], [ %130, %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450 ] %.0319 = phi ptr [ %193, %191 ], [ %149, %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450 ] %161 = icmp ult i32 %.0321, 4 br i1 %161, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit407, label %166 -_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit407: ; preds = %.preheader649 +_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit407: ; preds = %.preheader641 %162 = getelementptr inbounds nuw i8, ptr %0, i64 48 %163 = load ptr, ptr %162, align 8, !tbaa !209 %164 = load ptr, ptr %147, align 8, !tbaa !212 @@ -14625,7 +14625,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 9, ptr %165, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 -166: ; preds = %.preheader649 +166: ; preds = %.preheader641 %167 = getelementptr inbounds nuw i8, ptr %.0319, i64 2 %168 = load i8, ptr %167, align 1, !tbaa !3 %169 = zext i8 %168 to i64 @@ -14671,7 +14671,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %193 = getelementptr inbounds nuw i8, ptr %.0319, i64 %192 %194 = sub i32 %.0321, %176 %.not345 = icmp eq i32 %194, 0 - br i1 %.not345, label %.loopexit, label %.preheader649, !llvm.loop !303 + br i1 %.not345, label %.loopexit, label %.preheader641, !llvm.loop !303 .loopexit: ; preds = %191, %185 %195 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -14736,8 +14736,8 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi .preheader: ; preds = %220 %229 = add i64 %213, 30 - %.not349660 = icmp eq i64 %135, 0 - br i1 %.not349660, label %252, label %.lr.ph + %.not349652 = icmp eq i64 %135, 0 + br i1 %.not349652, label %252, label %.lr.ph _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit397: ; preds = %220 %230 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -14745,13 +14745,13 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 .lr.ph: ; preds = %.preheader, %247 - %.0304663 = phi i64 [ %250, %247 ], [ %135, %.preheader ] - %.0305662 = phi i64 [ %248, %247 ], [ %114, %.preheader ] - %.0306661 = phi i64 [ %249, %247 ], [ %229, %.preheader ] - %231 = call i64 @llvm.umin.i64(i64 %.0304663, i64 65536) + %.0304655 = phi i64 [ %250, %247 ], [ %135, %.preheader ] + %.0305654 = phi i64 [ %248, %247 ], [ %114, %.preheader ] + %.0306653 = phi i64 [ %249, %247 ], [ %229, %.preheader ] + %231 = call i64 @llvm.umin.i64(i64 %.0304655, i64 65536) %232 = load ptr, ptr %16, align 8, !tbaa !215 %233 = load ptr, ptr %106, align 8, !tbaa !226 - %234 = call noundef i64 %232(ptr noundef %233, i64 noundef %.0305662, ptr noundef %227, i64 noundef %231) + %234 = call noundef i64 %232(ptr noundef %233, i64 noundef %.0305654, ptr noundef %227, i64 noundef %231) %.not364 = icmp eq i64 %234, %231 br i1 %.not364, label %239, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit395 @@ -14767,7 +14767,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi 239: ; preds = %.lr.ph %240 = load ptr, ptr %214, align 8, !tbaa !292 %241 = load ptr, ptr %216, align 8, !tbaa !226 - %242 = call noundef i64 %240(ptr noundef %241, i64 noundef %.0306661, ptr noundef %227, i64 noundef %231) + %242 = call noundef i64 %240(ptr noundef %241, i64 noundef %.0306653, ptr noundef %227, i64 noundef %231) %.not365 = icmp eq i64 %242, %231 br i1 %.not365, label %247, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit393 @@ -14781,9 +14781,9 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 247: ; preds = %239 - %248 = add i64 %231, %.0305662 - %249 = add i64 %231, %.0306661 - %250 = sub i64 %.0304663, %231 + %248 = add i64 %231, %.0305654 + %249 = add i64 %231, %.0306653 + %250 = sub i64 %.0304655, %231 %.not349 = icmp eq i64 %250, 0 br i1 %.not349, label %._crit_edge, label %.lr.ph, !llvm.loop !304 @@ -14830,7 +14830,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %270 = load i32, ptr %227, align 1 %271 = icmp eq i32 %270, 134695760 %272 = select i1 %271, i32 24, i32 20 - br label %.thread607 + br label %.thread599 273: ; preds = %256 %274 = call noundef i64 %261(ptr noundef %262, i64 noundef %.0305.lcssa, ptr noundef %227, i64 noundef 16) @@ -14871,11 +14871,11 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 %291, ptr %295, align 1 %296 = getelementptr inbounds nuw i8, ptr %227, i64 20 store i32 0, ptr %296, align 1 - br label %.thread607 + br label %.thread599 297: ; preds = %275 %298 = select i1 %277, i32 16, i32 12 - br label %.thread607 + br label %.thread599 299: ; preds = %273 %300 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -14886,17 +14886,17 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 20, ptr %303, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 -.thread607: ; preds = %297, %281, %269 - %storemerge648 = phi i32 [ %272, %269 ], [ %298, %297 ], [ 24, %281 ] - store i32 %storemerge648, ptr %4, align 4, !tbaa !10 +.thread599: ; preds = %297, %281, %269 + %storemerge640 = phi i32 [ %272, %269 ], [ %298, %297 ], [ 24, %281 ] + store i32 %storemerge640, ptr %4, align 4, !tbaa !10 %304 = load ptr, ptr %214, align 8, !tbaa !292 %305 = load ptr, ptr %216, align 8, !tbaa !226 - %306 = zext nneg i32 %storemerge648 to i64 + %306 = zext nneg i32 %storemerge640 to i64 %307 = call noundef i64 %304(ptr noundef %305, i64 noundef %.0306.lcssa, ptr noundef nonnull %227, i64 noundef %306) %.not354 = icmp eq i64 %307, %306 br i1 %.not354, label %312, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit387 -_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit387: ; preds = %.thread607 +_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit387: ; preds = %.thread599 %308 = getelementptr inbounds nuw i8, ptr %0, i64 48 %309 = load ptr, ptr %308, align 8, !tbaa !209 %310 = load ptr, ptr %223, align 8, !tbaa !212 @@ -14905,7 +14905,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 19, ptr %311, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 -312: ; preds = %.thread607 +312: ; preds = %.thread599 %313 = add i64 %.0306.lcssa, %306 br label %314 @@ -14932,8 +14932,8 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %325 = getelementptr inbounds nuw i8, ptr %7, i64 40 %.20..20..20..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 20 store i64 -1, ptr %.20..20..20..sroa_idx, align 4 - %.42..42..42..sroa_idx739 = getelementptr inbounds nuw i8, ptr %6, i64 42 - store i32 -1, ptr %.42..42..42..sroa_idx739, align 2 + %.42..42..42..sroa_idx731 = getelementptr inbounds nuw i8, ptr %6, i64 42 + store i32 -1, ptr %.42..42..42..sroa_idx731, align 2 %.val489 = load i64, ptr %325, align 8 %326 = call fastcc noundef i32 @_ZN12duckdb_minizL42mz_zip_writer_update_zip64_extension_blockEPNS_12mz_zip_arrayEPNS_14mz_zip_archiveEPKhjPmS6_S6_Pj(ptr noundef %8, ptr noundef %0, ptr noundef %323, i32 noundef %69, i64 %134, i64 %.val489, i64 %213) %.not358 = icmp eq i32 %326, 0 diff --git a/bench/faiss/optimized/Clustering.ll b/bench/faiss/optimized/Clustering.ll index de04d7c2c94..47ac8f61667 100644 --- a/bench/faiss/optimized/Clustering.ll +++ b/bench/faiss/optimized/Clustering.ll @@ -455,9 +455,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %46, % 51: ; preds = %6 %.not204 = icmp eq ptr %3, null - br i1 %.not204, label %._crit_edge783, label %52 + br i1 %.not204, label %._crit_edge784, label %52 -._crit_edge783: ; preds = %51 +._crit_edge784: ; preds = %51 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 56 %.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !29 br label %83 @@ -527,8 +527,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit248: ; preds = %78 call void @llvm.lifetime.end.p0(ptr nonnull %20) br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379 -83: ; preds = %._crit_edge783, %52 - %84 = phi i64 [ %.pre, %._crit_edge783 ], [ %55, %52 ] +83: ; preds = %._crit_edge784, %52 + %84 = phi i64 [ %.pre, %._crit_edge784 ], [ %55, %52 ] %85 = getelementptr inbounds nuw i8, ptr %4, i64 8 %86 = load i32, ptr %85, align 8, !tbaa !58 %87 = sext i32 %86 to i64 @@ -598,22 +598,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit252: ; preds = %10 %117 = load i8, ptr %116, align 8, !range !43 %118 = trunc nuw i8 %117 to i1 %or.cond239 = select i1 %.not204, i1 %118, i1 false - br i1 %or.cond239, label %.preheader496, label %.loopexit497 + br i1 %or.cond239, label %.preheader497, label %.loopexit498 -.preheader496: ; preds = %114 +.preheader497: ; preds = %114 %119 = load i64, ptr %88, align 8, !tbaa !29 %120 = mul i64 %119, %1 - %.not666 = icmp eq i64 %120, 0 - br i1 %.not666, label %.loopexit497.thread, label %.lr.ph + %.not667 = icmp eq i64 %120, 0 + br i1 %.not667, label %.loopexit498.thread, label %.lr.ph 121: ; preds = %.lr.ph - %122 = add nuw i64 %.0181642, 1 + %122 = add nuw i64 %.0181643, 1 %exitcond.not = icmp eq i64 %122, %120 - br i1 %exitcond.not, label %.loopexit497, label %.lr.ph, !llvm.loop !61 + br i1 %exitcond.not, label %.loopexit498, label %.lr.ph, !llvm.loop !61 -.lr.ph: ; preds = %.preheader496, %121 - %.0181642 = phi i64 [ %122, %121 ], [ 0, %.preheader496 ] - %123 = getelementptr inbounds nuw float, ptr %2, i64 %.0181642 +.lr.ph: ; preds = %.preheader497, %121 + %.0181643 = phi i64 [ %122, %121 ], [ 0, %.preheader497 ] + %123 = getelementptr inbounds nuw float, ptr %2, i64 %.0181643 %124 = load float, ptr %123, align 4, !tbaa !47 %125 = tail call float @llvm.fabs.f32(float %124) %126 = fcmp ueq float %125, 0x7FF0000000000000 @@ -671,23 +671,23 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit256: ; preds = %14 call void @llvm.lifetime.end.p0(ptr nonnull %22) br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379 -.loopexit497: ; preds = %121, %114 - br i1 %.not204, label %.loopexit497.thread, label %147 +.loopexit498: ; preds = %121, %114 + br i1 %.not204, label %.loopexit498.thread, label %147 -147: ; preds = %.loopexit497 +147: ; preds = %.loopexit498 %148 = load ptr, ptr %3, align 8, !tbaa !4 %149 = getelementptr inbounds nuw i8, ptr %148, i64 136 %150 = load ptr, ptr %149, align 8 %151 = invoke noundef i64 %150(ptr noundef nonnull align 8 dereferenceable(36) %3) to label %154 unwind label %166 -.loopexit497.thread: ; preds = %.preheader496, %.loopexit497 +.loopexit498.thread: ; preds = %.preheader497, %.loopexit498 %152 = load i64, ptr %88, align 8, !tbaa !29 %153 = shl i64 %152, 2 br label %154 -154: ; preds = %147, %.loopexit497.thread - %155 = phi i64 [ %153, %.loopexit497.thread ], [ %151, %147 ] +154: ; preds = %147, %.loopexit498.thread + %155 = phi i64 [ %153, %.loopexit498.thread ], [ %151, %147 ] %156 = load i64, ptr %28, align 8, !tbaa !37 %157 = getelementptr inbounds nuw i8, ptr %0, i64 8 %158 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -708,8 +708,8 @@ _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit: ; preds = %15 br label %177 166: ; preds = %199, %263, %212, %147 - %.sroa.0443.0 = phi ptr [ %.sroa.0443.1, %212 ], [ %.sroa.0443.1, %199 ], [ %.sroa.0443.1, %263 ], [ null, %147 ] - %.sroa.0446.0 = phi ptr [ %.sroa.0446.1, %212 ], [ %.sroa.0446.1, %199 ], [ %.sroa.0446.1, %263 ], [ null, %147 ] + %.sroa.0444.0 = phi ptr [ %.sroa.0444.1, %212 ], [ %.sroa.0444.1, %199 ], [ %.sroa.0444.1, %263 ], [ null, %147 ] + %.sroa.0447.0 = phi ptr [ %.sroa.0447.1, %212 ], [ %.sroa.0447.1, %199 ], [ %.sroa.0447.1, %263 ], [ null, %147 ] %167 = landingpad { ptr, i32 } cleanup br label %948 @@ -728,8 +728,8 @@ _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit: ; preds = %15 br label %177 177: ; preds = %168, %174, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit - %.sroa.0443.1 = phi ptr [ %165, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %174 ], [ null, %168 ] - %.sroa.0446.1 = phi ptr [ %164, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %174 ], [ null, %168 ] + %.sroa.0444.1 = phi ptr [ %165, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %174 ], [ null, %168 ] + %.sroa.0447.1 = phi ptr [ %164, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %174 ], [ null, %168 ] %.0182 = phi ptr [ %164, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ %2, %174 ], [ %2, %168 ] %.0144 = phi ptr [ %165, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ %5, %174 ], [ %5, %168 ] %.0 = phi i64 [ %163, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ %1, %174 ], [ %1, %168 ] @@ -745,11 +745,11 @@ _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit: ; preds = %15 184: ; preds = %183 %185 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10, i64 noundef %.0) - %.pre793 = load i64, ptr %28, align 8, !tbaa !37 + %.pre794 = load i64, ptr %28, align 8, !tbaa !37 br label %186 186: ; preds = %184, %183 - %187 = phi i64 [ %.pre793, %184 ], [ %.0, %183 ] + %187 = phi i64 [ %.pre794, %184 ], [ %.0, %183 ] %188 = getelementptr inbounds nuw i8, ptr %0, i64 72 %189 = load i64, ptr %88, align 8, !tbaa !29 %190 = mul i64 %187, %189 @@ -1035,11 +1035,11 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit265: ; preds = %31 %330 = trunc nuw i8 %329 to i1 %331 = select i1 %330, ptr @.str.16, ptr @.str.17 %332 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.15, i64 noundef %297, ptr noundef nonnull %331) - %.pre784 = load i8, ptr %180, align 8, !tbaa !66, !range !43 + %.pre785 = load i8, ptr %180, align 8, !tbaa !66, !range !43 br label %333 333: ; preds = %327, %323 - %334 = phi i8 [ %.pre784, %327 ], [ %324, %323 ] + %334 = phi i8 [ %.pre785, %327 ], [ %324, %323 ] %335 = trunc nuw i8 %334 to i1 br i1 %335, label %336, label %344 @@ -1121,16 +1121,16 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ %369 = getelementptr inbounds nuw i8, ptr %0, i64 12 %370 = load i32, ptr %369, align 4, !tbaa !22 %371 = icmp sgt i32 %370, 0 - br i1 %371, label %.lr.ph661, label %._crit_edge662.thread + br i1 %371, label %.lr.ph662, label %._crit_edge663.thread -.lr.ph661: ; preds = %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit +.lr.ph662: ; preds = %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit %.not.i.i.i.i271 = icmp eq i64 %.0, 0 %372 = add nsw i64 %.0, -1 %373 = icmp eq i64 %372, 0 %.idx.i.i.i.i.i.i.i272 = shl nuw nsw i64 %372, 2 %374 = add i64 %354, 1 - %sext667 = shl i64 %297, 32 - %375 = ashr exact i64 %sext667, 32 + %sext668 = shl i64 %297, 32 + %375 = ashr exact i64 %sext668, 32 %376 = getelementptr inbounds nuw i8, ptr %0, i64 17 %377 = getelementptr inbounds nuw i8, ptr %0, i64 18 %378 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -1150,22 +1150,22 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ %.not.i331 = icmp eq ptr %384, %25 %390 = getelementptr inbounds nuw i8, ptr %25, i64 16 %391 = getelementptr inbounds nuw i8, ptr %25, i64 8 - br i1 %271, label %.lr.ph661.split.us, label %.lr.ph661.split + br i1 %271, label %.lr.ph662.split.us, label %.lr.ph662.split -.lr.ph661.split.us: ; preds = %.lr.ph661 +.lr.ph662.split.us: ; preds = %.lr.ph662 %392 = load i8, ptr %180, align 8, !tbaa !66, !range !43, !noundef !44 %393 = trunc nuw i8 %392 to i1 %394 = icmp ne i32 %370, 1 %or.cond240.us = and i1 %394, %393 br i1 %or.cond240.us, label %395, label %397 -395: ; preds = %.lr.ph661.split.us +395: ; preds = %.lr.ph662.split.us %396 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.19, i32 noundef 0, i32 noundef %370) - %.pre792 = load i64, ptr %88, align 8, !tbaa !29 + %.pre793 = load i64, ptr %88, align 8, !tbaa !29 br label %397 -397: ; preds = %395, %.lr.ph661.split.us - %398 = phi i64 [ %.pre792, %395 ], [ %355, %.lr.ph661.split.us ] +397: ; preds = %395, %.lr.ph662.split.us + %398 = phi i64 [ %.pre793, %395 ], [ %355, %.lr.ph662.split.us ] %399 = load i64, ptr %28, align 8, !tbaa !37 %400 = mul i64 %399, %398 %401 = load ptr, ptr %288, align 8, !tbaa !46 @@ -1179,51 +1179,51 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ 408: ; preds = %397 %409 = icmp ult i64 %400, %406 - br i1 %409, label %410, label %.split665.us + br i1 %409, label %410, label %.split666.us 410: ; preds = %408 %411 = getelementptr inbounds nuw float, ptr %402, i64 %400 %.not.i.i268.us = icmp eq ptr %401, %411 - br i1 %.not.i.i268.us, label %.split665.us, label %412 + br i1 %.not.i.i268.us, label %.split666.us, label %412 412: ; preds = %410 store ptr %411, ptr %288, align 8, !tbaa !46 - br label %.split665.us + br label %.split666.us 413: ; preds = %397 %414 = sub nuw i64 %400, %406 invoke void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %287, i64 noundef %414) - to label %.split665.us unwind label %.split.us + to label %.split666.us unwind label %.split.us .split.us: ; preds = %413 %415 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -._crit_edge662: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit +._crit_edge663: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit %416 = icmp sgt i32 %887, 1 - br i1 %416, label %894, label %._crit_edge662.thread + br i1 %416, label %894, label %._crit_edge663.thread 417: ; preds = %362, %361 %418 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit363 -.lr.ph661.split: ; preds = %.lr.ph661, %_ZNSt6vectorIiSaIiEED2Ev.exit - %.pre26.i = phi ptr [ %881, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ null, %.lr.ph661 ] - %419 = phi ptr [ %882, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ null, %.lr.ph661 ] - %indvars.iv780 = phi i64 [ %indvars.iv.next781, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0, %.lr.ph661 ] - %420 = phi i32 [ %887, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ %370, %.lr.ph661 ] - %.0179659 = phi double [ %.1180.lcssa, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0.000000e+00, %.lr.ph661 ] - %.0183658 = phi float [ %.1184, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ %286, %.lr.ph661 ] +.lr.ph662.split: ; preds = %.lr.ph662, %_ZNSt6vectorIiSaIiEED2Ev.exit + %.pre26.i = phi ptr [ %881, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ null, %.lr.ph662 ] + %419 = phi ptr [ %882, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ null, %.lr.ph662 ] + %indvars.iv781 = phi i64 [ %indvars.iv.next782, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0, %.lr.ph662 ] + %420 = phi i32 [ %887, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ %370, %.lr.ph662 ] + %.0179660 = phi double [ %.1180.lcssa, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0.000000e+00, %.lr.ph662 ] + %.0183659 = phi float [ %.1184, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ %286, %.lr.ph662 ] %421 = load i8, ptr %180, align 8, !tbaa !66, !range !43, !noundef !44 %422 = trunc nuw i8 %421 to i1 %423 = icmp sgt i32 %420, 1 %or.cond240 = and i1 %423, %422 br i1 %or.cond240, label %424, label %428 -424: ; preds = %.lr.ph661.split - %425 = trunc nuw nsw i64 %indvars.iv780 to i32 +424: ; preds = %.lr.ph662.split + %425 = trunc nuw nsw i64 %indvars.iv781 to i32 %426 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.19, i32 noundef %425, i32 noundef %420) br label %428 @@ -1232,7 +1232,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -428: ; preds = %424, %.lr.ph661.split +428: ; preds = %424, %.lr.ph662.split %429 = load i64, ptr %88, align 8, !tbaa !29 %430 = load i64, ptr %28, align 8, !tbaa !37 %431 = mul i64 %430, %429 @@ -1266,16 +1266,16 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ _ZNSt6vectorIfSaIfEE6resizeEm.exit270: ; preds = %445, %443, %441, %439 br i1 %.not.i.i.i.i271, label %_ZNSt6vectorIiSaIiEEC2EmRKS0_.exit, label %446 -.split665.us: ; preds = %413, %412, %410, %408 +.split666.us: ; preds = %413, %412, %410, %408 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.26) #26 - to label %.noexc274 unwind label %.loopexit.split-lp487 + to label %.noexc274 unwind label %.loopexit.split-lp488 -.noexc274: ; preds = %.split665.us +.noexc274: ; preds = %.split666.us unreachable 446: ; preds = %_ZNSt6vectorIfSaIfEE6resizeEm.exit270 %447 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %277) #25 - to label %.noexc275 unwind label %.loopexit486 + to label %.noexc275 unwind label %.loopexit487 .noexc275: ; preds = %446 %448 = getelementptr inbounds nuw i32, ptr %447, i64 %.0 @@ -1290,7 +1290,7 @@ _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc275 _ZNSt6vectorIiSaIiEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i, %.noexc275, %_ZNSt6vectorIfSaIfEE6resizeEm.exit270 %.sroa.0405.1 = phi ptr [ %447, %.noexc275 ], [ %447, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIfSaIfEE6resizeEm.exit270 ] %.sroa.12.1 = phi ptr [ %448, %.noexc275 ], [ %448, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIfSaIfEE6resizeEm.exit270 ] - %450 = mul nuw nsw i64 %indvars.iv780, 15486557 + %450 = mul nuw nsw i64 %indvars.iv781, 15486557 %451 = add i64 %374, %450 invoke void @_ZN5faiss9rand_permEPiml(ptr noundef %.sroa.0405.1, i64 noundef %.0, i64 noundef %451) to label %452 unwind label %456 @@ -1301,15 +1301,15 @@ _ZNSt6vectorIiSaIiEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPimiET_ br i1 %.not204, label %455, label %469 455: ; preds = %452 - br i1 %454, label %.lr.ph646, label %.loopexit484 + br i1 %454, label %.lr.ph647, label %.loopexit485 -.loopexit486: ; preds = %446 - %lpad.loopexit488 = landingpad { ptr, i32 } +.loopexit487: ; preds = %446 + %lpad.loopexit489 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -.loopexit.split-lp487: ; preds = %.split665.us - %lpad.loopexit.split-lp489 = landingpad { ptr, i32 } +.loopexit.split-lp488: ; preds = %.split666.us + %lpad.loopexit.split-lp490 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 @@ -1318,27 +1318,27 @@ _ZNSt6vectorIiSaIiEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPimiET_ cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.lr.ph646: ; preds = %455, %.lr.ph646 - %indvars.iv773 = phi i64 [ %indvars.iv.next774, %.lr.ph646 ], [ %375, %455 ] +.lr.ph647: ; preds = %455, %.lr.ph647 + %indvars.iv774 = phi i64 [ %indvars.iv.next775, %.lr.ph647 ], [ %375, %455 ] %458 = load i64, ptr %88, align 8, !tbaa !29 - %459 = mul i64 %458, %indvars.iv773 + %459 = mul i64 %458, %indvars.iv774 %460 = load ptr, ptr %287, align 8, !tbaa !13 %461 = getelementptr inbounds nuw float, ptr %460, i64 %459 - %462 = getelementptr inbounds nuw i32, ptr %.sroa.0405.1, i64 %indvars.iv773 + %462 = getelementptr inbounds nuw i32, ptr %.sroa.0405.1, i64 %indvars.iv774 %463 = load i32, ptr %462, align 4, !tbaa !39 %464 = sext i32 %463 to i64 %465 = mul i64 %155, %464 %466 = getelementptr inbounds nuw i8, ptr %.0182, i64 %465 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %461, ptr align 1 %466, i64 %155, i1 false) - %indvars.iv.next774 = add nuw nsw i64 %indvars.iv773, 1 + %indvars.iv.next775 = add nuw nsw i64 %indvars.iv774, 1 %467 = load i64, ptr %28, align 8, !tbaa !37 - %468 = icmp ugt i64 %467, %indvars.iv.next774 - br i1 %468, label %.lr.ph646, label %.loopexit484, !llvm.loop !72 + %468 = icmp ugt i64 %467, %indvars.iv.next775 + br i1 %468, label %.lr.ph647, label %.loopexit485, !llvm.loop !72 469: ; preds = %452 - br i1 %454, label %.lr.ph644, label %.loopexit484 + br i1 %454, label %.lr.ph645, label %.loopexit485 -.lr.ph644: ; preds = %469, %482 +.lr.ph645: ; preds = %469, %482 %indvars.iv = phi i64 [ %indvars.iv.next, %482 ], [ %375, %469 ] %470 = getelementptr inbounds nuw i32, ptr %.sroa.0405.1, i64 %indvars.iv %471 = load i32, ptr %470, align 4, !tbaa !39 @@ -1355,30 +1355,30 @@ _ZNSt6vectorIiSaIiEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPimiET_ invoke void %481(ptr noundef nonnull align 8 dereferenceable(36) %3, i64 noundef 1, ptr noundef %474, ptr noundef nonnull %478) to label %482 unwind label %_ZNSt6vectorIfSaIfEED2Ev.exit326.thread -482: ; preds = %.lr.ph644 +482: ; preds = %.lr.ph645 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %483 = load i64, ptr %28, align 8, !tbaa !37 %484 = icmp ugt i64 %483, %indvars.iv.next - br i1 %484, label %.lr.ph644, label %.loopexit484, !llvm.loop !73 + br i1 %484, label %.lr.ph645, label %.loopexit485, !llvm.loop !73 -_ZNSt6vectorIfSaIfEED2Ev.exit326.thread: ; preds = %.lr.ph644 +_ZNSt6vectorIfSaIfEED2Ev.exit326.thread: ; preds = %.lr.ph645 %485 = landingpad { ptr, i32 } cleanup br label %890 -.loopexit484: ; preds = %482, %.lr.ph646, %469, %455 - %486 = phi i64 [ %453, %469 ], [ %453, %455 ], [ %467, %.lr.ph646 ], [ %483, %482 ] +.loopexit485: ; preds = %482, %.lr.ph647, %469, %455 + %486 = phi i64 [ %453, %469 ], [ %453, %455 ], [ %467, %.lr.ph647 ], [ %483, %482 ] %487 = load i8, ptr %376, align 1, !tbaa !42, !range !43, !noundef !44 %488 = trunc nuw i8 %487 to i1 br i1 %488, label %489, label %.noexc277 -489: ; preds = %.loopexit484 +489: ; preds = %.loopexit485 %490 = load i64, ptr %88, align 8, !tbaa !29 %491 = load ptr, ptr %287, align 8, !tbaa !13 invoke void @_ZN5faiss14fvec_renorm_L2EmmPf(i64 noundef %490, i64 noundef %486, ptr noundef %491) to label %.noexc277 unwind label %456 -.noexc277: ; preds = %489, %.loopexit484 +.noexc277: ; preds = %489, %.loopexit485 %492 = load i8, ptr %377, align 2, !tbaa !45, !range !43, !noundef !44 %493 = trunc nuw i8 %492 to i1 br i1 %493, label %.preheader.i, label %_ZN5faiss10Clustering22post_process_centroidsEv.exit @@ -1421,50 +1421,50 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre 509: ; preds = %505, %_ZN5faiss10Clustering22post_process_centroidsEv.exit %510 = load i8, ptr %379, align 1, !tbaa !75, !range !43, !noundef !44 %511 = trunc nuw i8 %510 to i1 - %.pre787 = load i64, ptr %28, align 8, !tbaa !37 - %.pre789 = load ptr, ptr %287, align 8, !tbaa !13 + %.pre788 = load i64, ptr %28, align 8, !tbaa !37 + %.pre790 = load ptr, ptr %287, align 8, !tbaa !13 br i1 %511, label %516, label %512 512: ; preds = %509 %513 = load ptr, ptr %4, align 8, !tbaa !4 %514 = getelementptr inbounds nuw i8, ptr %513, i64 16 %515 = load ptr, ptr %514, align 8 - invoke void %515(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %.pre787, ptr noundef %.pre789) - to label %._crit_edge785 unwind label %456 + invoke void %515(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %.pre788, ptr noundef %.pre790) + to label %._crit_edge786 unwind label %456 -._crit_edge785: ; preds = %512 - %.pre786 = load i64, ptr %28, align 8, !tbaa !37 - %.pre788 = load ptr, ptr %287, align 8, !tbaa !13 +._crit_edge786: ; preds = %512 + %.pre787 = load i64, ptr %28, align 8, !tbaa !37 + %.pre789 = load ptr, ptr %287, align 8, !tbaa !13 br label %516 -516: ; preds = %._crit_edge785, %509 - %517 = phi ptr [ %.pre788, %._crit_edge785 ], [ %.pre789, %509 ] - %518 = phi i64 [ %.pre786, %._crit_edge785 ], [ %.pre787, %509 ] +516: ; preds = %._crit_edge786, %509 + %517 = phi ptr [ %.pre789, %._crit_edge786 ], [ %.pre790, %509 ] + %518 = phi i64 [ %.pre787, %._crit_edge786 ], [ %.pre788, %509 ] %519 = load ptr, ptr %4, align 8, !tbaa !4 %520 = getelementptr inbounds nuw i8, ptr %519, i64 24 %521 = load ptr, ptr %520, align 8 invoke void %521(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %518, ptr noundef %517) - to label %.preheader474 unwind label %456 + to label %.preheader475 unwind label %456 -.preheader474: ; preds = %516 +.preheader475: ; preds = %516 %522 = load i32, ptr %157, align 8, !tbaa !17 %523 = icmp sgt i32 %522, 0 - br i1 %523, label %.lr.ph654, label %._crit_edge655 + br i1 %523, label %.lr.ph655, label %._crit_edge656 -._crit_edge655: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit, %.preheader474 - %.1180.lcssa = phi double [ %.0179659, %.preheader474 ], [ %565, %_ZNSt6vectorIfSaIfEED2Ev.exit ] - %.0174.lcssa = phi float [ 0.000000e+00, %.preheader474 ], [ %.1175.lcssa, %_ZNSt6vectorIfSaIfEED2Ev.exit ] +._crit_edge656: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit, %.preheader475 + %.1180.lcssa = phi double [ %.0179660, %.preheader475 ], [ %565, %_ZNSt6vectorIfSaIfEED2Ev.exit ] + %.0174.lcssa = phi float [ 0.000000e+00, %.preheader475 ], [ %.1175.lcssa, %_ZNSt6vectorIfSaIfEED2Ev.exit ] %524 = load i8, ptr %180, align 8, !tbaa !66, !range !43, !noundef !44 %525 = trunc nuw i8 %524 to i1 br i1 %525, label %791, label %792 -.lr.ph654: ; preds = %.preheader474, %_ZNSt6vectorIfSaIfEED2Ev.exit - %.0173653 = phi i32 [ %785, %_ZNSt6vectorIfSaIfEED2Ev.exit ], [ 0, %.preheader474 ] - %.1180652 = phi double [ %565, %_ZNSt6vectorIfSaIfEED2Ev.exit ], [ %.0179659, %.preheader474 ] +.lr.ph655: ; preds = %.preheader475, %_ZNSt6vectorIfSaIfEED2Ev.exit + %.0173654 = phi i32 [ %785, %_ZNSt6vectorIfSaIfEED2Ev.exit ], [ 0, %.preheader475 ] + %.1180653 = phi double [ %565, %_ZNSt6vectorIfSaIfEED2Ev.exit ], [ %.0179660, %.preheader475 ] %526 = invoke noundef double @_ZN5faiss12getmillisecsEv() to label %527 unwind label %532 -527: ; preds = %.lr.ph654 +527: ; preds = %.lr.ph655 br i1 %.not204, label %528, label %534 528: ; preds = %527 @@ -1472,9 +1472,9 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre %530 = getelementptr inbounds nuw i8, ptr %529, i64 40 %531 = load ptr, ptr %530, align 8 invoke void %531(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %.0, ptr noundef %.0182, i64 noundef 1, ptr noundef nonnull %279, ptr noundef nonnull %274, ptr noundef null) - to label %.loopexit473 unwind label %532 + to label %.loopexit474 unwind label %532 -532: ; preds = %561, %.loopexit473, %528, %.lr.ph654 +532: ; preds = %561, %.loopexit474, %528, %.lr.ph655 %533 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 @@ -1487,24 +1487,24 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre to label %.preheader unwind label %539 .preheader: ; preds = %534 - br i1 %.not.i.i.i.i271, label %.loopexit473, label %.lr.ph648.preheader + br i1 %.not.i.i.i.i271, label %.loopexit474, label %.lr.ph649.preheader -.lr.ph648.preheader: ; preds = %.preheader - %.pre790 = load i64, ptr %356, align 8, !tbaa !26 - br label %.lr.ph648 +.lr.ph649.preheader: ; preds = %.preheader + %.pre791 = load i64, ptr %356, align 8, !tbaa !26 + br label %.lr.ph649 539: ; preds = %534 %540 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.lr.ph648: ; preds = %.lr.ph648.preheader, %555 - %541 = phi i64 [ %556, %555 ], [ %.pre790, %.lr.ph648.preheader ] - %.0147647 = phi i64 [ %557, %555 ], [ 0, %.lr.ph648.preheader ] - %542 = add i64 %541, %.0147647 +.lr.ph649: ; preds = %.lr.ph649.preheader, %555 + %541 = phi i64 [ %556, %555 ], [ %.pre791, %.lr.ph649.preheader ] + %.0147648 = phi i64 [ %557, %555 ], [ 0, %.lr.ph649.preheader ] + %542 = add i64 %541, %.0147648 %spec.select = call i64 @llvm.umin.i64(i64 %542, i64 %.0) - %543 = sub nsw i64 %spec.select, %.0147647 - %544 = mul i64 %.0147647, %538 + %543 = sub nsw i64 %spec.select, %.0147648 + %544 = mul i64 %.0147648, %538 %545 = getelementptr inbounds nuw i8, ptr %.0182, i64 %544 %546 = load ptr, ptr %3, align 8, !tbaa !4 %547 = getelementptr inbounds nuw i8, ptr %546, i64 152 @@ -1512,9 +1512,9 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre invoke void %548(ptr noundef nonnull align 8 dereferenceable(36) %3, i64 noundef %543, ptr noundef %545, ptr noundef %.sroa.0416.0) to label %549 unwind label %559 -549: ; preds = %.lr.ph648 - %550 = getelementptr inbounds nuw float, ptr %279, i64 %.0147647 - %551 = getelementptr inbounds nuw i64, ptr %274, i64 %.0147647 +549: ; preds = %.lr.ph649 + %550 = getelementptr inbounds nuw float, ptr %279, i64 %.0147648 + %551 = getelementptr inbounds nuw i64, ptr %274, i64 %.0147648 %552 = load ptr, ptr %4, align 8, !tbaa !4 %553 = getelementptr inbounds nuw i8, ptr %552, i64 40 %554 = load ptr, ptr %553, align 8 @@ -1523,37 +1523,37 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre 555: ; preds = %549 %556 = load i64, ptr %356, align 8, !tbaa !26 - %557 = add i64 %556, %.0147647 + %557 = add i64 %556, %.0147648 %558 = icmp ult i64 %557, %.0 - br i1 %558, label %.lr.ph648, label %.loopexit473, !llvm.loop !76 + br i1 %558, label %.lr.ph649, label %.loopexit474, !llvm.loop !76 -559: ; preds = %549, %.lr.ph648 +559: ; preds = %549, %.lr.ph649 %560 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.loopexit473: ; preds = %555, %.preheader, %528 +.loopexit474: ; preds = %555, %.preheader, %528 invoke void @_ZN5faiss17InterruptCallback5checkEv() to label %561 unwind label %532 -561: ; preds = %.loopexit473 +561: ; preds = %.loopexit474 %562 = invoke noundef double @_ZN5faiss12getmillisecsEv() to label %563 unwind label %532 563: ; preds = %561 %564 = fsub double %562, %526 - %565 = fadd double %.1180652, %564 - br i1 %380, label %.lr.ph651, label %._crit_edge + %565 = fadd double %.1180653, %564 + br i1 %380, label %.lr.ph652, label %._crit_edge -._crit_edge: ; preds = %.lr.ph651, %563 - %.1175.lcssa = phi float [ 0.000000e+00, %563 ], [ %578, %.lr.ph651 ] +._crit_edge: ; preds = %.lr.ph652, %563 + %.1175.lcssa = phi float [ 0.000000e+00, %563 ], [ %578, %.lr.ph652 ] %566 = load i64, ptr %28, align 8, !tbaa !37 %567 = icmp ugt i64 %566, 2305843009213693951 br i1 %567, label %568, label %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i278 568: ; preds = %._crit_edge invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.26) #26 - to label %.noexc284 unwind label %.loopexit.split-lp476 + to label %.noexc284 unwind label %.loopexit.split-lp477 .noexc284: ; preds = %568 unreachable @@ -1565,7 +1565,7 @@ _ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i278: ; preds = %._crit_edge 569: ; preds = %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i278 %570 = shl nuw nsw i64 %566, 2 %571 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %570) #25 - to label %.noexc285 unwind label %.loopexit475 + to label %.noexc285 unwind label %.loopexit476 .noexc285: ; preds = %569 %572 = getelementptr inbounds nuw float, ptr %571, i64 %566 @@ -1580,15 +1580,15 @@ _ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i280: ; preds = %.noexc285 call void @llvm.memset.p0.i64(ptr align 4 %575, i8 0, i64 %.idx.i.i.i.i.i.i.i281, i1 false), !tbaa !47 br label %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286 -.lr.ph651: ; preds = %563, %.lr.ph651 - %indvars.iv776 = phi i64 [ %indvars.iv.next777, %.lr.ph651 ], [ 0, %563 ] - %.1175649 = phi float [ %578, %.lr.ph651 ], [ 0.000000e+00, %563 ] - %576 = getelementptr inbounds nuw float, ptr %279, i64 %indvars.iv776 +.lr.ph652: ; preds = %563, %.lr.ph652 + %indvars.iv777 = phi i64 [ %indvars.iv.next778, %.lr.ph652 ], [ 0, %563 ] + %.1175650 = phi float [ %578, %.lr.ph652 ], [ 0.000000e+00, %563 ] + %576 = getelementptr inbounds nuw float, ptr %279, i64 %indvars.iv777 %577 = load float, ptr %576, align 4, !tbaa !47 - %578 = fadd float %.1175649, %577 - %indvars.iv.next777 = add nuw nsw i64 %indvars.iv776, 1 - %exitcond779.not = icmp eq i64 %indvars.iv.next777, %.0 - br i1 %exitcond779.not, label %._crit_edge, label %.lr.ph651, !llvm.loop !77 + %578 = fadd float %.1175650, %577 + %indvars.iv.next778 = add nuw nsw i64 %indvars.iv777, 1 + %exitcond780.not = icmp eq i64 %indvars.iv.next778, %.0 + br i1 %exitcond780.not, label %._crit_edge, label %.lr.ph652, !llvm.loop !77 _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i280, %.noexc285, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i278 %.sroa.0395.2 = phi ptr [ %571, %.noexc285 ], [ %571, %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i280 ], [ null, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i278 ] @@ -1662,7 +1662,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_ .noexc293: ; preds = %594 %.not.i289 = icmp eq i64 %597, %581 - br i1 %.not.i289, label %.loopexit468, label %.lr.ph70.i + br i1 %.not.i289, label %.loopexit469, label %.lr.ph70.i .lr.ph70.i: ; preds = %.noexc293 %602 = sub i64 %.0, %599 @@ -1711,7 +1711,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_ %.1.us.i = phi i32 [ %648, %._crit_edge66.us.i ], [ %.05867.us.i, %.lr.ph70.split.us.i ] %625 = add nuw i64 %.05768.us.i, 1 %exitcond76.not.i = icmp eq i64 %625, %599 - br i1 %exitcond76.not.i, label %.loopexit468, label %.lr.ph70.split.us.i, !llvm.loop !83 + br i1 %exitcond76.not.i, label %.loopexit469, label %.lr.ph70.split.us.i, !llvm.loop !83 626: ; preds = %626, %.lr.ph65.us.i %.063.us.i = phi i64 [ 0, %.lr.ph65.us.i ], [ %635, %626 ] @@ -1810,15 +1810,15 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_ %.1.i = phi i32 [ %675, %._crit_edge.i ], [ %.05867.i, %.lr.ph70.split.i ] %677 = add nuw i64 %.05768.i, 1 %exitcond77.not.i = icmp eq i64 %677, %599 - br i1 %exitcond77.not.i, label %.loopexit468, label %.lr.ph70.split.i, !llvm.loop !83 + br i1 %exitcond77.not.i, label %.loopexit469, label %.lr.ph70.split.i, !llvm.loop !83 -.loopexit468: ; preds = %624, %676, %.noexc293 +.loopexit469: ; preds = %624, %676, %.noexc293 %.058.lcssa.i = phi i32 [ 0, %.noexc293 ], [ %.1.i, %676 ], [ %.1.us.i, %624 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) %678 = invoke noundef double @_ZN5faiss12getmillisecsEv() - to label %679 unwind label %.loopexit479 + to label %679 unwind label %.loopexit480 -679: ; preds = %.loopexit468 +679: ; preds = %.loopexit469 %680 = fsub double %678, %345 %681 = fdiv double %680, 1.000000e+03 %682 = fdiv double %565, 1.000000e+03 @@ -1830,7 +1830,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_ .noexc.i.invoke: ; preds = %714, %679 %686 = phi ptr [ @.str.26, %679 ], [ @.str.25, %714 ] invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull %686) #26 - to label %.noexc.i.cont unwind label %.loopexit.split-lp480 + to label %.noexc.i.cont unwind label %.loopexit.split-lp481 .noexc.i.cont: ; preds = %.noexc.i.invoke unreachable @@ -1843,7 +1843,7 @@ _ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i.i: ; preds = %679 %687 = shl i64 %683, 2 %688 = and i64 %687, 8589934588 %689 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %688) #25 - to label %.noexc305 unwind label %.loopexit479 + to label %.noexc305 unwind label %.loopexit480 .noexc305: ; preds = %.noexc24.i call void @llvm.memset.p0.i64(ptr nonnull align 4 %689, i8 0, i64 %688, i1 false), !tbaa !39 @@ -1948,7 +1948,7 @@ _ZNKSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE12_M_check_lenEmPKc.exit call void @llvm.assume(i1 %.not.i.i.i309) %725 = mul nuw nsw i64 %724, 40 %726 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %725) #25 - to label %.noexc314 unwind label %.loopexit479 + to label %.noexc314 unwind label %.loopexit480 .noexc314: ; preds = %_ZNKSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE12_M_check_lenEmPKc.exit.i.i307 %727 = getelementptr inbounds i8, ptr %726, i64 %718 @@ -1991,17 +1991,17 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit315: 735: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit315 %736 = fpext float %.1175.lcssa to double - %737 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20, i32 noundef %.0173653, double noundef %681, double noundef %682, double noundef %736, double noundef %709, i32 noundef %.058.lcssa.i) + %737 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20, i32 noundef %.0173654, double noundef %681, double noundef %682, double noundef %736, double noundef %709, i32 noundef %.058.lcssa.i) %738 = load ptr, ptr @stdout, align 8, !tbaa !64 %739 = call i32 @fflush(ptr noundef %738) br label %742 -.loopexit475: ; preds = %569 - %lpad.loopexit477 = landingpad { ptr, i32 } +.loopexit476: ; preds = %569 + %lpad.loopexit478 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.loopexit.split-lp476: ; preds = %568 +.loopexit.split-lp477: ; preds = %568 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 @@ -2017,32 +2017,32 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit315: br label %.loopexit.split-lp.thread .loopexit.split-lp.loopexit: ; preds = %.lr.ph.us.i - %lpad.loopexit463 = landingpad { ptr, i32 } + %lpad.loopexit464 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.thread .loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.preheader.i291 - %lpad.loopexit466 = landingpad { ptr, i32 } + %lpad.loopexit467 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.thread .loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.preheader.us.i - %lpad.loopexit469 = landingpad { ptr, i32 } + %lpad.loopexit470 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.thread .loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %594 - %lpad.loopexit.split-lp470 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp471 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit479: ; preds = %.loopexit468, %_ZN5faiss10Clustering22post_process_centroidsEv.exit323, %767, %773, %779, %.noexc24.i, %_ZNKSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE12_M_check_lenEmPKc.exit.i.i307, %745 - %lpad.loopexit481 = landingpad { ptr, i32 } +.loopexit480: ; preds = %.loopexit469, %_ZN5faiss10Clustering22post_process_centroidsEv.exit323, %767, %773, %779, %.noexc24.i, %_ZNKSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE12_M_check_lenEmPKc.exit.i.i307, %745 + %lpad.loopexit482 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp480: ; preds = %.noexc.i.invoke - %lpad.loopexit.split-lp482 = landingpad { ptr, i32 } +.loopexit.split-lp481: ; preds = %.noexc.i.invoke + %lpad.loopexit.split-lp483 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -2056,7 +2056,7 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit315: %747 = load i64, ptr %28, align 8, !tbaa !37 %748 = load ptr, ptr %287, align 8, !tbaa !13 invoke void @_ZN5faiss14fvec_renorm_L2EmmPf(i64 noundef %746, i64 noundef %747, ptr noundef %748) - to label %.noexc322 unwind label %.loopexit479 + to label %.noexc322 unwind label %.loopexit480 .noexc322: ; preds = %745, %742 %749 = load i8, ptr %377, align 2, !tbaa !45, !range !43, !noundef !44 @@ -2091,7 +2091,7 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit323: ; preds = %.lr.ph.i319, %762 = getelementptr inbounds nuw i8, ptr %761, i64 64 %763 = load ptr, ptr %762, align 8 invoke void %763(ptr noundef nonnull align 8 dereferenceable(36) %4) - to label %764 unwind label %.loopexit479 + to label %764 unwind label %.loopexit480 764: ; preds = %_ZN5faiss10Clustering22post_process_centroidsEv.exit323 %765 = load i8, ptr %387, align 1, !tbaa !87, !range !43, !noundef !44 @@ -2105,7 +2105,7 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit323: ; preds = %.lr.ph.i319, %771 = getelementptr inbounds nuw i8, ptr %770, i64 16 %772 = load ptr, ptr %771, align 8 invoke void %772(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %768, ptr noundef %769) - to label %773 unwind label %.loopexit479 + to label %773 unwind label %.loopexit480 773: ; preds = %767, %764 %774 = load i64, ptr %28, align 8, !tbaa !37 @@ -2114,11 +2114,11 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit323: ; preds = %.lr.ph.i319, %777 = getelementptr inbounds nuw i8, ptr %776, i64 24 %778 = load ptr, ptr %777, align 8 invoke void %778(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %774, ptr noundef %775) - to label %779 unwind label %.loopexit479 + to label %779 unwind label %.loopexit480 779: ; preds = %773 invoke void @_ZN5faiss17InterruptCallback5checkEv() - to label %780 unwind label %.loopexit479 + to label %780 unwind label %.loopexit480 780: ; preds = %779 %.not.i.i.i324 = icmp eq ptr %.sroa.0395.2, null @@ -2132,46 +2132,46 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit323: ; preds = %.lr.ph.i319, br label %_ZNSt6vectorIfSaIfEED2Ev.exit _ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %780, %781 - %785 = add nuw nsw i32 %.0173653, 1 + %785 = add nuw nsw i32 %.0173654, 1 %786 = load i32, ptr %157, align 8, !tbaa !17 %787 = icmp slt i32 %785, %786 - br i1 %787, label %.lr.ph654, label %._crit_edge655, !llvm.loop !88 + br i1 %787, label %.lr.ph655, label %._crit_edge656, !llvm.loop !88 -.loopexit.split-lp: ; preds = %.loopexit479, %.loopexit.split-lp480, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %740 - %.pn214.pn = phi { ptr, i32 } [ %741, %740 ], [ %lpad.loopexit.split-lp470, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ], [ %lpad.loopexit481, %.loopexit479 ], [ %lpad.loopexit.split-lp482, %.loopexit.split-lp480 ] +.loopexit.split-lp: ; preds = %.loopexit480, %.loopexit.split-lp481, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %740 + %.pn214.pn = phi { ptr, i32 } [ %741, %740 ], [ %lpad.loopexit.split-lp471, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ], [ %lpad.loopexit482, %.loopexit480 ], [ %lpad.loopexit.split-lp483, %.loopexit.split-lp481 ] %.not.i.i.i325 = icmp eq ptr %.sroa.0395.2, null br i1 %.not.i.i.i325, label %_ZNSt6vectorIfSaIfEED2Ev.exit326, label %.loopexit.split-lp.thread .loopexit.split-lp.thread: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit, %.loopexit.split-lp - %.pn214.pn893 = phi { ptr, i32 } [ %.pn214.pn, %.loopexit.split-lp ], [ %lpad.loopexit469, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit466, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit463, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit, %.loopexit ] + %.pn214.pn894 = phi { ptr, i32 } [ %.pn214.pn, %.loopexit.split-lp ], [ %lpad.loopexit470, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit467, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit464, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit, %.loopexit ] %788 = ptrtoint ptr %.sroa.11399.2 to i64 %789 = ptrtoint ptr %.sroa.0395.2 to i64 %790 = sub i64 %788, %789 call void @_ZdlPvm(ptr noundef nonnull %.sroa.0395.2, i64 noundef %790) #24 br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -791: ; preds = %._crit_edge655 +791: ; preds = %._crit_edge656 %putchar = call i32 @putchar(i32 10) br label %792 -.loopexit491: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i, %_ZNSt12_Vector_baseIN5faiss24ClusteringIterationStatsESaIS1_EE11_M_allocateEm.exit.i.i - %lpad.loopexit493 = landingpad { ptr, i32 } +.loopexit492: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i, %_ZNSt12_Vector_baseIN5faiss24ClusteringIterationStatsESaIS1_EE11_M_allocateEm.exit.i.i + %lpad.loopexit494 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.loopexit.split-lp492: ; preds = %.invoke - %lpad.loopexit.split-lp494 = landingpad { ptr, i32 } +.loopexit.split-lp493: ; preds = %.invoke + %lpad.loopexit.split-lp495 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -792: ; preds = %791, %._crit_edge655 +792: ; preds = %791, %._crit_edge656 %793 = load i32, ptr %369, align 4, !tbaa !22 %794 = icmp sgt i32 %793, 1 br i1 %794, label %795, label %880 795: ; preds = %792 - %796 = fcmp olt float %.0174.lcssa, %.0183658 - %797 = fcmp ogt float %.0174.lcssa, %.0183658 + %796 = fcmp olt float %.0174.lcssa, %.0183659 + %797 = fcmp ogt float %.0174.lcssa, %.0183659 %or.cond244 = select i1 %285, i1 %797, i1 %796 br i1 %or.cond244, label %798, label %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit @@ -2206,14 +2206,14 @@ _ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %780, %781 .invoke: ; preds = %851, %814 invoke void @_ZSt28__throw_bad_array_new_lengthv() #26 - to label %.cont unwind label %.loopexit.split-lp492 + to label %.cont unwind label %.loopexit.split-lp493 .cont: ; preds = %.invoke unreachable _ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i: ; preds = %814 %816 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %808) #25 - to label %.noexc330 unwind label %.loopexit491 + to label %.noexc330 unwind label %.loopexit492 .noexc330: ; preds = %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i %.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %804, %805 @@ -2273,11 +2273,11 @@ _ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i: ; preds = %826, %825 %832 = ptrtoint ptr %829 to i64 %833 = sub i64 %831, %832 call void @llvm.memmove.p0.p0.i64(ptr align 4 %.pre26.i, ptr align 4 %829, i64 %833, i1 false) - %.pre791 = load ptr, ptr %26, align 8, !tbaa !13 + %.pre792 = load ptr, ptr %26, align 8, !tbaa !13 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit.i _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit.i: ; preds = %830, %_ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i, %824, %823, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i - %834 = phi ptr [ %.pre791, %830 ], [ %809, %_ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i ], [ %809, %824 ], [ %809, %823 ], [ %816, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i ] + %834 = phi ptr [ %.pre792, %830 ], [ %809, %_ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i ], [ %809, %824 ], [ %809, %823 ], [ %816, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i ] %835 = phi ptr [ %419, %830 ], [ %419, %_ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i ], [ %419, %824 ], [ %419, %823 ], [ %819, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i ] %836 = getelementptr inbounds nuw i8, ptr %834, i64 %808 store ptr %836, ptr %389, align 8, !tbaa !46 @@ -2309,7 +2309,7 @@ _ZNSt6vectorIfSaIfEEaSERKS1_.exit: ; preds = %_ZSt4copyIN9__gnu_c _ZNSt12_Vector_baseIN5faiss24ClusteringIterationStatsESaIS1_EE11_M_allocateEm.exit.i.i: ; preds = %851 %854 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %844) #25 - to label %.noexc347 unwind label %.loopexit491 + to label %.noexc347 unwind label %.loopexit492 .noexc347: ; preds = %_ZNSt12_Vector_baseIN5faiss24ClusteringIterationStatsESaIS1_EE11_M_allocateEm.exit.i.i %.not.i.i.i.i.i.i.i.i.i.i344 = icmp eq ptr %840, %841 @@ -2381,17 +2381,17 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6 _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit: ; preds = %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit, %795 %875 = phi ptr [ %.pre26.i, %795 ], [ %837, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit ], [ %837, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] %876 = phi ptr [ %419, %795 ], [ %838, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit ], [ %838, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] - %.2185 = phi float [ %.0183658, %795 ], [ %.0174.lcssa, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit ], [ %.0174.lcssa, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] + %.2185 = phi float [ %.0183659, %795 ], [ %.0174.lcssa, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit ], [ %.0174.lcssa, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] %877 = load ptr, ptr %4, align 8, !tbaa !4 %878 = getelementptr inbounds nuw i8, ptr %877, i64 64 %879 = load ptr, ptr %878, align 8 invoke void %879(ptr noundef nonnull align 8 dereferenceable(36) %4) - to label %880 unwind label %.loopexit491 + to label %880 unwind label %.loopexit492 880: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit, %792 %881 = phi ptr [ %875, %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit ], [ %.pre26.i, %792 ] %882 = phi ptr [ %876, %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit ], [ %419, %792 ] - %.1184 = phi float [ %.2185, %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit ], [ %.0183658, %792 ] + %.1184 = phi float [ %.2185, %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit ], [ %.0183659, %792 ] %.not.i.i.i348 = icmp eq ptr %.sroa.0405.1, null br i1 %.not.i.i.i348, label %_ZNSt6vectorIiSaIiEED2Ev.exit, label %883 @@ -2403,26 +2403,26 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit: ; preds = br label %_ZNSt6vectorIiSaIiEED2Ev.exit _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %880, %883 - %indvars.iv.next781 = add nuw nsw i64 %indvars.iv780, 1 + %indvars.iv.next782 = add nuw nsw i64 %indvars.iv781, 1 %887 = load i32, ptr %369, align 4, !tbaa !22 %888 = sext i32 %887 to i64 - %889 = icmp slt i64 %indvars.iv.next781, %888 - br i1 %889, label %.lr.ph661.split, label %._crit_edge662, !llvm.loop !90 + %889 = icmp slt i64 %indvars.iv.next782, %888 + br i1 %889, label %.lr.ph662.split, label %._crit_edge663, !llvm.loop !90 -_ZNSt6vectorIfSaIfEED2Ev.exit326: ; preds = %.loopexit491, %.loopexit.split-lp492, %.loopexit475, %.loopexit.split-lp476, %.loopexit.split-lp, %.loopexit.split-lp.thread, %539, %559, %532, %456 - %.pn222 = phi { ptr, i32 } [ %457, %456 ], [ %533, %532 ], [ %560, %559 ], [ %540, %539 ], [ %.pn214.pn, %.loopexit.split-lp ], [ %.pn214.pn893, %.loopexit.split-lp.thread ], [ %lpad.loopexit477, %.loopexit475 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp476 ], [ %lpad.loopexit493, %.loopexit491 ], [ %lpad.loopexit.split-lp494, %.loopexit.split-lp492 ] +_ZNSt6vectorIfSaIfEED2Ev.exit326: ; preds = %.loopexit492, %.loopexit.split-lp493, %.loopexit476, %.loopexit.split-lp477, %.loopexit.split-lp, %.loopexit.split-lp.thread, %539, %559, %532, %456 + %.pn222 = phi { ptr, i32 } [ %457, %456 ], [ %533, %532 ], [ %560, %559 ], [ %540, %539 ], [ %.pn214.pn, %.loopexit.split-lp ], [ %.pn214.pn894, %.loopexit.split-lp.thread ], [ %lpad.loopexit478, %.loopexit476 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp477 ], [ %lpad.loopexit494, %.loopexit492 ], [ %lpad.loopexit.split-lp495, %.loopexit.split-lp493 ] %.not.i.i.i349 = icmp eq ptr %.sroa.0405.1, null br i1 %.not.i.i.i349, label %_ZNSt6vectorIiSaIiEED2Ev.exit350, label %890 890: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit326.thread, %_ZNSt6vectorIfSaIfEED2Ev.exit326 - %.pn222451 = phi { ptr, i32 } [ %485, %_ZNSt6vectorIfSaIfEED2Ev.exit326.thread ], [ %.pn222, %_ZNSt6vectorIfSaIfEED2Ev.exit326 ] + %.pn222452 = phi { ptr, i32 } [ %485, %_ZNSt6vectorIfSaIfEED2Ev.exit326.thread ], [ %.pn222, %_ZNSt6vectorIfSaIfEED2Ev.exit326 ] %891 = ptrtoint ptr %.sroa.12.1 to i64 %892 = ptrtoint ptr %.sroa.0405.1 to i64 %893 = sub i64 %891, %892 call void @_ZdlPvm(ptr noundef nonnull %.sroa.0405.1, i64 noundef %893) #24 br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -894: ; preds = %._crit_edge662 +894: ; preds = %._crit_edge663 %895 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %287, ptr noundef nonnull align 8 dereferenceable(24) %26) to label %896 unwind label %909 @@ -2445,25 +2445,25 @@ _ZNSt6vectorIfSaIfEED2Ev.exit326: ; preds = %.loopexit491, %.loo %907 = getelementptr inbounds nuw i8, ptr %906, i64 24 %908 = load ptr, ptr %907, align 8 invoke void %908(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %904, ptr noundef %905) - to label %._crit_edge662.thread unwind label %909 + to label %._crit_edge663.thread unwind label %909 909: ; preds = %903, %899, %896, %894 %910 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -._crit_edge662.thread: ; preds = %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit, %903, %._crit_edge662 +._crit_edge663.thread: ; preds = %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit, %903, %._crit_edge663 %.not.i.i.i351 = icmp eq ptr %.sroa.0416.0, null br i1 %.not.i.i.i351, label %_ZNSt6vectorIfSaIfEED2Ev.exit352, label %911 -911: ; preds = %._crit_edge662.thread +911: ; preds = %._crit_edge663.thread %912 = ptrtoint ptr %.sroa.11421.0 to i64 %913 = ptrtoint ptr %.sroa.0416.0 to i64 %914 = sub i64 %912, %913 call void @_ZdlPvm(ptr noundef nonnull %.sroa.0416.0, i64 noundef %914) #24 br label %_ZNSt6vectorIfSaIfEED2Ev.exit352 -_ZNSt6vectorIfSaIfEED2Ev.exit352: ; preds = %._crit_edge662.thread, %911 +_ZNSt6vectorIfSaIfEED2Ev.exit352: ; preds = %._crit_edge663.thread, %911 %915 = load ptr, ptr %26, align 8, !tbaa !13 %.not.i.i.i353 = icmp eq ptr %915, null br i1 %.not.i.i.i353, label %_ZNSt6vectorIfSaIfEED2Ev.exit354, label %916 @@ -2499,26 +2499,26 @@ _ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt6vectorI br label %929 929: ; preds = %248, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit - %.not.i358 = icmp eq ptr %.sroa.0443.1, null + %.not.i358 = icmp eq ptr %.sroa.0444.1, null br i1 %.not.i358, label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360, label %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i359 _ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i359: ; preds = %929 - call void @_ZdaPv(ptr noundef nonnull %.sroa.0443.1) #24 + call void @_ZdaPv(ptr noundef nonnull %.sroa.0444.1) #24 br label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360 _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360: ; preds = %929, %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i359 - %.not.i361 = icmp eq ptr %.sroa.0446.1, null + %.not.i361 = icmp eq ptr %.sroa.0447.1, null br i1 %.not.i361, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, label %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i _ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i: ; preds = %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360 - call void @_ZdaPv(ptr noundef nonnull %.sroa.0446.1) #24 + call void @_ZdaPv(ptr noundef nonnull %.sroa.0447.1) #24 br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360, %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i ret void -_ZNSt6vectorIiSaIiEED2Ev.exit350: ; preds = %.loopexit486, %.loopexit.split-lp487, %.split, %.split.us, %_ZNSt6vectorIfSaIfEED2Ev.exit326, %890, %909 - %.pn222.pn.pn.pn = phi { ptr, i32 } [ %910, %909 ], [ %.pn222, %_ZNSt6vectorIfSaIfEED2Ev.exit326 ], [ %.pn222451, %890 ], [ %427, %.split ], [ %415, %.split.us ], [ %lpad.loopexit488, %.loopexit486 ], [ %lpad.loopexit.split-lp489, %.loopexit.split-lp487 ] +_ZNSt6vectorIiSaIiEED2Ev.exit350: ; preds = %.loopexit487, %.loopexit.split-lp488, %.split, %.split.us, %_ZNSt6vectorIfSaIfEED2Ev.exit326, %890, %909 + %.pn222.pn.pn.pn = phi { ptr, i32 } [ %910, %909 ], [ %.pn222, %_ZNSt6vectorIfSaIfEED2Ev.exit326 ], [ %.pn222452, %890 ], [ %427, %.split ], [ %415, %.split.us ], [ %lpad.loopexit489, %.loopexit487 ], [ %lpad.loopexit.split-lp490, %.loopexit.split-lp488 ] %.not.i.i.i362 = icmp eq ptr %.sroa.0416.0, null br i1 %.not.i.i.i362, label %_ZNSt6vectorIfSaIfEED2Ev.exit363, label %930 @@ -2570,22 +2570,22 @@ _ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373: ; preds = %_ZNSt10uni br label %948 948: ; preds = %310, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373, %254, %166 - %.sroa.0443.2 = phi ptr [ %.sroa.0443.1, %254 ], [ %.sroa.0443.0, %166 ], [ %.sroa.0443.1, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %.sroa.0443.1, %310 ] - %.sroa.0446.2 = phi ptr [ %.sroa.0446.1, %254 ], [ %.sroa.0446.0, %166 ], [ %.sroa.0446.1, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %.sroa.0446.1, %310 ] + %.sroa.0444.2 = phi ptr [ %.sroa.0444.1, %254 ], [ %.sroa.0444.0, %166 ], [ %.sroa.0444.1, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %.sroa.0444.1, %310 ] + %.sroa.0447.2 = phi ptr [ %.sroa.0447.1, %254 ], [ %.sroa.0447.0, %166 ], [ %.sroa.0447.1, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %.sroa.0447.1, %310 ] %.pn233 = phi { ptr, i32 } [ %255, %254 ], [ %167, %166 ], [ %.pn222.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %311, %310 ] - %.not.i374 = icmp eq ptr %.sroa.0443.2, null + %.not.i374 = icmp eq ptr %.sroa.0444.2, null br i1 %.not.i374, label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376, label %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i375 _ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i375: ; preds = %948 - call void @_ZdaPv(ptr noundef nonnull %.sroa.0443.2) #24 + call void @_ZdaPv(ptr noundef nonnull %.sroa.0444.2) #24 br label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376 _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376: ; preds = %948, %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i375 - %.not.i377 = icmp eq ptr %.sroa.0446.2, null + %.not.i377 = icmp eq ptr %.sroa.0447.2, null br i1 %.not.i377, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379, label %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i378 _ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i378: ; preds = %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376 - call void @_ZdaPv(ptr noundef nonnull %.sroa.0446.2) #24 + call void @_ZdaPv(ptr noundef nonnull %.sroa.0447.2) #24 br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379 _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379: ; preds = %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i378, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit256, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit252, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit248, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit @@ -3684,7 +3684,7 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit: ; preds = %3 18: ; preds = %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit, %3 %19 = phi i64 [ %.pre, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ %7, %3 ] - %.sroa.028.0 = phi ptr [ %17, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ null, %3 ] + %.sroa.029.0 = phi ptr [ %17, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ null, %3 ] %.012 = phi ptr [ %17, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ %2, %3 ] %.0 = phi i64 [ %16, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ %1, %3 ] %20 = getelementptr inbounds nuw i8, ptr %0, i64 72 @@ -3704,8 +3704,8 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit: ; preds = %3 to label %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge unwind label %68 ._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge: ; preds = %29 - %.pre35 = load i64, ptr %6, align 8, !tbaa !37 - %.pre36 = load ptr, ptr %20, align 8, !tbaa !13 + %.pre36 = load i64, ptr %6, align 8, !tbaa !37 + %.pre37 = load ptr, ptr %20, align 8, !tbaa !13 br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit 31: ; preds = %18 @@ -3722,8 +3722,8 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit: ; preds = %3 br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit _ZNSt6vectorIfSaIfEE6resizeEm.exit: ; preds = %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge, %35, %33, %31 - %36 = phi ptr [ %.pre36, %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge ], [ %23, %35 ], [ %23, %33 ], [ %23, %31 ] - %37 = phi i64 [ %.pre35, %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge ], [ %19, %35 ], [ %19, %33 ], [ %19, %31 ] + %36 = phi ptr [ %.pre37, %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge ], [ %23, %35 ], [ %23, %33 ], [ %23, %31 ] + %37 = phi i64 [ %.pre36, %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge ], [ %19, %35 ], [ %19, %33 ], [ %19, %31 ] %38 = invoke noundef double @_ZN5faiss8kmeans1dEPKfmmPf(ptr noundef %.012, i64 noundef %.0, i64 noundef %37, ptr noundef %36) to label %39 unwind label %70 @@ -3806,11 +3806,11 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE17_M_realloc_insertIJRKS1 br label %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i, %45 - %.not.i20 = icmp eq ptr %.sroa.028.0, null + %.not.i20 = icmp eq ptr %.sroa.029.0, null br i1 %.not.i20, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, label %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i _ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit - tail call void @_ZdaPv(ptr noundef nonnull %.sroa.028.0) #24 + tail call void @_ZdaPv(ptr noundef nonnull %.sroa.029.0) #24 br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit, %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i @@ -3833,11 +3833,11 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt6vectorI 74: ; preds = %70, %72, %68 %.pn.pn = phi { ptr, i32 } [ %69, %68 ], [ %73, %72 ], [ %71, %70 ] - %.not.i21 = icmp eq ptr %.sroa.028.0, null + %.not.i21 = icmp eq ptr %.sroa.029.0, null br i1 %.not.i21, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit23, label %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i22 _ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i22: ; preds = %74 - tail call void @_ZdaPv(ptr noundef nonnull %.sroa.028.0) #24 + tail call void @_ZdaPv(ptr noundef nonnull %.sroa.029.0) #24 br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit23 _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit23: ; preds = %74, %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i22 diff --git a/bench/g2o/optimized/edge_project_xyz.ll b/bench/g2o/optimized/edge_project_xyz.ll index 4bd9889a3cc..460e0620461 100644 --- a/bench/g2o/optimized/edge_project_xyz.ll +++ b/bench/g2o/optimized/edge_project_xyz.ll @@ -666,15 +666,22 @@ define void @_ZN3g2o17EdgeSE3ProjectXYZ14linearizeOplusEv(ptr noundef nonnull re %68 = fmul double %.sroa.7.0.copyload, %59 %69 = fadd double %66, %68 %70 = fsub double 1.000000e+00, %69 + %.sroa.0.sroa.0.0.vec.insert = insertelement <1 x double> poison, double %70, i64 0 %71 = fsub double %64, %62 + %.sroa.0.sroa.8.24.vec.insert = insertelement <1 x double> poison, double %71, i64 0 %72 = fadd double %65, %61 + %.sroa.0.sroa.14.48.vec.insert = insertelement <1 x double> poison, double %72, i64 0 %73 = fadd double %64, %62 + %.sroa.0.sroa.4.8.vec.insert = insertelement <1 x double> poison, double %73, i64 0 %74 = fadd double %63, %68 %75 = fsub double 1.000000e+00, %74 + %.sroa.0.sroa.10.32.vec.insert = insertelement <1 x double> poison, double %75, i64 0 %76 = fsub double %67, %60 %.sroa.0.sroa.16.56.vec.insert = insertelement <2 x double> poison, double %76, i64 0 %77 = fsub double %65, %61 + %.sroa.0.sroa.6.16.vec.insert = insertelement <1 x double> poison, double %77, i64 0 %78 = fadd double %67, %60 + %.sroa.0.sroa.12.40.vec.insert = insertelement <1 x double> poison, double %78, i64 0 %79 = fadd double %63, %66 %80 = fsub double 1.000000e+00, %79 %81 = getelementptr inbounds nuw i8, ptr %0, i64 312 @@ -690,112 +697,105 @@ define void @_ZN3g2o17EdgeSE3ProjectXYZ14linearizeOplusEv(ptr noundef nonnull re %85 = shufflevector <2 x double> %.sroa.2.i.i.i.i.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.i.0..sroa.2.i.i.i.i.i.0..sroa.2.i.i.i.i.i.0..sroa.2.i.i.i.i.0..sroa.2.i.i.i.i.0..sroa.2.i.i.i.0..sroa.2.i.i.i.0..sroa.2.i.i.0..sroa.2.i.i.0..sroa.2.i.0..sroa.2.i.0..sroa.2.0..sroa.2.0..sroa.2.16..i.i.i.i.i.i.i.i.i.i, <2 x double> poison, <2 x i32> zeroinitializer %86 = load <2 x double>, ptr %84, align 1, !tbaa !115 %87 = fmul <2 x double> %85, %86 - %88 = bitcast double %70 to <1 x double> - %89 = shufflevector <1 x double> %88, <1 x double> poison, <2 x i32> zeroinitializer - %90 = fmul <2 x double> %87, %89 - %91 = getelementptr inbounds nuw i8, ptr %84, i64 16 - %92 = load <2 x double>, ptr %91, align 1, !tbaa !115 - %93 = fmul <2 x double> %85, %92 - %94 = bitcast double %73 to <1 x double> - %95 = shufflevector <1 x double> %94, <1 x double> poison, <2 x i32> zeroinitializer - %96 = fmul <2 x double> %93, %95 - %97 = fadd <2 x double> %90, %96 - %98 = getelementptr inbounds nuw i8, ptr %84, i64 32 - %99 = load <2 x double>, ptr %98, align 1, !tbaa !115 - %100 = fmul <2 x double> %85, %99 - %101 = bitcast double %77 to <1 x double> - %102 = shufflevector <1 x double> %101, <1 x double> poison, <2 x i32> zeroinitializer - %103 = fmul <2 x double> %100, %102 - %104 = fadd <2 x double> %97, %103 - %105 = bitcast double %71 to <1 x double> - %106 = shufflevector <1 x double> %105, <1 x double> poison, <2 x i32> zeroinitializer - %107 = fmul <2 x double> %87, %106 - %108 = bitcast double %75 to <1 x double> - %109 = shufflevector <1 x double> %108, <1 x double> poison, <2 x i32> zeroinitializer - %110 = fmul <2 x double> %93, %109 - %111 = fadd <2 x double> %107, %110 - %112 = bitcast double %78 to <1 x double> - %113 = shufflevector <1 x double> %112, <1 x double> poison, <2 x i32> zeroinitializer - %114 = fmul <2 x double> %100, %113 - %115 = fadd <2 x double> %111, %114 - %116 = bitcast double %72 to <1 x double> - %117 = shufflevector <1 x double> %116, <1 x double> poison, <2 x i32> zeroinitializer - %118 = fmul <2 x double> %87, %117 - %119 = shufflevector <2 x double> %.sroa.0.sroa.16.56.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer - %120 = fmul <2 x double> %93, %119 - %121 = fadd <2 x double> %118, %120 - %122 = insertelement <2 x double> poison, double %80, i64 0 - %123 = shufflevector <2 x double> %122, <2 x double> poison, <2 x i32> zeroinitializer - %124 = fmul <2 x double> %100, %123 - %125 = fadd <2 x double> %124, %121 + %88 = shufflevector <1 x double> %.sroa.0.sroa.0.0.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %89 = fmul <2 x double> %87, %88 + %90 = getelementptr inbounds nuw i8, ptr %84, i64 16 + %91 = load <2 x double>, ptr %90, align 1, !tbaa !115 + %92 = fmul <2 x double> %85, %91 + %93 = shufflevector <1 x double> %.sroa.0.sroa.4.8.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %94 = fmul <2 x double> %92, %93 + %95 = fadd <2 x double> %89, %94 + %96 = getelementptr inbounds nuw i8, ptr %84, i64 32 + %97 = load <2 x double>, ptr %96, align 1, !tbaa !115 + %98 = fmul <2 x double> %85, %97 + %99 = shufflevector <1 x double> %.sroa.0.sroa.6.16.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %100 = fmul <2 x double> %98, %99 + %101 = fadd <2 x double> %95, %100 + %102 = shufflevector <1 x double> %.sroa.0.sroa.8.24.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %103 = fmul <2 x double> %87, %102 + %104 = shufflevector <1 x double> %.sroa.0.sroa.10.32.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %105 = fmul <2 x double> %92, %104 + %106 = fadd <2 x double> %103, %105 + %107 = shufflevector <1 x double> %.sroa.0.sroa.12.40.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %108 = fmul <2 x double> %98, %107 + %109 = fadd <2 x double> %106, %108 + %110 = shufflevector <1 x double> %.sroa.0.sroa.14.48.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %111 = fmul <2 x double> %87, %110 + %112 = shufflevector <2 x double> %.sroa.0.sroa.16.56.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer + %113 = fmul <2 x double> %92, %112 + %114 = fadd <2 x double> %111, %113 + %115 = insertelement <2 x double> poison, double %80, i64 0 + %116 = shufflevector <2 x double> %115, <2 x double> poison, <2 x i32> zeroinitializer + %117 = fmul <2 x double> %98, %116 + %118 = fadd <2 x double> %117, %114 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.2.i.i.i.i.i.i.i.i.i.i) - %126 = load ptr, ptr %82, align 8, !tbaa !161 - store <2 x double> %104, ptr %126, align 16, !tbaa !115 - %127 = getelementptr i8, ptr %126, i64 16 - store <2 x double> %115, ptr %127, align 16, !tbaa !115 - %128 = getelementptr i8, ptr %126, i64 32 - store <2 x double> %125, ptr %128, align 16, !tbaa !115 - %129 = fmul double %.sroa.037.0.vec.extract, %.sroa.037.8.vec.extract - %130 = fdiv double %129, %40 - %131 = load double, ptr %41, align 8, !tbaa !51 - %132 = fmul double %130, %131 - %133 = getelementptr inbounds nuw i8, ptr %0, i64 320 - %134 = load ptr, ptr %133, align 16, !tbaa !162 - %135 = load ptr, ptr %134, align 8, !tbaa !163 - store double %132, ptr %135, align 8, !tbaa !111 + %119 = load ptr, ptr %82, align 8, !tbaa !161 + store <2 x double> %101, ptr %119, align 16, !tbaa !115 + %120 = getelementptr i8, ptr %119, i64 16 + store <2 x double> %109, ptr %120, align 16, !tbaa !115 + %121 = getelementptr i8, ptr %119, i64 32 + store <2 x double> %118, ptr %121, align 16, !tbaa !115 + %122 = fmul double %.sroa.037.0.vec.extract, %.sroa.037.8.vec.extract + %123 = fdiv double %122, %40 + %124 = load double, ptr %41, align 8, !tbaa !51 + %125 = fmul double %123, %124 + %126 = getelementptr inbounds nuw i8, ptr %0, i64 320 + %127 = load ptr, ptr %126, align 16, !tbaa !162 + %128 = load ptr, ptr %127, align 8, !tbaa !163 + store double %125, ptr %128, align 8, !tbaa !111 %foldExtExtBinop = fmul <2 x double> %38, %38 - %136 = extractelement <2 x double> %foldExtExtBinop, i64 0 - %137 = fdiv double %136, %40 - %138 = fadd double %137, 1.000000e+00 - %139 = fneg double %138 + %129 = extractelement <2 x double> %foldExtExtBinop, i64 0 + %130 = fdiv double %129, %40 + %131 = fadd double %130, 1.000000e+00 + %132 = fneg double %131 + %133 = load double, ptr %41, align 8, !tbaa !51 + %134 = fmul double %133, %132 + %135 = getelementptr i8, ptr %128, i64 16 + store double %134, ptr %135, align 8, !tbaa !111 + %136 = fdiv double %.sroa.037.8.vec.extract, %39 + %137 = load double, ptr %41, align 8, !tbaa !51 + %138 = fmul double %136, %137 + %139 = getelementptr i8, ptr %128, i64 32 + store double %138, ptr %139, align 8, !tbaa !111 %140 = load double, ptr %41, align 8, !tbaa !51 - %141 = fmul double %140, %139 - %142 = getelementptr i8, ptr %135, i64 16 + %141 = fmul double %56, %140 + %142 = getelementptr i8, ptr %128, i64 48 store double %141, ptr %142, align 8, !tbaa !111 - %143 = fdiv double %.sroa.037.8.vec.extract, %39 - %144 = load double, ptr %41, align 8, !tbaa !51 - %145 = fmul double %143, %144 - %146 = getelementptr i8, ptr %135, i64 32 - store double %145, ptr %146, align 8, !tbaa !111 - %147 = load double, ptr %41, align 8, !tbaa !51 - %148 = fmul double %56, %147 - %149 = getelementptr i8, ptr %135, i64 48 - store double %148, ptr %149, align 8, !tbaa !111 - %150 = getelementptr i8, ptr %135, i64 64 - store double 0.000000e+00, ptr %150, align 8, !tbaa !111 - %151 = fdiv double %.sroa.037.0.vec.extract, %40 - %152 = load double, ptr %41, align 8, !tbaa !51 - %153 = fmul double %151, %152 - %154 = getelementptr i8, ptr %135, i64 80 - store double %153, ptr %154, align 8, !tbaa !111 - %155 = fmul double %.sroa.037.8.vec.extract, %.sroa.037.8.vec.extract - %156 = fdiv double %155, %40 - %157 = fadd double %156, 1.000000e+00 - %158 = load double, ptr %49, align 16, !tbaa !95 - %159 = fmul double %157, %158 - %160 = getelementptr i8, ptr %135, i64 8 - store double %159, ptr %160, align 8, !tbaa !111 - %161 = fmul double %.sroa.037.8.vec.extract, %44 - %162 = fdiv double %161, %40 + %143 = getelementptr i8, ptr %128, i64 64 + store double 0.000000e+00, ptr %143, align 8, !tbaa !111 + %144 = fdiv double %.sroa.037.0.vec.extract, %40 + %145 = load double, ptr %41, align 8, !tbaa !51 + %146 = fmul double %144, %145 + %147 = getelementptr i8, ptr %128, i64 80 + store double %146, ptr %147, align 8, !tbaa !111 + %148 = fmul double %.sroa.037.8.vec.extract, %.sroa.037.8.vec.extract + %149 = fdiv double %148, %40 + %150 = fadd double %149, 1.000000e+00 + %151 = load double, ptr %49, align 16, !tbaa !95 + %152 = fmul double %150, %151 + %153 = getelementptr i8, ptr %128, i64 8 + store double %152, ptr %153, align 8, !tbaa !111 + %154 = fmul double %.sroa.037.8.vec.extract, %44 + %155 = fdiv double %154, %40 + %156 = load double, ptr %49, align 16, !tbaa !95 + %157 = fmul double %155, %156 + %158 = getelementptr i8, ptr %128, i64 24 + store double %157, ptr %158, align 8, !tbaa !111 + %159 = load double, ptr %49, align 16, !tbaa !95 + %160 = fmul double %45, %159 + %161 = getelementptr i8, ptr %128, i64 40 + store double %160, ptr %161, align 8, !tbaa !111 + %162 = getelementptr i8, ptr %128, i64 56 + store double 0.000000e+00, ptr %162, align 8, !tbaa !111 %163 = load double, ptr %49, align 16, !tbaa !95 - %164 = fmul double %162, %163 - %165 = getelementptr i8, ptr %135, i64 24 + %164 = fmul double %56, %163 + %165 = getelementptr i8, ptr %128, i64 72 store double %164, ptr %165, align 8, !tbaa !111 - %166 = load double, ptr %49, align 16, !tbaa !95 - %167 = fmul double %45, %166 - %168 = getelementptr i8, ptr %135, i64 40 - store double %167, ptr %168, align 8, !tbaa !111 - %169 = getelementptr i8, ptr %135, i64 56 - store double 0.000000e+00, ptr %169, align 8, !tbaa !111 - %170 = load double, ptr %49, align 16, !tbaa !95 - %171 = fmul double %56, %170 - %172 = getelementptr i8, ptr %135, i64 72 - store double %171, ptr %172, align 8, !tbaa !111 - %173 = fdiv double %.sroa.037.8.vec.extract, %40 - %174 = load double, ptr %49, align 16, !tbaa !95 - %175 = fmul double %173, %174 - %176 = getelementptr i8, ptr %135, i64 88 - store double %175, ptr %176, align 8, !tbaa !111 + %166 = fdiv double %.sroa.037.8.vec.extract, %40 + %167 = load double, ptr %49, align 16, !tbaa !95 + %168 = fmul double %166, %167 + %169 = getelementptr i8, ptr %128, i64 88 + store double %168, ptr %169, align 8, !tbaa !111 call void @llvm.lifetime.end.p0(ptr nonnull %2) ret void } diff --git a/bench/g2o/optimized/optimizable_graph.ll b/bench/g2o/optimized/optimizable_graph.ll index eca4333a62c..b9b8020ffff 100644 --- a/bench/g2o/optimized/optimizable_graph.ll +++ b/bench/g2o/optimized/optimizable_graph.ll @@ -16016,38 +16016,38 @@ _ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit25: ; preds = %32, % define linkonce_odr void @_ZN5Eigen8internal32triangular_matrix_vector_productIlLi6EdLb0EdLb0ELi1ELi0EE3runEllPKdlS4_lPdlRS3_(i64 noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i64 noundef %5, ptr noundef %6, i64 noundef %7, ptr noundef nonnull align 8 dereferenceable(8) %8) local_unnamed_addr #36 comdat align 2 personality ptr @__gxx_personality_v0 { %10 = alloca %"class.Eigen::internal::const_blas_data_mapper.698", align 8 %11 = alloca %"class.Eigen::internal::const_blas_data_mapper.698", align 8 - %.sroa.speculated133 = tail call i64 @llvm.smin.i64(i64 %1, i64 %0) - %12 = icmp sgt i64 %.sroa.speculated133, 0 - br i1 %12, label %.lr.ph146, label %._crit_edge147 + %.sroa.speculated132 = tail call i64 @llvm.smin.i64(i64 %1, i64 %0) + %12 = icmp sgt i64 %.sroa.speculated132, 0 + br i1 %12, label %.lr.ph143, label %._crit_edge144 -.lr.ph146: ; preds = %9 +.lr.ph143: ; preds = %9 %13 = getelementptr inbounds nuw i8, ptr %10, i64 8 %14 = getelementptr inbounds nuw i8, ptr %11, i64 8 br label %15 -._crit_edge147: ; preds = %104, %9 +._crit_edge144: ; preds = %104, %9 ret void -15: ; preds = %.lr.ph146, %104 - %indvars.iv = phi i64 [ %.sroa.speculated133, %.lr.ph146 ], [ %indvars.iv.next, %104 ] - %.0144 = phi i64 [ 0, %.lr.ph146 ], [ %105, %104 ] +15: ; preds = %.lr.ph143, %104 + %indvars.iv = phi i64 [ %.sroa.speculated132, %.lr.ph143 ], [ %indvars.iv.next, %104 ] + %.0141 = phi i64 [ 0, %.lr.ph143 ], [ %105, %104 ] %16 = call i64 @llvm.smax.i64(i64 %indvars.iv, i64 1) %17 = call i64 @llvm.umin.i64(i64 %16, i64 8) - %18 = sub nsw i64 %.sroa.speculated133, %.0144 + %18 = sub nsw i64 %.sroa.speculated132, %.0141 %.sroa.speculated = call i64 @llvm.smin.i64(i64 %18, i64 8) %19 = icmp sgt i64 %18, 0 br i1 %19, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %88, %15 - %20 = add i64 %.sroa.speculated, %.0144 + %20 = add i64 %.sroa.speculated, %.0141 %21 = sub i64 %1, %20 %22 = icmp sgt i64 %21, 0 br i1 %22, label %96, label %104 .lr.ph: ; preds = %15, %88 - %.052142 = phi i64 [ %95, %88 ], [ 0, %15 ] - %23 = add nuw nsw i64 %.052142, %.0144 - %24 = xor i64 %.052142, -1 + %.052140 = phi i64 [ %95, %88 ], [ 0, %15 ] + %23 = add nuw nsw i64 %.052140, %.0141 + %24 = xor i64 %.052140, -1 %25 = add nsw i64 %.sroa.speculated, %24 %26 = icmp sgt i64 %25, 0 br i1 %26, label %27, label %.lr.ph._crit_edge @@ -16065,7 +16065,7 @@ define linkonce_odr void @_ZN5Eigen8internal32triangular_matrix_vector_productIl %33 = getelementptr inbounds nuw double, ptr %4, i64 %28 %34 = and i64 %25, 9223372036854775804 %35 = and i64 %25, 9223372036854775806 - %.off.i.i.i = sub nsw i64 %.sroa.speculated, %.052142 + %.off.i.i.i = sub nsw i64 %.sroa.speculated, %.052140 %.not.i.i.i = icmp ult i64 %.off.i.i.i, 3 br i1 %.not.i.i.i, label %80, label %36 @@ -16168,13 +16168,13 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_ %93 = load double, ptr %92, align 8, !tbaa !233 %94 = call double @llvm.fmuladd.f64(double %89, double %91, double %93) store double %94, ptr %92, align 8, !tbaa !233 - %95 = add nuw nsw i64 %.052142, 1 + %95 = add nuw nsw i64 %.052140, 1 %exitcond.not = icmp eq i64 %95, %17 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !645 96: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(ptr nonnull %10) - %97 = mul nsw i64 %.0144, %3 + %97 = mul nsw i64 %.0141, %3 %98 = getelementptr double, ptr %2, i64 %20 %99 = getelementptr double, ptr %98, i64 %97 store ptr %99, ptr %10, align 8, !tbaa !561 @@ -16183,7 +16183,7 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_ %100 = getelementptr inbounds double, ptr %4, i64 %20 store ptr %100, ptr %11, align 8, !tbaa !561 store i64 %5, ptr %14, align 8, !tbaa !563 - %101 = mul nsw i64 %.0144, %7 + %101 = mul nsw i64 %.0141, %7 %102 = getelementptr inbounds double, ptr %6, i64 %101 %103 = load double, ptr %8, align 8, !tbaa !233 call void @_ZN5Eigen8internal29general_matrix_vector_productIldNS0_22const_blas_data_mapperIdlLi1EEELi1ELb0EdS3_Lb0ELi1EE3runEllRKS3_S6_Pdld(i64 noundef %.sroa.speculated, i64 noundef %21, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull %102, i64 noundef %7, double noundef %103) @@ -16192,10 +16192,10 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_ br label %104 104: ; preds = %96, %._crit_edge - %105 = add nuw nsw i64 %.0144, 8 - %106 = icmp slt i64 %105, %.sroa.speculated133 + %105 = add nuw nsw i64 %.0141, 8 + %106 = icmp slt i64 %105, %.sroa.speculated132 %indvars.iv.next = add i64 %indvars.iv, -8 - br i1 %106, label %15, label %._crit_edge147, !llvm.loop !646 + br i1 %106, label %15, label %._crit_edge144, !llvm.loop !646 } ; Function Attrs: mustprogress noinline uwtable diff --git a/bench/g2o/optimized/optimization_algorithm_dogleg.ll b/bench/g2o/optimized/optimization_algorithm_dogleg.ll index 67d3ef7a912..5ff9d4062e6 100644 --- a/bench/g2o/optimized/optimization_algorithm_dogleg.ll +++ b/bench/g2o/optimized/optimization_algorithm_dogleg.ll @@ -707,11 +707,11 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i.i: ; preds = %22 store ptr %.sink.i.i, ptr %13, align 8, !tbaa !61 %.pre = load ptr, ptr %4, align 8, !tbaa !74 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre, i64 32 - %.pre416 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !75 + %.pre414 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !75 br label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit: ; preds = %12, %.sink.split.i.i - %31 = phi i64 [ %16, %12 ], [ %.pre416, %.sink.split.i.i ] + %31 = phi i64 [ %16, %12 ], [ %.pre414, %.sink.split.i.i ] store i64 %16, ptr %17, align 8, !tbaa !77 %32 = getelementptr inbounds nuw i8, ptr %0, i64 128 %33 = getelementptr inbounds nuw i8, ptr %0, i64 136 @@ -750,13 +750,13 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i.i74: ; preds = %38 .sink.split.i.i72: ; preds = %_ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i.i74, %35 %.sink.i.i73 = phi ptr [ %43, %_ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i.i74 ], [ null, %35 ] store ptr %.sink.i.i73, ptr %32, align 8, !tbaa !61 - %.pre417 = load ptr, ptr %4, align 8, !tbaa !74 - %.phi.trans.insert418 = getelementptr inbounds nuw i8, ptr %.pre417, i64 32 - %.pre419 = load i64, ptr %.phi.trans.insert418, align 8, !tbaa !75 + %.pre415 = load ptr, ptr %4, align 8, !tbaa !74 + %.phi.trans.insert416 = getelementptr inbounds nuw i8, ptr %.pre415, i64 32 + %.pre417 = load i64, ptr %.phi.trans.insert416, align 8, !tbaa !75 br label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit75 _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit75: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %.sink.split.i.i72 - %47 = phi i64 [ %31, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit ], [ %.pre419, %.sink.split.i.i72 ] + %47 = phi i64 [ %31, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit ], [ %.pre417, %.sink.split.i.i72 ] store i64 %31, ptr %33, align 8, !tbaa !77 %48 = getelementptr inbounds nuw i8, ptr %0, i64 144 %49 = getelementptr inbounds nuw i8, ptr %0, i64 152 @@ -860,19 +860,19 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit80 %103 = getelementptr inbounds nuw i8, ptr %0, i64 152 %104 = load i64, ptr %103, align 8, !tbaa !77 %105 = icmp slt i64 %104, 1 - %.pre420 = load ptr, ptr %102, align 8, !tbaa !61 + %.pre418 = load ptr, ptr %102, align 8, !tbaa !61 br i1 %105, label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit, label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i: ; preds = %96 %.idx.i.i.i.i.i.i.i.i.i.i.i = shl nuw nsw i64 %104, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %.pre420, i8 0, i64 %.idx.i.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !17 + tail call void @llvm.memset.p0.i64(ptr align 8 %.pre418, i8 0, i64 %.idx.i.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !17 br label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; preds = %96, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i %106 = load ptr, ptr %5, align 8, !tbaa !8 %107 = getelementptr inbounds nuw i8, ptr %106, i64 128 %108 = load ptr, ptr %107, align 8 - tail call void %108(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef %.pre420, ptr noundef %99) + tail call void %108(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef %.pre418, ptr noundef %99) %109 = icmp eq i64 %101, 0 br i1 %109, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE3dotINS_3MapIKS2_Li0ENS_6StrideILi0ELi0EEEEEEENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit, label %110 @@ -936,7 +936,7 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %foldExtExtBinop = fadd <2 x double> %.072.i.i.i.i, %shift %142 = extractelement <2 x double> %foldExtExtBinop, i64 0 %143 = icmp slt i64 %114, %101 - br i1 %143, label %.lr.ph85.i.i.i.i, label %.loopexit513 + br i1 %143, label %.lr.ph85.i.i.i.i, label %.loopexit511 .lr.ph85.i.i.i.i: ; preds = %141, %.lr.ph85.i.i.i.i %.05283.i.i.i.i = phi i64 [ %148, %.lr.ph85.i.i.i.i ], [ %114, %141 ] @@ -947,9 +947,9 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %147 = fadd double %.182.i.i.i.i, %146 %148 = add nsw i64 %.05283.i.i.i.i, 1 %exitcond.not.i.i.i.i = icmp eq i64 %148, %101 - br i1 %exitcond.not.i.i.i.i, label %.loopexit513, label %.lr.ph85.i.i.i.i, !llvm.loop !86 + br i1 %exitcond.not.i.i.i.i, label %.loopexit511, label %.lr.ph85.i.i.i.i, !llvm.loop !86 -.loopexit513: ; preds = %.lr.ph85.i.i.i.i, %141 +.loopexit511: ; preds = %.lr.ph85.i.i.i.i, %141 %.0.i.i.ph.ph = phi double [ %142, %141 ], [ %147, %.lr.ph85.i.i.i.i ] %149 = load ptr, ptr %102, align 8, !tbaa !61 %150 = load <2 x double>, ptr %149, align 1, !tbaa !16 @@ -958,7 +958,7 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %153 = icmp sgt i64 %101, 3 br i1 %153, label %154, label %184 -154: ; preds = %.loopexit513 +154: ; preds = %.loopexit511 %155 = getelementptr inbounds nuw i8, ptr %149, i64 16 %156 = load <2 x double>, ptr %155, align 1, !tbaa !16 %157 = getelementptr inbounds nuw i8, ptr %99, i64 16 @@ -1005,11 +1005,11 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %183 = fadd <2 x double> %161, %182 br label %184 -184: ; preds = %177, %._crit_edge.i.i.i.i.i, %.loopexit513 - %.072.i.i.i.i.i = phi <2 x double> [ %152, %.loopexit513 ], [ %183, %177 ], [ %161, %._crit_edge.i.i.i.i.i ] - %shift601 = shufflevector <2 x double> %.072.i.i.i.i.i, <2 x double> poison, <2 x i32> - %foldExtExtBinop602 = fadd <2 x double> %.072.i.i.i.i.i, %shift601 - %185 = extractelement <2 x double> %foldExtExtBinop602, i64 0 +184: ; preds = %177, %._crit_edge.i.i.i.i.i, %.loopexit511 + %.072.i.i.i.i.i = phi <2 x double> [ %152, %.loopexit511 ], [ %183, %177 ], [ %161, %._crit_edge.i.i.i.i.i ] + %shift599 = shufflevector <2 x double> %.072.i.i.i.i.i, <2 x double> poison, <2 x i32> + %foldExtExtBinop600 = fadd <2 x double> %.072.i.i.i.i.i, %shift599 + %185 = extractelement <2 x double> %foldExtExtBinop600, i64 0 %186 = icmp slt i64 %114, %101 br i1 %186, label %.lr.ph85.i.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE3dotINS_3MapIKS2_Li0ENS_6StrideILi0ELi0EEEEEEENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit @@ -1035,9 +1035,9 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred br label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE3dotINS_3MapIKS2_Li0ENS_6StrideILi0ELi0EEEEEEENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE3dotINS_3MapIKS2_Li0ENS_6StrideILi0ELi0EEEEEEENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit: ; preds = %.lr.ph85.i.i.i.i.i, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit, %184, %194 - %.0.i.i334 = phi double [ %196, %194 ], [ %.0.i.i.ph.ph, %184 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit ], [ %.0.i.i.ph.ph, %.lr.ph85.i.i.i.i.i ] + %.0.i.i332 = phi double [ %196, %194 ], [ %.0.i.i.ph.ph, %184 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit ], [ %.0.i.i.ph.ph, %.lr.ph85.i.i.i.i.i ] %.0.i.i.i = phi double [ %199, %194 ], [ %185, %184 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit ], [ %192, %.lr.ph85.i.i.i.i.i ] - %200 = fdiv double %.0.i.i334, %.0.i.i.i + %200 = fdiv double %.0.i.i332, %.0.i.i.i %201 = getelementptr inbounds nuw i8, ptr %0, i64 112 %.sroa.3.8.vec.insert.i.i.i.i.i.i.i = insertelement <2 x double> poison, double %200, i64 0 %202 = getelementptr inbounds nuw i8, ptr %0, i64 120 @@ -1150,9 +1150,9 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal17sca 257: ; preds = %252, %._crit_edge.i.i.i.i.i89, %231 %.072.i.i.i.i.i83 = phi <2 x double> [ %233, %231 ], [ %256, %252 ], [ %240, %._crit_edge.i.i.i.i.i89 ] - %shift604 = shufflevector <2 x double> %.072.i.i.i.i.i83, <2 x double> poison, <2 x i32> - %foldExtExtBinop605 = fadd <2 x double> %.072.i.i.i.i.i83, %shift604 - %258 = extractelement <2 x double> %foldExtExtBinop605, i64 0 + %shift602 = shufflevector <2 x double> %.072.i.i.i.i.i83, <2 x double> poison, <2 x i32> + %foldExtExtBinop603 = fadd <2 x double> %.072.i.i.i.i.i83, %shift602 + %258 = extractelement <2 x double> %foldExtExtBinop603, i64 0 %259 = icmp slt i64 %230, %223 br i1 %259, label %.lr.ph85.i.i.i.i.i85, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit @@ -1188,7 +1188,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br label %278 278: ; preds = %859, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit - %279 = phi i32 [ 0, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit ], [ %.pre432, %859 ] + %279 = phi i32 [ 0, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit ], [ %.pre430, %859 ] %.059 = phi i1 [ false, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit ], [ true, %859 ] %.056 = phi double [ -1.000000e+00, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit ], [ %.157, %859 ] %280 = add nsw i32 %279, 1 @@ -1196,19 +1196,19 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br i1 %.059, label %._crit_edge, label %.preheader.preheader ._crit_edge: ; preds = %278 - %.pre423 = load ptr, ptr %4, align 8, !tbaa !74 - %.phi.trans.insert424 = getelementptr inbounds nuw i8, ptr %.pre423, i64 16 - %.pre425 = load ptr, ptr %.phi.trans.insert424, align 8, !tbaa !93 - %.phi.trans.insert426 = getelementptr inbounds nuw i8, ptr %.pre423, i64 32 - %.pre427 = load i64, ptr %.phi.trans.insert426, align 8, !tbaa !75 + %.pre421 = load ptr, ptr %4, align 8, !tbaa !74 + %.phi.trans.insert422 = getelementptr inbounds nuw i8, ptr %.pre421, i64 16 + %.pre423 = load ptr, ptr %.phi.trans.insert422, align 8, !tbaa !93 + %.phi.trans.insert424 = getelementptr inbounds nuw i8, ptr %.pre421, i64 32 + %.pre425 = load i64, ptr %.phi.trans.insert424, align 8, !tbaa !75 br label %371 .preheader.preheader: ; preds = %278 - %.pre421 = load i8, ptr %269, align 4, !tbaa !58, !range !94 - %281 = trunc nuw i8 %.pre421 to i1 - br i1 %281, label %288, label %.critedge597 + %.pre419 = load i8, ptr %269, align 4, !tbaa !58, !range !94 + %281 = trunc nuw i8 %.pre419 to i1 + br i1 %281, label %288, label %.critedge595 -.critedge597: ; preds = %321, %.preheader.preheader +.critedge595: ; preds = %321, %.preheader.preheader %282 = load ptr, ptr %4, align 8, !tbaa !74 %283 = load double, ptr %270, align 8, !tbaa !60 %284 = load ptr, ptr %282, align 8, !tbaa !8 @@ -1217,7 +1217,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %287 = tail call noundef zeroext i1 %286(ptr noundef nonnull align 8 dereferenceable(64) %282, double noundef %283, i1 noundef zeroext true) br label %288 -288: ; preds = %.critedge597, %.preheader.preheader +288: ; preds = %.critedge595, %.preheader.preheader %289 = load ptr, ptr %4, align 8, !tbaa !74 %290 = load ptr, ptr %289, align 8, !tbaa !8 %291 = getelementptr inbounds nuw i8, ptr %290, i64 48 @@ -1233,8 +1233,8 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %299 = getelementptr inbounds nuw i8, ptr %298, i64 72 %300 = load ptr, ptr %299, align 8 tail call void %300(ptr noundef nonnull align 8 dereferenceable(64) %297) - %.pre422 = load i8, ptr %269, align 4, !tbaa !58, !range !94 - %301 = trunc nuw i8 %.pre422 to i1 + %.pre420 = load i8, ptr %269, align 4, !tbaa !58, !range !94 + %301 = trunc nuw i8 %.pre420 to i1 br label %302 302: ; preds = %296, %288 @@ -1245,9 +1245,9 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br i1 %304, label %321, label %306 306: ; preds = %302 - br i1 %293, label %.thread505, label %314 + br i1 %293, label %.thread503, label %314 -.thread505: ; preds = %306 +.thread503: ; preds = %306 %307 = load double, ptr %270, align 8, !tbaa !60 %308 = load ptr, ptr %271, align 8, !tbaa !55 %309 = getelementptr inbounds nuw i8, ptr %308, i64 40 @@ -1255,9 +1255,9 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %311 = fmul double %310, 5.000000e-01 %312 = fdiv double %307, %311 %313 = fcmp ogt double %312, 0x3D719799812DEA11 - %.sroa.speculated315 = select i1 %313, double %312, double 0x3D719799812DEA11 - store double %.sroa.speculated315, ptr %270, align 8, !tbaa !60 - br label %.loopexit512 + %.sroa.speculated313 = select i1 %313, double %312, double 0x3D719799812DEA11 + store double %.sroa.speculated313, ptr %270, align 8, !tbaa !60 + br label %.loopexit510 314: ; preds = %306 %315 = load ptr, ptr %271, align 8, !tbaa !55 @@ -1270,9 +1270,9 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br i1 %320, label %370, label %321 321: ; preds = %314, %302 - br i1 %293, label %.loopexit512, label %.critedge597, !llvm.loop !96 + br i1 %293, label %.loopexit510, label %.critedge595, !llvm.loop !96 -.loopexit512: ; preds = %321, %.thread505 +.loopexit510: ; preds = %321, %.thread503 %322 = load ptr, ptr %4, align 8, !tbaa !74 %323 = getelementptr inbounds nuw i8, ptr %322, i64 16 %324 = load ptr, ptr %323, align 8, !tbaa !93 @@ -1281,7 +1281,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %327 = icmp eq i64 %326, 0 br i1 %327, label %.thread, label %328 -328: ; preds = %.loopexit512 +328: ; preds = %.loopexit510 %329 = sdiv i64 %326, 4 %330 = shl nsw i64 %329, 2 %331 = sdiv i64 %326, 2 @@ -1337,9 +1337,9 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred 359: ; preds = %354, %._crit_edge.i.i.i.i.i107, %333 %.072.i.i.i.i.i100 = phi <2 x double> [ %335, %333 ], [ %358, %354 ], [ %342, %._crit_edge.i.i.i.i.i107 ] - %shift607 = shufflevector <2 x double> %.072.i.i.i.i.i100, <2 x double> poison, <2 x i32> - %foldExtExtBinop608 = fadd <2 x double> %.072.i.i.i.i.i100, %shift607 - %360 = extractelement <2 x double> %foldExtExtBinop608, i64 0 + %shift605 = shufflevector <2 x double> %.072.i.i.i.i.i100, <2 x double> poison, <2 x i32> + %foldExtExtBinop606 = fadd <2 x double> %.072.i.i.i.i.i100, %shift605 + %360 = extractelement <2 x double> %foldExtExtBinop606, i64 0 %361 = icmp slt i64 %332, %326 br i1 %361, label %.lr.ph85.i.i.i.i.i103, label %.thread @@ -1359,8 +1359,8 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %369 = fmul double %368, %368 br label %.thread -.thread: ; preds = %.lr.ph85.i.i.i.i.i103, %367, %359, %.loopexit512 - %.0.i.i.i101 = phi double [ 0.000000e+00, %.loopexit512 ], [ %369, %367 ], [ %360, %359 ], [ %365, %.lr.ph85.i.i.i.i.i103 ] +.thread: ; preds = %.lr.ph85.i.i.i.i.i103, %367, %359, %.loopexit510 + %.0.i.i.i101 = phi double [ 0.000000e+00, %.loopexit510 ], [ %369, %367 ], [ %360, %359 ], [ %365, %.lr.ph85.i.i.i.i.i103 ] %.scalar.i102 = tail call noundef double @llvm.sqrt.f64(double %.0.i.i.i101) br label %371 @@ -1369,8 +1369,8 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br label %.critedge70 371: ; preds = %._crit_edge, %.thread - %372 = phi i64 [ %.pre427, %._crit_edge ], [ %326, %.thread ] - %373 = phi ptr [ %.pre425, %._crit_edge ], [ %324, %.thread ] + %372 = phi i64 [ %.pre425, %._crit_edge ], [ %326, %.thread ] + %373 = phi ptr [ %.pre423, %._crit_edge ], [ %324, %.thread ] %.157 = phi double [ %.056, %._crit_edge ], [ %.scalar.i102, %.thread ] %374 = load double, ptr %272, align 8, !tbaa !56 %375 = fcmp olt double %.157, %374 @@ -1530,8 +1530,8 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca br i1 %447, label %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge, label %448 _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit - %.pre428 = load i64, ptr %202, align 8, !tbaa !77 - %.pre430.pre.pre = load ptr, ptr %201, align 8, !tbaa !61 + %.pre426 = load i64, ptr %202, align 8, !tbaa !77 + %.pre428.pre.pre = load ptr, ptr %201, align 8, !tbaa !61 br label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread 448: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit @@ -1602,11 +1602,11 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca 491: ; preds = %484, %._crit_edge.i.i.i.i.i153, %455 %.072.i.i.i.i.i147 = phi <2 x double> [ %458, %455 ], [ %490, %484 ], [ %468, %._crit_edge.i.i.i.i.i153 ] - %shift610 = shufflevector <2 x double> %.072.i.i.i.i.i147, <2 x double> poison, <2 x i32> - %foldExtExtBinop611 = fadd <2 x double> %.072.i.i.i.i.i147, %shift610 - %492 = extractelement <2 x double> %foldExtExtBinop611, i64 0 + %shift608 = shufflevector <2 x double> %.072.i.i.i.i.i147, <2 x double> poison, <2 x i32> + %foldExtExtBinop609 = fadd <2 x double> %.072.i.i.i.i.i147, %shift608 + %492 = extractelement <2 x double> %foldExtExtBinop609, i64 0 %493 = icmp slt i64 %454, %446 - br i1 %493, label %.lr.ph85.i.i.i.i.i149, label %.loopexit511 + br i1 %493, label %.lr.ph85.i.i.i.i.i149, label %.loopexit509 .lr.ph85.i.i.i.i.i149: ; preds = %491, %.lr.ph85.i.i.i.i.i149 %.05283.i.i.i.i.i150 = phi i64 [ %500, %.lr.ph85.i.i.i.i.i149 ], [ %454, %491 ] @@ -1619,16 +1619,16 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca %499 = fadd double %.182.i.i.i.i.i151, %498 %500 = add nsw i64 %.05283.i.i.i.i.i150, 1 %exitcond.not.i.i.i.i.i152 = icmp eq i64 %500, %446 - br i1 %exitcond.not.i.i.i.i.i152, label %.loopexit511, label %.lr.ph85.i.i.i.i.i149, !llvm.loop !104 + br i1 %exitcond.not.i.i.i.i.i152, label %.loopexit509, label %.lr.ph85.i.i.i.i.i149, !llvm.loop !104 -.loopexit511: ; preds = %.lr.ph85.i.i.i.i.i149, %491 +.loopexit509: ; preds = %.lr.ph85.i.i.i.i.i149, %491 %.0.i.i.i148.ph.ph = phi double [ %492, %491 ], [ %499, %.lr.ph85.i.i.i.i.i149 ] %501 = load <2 x double>, ptr %450, align 16, !tbaa !16 %502 = fmul <2 x double> %501, %501 %503 = icmp sgt i64 %446, 3 br i1 %503, label %504, label %526 -504: ; preds = %.loopexit511 +504: ; preds = %.loopexit509 %505 = getelementptr inbounds nuw i8, ptr %450, i64 16 %506 = load <2 x double>, ptr %505, align 16, !tbaa !16 %507 = fmul <2 x double> %506, %506 @@ -1667,11 +1667,11 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca %525 = fadd <2 x double> %509, %524 br label %526 -526: ; preds = %521, %._crit_edge.i.i.i.i170, %.loopexit511 - %.072.i.i.i.i164 = phi <2 x double> [ %502, %.loopexit511 ], [ %525, %521 ], [ %509, %._crit_edge.i.i.i.i170 ] - %shift613 = shufflevector <2 x double> %.072.i.i.i.i164, <2 x double> poison, <2 x i32> - %foldExtExtBinop614 = fadd <2 x double> %.072.i.i.i.i164, %shift613 - %527 = extractelement <2 x double> %foldExtExtBinop614, i64 0 +526: ; preds = %521, %._crit_edge.i.i.i.i170, %.loopexit509 + %.072.i.i.i.i164 = phi <2 x double> [ %502, %.loopexit509 ], [ %525, %521 ], [ %509, %._crit_edge.i.i.i.i170 ] + %shift611 = shufflevector <2 x double> %.072.i.i.i.i164, <2 x double> poison, <2 x i32> + %foldExtExtBinop612 = fadd <2 x double> %.072.i.i.i.i164, %shift611 + %527 = extractelement <2 x double> %foldExtExtBinop612, i64 0 %528 = icmp slt i64 %454, %446 br i1 %528, label %.lr.ph85.i.i.i.i166, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit @@ -1694,18 +1694,18 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca br label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit: ; preds = %.lr.ph85.i.i.i.i166, %526, %534 - %.0.i.i.i148.ph507 = phi double [ %537, %534 ], [ %.0.i.i.i148.ph.ph, %526 ], [ %.0.i.i.i148.ph.ph, %.lr.ph85.i.i.i.i166 ] + %.0.i.i.i148.ph505 = phi double [ %537, %534 ], [ %.0.i.i.i148.ph.ph, %526 ], [ %.0.i.i.i148.ph.ph, %.lr.ph85.i.i.i.i166 ] %539 = phi double [ %535, %534 ], [ %460, %526 ], [ %460, %.lr.ph85.i.i.i.i166 ] %.0.i.i165 = phi double [ %538, %534 ], [ %527, %526 ], [ %532, %.lr.ph85.i.i.i.i166 ] - %540 = fcmp ugt double %.0.i.i.i148.ph507, 0.000000e+00 - %.pre429 = load i64, ptr %202, align 8, !tbaa !77 + %540 = fcmp ugt double %.0.i.i.i148.ph505, 0.000000e+00 + %.pre427 = load i64, ptr %202, align 8, !tbaa !77 br i1 %540, label %593, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - %.pre430.pre = phi ptr [ %449, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ %.pre430.pre.pre, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] - %541 = phi i64 [ %.pre429, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ %.pre428, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] - %.0.i.i165342 = phi double [ %.0.i.i165, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ 0.000000e+00, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] - %.0.i.i.i148338341 = phi double [ %.0.i.i.i148.ph507, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ 0.000000e+00, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] + %.pre428.pre = phi ptr [ %449, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ %.pre428.pre.pre, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] + %541 = phi i64 [ %.pre427, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ %.pre426, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] + %.0.i.i165340 = phi double [ %.0.i.i165, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ 0.000000e+00, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] + %.0.i.i.i148336339 = phi double [ %.0.i.i.i148.ph505, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ 0.000000e+00, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] %542 = load double, ptr %272, align 8, !tbaa !56 %543 = icmp eq i64 %541, 0 br i1 %543, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196, label %544 @@ -1720,13 +1720,13 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit br i1 %.not.i.i.i.i180, label %583, label %549 549: ; preds = %544 - %550 = load <2 x double>, ptr %.pre430.pre, align 16, !tbaa !16 + %550 = load <2 x double>, ptr %.pre428.pre, align 16, !tbaa !16 %551 = fmul <2 x double> %550, %550 %552 = icmp sgt i64 %541, 3 br i1 %552, label %553, label %575 553: ; preds = %549 - %554 = getelementptr inbounds nuw i8, ptr %.pre430.pre, i64 16 + %554 = getelementptr inbounds nuw i8, ptr %.pre428.pre, i64 16 %555 = load <2 x double>, ptr %554, align 16, !tbaa !16 %556 = fmul <2 x double> %555, %555 %557 = icmp samesign ugt i64 %541, 7 @@ -1744,11 +1744,11 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %.054.in79.i.i.i.i192 = phi i64 [ %.05480.i.i.i.i191, %.lr.ph.i.i.i.i190 ], [ 0, %553 ] %.17378.i.i.i.i193 = phi <2 x double> [ %563, %.lr.ph.i.i.i.i190 ], [ %551, %553 ] %.07577.i.i.i.i194 = phi <2 x double> [ %568, %.lr.ph.i.i.i.i190 ], [ %556, %553 ] - %560 = getelementptr inbounds nuw double, ptr %.pre430.pre, i64 %.05480.i.i.i.i191 + %560 = getelementptr inbounds nuw double, ptr %.pre428.pre, i64 %.05480.i.i.i.i191 %561 = load <2 x double>, ptr %560, align 16, !tbaa !16 %562 = fmul <2 x double> %561, %561 %563 = fadd <2 x double> %.17378.i.i.i.i193, %562 - %564 = getelementptr inbounds nuw double, ptr %.pre430.pre, i64 %.054.in79.i.i.i.i192 + %564 = getelementptr inbounds nuw double, ptr %.pre428.pre, i64 %.054.in79.i.i.i.i192 %565 = getelementptr inbounds nuw i8, ptr %564, i64 48 %566 = load <2 x double>, ptr %565, align 16, !tbaa !16 %567 = fmul <2 x double> %566, %566 @@ -1758,7 +1758,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit br i1 %569, label %.lr.ph.i.i.i.i190, label %._crit_edge.i.i.i.i187, !llvm.loop !91 570: ; preds = %._crit_edge.i.i.i.i187 - %571 = getelementptr inbounds nuw double, ptr %.pre430.pre, i64 %546 + %571 = getelementptr inbounds nuw double, ptr %.pre428.pre, i64 %546 %572 = load <2 x double>, ptr %571, align 16, !tbaa !16 %573 = fmul <2 x double> %572, %572 %574 = fadd <2 x double> %558, %573 @@ -1766,16 +1766,16 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit 575: ; preds = %570, %._crit_edge.i.i.i.i187, %549 %.072.i.i.i.i181 = phi <2 x double> [ %551, %549 ], [ %574, %570 ], [ %558, %._crit_edge.i.i.i.i187 ] - %shift616 = shufflevector <2 x double> %.072.i.i.i.i181, <2 x double> poison, <2 x i32> - %foldExtExtBinop617 = fadd <2 x double> %.072.i.i.i.i181, %shift616 - %576 = extractelement <2 x double> %foldExtExtBinop617, i64 0 + %shift614 = shufflevector <2 x double> %.072.i.i.i.i181, <2 x double> poison, <2 x i32> + %foldExtExtBinop615 = fadd <2 x double> %.072.i.i.i.i181, %shift614 + %576 = extractelement <2 x double> %foldExtExtBinop615, i64 0 %577 = icmp slt i64 %548, %541 br i1 %577, label %.lr.ph85.i.i.i.i183, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 .lr.ph85.i.i.i.i183: ; preds = %575, %.lr.ph85.i.i.i.i183 %.05283.i.i.i.i184 = phi i64 [ %582, %.lr.ph85.i.i.i.i183 ], [ %548, %575 ] %.182.i.i.i.i185 = phi double [ %581, %.lr.ph85.i.i.i.i183 ], [ %576, %575 ] - %578 = getelementptr inbounds double, ptr %.pre430.pre, i64 %.05283.i.i.i.i184 + %578 = getelementptr inbounds double, ptr %.pre428.pre, i64 %.05283.i.i.i.i184 %579 = load double, ptr %578, align 8, !tbaa !17 %580 = fmul double %579, %579 %581 = fadd double %.182.i.i.i.i185, %580 @@ -1784,7 +1784,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit br i1 %exitcond.not.i.i.i.i186, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196, label %.lr.ph85.i.i.i.i183, !llvm.loop !92 583: ; preds = %544 - %584 = load double, ptr %.pre430.pre, align 8, !tbaa !17 + %584 = load double, ptr %.pre428.pre, align 8, !tbaa !17 %585 = fmul double %584, %584 br label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 @@ -1792,37 +1792,37 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %.0.i.i182 = phi double [ 0.000000e+00, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread ], [ %585, %583 ], [ %576, %575 ], [ %581, %.lr.ph85.i.i.i.i183 ] %586 = fneg double %.0.i.i182 %587 = tail call double @llvm.fmuladd.f64(double %542, double %542, double %586) - %588 = fmul double %.0.i.i165342, %587 - %589 = tail call double @llvm.fmuladd.f64(double %.0.i.i.i148338341, double %.0.i.i.i148338341, double %588) + %588 = fmul double %.0.i.i165340, %587 + %589 = tail call double @llvm.fmuladd.f64(double %.0.i.i.i148336339, double %.0.i.i.i148336339, double %588) %590 = tail call double @sqrt(double noundef %589) #25, !tbaa !52 - %591 = fsub double %590, %.0.i.i.i148338341 - %592 = fdiv double %591, %.0.i.i165342 + %591 = fsub double %590, %.0.i.i.i148336339 + %592 = fdiv double %591, %.0.i.i165340 br label %644 593: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - %594 = icmp eq i64 %.pre429, 0 + %594 = icmp eq i64 %.pre427, 0 br i1 %594, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214, label %595 595: ; preds = %593 - %596 = sdiv i64 %.pre429, 4 + %596 = sdiv i64 %.pre427, 4 %597 = shl nsw i64 %596, 2 - %598 = sdiv i64 %.pre429, 2 + %598 = sdiv i64 %.pre427, 2 %599 = shl nsw i64 %598, 1 - %.off.i.i.i.i197 = add i64 %.pre429, 1 + %.off.i.i.i.i197 = add i64 %.pre427, 1 %.not.i.i.i.i198 = icmp ult i64 %.off.i.i.i.i197, 3 br i1 %.not.i.i.i.i198, label %634, label %600 600: ; preds = %595 %601 = load <2 x double>, ptr %449, align 16, !tbaa !16 %602 = fmul <2 x double> %601, %601 - %603 = icmp sgt i64 %.pre429, 3 + %603 = icmp sgt i64 %.pre427, 3 br i1 %603, label %604, label %626 604: ; preds = %600 %605 = getelementptr inbounds nuw i8, ptr %449, i64 16 %606 = load <2 x double>, ptr %605, align 16, !tbaa !16 %607 = fmul <2 x double> %606, %606 - %608 = icmp samesign ugt i64 %.pre429, 7 + %608 = icmp samesign ugt i64 %.pre427, 7 br i1 %608, label %.lr.ph.i.i.i.i208, label %._crit_edge.i.i.i.i205 ._crit_edge.i.i.i.i205: ; preds = %.lr.ph.i.i.i.i208, %604 @@ -1859,10 +1859,10 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit 626: ; preds = %621, %._crit_edge.i.i.i.i205, %600 %.072.i.i.i.i199 = phi <2 x double> [ %602, %600 ], [ %625, %621 ], [ %609, %._crit_edge.i.i.i.i205 ] - %shift619 = shufflevector <2 x double> %.072.i.i.i.i199, <2 x double> poison, <2 x i32> - %foldExtExtBinop620 = fadd <2 x double> %.072.i.i.i.i199, %shift619 - %627 = extractelement <2 x double> %foldExtExtBinop620, i64 0 - %628 = icmp slt i64 %599, %.pre429 + %shift617 = shufflevector <2 x double> %.072.i.i.i.i199, <2 x double> poison, <2 x i32> + %foldExtExtBinop618 = fadd <2 x double> %.072.i.i.i.i199, %shift617 + %627 = extractelement <2 x double> %foldExtExtBinop618, i64 0 + %628 = icmp slt i64 %599, %.pre427 br i1 %628, label %.lr.ph85.i.i.i.i201, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 .lr.ph85.i.i.i.i201: ; preds = %626, %.lr.ph85.i.i.i.i201 @@ -1873,7 +1873,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %631 = fmul double %630, %630 %632 = fadd double %.182.i.i.i.i203, %631 %633 = add nsw i64 %.05283.i.i.i.i202, 1 - %exitcond.not.i.i.i.i204 = icmp eq i64 %633, %.pre429 + %exitcond.not.i.i.i.i204 = icmp eq i64 %633, %.pre427 br i1 %exitcond.not.i.i.i.i204, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214, label %.lr.ph85.i.i.i.i201, !llvm.loop !92 634: ; preds = %595 @@ -1886,15 +1886,15 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %637 = fneg double %.0.i.i200 %638 = tail call double @llvm.fmuladd.f64(double %636, double %636, double %637) %639 = fmul double %.0.i.i165, %638 - %640 = tail call double @llvm.fmuladd.f64(double %.0.i.i.i148.ph507, double %.0.i.i.i148.ph507, double %639) + %640 = tail call double @llvm.fmuladd.f64(double %.0.i.i.i148.ph505, double %.0.i.i.i148.ph505, double %639) %641 = tail call double @sqrt(double noundef %640) #25, !tbaa !52 - %642 = fadd double %.0.i.i.i148.ph507, %641 + %642 = fadd double %.0.i.i.i148.ph505, %641 %643 = fdiv double %638, %642 br label %644 644: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 - %645 = phi i64 [ %.pre429, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %541, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] - %646 = phi ptr [ %449, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %.pre430.pre, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] + %645 = phi i64 [ %.pre427, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %541, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] + %646 = phi ptr [ %449, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %.pre428.pre, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] %storemerge = phi double [ %643, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %592, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] %.sroa.615.24.vec.insert.i.i.i.i.i.i.i = insertelement <2 x double> poison, double %storemerge, i64 0 %647 = load i64, ptr %274, align 8, !tbaa !77 @@ -1957,12 +1957,12 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_3MapIKS1_Li0ENS_6StrideILi0ELi0EE store i32 %.sink, ptr %275, align 8, !tbaa !57 %675 = load i64, ptr %103, align 8, !tbaa !77 %676 = icmp slt i64 %675, 1 - %.pre431 = load ptr, ptr %102, align 8, !tbaa !61 + %.pre429 = load ptr, ptr %102, align 8, !tbaa !61 br i1 %676, label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227, label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i225 _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i225: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit %.idx.i.i.i.i.i.i.i.i.i.i.i226 = shl nuw nsw i64 %675, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %.pre431, i8 0, i64 %.idx.i.i.i.i.i.i.i.i.i.i.i226, i1 false), !tbaa !17 + tail call void @llvm.memset.p0.i64(ptr align 8 %.pre429, i8 0, i64 %.idx.i.i.i.i.i.i.i.i.i.i.i226, i1 false), !tbaa !17 br label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227 _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i225 @@ -1970,7 +1970,7 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; p %678 = load ptr, ptr %5, align 8, !tbaa !8 %679 = getelementptr inbounds nuw i8, ptr %678, i64 128 %680 = load ptr, ptr %679, align 8 - tail call void %680(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef %.pre431, ptr noundef %677) + tail call void %680(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef %.pre429, ptr noundef %677) %681 = load i64, ptr %274, align 8, !tbaa !77 %682 = icmp eq i64 %681, 0 br i1 %682, label %_ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE3dotIS3_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit, label %683 @@ -2042,9 +2042,9 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; p 725: ; preds = %718, %._crit_edge.i.i.i.i.i236, %690 %.072.i.i.i.i.i230 = phi <2 x double> [ %693, %690 ], [ %724, %718 ], [ %702, %._crit_edge.i.i.i.i.i236 ] - %shift622 = shufflevector <2 x double> %.072.i.i.i.i.i230, <2 x double> poison, <2 x i32> - %foldExtExtBinop623 = fadd <2 x double> %.072.i.i.i.i.i230, %shift622 - %726 = extractelement <2 x double> %foldExtExtBinop623, i64 0 + %shift620 = shufflevector <2 x double> %.072.i.i.i.i.i230, <2 x double> poison, <2 x i32> + %foldExtExtBinop621 = fadd <2 x double> %.072.i.i.i.i.i230, %shift620 + %726 = extractelement <2 x double> %foldExtExtBinop621, i64 0 %727 = icmp slt i64 %689, %681 br i1 %727, label %.lr.ph85.i.i.i.i.i232, label %.loopexit @@ -2117,9 +2117,9 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; p 768: ; preds = %761, %._crit_edge.i.i.i.i.i254, %.loopexit %.072.i.i.i.i.i248 = phi <2 x double> [ %737, %.loopexit ], [ %767, %761 ], [ %745, %._crit_edge.i.i.i.i.i254 ] - %shift625 = shufflevector <2 x double> %.072.i.i.i.i.i248, <2 x double> poison, <2 x i32> - %foldExtExtBinop626 = fadd <2 x double> %.072.i.i.i.i.i248, %shift625 - %769 = extractelement <2 x double> %foldExtExtBinop626, i64 0 + %shift623 = shufflevector <2 x double> %.072.i.i.i.i.i248, <2 x double> poison, <2 x i32> + %foldExtExtBinop624 = fadd <2 x double> %.072.i.i.i.i.i248, %shift623 + %769 = extractelement <2 x double> %foldExtExtBinop624, i64 0 %770 = icmp slt i64 %689, %681 br i1 %770, label %.lr.ph85.i.i.i.i.i250, label %_ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE3dotIS3_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit @@ -2145,10 +2145,10 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; p br label %_ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE3dotIS3_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit _ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE3dotIS3_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit: ; preds = %.lr.ph85.i.i.i.i.i250, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227, %768, %778 - %.0.i.i.i231345 = phi double [ %781, %778 ], [ %.0.i.i.i231.ph.ph, %768 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227 ], [ %.0.i.i.i231.ph.ph, %.lr.ph85.i.i.i.i.i250 ] + %.0.i.i.i231343 = phi double [ %781, %778 ], [ %.0.i.i.i231.ph.ph, %768 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227 ], [ %.0.i.i.i231.ph.ph, %.lr.ph85.i.i.i.i.i250 ] %.0.i.i.i249 = phi double [ %783, %778 ], [ %769, %768 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227 ], [ %776, %.lr.ph85.i.i.i.i.i250 ] %784 = fmul double %.0.i.i.i249, 2.000000e+00 - %785 = fsub double %784, %.0.i.i.i231345 + %785 = fsub double %784, %.0.i.i.i231343 %786 = load ptr, ptr %76, align 8, !tbaa !78 %787 = load ptr, ptr %786, align 8, !tbaa !8 %788 = getelementptr inbounds nuw i8, ptr %787, i64 120 @@ -2169,8 +2169,8 @@ _ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6Stri %799 = fcmp ogt double %798, 0.000000e+00 %800 = load ptr, ptr %76, align 8, !tbaa !78 %801 = load ptr, ptr %800, align 8, !tbaa !8 - %.556 = select i1 %799, i64 136, i64 128 - %802 = getelementptr inbounds nuw i8, ptr %801, i64 %.556 + %.554 = select i1 %799, i64 136, i64 128 + %802 = getelementptr inbounds nuw i8, ptr %801, i64 %.554 %803 = load ptr, ptr %802, align 8 tail call void %803(ptr noundef nonnull align 8 dereferenceable(409) %800) %804 = fcmp ogt double %798, 7.500000e-01 @@ -2238,9 +2238,9 @@ _ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6Stri 840: ; preds = %835, %._crit_edge.i.i.i.i.i272, %814 %.072.i.i.i.i.i265 = phi <2 x double> [ %816, %814 ], [ %839, %835 ], [ %823, %._crit_edge.i.i.i.i.i272 ] - %shift628 = shufflevector <2 x double> %.072.i.i.i.i.i265, <2 x double> poison, <2 x i32> - %foldExtExtBinop629 = fadd <2 x double> %.072.i.i.i.i.i265, %shift628 - %841 = extractelement <2 x double> %foldExtExtBinop629, i64 0 + %shift626 = shufflevector <2 x double> %.072.i.i.i.i.i265, <2 x double> poison, <2 x i32> + %foldExtExtBinop627 = fadd <2 x double> %.072.i.i.i.i.i265, %shift626 + %841 = extractelement <2 x double> %foldExtExtBinop627, i64 0 %842 = icmp slt i64 %813, %806 br i1 %842, label %.lr.ph85.i.i.i.i.i268, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281 @@ -2279,21 +2279,21 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281: ; p br label %.sink.split .sink.split: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281, %856 - %.sink555 = phi double [ %858, %856 ], [ %.sroa.speculated, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281 ] - store double %.sink555, ptr %272, align 8, !tbaa !56 + %.sink553 = phi double [ %858, %856 ], [ %.sroa.speculated, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281 ] + store double %.sink553, ptr %272, align 8, !tbaa !56 br label %859 859: ; preds = %.sink.split, %854 - %.pre432 = load i32, ptr %268, align 8, !tbaa !52 - %.pre433 = load ptr, ptr %277, align 8, !tbaa !53 - %.phi.trans.insert434 = getelementptr inbounds nuw i8, ptr %.pre433, i64 40 - %.pre435 = load i32, ptr %.phi.trans.insert434, align 4, !tbaa !52 - %860 = icmp sge i32 %.pre432, %.pre435 - %or.cond599.not = select i1 %799, i1 true, i1 %860 - br i1 %or.cond599.not, label %.critedge, label %278, !llvm.loop !109 + %.pre430 = load i32, ptr %268, align 8, !tbaa !52 + %.pre431 = load ptr, ptr %277, align 8, !tbaa !53 + %.phi.trans.insert432 = getelementptr inbounds nuw i8, ptr %.pre431, i64 40 + %.pre433 = load i32, ptr %.phi.trans.insert432, align 4, !tbaa !52 + %860 = icmp sge i32 %.pre430, %.pre433 + %or.cond597.not = select i1 %799, i1 true, i1 %860 + br i1 %or.cond597.not, label %.critedge, label %278, !llvm.loop !109 .critedge: ; preds = %859 - %861 = icmp ne i32 %.pre432, %.pre435 + %861 = icmp ne i32 %.pre430, %.pre433 %or.cond4 = and i1 %799, %861 %. = select i1 %or.cond4, i32 1, i32 2 br label %.critedge70 diff --git a/bench/g2o/optimized/slam2d_linear.ll b/bench/g2o/optimized/slam2d_linear.ll index a262ef73f09..8853d98928d 100644 --- a/bench/g2o/optimized/slam2d_linear.ll +++ b/bench/g2o/optimized/slam2d_linear.ll @@ -11185,7 +11185,7 @@ define linkonce_odr void @_ZNK5Eigen22SimplicialCholeskyBaseINS_13SimplicialLLTI .preheader83.i: ; preds = %12 %19 = icmp sgt i64 %.sroa.698.8.copyload, 0 - br i1 %19, label %.lr.ph.i, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit + br i1 %19, label %.lr.ph.i, label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit .lr.ph.i: ; preds = %.preheader83.i %20 = load ptr, ptr %8, align 8, !tbaa !194 @@ -11211,67 +11211,67 @@ define linkonce_odr void @_ZNK5Eigen22SimplicialCholeskyBaseINS_13SimplicialLLTI br i1 %25, label %.preheader.i.backedge, label %.critedge.i .preheader.i: ; preds = %.preheader.i.backedge, %.preheader.lr.ph.i - %.13789.i = phi i64 [ 0, %.preheader.lr.ph.i ], [ %.13789.i.be, %.preheader.i.backedge ] - %26 = getelementptr inbounds i8, ptr %calloc.i, i64 %.13789.i + %.13787.i = phi i64 [ 0, %.preheader.lr.ph.i ], [ %.13787.i.be, %.preheader.i.backedge ] + %26 = getelementptr inbounds i8, ptr %calloc.i, i64 %.13787.i %27 = load i8, ptr %26, align 1, !tbaa !401, !range !197, !noundef !198 %28 = trunc nuw i8 %27 to i1 br i1 %28, label %29, label %32 29: ; preds = %.preheader.i - %30 = add nsw i64 %.13789.i, 1 + %30 = add nsw i64 %.13787.i, 1 %31 = icmp slt i64 %30, %10 br i1 %31, label %.preheader.i.backedge, label %.critedge.i .preheader.i.backedge: ; preds = %29, %.loopexit.i - %.13789.i.be = phi i64 [ %30, %29 ], [ %34, %.loopexit.i ] + %.13787.i.be = phi i64 [ %30, %29 ], [ %34, %.loopexit.i ] br label %.preheader.i, !llvm.loop !402 32: ; preds = %.preheader.i - %33 = getelementptr inbounds i8, ptr %calloc.i, i64 %.13789.i - %34 = add nsw i64 %.13789.i, 1 + %33 = getelementptr inbounds i8, ptr %calloc.i, i64 %.13787.i + %34 = add nsw i64 %.13787.i, 1 store i8 1, ptr %33, align 1, !tbaa !401 - %.034.in.in90.i = getelementptr inbounds i32, ptr %24, i64 %.13789.i - %.034.in91.i = load i32, ptr %.034.in.in90.i, align 4, !tbaa !29 - %.03492.i = sext i32 %.034.in91.i to i64 - %.not4193.i = icmp eq i64 %.13789.i, %.03492.i - br i1 %.not4193.i, label %.loopexit.i, label %.lr.ph97.i - -.lr.ph97.i: ; preds = %32 - %35 = getelementptr inbounds double, ptr %13, i64 %.13789.i + %.034.in.in88.i = getelementptr inbounds i32, ptr %24, i64 %.13787.i + %.034.in89.i = load i32, ptr %.034.in.in88.i, align 4, !tbaa !29 + %.03490.i = sext i32 %.034.in89.i to i64 + %.not4191.i = icmp eq i64 %.13787.i, %.03490.i + br i1 %.not4191.i, label %.loopexit.i, label %.lr.ph93.i + +.lr.ph93.i: ; preds = %32 + %35 = getelementptr inbounds double, ptr %13, i64 %.13787.i %.pre.i = load double, ptr %35, align 8, !tbaa !173 br label %36 -36: ; preds = %36, %.lr.ph97.i - %37 = phi double [ %.pre.i, %.lr.ph97.i ], [ %39, %36 ] - %.03496.i = phi i64 [ %.03492.i, %.lr.ph97.i ], [ %.034.i, %36 ] - %38 = getelementptr inbounds double, ptr %13, i64 %.03496.i +36: ; preds = %36, %.lr.ph93.i + %37 = phi double [ %.pre.i, %.lr.ph93.i ], [ %39, %36 ] + %.03492.i = phi i64 [ %.03490.i, %.lr.ph93.i ], [ %.034.i, %36 ] + %38 = getelementptr inbounds double, ptr %13, i64 %.03492.i %39 = load double, ptr %38, align 8, !tbaa !173 store double %37, ptr %38, align 8, !tbaa !173 store double %39, ptr %35, align 8, !tbaa !173 - %40 = getelementptr inbounds i8, ptr %calloc.i, i64 %.03496.i + %40 = getelementptr inbounds i8, ptr %calloc.i, i64 %.03492.i store i8 1, ptr %40, align 1, !tbaa !401 - %.034.in.in.i = getelementptr inbounds i32, ptr %24, i64 %.03496.i + %.034.in.in.i = getelementptr inbounds i32, ptr %24, i64 %.03492.i %.034.in.i = load i32, ptr %.034.in.in.i, align 4, !tbaa !29 %.034.i = sext i32 %.034.in.i to i64 - %.not41.i = icmp eq i64 %.13789.i, %.034.i + %.not41.i = icmp eq i64 %.13787.i, %.034.i br i1 %.not41.i, label %.loopexit.i, label %36, !llvm.loop !403 .critedge.i: ; preds = %.loopexit.i, %29 tail call void @free(ptr noundef nonnull %calloc.i) #38 - br label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit + br label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit 41: ; preds = %41, %.lr.ph.i - %.088.i = phi i64 [ 0, %.lr.ph.i ], [ %48, %41 ] - %42 = getelementptr inbounds nuw double, ptr %.sroa.497.8.copyload, i64 %.088.i - %43 = getelementptr inbounds nuw i32, ptr %20, i64 %.088.i + %.086.i = phi i64 [ 0, %.lr.ph.i ], [ %48, %41 ] + %42 = getelementptr inbounds nuw double, ptr %.sroa.497.8.copyload, i64 %.086.i + %43 = getelementptr inbounds nuw i32, ptr %20, i64 %.086.i %44 = load i32, ptr %43, align 4, !tbaa !29 %45 = sext i32 %44 to i64 %46 = getelementptr inbounds double, ptr %13, i64 %45 %47 = load double, ptr %42, align 8, !tbaa !173 store double %47, ptr %46, align 8, !tbaa !173 - %48 = add nuw nsw i64 %.088.i, 1 + %48 = add nuw nsw i64 %.086.i, 1 %exitcond.not.i = icmp eq i64 %48, %.sroa.698.8.copyload - br i1 %exitcond.not.i, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit, label %41, !llvm.loop !404 + br i1 %exitcond.not.i, label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit, label %41, !llvm.loop !404 49: ; preds = %7 %50 = load ptr, ptr %2, align 8, !tbaa !164 @@ -11313,7 +11313,7 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens ._crit_edge.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i, %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEENS5_INS6_IKS8_Li0ESA_EEEENS0_9assign_opIddEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.i %69 = icmp slt i64 %62, %52 - br i1 %69, label %.lr.ph.i17.i.i.i.i.i.i.i, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit + br i1 %69, label %.lr.ph.i17.i.i.i.i.i.i.i, label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit .lr.ph.i17.i.i.i.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.i.i.i, %.lr.ph.i17.i.i.i.i.i.i.i %.05.i18.i.i.i.i.i.i.i = phi i64 [ %73, %.lr.ph.i17.i.i.i.i.i.i.i ], [ %62, %._crit_edge.i.i.i.i.i.i.i ] @@ -11323,7 +11323,7 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens store double %72, ptr %70, align 8, !tbaa !173 %73 = add nsw i64 %.05.i18.i.i.i.i.i.i.i, 1 %exitcond.not.i19.i.i.i.i.i.i.i = icmp eq i64 %73, %52 - br i1 %exitcond.not.i19.i.i.i.i.i.i.i, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit, label %.lr.ph.i17.i.i.i.i.i.i.i, !llvm.loop !405 + br i1 %exitcond.not.i19.i.i.i.i.i.i.i, label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit, label %.lr.ph.i17.i.i.i.i.i.i.i, !llvm.loop !405 .lr.ph.i.i.i.i.i.i.i: ; preds = %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEENS5_INS6_IKS8_Li0ESA_EEEENS0_9assign_opIddEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i %.021.i.i.i.i.i.i.i = phi i64 [ %77, %.lr.ph.i.i.i.i.i.i.i ], [ %.0.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEENS5_INS6_IKS8_Li0ESA_EEEENS0_9assign_opIddEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.i ] @@ -11335,14 +11335,14 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens %78 = icmp slt i64 %77, %62 br i1 %78, label %.lr.ph.i.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i.i, !llvm.loop !406 -_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit: ; preds = %.lr.ph.i17.i.i.i.i.i.i.i, %41, %._crit_edge.i.i.i.i.i.i.i, %.critedge.i, %.preheader83.i +_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit: ; preds = %.lr.ph.i17.i.i.i.i.i.i.i, %41, %.critedge.i, %.preheader83.i, %._crit_edge.i.i.i.i.i.i.i %79 = getelementptr inbounds nuw i8, ptr %0, i64 16 %80 = getelementptr inbounds nuw i8, ptr %0, i64 48 %81 = load ptr, ptr %80, align 8, !tbaa !150 %82 = icmp eq ptr %81, null br i1 %82, label %83, label %92 -83: ; preds = %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit +83: ; preds = %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit %84 = getelementptr inbounds nuw i8, ptr %0, i64 40 %85 = load ptr, ptr %84, align 8, !tbaa !149 %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -11353,7 +11353,7 @@ _ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0 %91 = sub nsw i32 %89, %90 br label %_ZNK5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE8nonZerosEv.exit -92: ; preds = %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit +92: ; preds = %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit %93 = getelementptr inbounds nuw i8, ptr %0, i64 24 %94 = load i64, ptr %93, align 8, !tbaa !143 %95 = icmp eq i64 %94, 0 @@ -11764,54 +11764,54 @@ _ZNK5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE8nonZerosEv.exit58.t br i1 %295, label %.preheader.i70.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runIS7_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS7_.exit .preheader.i70: ; preds = %.preheader.i70.backedge, %.preheader.lr.ph.i69 - %.13789.i72 = phi i64 [ 0, %.preheader.lr.ph.i69 ], [ %.13789.i72.be, %.preheader.i70.backedge ] - %296 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.13789.i72 + %.13787.i72 = phi i64 [ 0, %.preheader.lr.ph.i69 ], [ %.13787.i72.be, %.preheader.i70.backedge ] + %296 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.13787.i72 %297 = load i8, ptr %296, align 1, !tbaa !401, !range !197, !noundef !198 %298 = trunc nuw i8 %297 to i1 br i1 %298, label %299, label %302 299: ; preds = %.preheader.i70 - %300 = add nsw i64 %.13789.i72, 1 + %300 = add nsw i64 %.13787.i72, 1 %301 = icmp slt i64 %300, %289 br i1 %301, label %.preheader.i70.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runIS7_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS7_.exit .preheader.i70.backedge: ; preds = %299, %.loopexit.i84 - %.13789.i72.be = phi i64 [ %300, %299 ], [ %304, %.loopexit.i84 ] + %.13787.i72.be = phi i64 [ %300, %299 ], [ %304, %.loopexit.i84 ] br label %.preheader.i70, !llvm.loop !416 302: ; preds = %.preheader.i70 - %303 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.13789.i72 - %304 = add nsw i64 %.13789.i72, 1 + %303 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.13787.i72 + %304 = add nsw i64 %.13787.i72, 1 store i8 1, ptr %303, align 1, !tbaa !401 - %.034.in.in90.i73 = getelementptr inbounds i32, ptr %294, i64 %.13789.i72 - %.034.in91.i74 = load i32, ptr %.034.in.in90.i73, align 4, !tbaa !29 - %.03492.i75 = sext i32 %.034.in91.i74 to i64 - %.not4193.i76 = icmp eq i64 %.13789.i72, %.03492.i75 - br i1 %.not4193.i76, label %.loopexit.i84, label %.lr.ph97.i77 - -.lr.ph97.i77: ; preds = %302 - %305 = getelementptr inbounds double, ptr %.sroa.4.8.copyload, i64 %.13789.i72 + %.034.in.in88.i73 = getelementptr inbounds i32, ptr %294, i64 %.13787.i72 + %.034.in89.i74 = load i32, ptr %.034.in.in88.i73, align 4, !tbaa !29 + %.03490.i75 = sext i32 %.034.in89.i74 to i64 + %.not4191.i76 = icmp eq i64 %.13787.i72, %.03490.i75 + br i1 %.not4191.i76, label %.loopexit.i84, label %.lr.ph93.i77 + +.lr.ph93.i77: ; preds = %302 + %305 = getelementptr inbounds double, ptr %.sroa.4.8.copyload, i64 %.13787.i72 %.pre.i78 = load double, ptr %305, align 8, !tbaa !173 br label %306 -306: ; preds = %306, %.lr.ph97.i77 - %307 = phi double [ %.pre.i78, %.lr.ph97.i77 ], [ %309, %306 ] - %.03496.i79 = phi i64 [ %.03492.i75, %.lr.ph97.i77 ], [ %.034.i82, %306 ] - %308 = getelementptr inbounds double, ptr %.sroa.4.8.copyload, i64 %.03496.i79 +306: ; preds = %306, %.lr.ph93.i77 + %307 = phi double [ %.pre.i78, %.lr.ph93.i77 ], [ %309, %306 ] + %.03492.i79 = phi i64 [ %.03490.i75, %.lr.ph93.i77 ], [ %.034.i82, %306 ] + %308 = getelementptr inbounds double, ptr %.sroa.4.8.copyload, i64 %.03492.i79 %309 = load double, ptr %308, align 8, !tbaa !173 store double %307, ptr %308, align 8, !tbaa !173 store double %309, ptr %305, align 8, !tbaa !173 - %310 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.03496.i79 + %310 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.03492.i79 store i8 1, ptr %310, align 1, !tbaa !401 - %.034.in.in.i80 = getelementptr inbounds i32, ptr %294, i64 %.03496.i79 + %.034.in.in.i80 = getelementptr inbounds i32, ptr %294, i64 %.03492.i79 %.034.in.i81 = load i32, ptr %.034.in.in.i80, align 4, !tbaa !29 %.034.i82 = sext i32 %.034.in.i81 to i64 - %.not41.i83 = icmp eq i64 %.13789.i72, %.034.i82 + %.not41.i83 = icmp eq i64 %.13787.i72, %.034.i82 br i1 %.not41.i83, label %.loopexit.i84, label %306, !llvm.loop !417 _ZN5Eigen8internal26permutation_matrix_productINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runIS7_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS7_.exit: ; preds = %.loopexit.i84, %299, %286 - %.sroa.068.081110.i67 = phi ptr [ null, %286 ], [ %calloc.i68, %299 ], [ %calloc.i68, %.loopexit.i84 ] - call void @free(ptr noundef %.sroa.068.081110.i67) #38 + %.sroa.068.081103.i67 = phi ptr [ null, %286 ], [ %calloc.i68, %299 ], [ %calloc.i68, %.loopexit.i84 ] + call void @free(ptr noundef %.sroa.068.081103.i67) #38 br label %311 311: ; preds = %3, %_ZN5Eigen8internal26permutation_matrix_productINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runIS7_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS7_.exit, %_ZNK5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE8nonZerosEv.exit58.thread diff --git a/bench/g2o/optimized/solver_dense.ll b/bench/g2o/optimized/solver_dense.ll index 07c8ff4052a..23cf7f61821 100644 --- a/bench/g2o/optimized/solver_dense.ll +++ b/bench/g2o/optimized/solver_dense.ll @@ -24916,15 +24916,15 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSIN br label %44 44: ; preds = %53, %.lr.ph.i.i.i.i.i.i.i.i - %.029.i.i.i.i.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i.i.i.i.i.i ], [ %54, %53 ] - %45 = getelementptr inbounds nuw i32, ptr %42, i64 %.029.i.i.i.i.i.i.i.i + %.027.i.i.i.i.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i.i.i.i.i.i ], [ %54, %53 ] + %45 = getelementptr inbounds nuw i32, ptr %42, i64 %.027.i.i.i.i.i.i.i.i %46 = load i32, ptr %45, align 4, !tbaa !29 %47 = sext i32 %46 to i64 - %.not.i.i.i.i.i.i.i.i = icmp eq i64 %.029.i.i.i.i.i.i.i.i, %47 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %.027.i.i.i.i.i.i.i.i, %47 br i1 %.not.i.i.i.i.i.i.i.i, label %53, label %48 48: ; preds = %44 - %49 = getelementptr inbounds nuw double, ptr %43, i64 %.029.i.i.i.i.i.i.i.i + %49 = getelementptr inbounds nuw double, ptr %43, i64 %.027.i.i.i.i.i.i.i.i %50 = getelementptr inbounds double, ptr %43, i64 %47 %51 = load double, ptr %49, align 8, !tbaa !362 %52 = load double, ptr %50, align 8, !tbaa !362 @@ -24933,7 +24933,7 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSIN br label %53 53: ; preds = %48, %44 - %54 = add nuw nsw i64 %.029.i.i.i.i.i.i.i.i, 1 + %54 = add nuw nsw i64 %.027.i.i.i.i.i.i.i.i, 1 %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %54, %7 br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSINS_7ProductINS_14TranspositionsILin1ELin1EiEENS0_IKS2_Li0ES4_EELi2EEEEERS5_RKNS_9DenseBaseIT_EE.exit, label %44, !llvm.loop !1224 @@ -24983,16 +24983,16 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSER br label %71 71: ; preds = %80, %.lr.ph.i.i.i.i.i.i.i.i21 - %.030.in.i.i.i.i.i.i.i.i = phi i64 [ %67, %.lr.ph.i.i.i.i.i.i.i.i21 ], [ %.030.i.i.i.i.i.i.i.i, %80 ] - %.030.i.i.i.i.i.i.i.i = add nsw i64 %.030.in.i.i.i.i.i.i.i.i, -1 - %72 = getelementptr inbounds i32, ptr %69, i64 %.030.i.i.i.i.i.i.i.i + %.028.in.i.i.i.i.i.i.i.i = phi i64 [ %67, %.lr.ph.i.i.i.i.i.i.i.i21 ], [ %.028.i.i.i.i.i.i.i.i, %80 ] + %.028.i.i.i.i.i.i.i.i = add nsw i64 %.028.in.i.i.i.i.i.i.i.i, -1 + %72 = getelementptr inbounds i32, ptr %69, i64 %.028.i.i.i.i.i.i.i.i %73 = load i32, ptr %72, align 4, !tbaa !29 %74 = sext i32 %73 to i64 - %.not.i.i.i.i.i.i.i.i22 = icmp eq i64 %.030.i.i.i.i.i.i.i.i, %74 + %.not.i.i.i.i.i.i.i.i22 = icmp eq i64 %.028.i.i.i.i.i.i.i.i, %74 br i1 %.not.i.i.i.i.i.i.i.i22, label %80, label %75 75: ; preds = %71 - %76 = getelementptr inbounds double, ptr %70, i64 %.030.i.i.i.i.i.i.i.i + %76 = getelementptr inbounds double, ptr %70, i64 %.028.i.i.i.i.i.i.i.i %77 = getelementptr inbounds double, ptr %70, i64 %74 %78 = load double, ptr %76, align 8, !tbaa !362 %79 = load double, ptr %77, align 8, !tbaa !362 @@ -25001,21 +25001,21 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSER br label %80 80: ; preds = %75, %71 - %81 = icmp samesign ugt i64 %.030.in.i.i.i.i.i.i.i.i, 1 + %81 = icmp samesign ugt i64 %.028.in.i.i.i.i.i.i.i.i, 1 br i1 %81, label %71, label %_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSINS_7ProductINS_9TransposeINS_18TranspositionsBaseINS_14TranspositionsILin1ELin1EiEEEEEES5_Li2EEEEERS5_RKNS_9DenseBaseIT_EE.exit, !llvm.loop !1225 _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSINS_7ProductINS_9TransposeINS_18TranspositionsBaseINS_14TranspositionsILin1ELin1EiEEEEEES5_Li2EEEEERS5_RKNS_9DenseBaseIT_EE.exit: ; preds = %80, %_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSERKS5_.exit.i.i.i.i.i.i.i.i ret void 82: ; preds = %.lr.ph, %93 - %.051 = phi i64 [ 0, %.lr.ph ], [ %94, %93 ] - %83 = mul nsw i64 %61, %.051 - %84 = getelementptr double, ptr %63, i64 %.051 + %.049 = phi i64 [ 0, %.lr.ph ], [ %94, %93 ] + %83 = mul nsw i64 %61, %.049 + %84 = getelementptr double, ptr %63, i64 %.049 %85 = getelementptr double, ptr %84, i64 %83 %86 = load double, ptr %85, align 8, !tbaa !362 %87 = tail call noundef double @llvm.fabs.f64(double %86) %88 = fcmp ogt double %87, 0x10000000000000 - %89 = getelementptr inbounds nuw double, ptr %64, i64 %.051 + %89 = getelementptr inbounds nuw double, ptr %64, i64 %.049 br i1 %88, label %90, label %93 90: ; preds = %82 @@ -25026,7 +25026,7 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSIN 93: ; preds = %82, %90 %.sink = phi double [ %92, %90 ], [ 0.000000e+00, %82 ] store double %.sink, ptr %89, align 8, !tbaa !362 - %94 = add nuw nsw i64 %.051, 1 + %94 = add nuw nsw i64 %.049, 1 %exitcond.not = icmp eq i64 %94, %.sroa.speculated.i.i.i br i1 %exitcond.not, label %._crit_edge, label %82, !llvm.loop !1226 } diff --git a/bench/hdf5/optimized/sio_perf.ll b/bench/hdf5/optimized/sio_perf.ll index 494a11df3af..ec949f466e4 100644 --- a/bench/hdf5/optimized/sio_perf.ll +++ b/bench/hdf5/optimized/sio_perf.ll @@ -1501,32 +1501,32 @@ print_indent.exit: ; preds = %.lr.ph.i %31 = call double @io_time_get(ptr noundef %30, i32 noundef 8) #19 %32 = getelementptr inbounds nuw %struct.minmax, ptr %14, i64 %indvars.iv store double %31, ptr %32, align 8, !tbaa !78 - %.sroa.5116.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 8 - store double %31, ptr %.sroa.5116.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6117.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 16 - store double %31, ptr %.sroa.6117.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7118.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 24 - store i64 0, ptr %.sroa.7118.0..sroa_idx, align 8 + %.sroa.5117.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 8 + store double %31, ptr %.sroa.5117.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6118.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 16 + store double %31, ptr %.sroa.6118.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7119.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 24 + store i64 0, ptr %.sroa.7119.0..sroa_idx, align 8 %33 = load ptr, ptr %26, align 8, !tbaa !75 %34 = call double @io_time_get(ptr noundef %33, i32 noundef 10) #19 %35 = getelementptr inbounds nuw %struct.minmax, ptr %15, i64 %indvars.iv store double %34, ptr %35, align 8, !tbaa !78 - %.sroa.5112.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 8 - store double %34, ptr %.sroa.5112.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6113.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 16 - store double %34, ptr %.sroa.6113.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7114.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 24 - store i64 0, ptr %.sroa.7114.0..sroa_idx, align 8 + %.sroa.5113.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 8 + store double %34, ptr %.sroa.5113.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6114.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 16 + store double %34, ptr %.sroa.6114.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7115.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 24 + store i64 0, ptr %.sroa.7115.0..sroa_idx, align 8 %36 = load ptr, ptr %26, align 8, !tbaa !75 %37 = call double @io_time_get(ptr noundef %36, i32 noundef 12) #19 %38 = getelementptr inbounds nuw %struct.minmax, ptr %16, i64 %indvars.iv store double %37, ptr %38, align 8, !tbaa !78 - %.sroa.5108.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 8 - store double %37, ptr %.sroa.5108.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6109.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 16 - store double %37, ptr %.sroa.6109.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7110.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 24 - store i64 0, ptr %.sroa.7110.0..sroa_idx, align 8 + %.sroa.5109.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 8 + store double %37, ptr %.sroa.5109.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6110.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 16 + store double %37, ptr %.sroa.6110.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7111.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 24 + store i64 0, ptr %.sroa.7111.0..sroa_idx, align 8 br i1 %.not, label %39, label %52 39: ; preds = %27 @@ -1534,22 +1534,22 @@ print_indent.exit: ; preds = %.lr.ph.i %41 = call double @io_time_get(ptr noundef %40, i32 noundef 3) #19 %42 = getelementptr inbounds nuw %struct.minmax, ptr %.065, i64 %indvars.iv store double %41, ptr %42, align 8, !tbaa !78 - %.sroa.5104.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 8 - store double %41, ptr %.sroa.5104.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6105.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 16 - store double %41, ptr %.sroa.6105.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7106.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 24 - store i64 0, ptr %.sroa.7106.0..sroa_idx, align 8 + %.sroa.5105.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 8 + store double %41, ptr %.sroa.5105.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6106.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 16 + store double %41, ptr %.sroa.6106.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7107.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 24 + store i64 0, ptr %.sroa.7107.0..sroa_idx, align 8 %43 = load ptr, ptr %26, align 8, !tbaa !75 %44 = call double @io_time_get(ptr noundef %43, i32 noundef 9) #19 %45 = getelementptr inbounds nuw %struct.minmax, ptr %.064, i64 %indvars.iv store double %44, ptr %45, align 8, !tbaa !78 - %.sroa.5100.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 8 - store double %44, ptr %.sroa.5100.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6101.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 16 - store double %44, ptr %.sroa.6101.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7102.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 24 - store i64 0, ptr %.sroa.7102.0..sroa_idx, align 8 + %.sroa.5101.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 8 + store double %44, ptr %.sroa.5101.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6102.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 16 + store double %44, ptr %.sroa.6102.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7103.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 24 + store i64 0, ptr %.sroa.7103.0..sroa_idx, align 8 %46 = load ptr, ptr %26, align 8, !tbaa !75 %47 = call double @io_time_get(ptr noundef %46, i32 noundef 11) #19 %48 = getelementptr inbounds nuw %struct.minmax, ptr %.063, i64 %indvars.iv @@ -1721,11 +1721,11 @@ print_indent.exit89: ; preds = %.lr.ph.i87 br label %.critedge .critedge: ; preds = %78, %103 - %.sink127 = phi ptr [ %.064, %103 ], [ %14, %78 ] - %.sink126 = phi ptr [ %.063, %103 ], [ %15, %78 ] + %.sink128 = phi ptr [ %.064, %103 ], [ %14, %78 ] + %.sink127 = phi ptr [ %.063, %103 ], [ %15, %78 ] %.sink = phi ptr [ %.0, %103 ], [ %16, %78 ] + call void @free(ptr noundef %.sink128) #19 call void @free(ptr noundef %.sink127) #19 - call void @free(ptr noundef %.sink126) #19 call void @free(ptr noundef %.sink) #19 call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void diff --git a/bench/libigl/optimized/eigs.ll b/bench/libigl/optimized/eigs.ll index ac71f816435..46f657e6ebb 100644 --- a/bench/libigl/optimized/eigs.ll +++ b/bench/libigl/optimized/eigs.ll @@ -26279,13 +26279,13 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK5Eigen8SparseLUINS_12Spars %6 = getelementptr inbounds nuw i8, ptr %0, i64 272 %7 = load ptr, ptr %1, align 8, !tbaa !709, !noalias !786 %8 = load i64, ptr %5, align 8, !tbaa !104, !noalias !786 - %.fr150 = freeze i64 %8 + %.fr126 = freeze i64 %8 %9 = load ptr, ptr %2, align 8, !tbaa !463, !noalias !789 %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 %11 = load i64, ptr %10, align 8, !tbaa !104, !noalias !789 - %.fr149 = freeze i64 %11 - %12 = icmp eq i64 %.fr149, %.fr150 - %13 = icmp slt i64 %.fr150, 1 + %.fr125 = freeze i64 %11 + %12 = icmp eq i64 %.fr125, %.fr126 + %13 = icmp slt i64 %.fr126, 1 %14 = load ptr, ptr %6, align 8 %15 = getelementptr inbounds nuw i8, ptr %0, i64 280 %16 = load i64, ptr %15, align 8 @@ -26293,7 +26293,7 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK5Eigen8SparseLUINS_12Spars br i1 %12, label %.split, label %.preheader91.i.us .preheader91.i.us: ; preds = %3 - br i1 %13, label %.split98.us, label %.lr.ph.i.us + br i1 %13, label %.split96.us, label %.lr.ph.i.us .lr.ph.i.us: ; preds = %.preheader91.i.us, %.lr.ph.i.us %.094.i.us = phi i64 [ %23, %.lr.ph.i.us ], [ 0, %.preheader91.i.us ] @@ -26305,32 +26305,32 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK5Eigen8SparseLUINS_12Spars %22 = load double, ptr %17, align 8, !tbaa !4 store double %22, ptr %21, align 8, !tbaa !4 %23 = add nuw nsw i64 %.094.i.us, 1 - %exitcond.not.i.us = icmp eq i64 %23, %.fr150 - br i1 %exitcond.not.i.us, label %.split98.us, label %.lr.ph.i.us, !llvm.loop !792 + %exitcond.not.i.us = icmp eq i64 %23, %.fr126 + br i1 %exitcond.not.i.us, label %.split96.us, label %.lr.ph.i.us, !llvm.loop !792 .split: ; preds = %3 %24 = icmp sgt i64 %.fr, 0 %25 = icmp eq ptr %9, %7 - br i1 %24, label %.split.split.us.preheader, label %.split.split.split + br i1 %24, label %.split.split.us.preheader, label %.split.split .split.split.us.preheader: ; preds = %.split - br i1 %25, label %33, label %.preheader91.i.us110 + br i1 %25, label %33, label %.preheader91.i.us98 -.preheader91.i.us110: ; preds = %.split.split.us.preheader - br i1 %13, label %.split98.us, label %.lr.ph.i.us111 +.preheader91.i.us98: ; preds = %.split.split.us.preheader + br i1 %13, label %.split96.us, label %.lr.ph.i.us99 -.lr.ph.i.us111: ; preds = %.preheader91.i.us110, %.lr.ph.i.us111 - %.094.i.us112 = phi i64 [ %32, %.lr.ph.i.us111 ], [ 0, %.preheader91.i.us110 ] - %26 = getelementptr inbounds nuw double, ptr %7, i64 %.094.i.us112 - %27 = getelementptr inbounds nuw i32, ptr %14, i64 %.094.i.us112 +.lr.ph.i.us99: ; preds = %.preheader91.i.us98, %.lr.ph.i.us99 + %.094.i.us100 = phi i64 [ %32, %.lr.ph.i.us99 ], [ 0, %.preheader91.i.us98 ] + %26 = getelementptr inbounds nuw double, ptr %7, i64 %.094.i.us100 + %27 = getelementptr inbounds nuw i32, ptr %14, i64 %.094.i.us100 %28 = load i32, ptr %27, align 4, !tbaa !107 %29 = sext i32 %28 to i64 %30 = getelementptr inbounds double, ptr %9, i64 %29 %31 = load double, ptr %26, align 8, !tbaa !4 store double %31, ptr %30, align 8, !tbaa !4 - %32 = add nuw nsw i64 %.094.i.us112, 1 - %exitcond.not.i.us113 = icmp eq i64 %32, %.fr150 - br i1 %exitcond.not.i.us113, label %.split98.us, label %.lr.ph.i.us111, !llvm.loop !792 + %32 = add nuw nsw i64 %.094.i.us100, 1 + %exitcond.not.i.us101 = icmp eq i64 %32, %.fr126 + br i1 %exitcond.not.i.us101, label %.split96.us, label %.lr.ph.i.us99, !llvm.loop !792 33: ; preds = %.split.split.us.preheader %calloc.i.us = tail call ptr @calloc(i64 1, i64 %.fr) @@ -26389,112 +26389,112 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK5Eigen8SparseLUINS_12Spars .critedge.i.us: ; preds = %.loopexit.i.us, %48 tail call void @free(ptr noundef %calloc.i.us) #36 - br label %.split98.us + br label %.split96.us -.split98.us: ; preds = %.lr.ph.i.us, %.lr.ph.i, %.lr.ph.i.us111, %.preheader91.i.us110, %.critedge.i.us, %.split.split.split, %.preheader91.i.us - %51 = getelementptr inbounds nuw i8, ptr %0, i64 120 - tail call void @_ZNK5Eigen8internal22MappedSuperNodalMatrixIdiE12solveInPlaceINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEvRNS_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %51, ptr noundef nonnull align 1 dereferenceable(1) %2) +.split.split: ; preds = %.split + %or.cond = select i1 %13, i1 true, i1 %25 + br i1 %or.cond, label %.split96.us, label %.preheader91.i.us106 + +.preheader91.i.us106: ; preds = %.split.split, %.preheader91.i.us106 + %.094.i.us108 = phi i64 [ %57, %.preheader91.i.us106 ], [ 0, %.split.split ] + %51 = getelementptr inbounds nuw double, ptr %7, i64 %.094.i.us108 + %52 = getelementptr inbounds nuw i32, ptr %14, i64 %.094.i.us108 + %53 = load i32, ptr %52, align 4, !tbaa !107 + %54 = sext i32 %53 to i64 + %55 = getelementptr inbounds double, ptr %9, i64 %54 + %56 = load double, ptr %51, align 8, !tbaa !4 + store double %56, ptr %55, align 8, !tbaa !4 + %57 = add nuw nsw i64 %.094.i.us108, 1 + %exitcond.not.i.us109 = icmp eq i64 %57, %.fr126 + br i1 %exitcond.not.i.us109, label %.split96.us, label %.preheader91.i.us106, !llvm.loop !792 + +.split96.us: ; preds = %.lr.ph.i.us, %.preheader91.i.us106, %.lr.ph.i.us99, %.split.split, %.preheader91.i.us98, %.critedge.i.us, %.preheader91.i.us + %58 = getelementptr inbounds nuw i8, ptr %0, i64 120 + tail call void @_ZNK5Eigen8internal22MappedSuperNodalMatrixIdiE12solveInPlaceINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEvRNS_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %58, ptr noundef nonnull align 1 dereferenceable(1) %2) call void @llvm.lifetime.start.p0(ptr nonnull %4) - %52 = getelementptr inbounds nuw i8, ptr %0, i64 192 - store ptr %51, ptr %4, align 8 - %53 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr %52, ptr %53, align 8 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 192 + store ptr %58, ptr %4, align 8 + %60 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr %59, ptr %60, align 8 call void @_ZNK5Eigen25SparseLUMatrixUReturnTypeINS_8internal22MappedSuperNodalMatrixIdiEENS_18MappedSparseMatrixIdLi0EiEEE12solveInPlaceINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEvRNS_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 1 dereferenceable(1) %2) call void @llvm.lifetime.end.p0(ptr nonnull %4) - %54 = getelementptr inbounds nuw i8, ptr %0, i64 256 - %55 = load ptr, ptr %2, align 8, !tbaa !463, !noalias !795 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 264 - %57 = load i64, ptr %56, align 8, !tbaa !105 - %58 = icmp sgt i64 %57, 0 - br i1 %58, label %.split140.us.split, label %.split142 - -.split140.us.split: ; preds = %.split98.us - %calloc.i24.us = call ptr @calloc(i64 1, i64 %57) - %59 = icmp eq ptr %calloc.i24.us, null - br i1 %59, label %.noexc.i.i31, label %.preheader.lr.ph.i25.us - -.preheader.lr.ph.i25.us: ; preds = %.split140.us.split - %60 = load ptr, ptr %54, align 8 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 256 + %62 = load ptr, ptr %2, align 8, !tbaa !463, !noalias !795 + %63 = getelementptr inbounds nuw i8, ptr %0, i64 264 + %64 = load i64, ptr %63, align 8, !tbaa !105 + %65 = icmp sgt i64 %64, 0 + br i1 %65, label %.split120.us.split, label %.split122 + +.split120.us.split: ; preds = %.split96.us + %calloc.i24.us = call ptr @calloc(i64 1, i64 %64) + %66 = icmp eq ptr %calloc.i24.us, null + br i1 %66, label %.noexc.i.i31, label %.preheader.lr.ph.i25.us + +.preheader.lr.ph.i25.us: ; preds = %.split120.us.split + %67 = load ptr, ptr %61, align 8 br label %.preheader.i26.us .preheader.i26.us: ; preds = %.preheader.i26.us.backedge, %.preheader.lr.ph.i25.us %.13896.i.us = phi i64 [ 0, %.preheader.lr.ph.i25.us ], [ %.13896.i.us.be, %.preheader.i26.us.backedge ] - %61 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.13896.i.us - %62 = load i8, ptr %61, align 1, !tbaa !90, !range !47, !noundef !48 - %63 = trunc nuw i8 %62 to i1 - br i1 %63, label %73, label %64 - -64: ; preds = %.preheader.i26.us - %65 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.13896.i.us - %66 = add nsw i64 %.13896.i.us, 1 - store i8 1, ptr %65, align 1, !tbaa !90 - %.034.in.in97.i.us = getelementptr inbounds i32, ptr %60, i64 %.13896.i.us + %68 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.13896.i.us + %69 = load i8, ptr %68, align 1, !tbaa !90, !range !47, !noundef !48 + %70 = trunc nuw i8 %69 to i1 + br i1 %70, label %80, label %71 + +71: ; preds = %.preheader.i26.us + %72 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.13896.i.us + %73 = add nsw i64 %.13896.i.us, 1 + store i8 1, ptr %72, align 1, !tbaa !90 + %.034.in.in97.i.us = getelementptr inbounds i32, ptr %67, i64 %.13896.i.us %.034.in98.i.us = load i32, ptr %.034.in.in97.i.us, align 4, !tbaa !107 %.03499.i.us = sext i32 %.034.in98.i.us to i64 %.not42100.i.us = icmp eq i64 %.13896.i.us, %.03499.i.us br i1 %.not42100.i.us, label %.loopexit.i30.us, label %.lr.ph103.i.us -.lr.ph103.i.us: ; preds = %64, %.lr.ph103.i.us - %.034102.i.us = phi i64 [ %.034.i29.us, %.lr.ph103.i.us ], [ %.03499.i.us, %64 ] - %.035101.i.us = phi i64 [ %.034102.i.us, %.lr.ph103.i.us ], [ %.13896.i.us, %64 ] - %67 = getelementptr inbounds double, ptr %55, i64 %.034102.i.us - %68 = getelementptr inbounds double, ptr %55, i64 %.035101.i.us - %69 = load double, ptr %67, align 8, !tbaa !4 - %70 = load double, ptr %68, align 8, !tbaa !4 - store double %70, ptr %67, align 8, !tbaa !4 - store double %69, ptr %68, align 8, !tbaa !4 - %71 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.034102.i.us - store i8 1, ptr %71, align 1, !tbaa !90 - %.034.in.in.i27.us = getelementptr inbounds i32, ptr %60, i64 %.034102.i.us +.lr.ph103.i.us: ; preds = %71, %.lr.ph103.i.us + %.034102.i.us = phi i64 [ %.034.i29.us, %.lr.ph103.i.us ], [ %.03499.i.us, %71 ] + %.035101.i.us = phi i64 [ %.034102.i.us, %.lr.ph103.i.us ], [ %.13896.i.us, %71 ] + %74 = getelementptr inbounds double, ptr %62, i64 %.034102.i.us + %75 = getelementptr inbounds double, ptr %62, i64 %.035101.i.us + %76 = load double, ptr %74, align 8, !tbaa !4 + %77 = load double, ptr %75, align 8, !tbaa !4 + store double %77, ptr %74, align 8, !tbaa !4 + store double %76, ptr %75, align 8, !tbaa !4 + %78 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.034102.i.us + store i8 1, ptr %78, align 1, !tbaa !90 + %.034.in.in.i27.us = getelementptr inbounds i32, ptr %67, i64 %.034102.i.us %.034.in.i28.us = load i32, ptr %.034.in.in.i27.us, align 4, !tbaa !107 %.034.i29.us = sext i32 %.034.in.i28.us to i64 %.not42.i.us = icmp eq i64 %.13896.i.us, %.034.i29.us br i1 %.not42.i.us, label %.loopexit.i30.us, label %.lr.ph103.i.us, !llvm.loop !798 -.loopexit.i30.us: ; preds = %.lr.ph103.i.us, %64 - %72 = icmp slt i64 %66, %57 - br i1 %72, label %.preheader.i26.us.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us +.loopexit.i30.us: ; preds = %.lr.ph103.i.us, %71 + %79 = icmp slt i64 %73, %64 + br i1 %79, label %.preheader.i26.us.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us -73: ; preds = %.preheader.i26.us - %74 = add nsw i64 %.13896.i.us, 1 - %75 = icmp slt i64 %74, %57 - br i1 %75, label %.preheader.i26.us.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us +80: ; preds = %.preheader.i26.us + %81 = add nsw i64 %.13896.i.us, 1 + %82 = icmp slt i64 %81, %64 + br i1 %82, label %.preheader.i26.us.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us -.preheader.i26.us.backedge: ; preds = %73, %.loopexit.i30.us - %.13896.i.us.be = phi i64 [ %74, %73 ], [ %66, %.loopexit.i30.us ] +.preheader.i26.us.backedge: ; preds = %80, %.loopexit.i30.us + %.13896.i.us.be = phi i64 [ %81, %80 ], [ %73, %.loopexit.i30.us ] br label %.preheader.i26.us, !llvm.loop !799 -_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us: ; preds = %.loopexit.i30.us, %73 +_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us: ; preds = %.loopexit.i30.us, %80 call void @free(ptr noundef %calloc.i24.us) #36 - br label %.split142 - -.split.split.split: ; preds = %.split - %brmerge = or i1 %25, %13 - br i1 %brmerge, label %.split98.us, label %.lr.ph.i + br label %.split122 .noexc.i.i: ; preds = %33 - %76 = tail call ptr @__cxa_allocate_exception(i64 8) #36 - store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %76, align 8, !tbaa !76 - tail call void @__cxa_throw(ptr nonnull %76, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #37 + %83 = tail call ptr @__cxa_allocate_exception(i64 8) #36 + store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %83, align 8, !tbaa !76 + tail call void @__cxa_throw(ptr nonnull %83, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #37 unreachable -.lr.ph.i: ; preds = %.split.split.split, %.lr.ph.i - %.094.i = phi i64 [ %83, %.lr.ph.i ], [ 0, %.split.split.split ] - %77 = getelementptr inbounds nuw double, ptr %7, i64 %.094.i - %78 = getelementptr inbounds nuw i32, ptr %14, i64 %.094.i - %79 = load i32, ptr %78, align 4, !tbaa !107 - %80 = sext i32 %79 to i64 - %81 = getelementptr inbounds double, ptr %9, i64 %80 - %82 = load double, ptr %77, align 8, !tbaa !4 - store double %82, ptr %81, align 8, !tbaa !4 - %83 = add nuw nsw i64 %.094.i, 1 - %exitcond.not.i = icmp eq i64 %83, %.fr150 - br i1 %exitcond.not.i, label %.split98.us, label %.lr.ph.i, !llvm.loop !792 - -.split142: ; preds = %.split98.us, %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us +.split122: ; preds = %.split96.us, %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us ret i1 true -.noexc.i.i31: ; preds = %.split140.us.split +.noexc.i.i31: ; preds = %.split120.us.split %84 = call ptr @__cxa_allocate_exception(i64 8) #36 store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %84, align 8, !tbaa !76 call void @__cxa_throw(ptr nonnull %84, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #37 @@ -41845,8 +41845,8 @@ thread-pre-split.i.i.i.i.i.i: ; preds = %_ZN5Eigen15PlainObj call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %249 -249: ; preds = %63, %.body, %244 - %.pn25.pn.pn = phi { ptr, i32 } [ %.pn23, %.body ], [ %245, %244 ], [ %64, %63 ] +249: ; preds = %.body, %244, %63 + %.pn25.pn.pn = phi { ptr, i32 } [ %64, %63 ], [ %.pn23, %.body ], [ %245, %244 ] %250 = load ptr, ptr %3, align 8, !tbaa !78 call void @free(ptr noundef %250) #36 call void @llvm.lifetime.end.p0(ptr nonnull %3) diff --git a/bench/llvm/optimized/ASTReader.ll b/bench/llvm/optimized/ASTReader.ll index 8930b6a4f69..63b6f90cc31 100644 --- a/bench/llvm/optimized/ASTReader.ll +++ b/bench/llvm/optimized/ASTReader.ll @@ -90819,8 +90819,8 @@ _ZNK4llvm13TinyPtrVectorIPvE5beginEv.exit.i: ; preds = %_ZNK4llvm13TinyPtrV %.not.i.i.i.i.i = icmp eq i64 %36, 0 %37 = and i64 %35, -8 %.not = icmp eq i64 %37, 0 - %or.cond156 = or i1 %.not.i.i.i.i.i, %.not - br i1 %or.cond156, label %_ZN4llvm11SmallVectorIN5clang12GlobalDeclIDELj4EEaSERKS3_.exitthread-pre-split, label %38 + %or.cond154 = or i1 %.not.i.i.i.i.i, %.not + br i1 %or.cond154, label %_ZN4llvm11SmallVectorIN5clang12GlobalDeclIDELj4EEaSERKS3_.exitthread-pre-split, label %38 38: ; preds = %_ZNK4llvm13TinyPtrVectorIPvE5beginEv.exit.i %39 = inttoptr i64 %37 to ptr @@ -90887,8 +90887,8 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapIN5clang13serialization18DeclarationNameKeyEN %77 = load i32, ptr %42, align 8, !tbaa !3636 %78 = zext i32 %77 to i64 %79 = getelementptr inbounds nuw %"struct.llvm::detail::DenseMapPair.3666", ptr %76, i64 %78 - %.not157 = icmp eq ptr %.sroa.0.1.i, %79 - br i1 %.not157, label %_ZN4llvm11SmallVectorIN5clang12GlobalDeclIDELj4EEaSERKS3_.exitthread-pre-split, label %80 + %.not155 = icmp eq ptr %.sroa.0.1.i, %79 + br i1 %.not155, label %_ZN4llvm11SmallVectorIN5clang12GlobalDeclIDELj4EEaSERKS3_.exitthread-pre-split, label %80 80: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapIN5clang13serialization18DeclarationNameKeyENS_11SmallVectorINS2_12GlobalDeclIDELj4EEENS_12DenseMapInfoIS4_vEENS_6detail12DenseMapPairIS4_S7_EEEES4_S7_S9_SC_E4findERKS4_.exit %81 = getelementptr inbounds nuw i8, ptr %.sroa.0.1.i, i64 16 @@ -91013,8 +91013,8 @@ _ZN5clang13serialization20MultiOnDiskHashTableINS0_6reader29ASTDeclContextNameLo %.0.i2228.i = phi ptr [ %.0.i222736.i, %_ZNK4llvm13TinyPtrVectorIPvE5beginEv.exit.i.i ], [ %1, %_ZN4llvm13TinyPtrVectorIPvE3endEv.exit.i ], [ %116, %_ZN4llvm13TinyPtrVectorIPvE3endEv.exit.thread.i ] %.not.i = phi i64 [ %126, %_ZNK4llvm13TinyPtrVectorIPvE5beginEv.exit.i.i ], [ 0, %_ZN4llvm13TinyPtrVectorIPvE3endEv.exit.i ], [ 0, %_ZN4llvm13TinyPtrVectorIPvE3endEv.exit.thread.i ] %spec.select.i = getelementptr inbounds nuw i8, ptr %.0.i2228.i, i64 %.not.i - %.not158184 = icmp eq ptr %spec.select.i, %.0.i1830.i - br i1 %.not158184, label %._crit_edge, label %.lr.ph + %.not156182 = icmp eq ptr %spec.select.i, %.0.i1830.i + br i1 %.not156182, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %_ZN5clang13serialization20MultiOnDiskHashTableINS0_6reader29ASTDeclContextNameLookupTraitEE6tablesEv.exit %127 = getelementptr inbounds nuw i8, ptr %7, i64 16 @@ -91024,8 +91024,8 @@ _ZN5clang13serialization20MultiOnDiskHashTableINS0_6reader29ASTDeclContextNameLo ._crit_edge.loopexit: ; preds = %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit %.pre = load ptr, ptr %109, align 8, !tbaa !3533 - %.pre210 = load i32, ptr %128, align 8, !tbaa !3539 - %130 = zext i32 %.pre210 to i64 + %.pre208 = load i32, ptr %128, align 8, !tbaa !3539 + %130 = zext i32 %.pre208 to i64 %131 = shl nuw nsw i64 %130, 3 br label %._crit_edge @@ -91038,8 +91038,8 @@ _ZN5clang13serialization20MultiOnDiskHashTableINS0_6reader29ASTDeclContextNameLo ret void 134: ; preds = %.lr.ph, %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit - %.sroa.0114.0185 = phi ptr [ %spec.select.i, %.lr.ph ], [ %503, %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit ] - %135 = load ptr, ptr %.sroa.0114.0185, align 8, !tbaa !1748 + %.sroa.0114.0183 = phi ptr [ %spec.select.i, %.lr.ph ], [ %503, %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit ] + %135 = load ptr, ptr %.sroa.0114.0183, align 8, !tbaa !1748 %136 = ptrtoint ptr %135 to i64 %137 = and i64 %136, -8 %138 = inttoptr i64 %137 to ptr @@ -91743,9 +91743,9 @@ _ZN5clang13serialization6reader33ASTDeclContextNameLookupTraitBase17data_type_bu br i1 %.not.i.i41, label %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit, label %276, !llvm.loop !1308 _ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit: ; preds = %.critedge.i, %_ZN5clang13serialization6reader33ASTDeclContextNameLookupTraitBase17data_type_builder6insertENS_12GlobalDeclIDE.exit, %150, %134, %_ZN4llvm22OnDiskChainedHashTableIN5clang13serialization6reader29ASTDeclContextNameLookupTraitEE11find_hashedERKNS2_18DeclarationNameKeyEjPS4_.exit - %503 = getelementptr inbounds nuw i8, ptr %.sroa.0114.0185, i64 8 - %.not158 = icmp eq ptr %503, %.0.i1830.i - br i1 %.not158, label %._crit_edge.loopexit, label %134 + %503 = getelementptr inbounds nuw i8, ptr %.sroa.0114.0183, i64 8 + %.not156 = icmp eq ptr %503, %.0.i1830.i + br i1 %.not156, label %._crit_edge.loopexit, label %134 } declare noundef ptr @_ZNK5clang4Decl28getTopLevelOwningNamedModuleEv(ptr noundef nonnull align 8 dereferenceable(33)) local_unnamed_addr #4 diff --git a/bench/llvm/optimized/MsgPackDocument.ll b/bench/llvm/optimized/MsgPackDocument.ll index 771ed00917c..185c74cd93f 100644 --- a/bench/llvm/optimized/MsgPackDocument.ll +++ b/bench/llvm/optimized/MsgPackDocument.ll @@ -489,229 +489,229 @@ _ZNSt10unique_ptrISt3mapIN4llvm7msgpack7DocNodeES3_St4lessIS3_ESaISt4pairIKS3_S3 ; Function Attrs: mustprogress nofree norecurse nounwind willreturn memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable define dso_local ptr @_ZN4llvm7msgpack10MapDocNode4findENS_9StringRefE(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(24) %0, ptr %1, i64 %2) local_unnamed_addr #2 align 2 { - %.fr83 = freeze ptr %1 + %.fr82 = freeze ptr %1 %4 = load ptr, ptr %0, align 8, !tbaa !3 %5 = load ptr, ptr %4, align 8, !tbaa !9 %6 = getelementptr inbounds nuw i8, ptr %5, i64 176 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %8 = load ptr, ptr %7, align 8, !tbaa !35 - %9 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %10 = load ptr, ptr %9, align 8, !tbaa !83 - %11 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %.not10.i.i.i.i = icmp eq ptr %10, null - %12 = ptrtoint ptr %.fr83 to i64 - %13 = bitcast i64 %12 to double - %14 = trunc i64 %12 to i8 + %7 = ptrtoint ptr %.fr82 to i64 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %9 = load ptr, ptr %8, align 8, !tbaa !35 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %11 = load ptr, ptr %10, align 8, !tbaa !83 + %12 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %.not10.i.i.i.i = icmp eq ptr %11, null br i1 %.not10.i.i.i.i, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader _ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader: ; preds = %3 - %15 = getelementptr inbounds nuw i8, ptr %5, i64 184 - %16 = load i8, ptr %15, align 8, !tbaa !84 - %.fr80 = freeze i8 %16 - %17 = icmp eq i8 %.fr80, 10 - br i1 %17, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 + %13 = getelementptr inbounds nuw i8, ptr %5, i64 184 + %14 = load i8, ptr %13, align 8, !tbaa !84 + %.fr80 = freeze i8 %14 + %15 = icmp eq i8 %.fr80, 10 + %16 = bitcast i64 %7 to double + %.sroa.5.8.extract.trunc36 = trunc i64 %7 to i8 + br i1 %15, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 _ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us - %.012.i.i.i.i.us = phi ptr [ %.1.i.i.i.i.us, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us ], [ %10, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader ] + %.012.i.i.i.i.us = phi ptr [ %.1.i.i.i.i.us, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us ], [ %11, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader ] %.1.in.i.i.i.i.us = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.us, i64 16 %.1.i.i.i.i.us = load ptr, ptr %.1.in.i.i.i.i.us, align 8, !tbaa !85 %.not.i.i.i.i.us = icmp eq ptr %.1.i.i.i.i.us, null br i1 %.not.i.i.i.i.us, label %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us, !llvm.loop !86 _ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader, %.thread - %.012.i.i.i.i = phi ptr [ %.1.i.i.i.i, %.thread ], [ %10, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader ] - %.0811.i.i.i.i = phi ptr [ %51, %.thread ], [ %11, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader ] - %18 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 32 - %19 = load ptr, ptr %18, align 8, !tbaa !3 - %.not.i7 = icmp eq ptr %19, %6 - br i1 %.not.i7, label %21, label %20 - -20: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 - %.not.i20.i8 = icmp eq ptr %19, null + %.012.i.i.i.i = phi ptr [ %.1.i.i.i.i, %.thread ], [ %11, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader ] + %.0811.i.i.i.i = phi ptr [ %50, %.thread ], [ %12, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader ] + %17 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 32 + %18 = load ptr, ptr %17, align 8, !tbaa !3 + %.not.i7 = icmp eq ptr %18, %6 + br i1 %.not.i7, label %20, label %19 + +19: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 + %.not.i20.i8 = icmp eq ptr %18, null br i1 %.not.i20.i8, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 -21: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 - %22 = getelementptr inbounds nuw i8, ptr %19, i64 8 - %23 = load i8, ptr %22, align 8, !tbaa !84 - switch i8 %23, label %46 [ - i8 0, label %24 - i8 1, label %28 +20: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 + %21 = getelementptr inbounds nuw i8, ptr %18, i64 8 + %22 = load i8, ptr %21, align 8, !tbaa !84 + switch i8 %22, label %45 [ + i8 0, label %23 + i8 1, label %27 i8 2, label %.thread - i8 3, label %32 - i8 4, label %36 - i8 5, label %40 - i8 6, label %40 + i8 3, label %31 + i8 4, label %35 + i8 5, label %39 + i8 6, label %39 ] -24: ; preds = %21 - %25 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %26 = load i64, ptr %25, align 8, !tbaa !35 - %.fr84 = freeze i64 %26 - %27 = icmp slt i64 %.fr84, %12 - br i1 %27, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread - -28: ; preds = %21 - %29 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %30 = load i64, ptr %29, align 8, !tbaa !35 - %.fr82 = freeze i64 %30 - %31 = icmp ult i64 %.fr82, %12 - br i1 %31, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread - -32: ; preds = %21 - %33 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %34 = load i8, ptr %33, align 8, !tbaa !35, !range !87, !noundef !88 - %35 = icmp ult i8 %34, %14 - br i1 %35, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread - -36: ; preds = %21 - %37 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %38 = load double, ptr %37, align 8, !tbaa !35 - %.fr81 = freeze double %38 - %39 = fcmp olt double %.fr81, %13 - br i1 %39, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread - -40: ; preds = %21, %21 +23: ; preds = %20 + %24 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %25 = load i64, ptr %24, align 8, !tbaa !35 + %.fr84 = freeze i64 %25 + %26 = icmp slt i64 %.fr84, %7 + br i1 %26, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + +27: ; preds = %20 + %28 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %29 = load i64, ptr %28, align 8, !tbaa !35 + %.fr83 = freeze i64 %29 + %30 = icmp ult i64 %.fr83, %7 + br i1 %30, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + +31: ; preds = %20 + %32 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %33 = load i8, ptr %32, align 8, !tbaa !35, !range !87, !noundef !88 + %34 = icmp ult i8 %33, %.sroa.5.8.extract.trunc36 + br i1 %34, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + +35: ; preds = %20 + %36 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %37 = load double, ptr %36, align 8, !tbaa !35 + %.fr81 = freeze double %37 + %38 = fcmp olt double %.fr81, %16 + br i1 %38, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + +39: ; preds = %20, %20 %.sroa.22.0..sroa_idx.i12 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 48 %.sroa.22.0.copyload.i13 = load i64, ptr %.sroa.22.0..sroa_idx.i12, align 8, !tbaa !89 %.sroa.speculated.i.i.i16 = tail call i64 @llvm.umin.i64(i64 %2, i64 %.sroa.22.0.copyload.i13) - %41 = icmp eq i64 %.sroa.speculated.i.i.i16, 0 - br i1 %41, label %.thread.i.i.i26, label %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17 - -_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17: ; preds = %40 - %42 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %.sroa.01.0.copyload.i19 = load ptr, ptr %42, align 8, !tbaa !90 - %43 = tail call i32 @memcmp(ptr noundef %.sroa.01.0.copyload.i19, ptr noundef %.fr83, i64 noundef %.sroa.speculated.i.i.i16) #20 - %.fr.i.i.i20 = freeze i32 %43 + %40 = icmp eq i64 %.sroa.speculated.i.i.i16, 0 + br i1 %40, label %.thread.i.i.i26, label %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17 + +_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17: ; preds = %39 + %41 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %.sroa.01.0.copyload.i19 = load ptr, ptr %41, align 8, !tbaa !90 + %42 = tail call i32 @memcmp(ptr noundef %.sroa.01.0.copyload.i19, ptr noundef %.fr82, i64 noundef %.sroa.speculated.i.i.i16) #20 + %.fr.i.i.i20 = freeze i32 %42 %.not.not.i.i.i21 = icmp eq i32 %.fr.i.i.i20, 0 br i1 %.not.not.i.i.i21, label %.thread.i.i.i26, label %_ZN4llvmltENS_9StringRefES0_.exit.i24 -.thread.i.i.i26: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17, %40 - %44 = icmp ult i64 %.sroa.22.0.copyload.i13, %2 - br i1 %44, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread +.thread.i.i.i26: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17, %39 + %43 = icmp ult i64 %.sroa.22.0.copyload.i13, %2 + br i1 %43, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread _ZN4llvmltENS_9StringRefES0_.exit.i24: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17 - %45 = icmp slt i32 %.fr.i.i.i20, 0 - br i1 %45, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + %44 = icmp slt i32 %.fr.i.i.i20, 0 + br i1 %44, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread -46: ; preds = %21 +45: ; preds = %20 unreachable -_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27: ; preds = %20 - %47 = getelementptr inbounds nuw i8, ptr %19, i64 8 - %48 = load i8, ptr %47, align 8, !tbaa !84 - %.fr = freeze i8 %48 - %49 = icmp eq i8 %.fr, 10 - %50 = icmp ult i8 %.fr, %.fr80 - %spec.select.i10 = or i1 %49, %50 +_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27: ; preds = %19 + %46 = getelementptr inbounds nuw i8, ptr %18, i64 8 + %47 = load i8, ptr %46, align 8, !tbaa !84 + %.fr = freeze i8 %47 + %48 = icmp eq i8 %.fr, 10 + %49 = icmp ult i8 %.fr, %.fr80 + %spec.select.i10 = or i1 %48, %49 br i1 %spec.select.i10, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread -_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread: ; preds = %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27, %24, %28, %32, %36, %_ZN4llvmltENS_9StringRefES0_.exit.i24, %.thread.i.i.i26, %20 +_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread: ; preds = %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27, %23, %27, %31, %35, %_ZN4llvmltENS_9StringRefES0_.exit.i24, %.thread.i.i.i26, %19 br label %.thread -.thread: ; preds = %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27, %24, %28, %32, %36, %_ZN4llvmltENS_9StringRefES0_.exit.i24, %.thread.i.i.i26, %21, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread - %51 = phi ptr [ %.0811.i.i.i.i, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread ], [ %.012.i.i.i.i, %21 ], [ %.012.i.i.i.i, %.thread.i.i.i26 ], [ %.012.i.i.i.i, %_ZN4llvmltENS_9StringRefES0_.exit.i24 ], [ %.012.i.i.i.i, %36 ], [ %.012.i.i.i.i, %32 ], [ %.012.i.i.i.i, %28 ], [ %.012.i.i.i.i, %24 ], [ %.012.i.i.i.i, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 ] - %52 = phi i64 [ 24, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread ], [ 16, %21 ], [ 16, %.thread.i.i.i26 ], [ 16, %_ZN4llvmltENS_9StringRefES0_.exit.i24 ], [ 16, %36 ], [ 16, %32 ], [ 16, %28 ], [ 16, %24 ], [ 16, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 ] - %.1.in.i.i.i.i = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 %52 +.thread: ; preds = %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27, %23, %27, %31, %35, %_ZN4llvmltENS_9StringRefES0_.exit.i24, %.thread.i.i.i26, %20, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread + %50 = phi ptr [ %.0811.i.i.i.i, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread ], [ %.012.i.i.i.i, %20 ], [ %.012.i.i.i.i, %.thread.i.i.i26 ], [ %.012.i.i.i.i, %_ZN4llvmltENS_9StringRefES0_.exit.i24 ], [ %.012.i.i.i.i, %35 ], [ %.012.i.i.i.i, %31 ], [ %.012.i.i.i.i, %27 ], [ %.012.i.i.i.i, %23 ], [ %.012.i.i.i.i, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 ] + %51 = phi i64 [ 24, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread ], [ 16, %20 ], [ 16, %.thread.i.i.i26 ], [ 16, %_ZN4llvmltENS_9StringRefES0_.exit.i24 ], [ 16, %35 ], [ 16, %31 ], [ 16, %27 ], [ 16, %23 ], [ 16, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 ] + %.1.in.i.i.i.i = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 %51 %.1.i.i.i.i = load ptr, ptr %.1.in.i.i.i.i, align 8, !tbaa !85 %.not.i.i.i.i = icmp eq ptr %.1.i.i.i.i, null br i1 %.not.i.i.i.i, label %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6, !llvm.loop !86 _ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i: ; preds = %.thread, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us - %.us-phi = phi ptr [ %.012.i.i.i.i.us, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us ], [ %51, %.thread ] - %53 = icmp eq ptr %.us-phi, %11 - br i1 %53, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %54 - -54: ; preds = %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i - %55 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 32 - %56 = load ptr, ptr %55, align 8, !tbaa !3 - %.not.i.i = icmp eq ptr %56, null + %.us-phi = phi ptr [ %.012.i.i.i.i.us, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us ], [ %50, %.thread ] + %52 = icmp eq ptr %.us-phi, %12 + br i1 %52, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %53 + +53: ; preds = %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i + %54 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 32 + %55 = load ptr, ptr %54, align 8, !tbaa !3 + %.not.i.i = icmp eq ptr %55, null br i1 %.not.i.i, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i -_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i: ; preds = %54 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 8 - %58 = load i8, ptr %57, align 8, !tbaa !84 - %.fr87 = freeze i8 %58 - %59 = icmp eq i8 %.fr87, 10 - br i1 %59, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %60 - -60: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i - %.not.i = icmp eq ptr %6, %56 - br i1 %.not.i, label %61, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit - -61: ; preds = %60 - switch i8 %.fr80, label %84 [ - i8 0, label %62 - i8 1, label %66 +_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i: ; preds = %53 + %56 = getelementptr inbounds nuw i8, ptr %55, i64 8 + %57 = load i8, ptr %56, align 8, !tbaa !84 + %.fr87 = freeze i8 %57 + %58 = icmp eq i8 %.fr87, 10 + br i1 %58, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %59 + +59: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i + %.not.i = icmp eq ptr %6, %55 + br i1 %.not.i, label %60, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit + +60: ; preds = %59 + switch i8 %.fr80, label %83 [ + i8 0, label %61 + i8 1, label %65 i8 2, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - i8 3, label %70 - i8 4, label %74 - i8 5, label %78 - i8 6, label %78 + i8 3, label %69 + i8 4, label %73 + i8 5, label %77 + i8 6, label %77 ] -62: ; preds = %61 - %63 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %64 = load i64, ptr %63, align 8, !tbaa !35 - %.fr90 = freeze i64 %64 - %65 = icmp sgt i64 %.fr90, %12 - br i1 %65, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - -66: ; preds = %61 - %67 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %68 = load i64, ptr %67, align 8, !tbaa !35 - %.fr89 = freeze i64 %68 - %69 = icmp ugt i64 %.fr89, %12 - br i1 %69, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - -70: ; preds = %61 - %71 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %72 = load i8, ptr %71, align 8, !tbaa !35, !range !87, !noundef !88 - %73 = icmp ugt i8 %72, %14 - br i1 %73, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - -74: ; preds = %61 - %75 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %76 = load double, ptr %75, align 8, !tbaa !35 - %.fr88 = freeze double %76 - %77 = fcmp ogt double %.fr88, %13 - br i1 %77, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - -78: ; preds = %61, %61 +61: ; preds = %60 + %62 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %63 = load i64, ptr %62, align 8, !tbaa !35 + %.fr90 = freeze i64 %63 + %64 = icmp sgt i64 %.fr90, %7 + br i1 %64, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + +65: ; preds = %60 + %66 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %67 = load i64, ptr %66, align 8, !tbaa !35 + %.fr89 = freeze i64 %67 + %68 = icmp ugt i64 %.fr89, %7 + br i1 %68, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + +69: ; preds = %60 + %70 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %71 = load i8, ptr %70, align 8, !tbaa !35, !range !87, !noundef !88 + %72 = icmp ugt i8 %71, %.sroa.5.8.extract.trunc36 + br i1 %72, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + +73: ; preds = %60 + %74 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %75 = load double, ptr %74, align 8, !tbaa !35 + %.fr88 = freeze double %75 + %76 = fcmp ogt double %.fr88, %16 + br i1 %76, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + +77: ; preds = %60, %60 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.us-phi, i64 48 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8, !tbaa !89 %.sroa.speculated.i.i.i = tail call i64 @llvm.umin.i64(i64 %.sroa.2.0.copyload.i, i64 %2) - %79 = icmp eq i64 %.sroa.speculated.i.i.i, 0 - br i1 %79, label %.thread.i.i.i, label %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i - -_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i: ; preds = %78 - %80 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %.sroa.0.0.copyload.i = load ptr, ptr %80, align 8, !tbaa !90 - %81 = tail call i32 @memcmp(ptr noundef %.fr83, ptr noundef %.sroa.0.0.copyload.i, i64 noundef %.sroa.speculated.i.i.i) #20 - %.fr.i.i.i = freeze i32 %81 + %78 = icmp eq i64 %.sroa.speculated.i.i.i, 0 + br i1 %78, label %.thread.i.i.i, label %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i + +_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i: ; preds = %77 + %79 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %.sroa.0.0.copyload.i = load ptr, ptr %79, align 8, !tbaa !90 + %80 = tail call i32 @memcmp(ptr noundef %.fr82, ptr noundef %.sroa.0.0.copyload.i, i64 noundef %.sroa.speculated.i.i.i) #20 + %.fr.i.i.i = freeze i32 %80 %.not.not.i.i.i = icmp eq i32 %.fr.i.i.i, 0 br i1 %.not.not.i.i.i, label %.thread.i.i.i, label %_ZN4llvmltENS_9StringRefES0_.exit.i -.thread.i.i.i: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i, %78 - %82 = icmp ult i64 %2, %.sroa.2.0.copyload.i - br i1 %82, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit +.thread.i.i.i: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i, %77 + %81 = icmp ult i64 %2, %.sroa.2.0.copyload.i + br i1 %81, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit _ZN4llvmltENS_9StringRefES0_.exit.i: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i - %83 = icmp slt i32 %.fr.i.i.i, 0 - br i1 %83, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + %82 = icmp slt i32 %.fr.i.i.i, 0 + br i1 %82, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit -84: ; preds = %61 +83: ; preds = %60 unreachable -_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit: ; preds = %60 - %85 = icmp ult i8 %.fr80, %.fr87 - %spec.select.i = or i1 %17, %85 +_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit: ; preds = %59 + %84 = icmp ult i8 %.fr80, %.fr87 + %spec.select.i = or i1 %15, %84 br i1 %spec.select.i, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit -_ZN4llvmltENS_9StringRefES0_.exit.i.thread75: ; preds = %.thread.i.i.i, %_ZN4llvmltENS_9StringRefES0_.exit.i, %74, %70, %66, %62, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit +_ZN4llvmltENS_9StringRefES0_.exit.i.thread75: ; preds = %.thread.i.i.i, %_ZN4llvmltENS_9StringRefES0_.exit.i, %73, %69, %65, %61, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit br label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit -_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit: ; preds = %.thread.i.i.i, %54, %61, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i, %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit, %62, %66, %70, %74, %_ZN4llvmltENS_9StringRefES0_.exit.i, %3, %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i - %.sroa.0.0.i.i.i = phi ptr [ %11, %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i ], [ %11, %3 ], [ %11, %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75 ], [ %.us-phi, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit ], [ %.us-phi, %62 ], [ %.us-phi, %66 ], [ %.us-phi, %70 ], [ %.us-phi, %74 ], [ %.us-phi, %_ZN4llvmltENS_9StringRefES0_.exit.i ], [ %.us-phi, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i ], [ %.us-phi, %61 ], [ %.us-phi, %54 ], [ %.us-phi, %.thread.i.i.i ] +_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit: ; preds = %.thread.i.i.i, %53, %60, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i, %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit, %61, %65, %69, %73, %_ZN4llvmltENS_9StringRefES0_.exit.i, %3, %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i + %.sroa.0.0.i.i.i = phi ptr [ %12, %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i ], [ %12, %3 ], [ %12, %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75 ], [ %.us-phi, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit ], [ %.us-phi, %61 ], [ %.us-phi, %65 ], [ %.us-phi, %69 ], [ %.us-phi, %73 ], [ %.us-phi, %_ZN4llvmltENS_9StringRefES0_.exit.i ], [ %.us-phi, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i ], [ %.us-phi, %60 ], [ %.us-phi, %53 ], [ %.us-phi, %.thread.i.i.i ] ret ptr %.sroa.0.0.i.i.i } diff --git a/bench/meshlab/optimized/edit_align.ll b/bench/meshlab/optimized/edit_align.ll index b4805538206..c5ae7dc544c 100644 --- a/bench/meshlab/optimized/edit_align.ll +++ b/bench/meshlab/optimized/edit_align.ll @@ -10821,28 +10821,28 @@ define linkonce_odr void @_ZN5Eigen8internal13trmv_selectorILi6ELi1EE3runINS_9Tr %31 = load ptr, ptr %2, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) - %.sroa.speculated136.i = tail call i64 @llvm.smin.i64(i64 %.sroa.251.0.copyload, i64 %.sroa.352.0.copyload) - %32 = icmp sgt i64 %.sroa.speculated136.i, 0 - br i1 %32, label %.lr.ph149.i, label %.loopexit + %.sroa.speculated137.i = tail call i64 @llvm.smin.i64(i64 %.sroa.251.0.copyload, i64 %.sroa.352.0.copyload) + %32 = icmp sgt i64 %.sroa.speculated137.i, 0 + br i1 %32, label %.lr.ph148.i, label %.loopexit -.lr.ph149.i: ; preds = %27 +.lr.ph148.i: ; preds = %27 %33 = getelementptr inbounds nuw i8, ptr %5, i64 8 %34 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %35 -35: ; preds = %.noexc, %.lr.ph149.i - %indvars.iv.i = phi i64 [ %.sroa.speculated136.i, %.lr.ph149.i ], [ %indvars.iv.next.i, %.noexc ] - %.0147.i = phi i64 [ 0, %.lr.ph149.i ], [ %116, %.noexc ] +35: ; preds = %.noexc, %.lr.ph148.i + %indvars.iv.i = phi i64 [ %.sroa.speculated137.i, %.lr.ph148.i ], [ %indvars.iv.next.i, %.noexc ] + %.0146.i = phi i64 [ 0, %.lr.ph148.i ], [ %116, %.noexc ] %36 = call i64 @llvm.smax.i64(i64 %indvars.iv.i, i64 1) %37 = call i64 @llvm.umin.i64(i64 %36, i64 8) - %38 = sub nsw i64 %.sroa.speculated136.i, %.0147.i + %38 = sub nsw i64 %.sroa.speculated137.i, %.0146.i %.sroa.speculated.i = call i64 @llvm.smin.i64(i64 %38, i64 8) %39 = icmp sgt i64 %38, 0 br i1 %39, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %35, %.lr.ph._crit_edge.i %.064145.i = phi i64 [ %107, %.lr.ph._crit_edge.i ], [ 0, %35 ] - %40 = add nuw nsw i64 %.064145.i, %.0147.i + %40 = add nuw nsw i64 %.064145.i, %.0146.i %41 = xor i64 %.064145.i, -1 %42 = add nsw i64 %.sroa.speculated.i, %41 %43 = icmp sgt i64 %42, 0 @@ -10966,27 +10966,27 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_ br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !303 ._crit_edge.i: ; preds = %.lr.ph._crit_edge.i, %35 - %108 = add i64 %.sroa.speculated.i, %.0147.i + %108 = add i64 %.sroa.speculated.i, %.0146.i %109 = sub i64 %.sroa.251.0.copyload, %108 %110 = icmp sgt i64 %109, 0 br i1 %110, label %111, label %.noexc 111: ; preds = %._crit_edge.i %112 = getelementptr double, ptr %.sroa.050.0.copyload, i64 %108 - %.idx54 = shl i64 %.0147.i, 5 + %.idx54 = shl i64 %.0146.i, 5 %113 = getelementptr i8, ptr %112, i64 %.idx54 store ptr %113, ptr %5, align 8 store i64 4, ptr %33, align 8 %114 = getelementptr inbounds double, ptr %29, i64 %108 store ptr %114, ptr %6, align 8 store i64 1, ptr %34, align 8 - %115 = getelementptr inbounds nuw double, ptr %31, i64 %.0147.i + %115 = getelementptr inbounds nuw double, ptr %31, i64 %.0146.i invoke void @_ZN5Eigen8internal29general_matrix_vector_productIldNS0_22const_blas_data_mapperIdlLi1EEELi1ELb0EdS3_Lb0ELi1EE3runEllRKS3_S6_Pdld(i64 noundef %.sroa.speculated.i, i64 noundef %109, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull %115, i64 noundef 1, double noundef %10) to label %.noexc unwind label %118 .noexc: ; preds = %111, %._crit_edge.i - %116 = add nuw nsw i64 %.0147.i, 8 - %117 = icmp slt i64 %116, %.sroa.speculated136.i + %116 = add nuw nsw i64 %.0146.i, 8 + %117 = icmp slt i64 %116, %.sroa.speculated137.i %indvars.iv.next.i = add i64 %indvars.iv.i, -8 br i1 %117, label %35, label %.loopexit, !llvm.loop !304 diff --git a/bench/meshlab/optimized/miniz.ll b/bench/meshlab/optimized/miniz.ll index f13c90b49ee..7aae0a86fa7 100644 --- a/bench/meshlab/optimized/miniz.ll +++ b/bench/meshlab/optimized/miniz.ll @@ -11509,8 +11509,8 @@ define range(i32 0, 2) i32 @mz_zip_validate_file(ptr noundef captures(address_is 110: ; preds = %98 %111 = call i16 @llvm.umax.i16(i16 %79, i16 %81) - %.not320 = icmp eq i16 %111, 0 - br i1 %.not320, label %.critedge278, label %112 + %.not318 = icmp eq i16 %111, 0 + br i1 %.not318, label %.critedge278, label %112 112: ; preds = %110 %113 = zext i16 %111 to i64 @@ -11645,23 +11645,23 @@ define range(i32 0, 2) i32 @mz_zip_validate_file(ptr noundef captures(address_is %.sroa.gep.sroa.gep296.val = load i32, ptr %.sroa.gep.sroa.gep296, align 8 %180 = select i1 %176, i32 %.sroa.gep.sroa.gep296.val, i32 %.sroa.gep.val %181 = zext i32 %180 to i64 - %.sroa.gep335 = getelementptr inbounds nuw i8, ptr %8, i64 12 - %.sroa.gep335.val = load i32, ptr %.sroa.gep335, align 4 - %182 = select i1 %176, i32 %.sroa.gep335.val, i32 %.sroa.gep.sroa.gep296.val + %.sroa.gep333 = getelementptr inbounds nuw i8, ptr %8, i64 12 + %.sroa.gep333.val = load i32, ptr %.sroa.gep333, align 4 + %182 = select i1 %176, i32 %.sroa.gep333.val, i32 %.sroa.gep.sroa.gep296.val %183 = zext i32 %182 to i64 br i1 %or.cond14, label %184, label %193 184: ; preds = %174 %185 = shl nuw i64 %183, 32 %186 = or disjoint i64 %185, %181 - %.sroa.gep337 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %.sroa.gep337.val = load i32, ptr %.sroa.gep337, align 16 - %.sroa.gep335.val355 = load i32, ptr %.sroa.gep335, align 4 - %187 = select i1 %176, i32 %.sroa.gep337.val, i32 %.sroa.gep335.val355 + %.sroa.gep335 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %.sroa.gep335.val = load i32, ptr %.sroa.gep335, align 16 + %.sroa.gep333.val353 = load i32, ptr %.sroa.gep333, align 4 + %187 = select i1 %176, i32 %.sroa.gep335.val, i32 %.sroa.gep333.val353 %188 = zext i32 %187 to i64 - %.sroa.gep339 = getelementptr inbounds nuw i8, ptr %8, i64 20 - %.sroa.gep339.val = load i32, ptr %.sroa.gep339, align 4 - %189 = select i1 %176, i32 %.sroa.gep339.val, i32 %.sroa.gep337.val + %.sroa.gep337 = getelementptr inbounds nuw i8, ptr %8, i64 20 + %.sroa.gep337.val = load i32, ptr %.sroa.gep337, align 4 + %189 = select i1 %176, i32 %.sroa.gep337.val, i32 %.sroa.gep335.val %190 = zext i32 %189 to i64 %191 = shl nuw i64 %190, 32 %192 = or disjoint i64 %191, %188 @@ -15996,7 +15996,7 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 %137 = add i64 %107, %136 %138 = call i64 %134(ptr noundef %135, i64 noundef %137, ptr noundef nonnull %132, i64 noundef %127) #32 %.not788 = icmp eq i64 %138, %127 - br i1 %.not788, label %.preheader934, label %141 + br i1 %.not788, label %.preheader929, label %141 139: ; preds = %126 %140 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -16012,13 +16012,13 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 store i32 20, ptr %145, align 4 br label %.critedge -.preheader934: ; preds = %.critedge831, %173 +.preheader929: ; preds = %.critedge831, %173 %.0723 = phi ptr [ %175, %173 ], [ %132, %.critedge831 ] %.0722 = phi i32 [ %176, %173 ], [ %113, %.critedge831 ] %146 = icmp ult i32 %.0722, 4 br i1 %146, label %147, label %152 -147: ; preds = %.preheader934 +147: ; preds = %.preheader929 %148 = getelementptr inbounds nuw i8, ptr %0, i64 48 %149 = load ptr, ptr %148, align 8 %150 = load ptr, ptr %130, align 8 @@ -16027,7 +16027,7 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 store i32 9, ptr %151, align 4 br label %.critedge -152: ; preds = %.preheader934 +152: ; preds = %.preheader929 %153 = getelementptr inbounds nuw i8, ptr %.0723, i64 2 %154 = load i16, ptr %153, align 2 %155 = zext i16 %154 to i32 @@ -16067,7 +16067,7 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 %175 = getelementptr inbounds nuw i8, ptr %.0723, i64 %174 %176 = sub i32 %.0722, %156 %.not789 = icmp eq i32 %176, 0 - br i1 %.not789, label %.loopexit, label %.preheader934 + br i1 %.not789, label %.loopexit, label %.preheader929 .loopexit: ; preds = %173, %166 %177 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -16132,8 +16132,8 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 .preheader: ; preds = %205 %214 = add i64 %197, 30 - %.not793945 = icmp eq i64 %118, 0 - br i1 %.not793945, label %240, label %.lr.ph + %.not793940 = icmp eq i64 %118, 0 + br i1 %.not793940, label %240, label %.lr.ph 215: ; preds = %205 %216 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -16141,13 +16141,13 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 br label %.critedge .lr.ph: ; preds = %.preheader, %235 - %.0729948 = phi i64 [ %237, %235 ], [ %214, %.preheader ] - %.0731947 = phi i64 [ %236, %235 ], [ %107, %.preheader ] - %.0732946 = phi i64 [ %238, %235 ], [ %118, %.preheader ] - %217 = call i64 @llvm.umin.i64(i64 %.0732946, i64 65536) + %.0729943 = phi i64 [ %237, %235 ], [ %214, %.preheader ] + %.0731942 = phi i64 [ %236, %235 ], [ %107, %.preheader ] + %.0732941 = phi i64 [ %238, %235 ], [ %118, %.preheader ] + %217 = call i64 @llvm.umin.i64(i64 %.0732941, i64 65536) %218 = load ptr, ptr %16, align 8 %219 = load ptr, ptr %97, align 8 - %220 = call i64 %218(ptr noundef %219, i64 noundef %.0731947, ptr noundef %212, i64 noundef %217) #32 + %220 = call i64 %218(ptr noundef %219, i64 noundef %.0731942, ptr noundef %212, i64 noundef %217) #32 %.not828 = icmp eq i64 %220, %217 br i1 %.not828, label %226, label %221 @@ -16163,7 +16163,7 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 226: ; preds = %.lr.ph %227 = load ptr, ptr %198, align 8 %228 = load ptr, ptr %200, align 8 - %229 = call i64 %227(ptr noundef %228, i64 noundef %.0729948, ptr noundef %212, i64 noundef %217) #32 + %229 = call i64 %227(ptr noundef %228, i64 noundef %.0729943, ptr noundef %212, i64 noundef %217) #32 %.not829 = icmp eq i64 %229, %217 br i1 %.not829, label %235, label %230 @@ -16177,9 +16177,9 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 br label %.critedge 235: ; preds = %226 - %236 = add i64 %.0731947, %217 - %237 = add i64 %.0729948, %217 - %238 = sub i64 %.0732946, %217 + %236 = add i64 %.0731942, %217 + %237 = add i64 %.0729943, %217 + %238 = sub i64 %.0732941, %217 %.not793 = icmp eq i64 %238, 0 br i1 %.not793, label %._crit_edge, label %.lr.ph @@ -16327,8 +16327,8 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 %316 = getelementptr inbounds nuw i8, ptr %7, i64 48 %.20..20..20..20..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 20 store i64 -1, ptr %.20..20..20..20..sroa_idx, align 4 - %.42..42..42..42..sroa_idx1024 = getelementptr inbounds nuw i8, ptr %6, i64 42 - store i32 -1, ptr %.42..42..42..42..sroa_idx1024, align 2 + %.42..42..42..42..sroa_idx1019 = getelementptr inbounds nuw i8, ptr %6, i64 42 + store i32 -1, ptr %.42..42..42..42..sroa_idx1019, align 2 %.val853 = load i64, ptr %316, align 8 %317 = call fastcc i32 @mz_zip_writer_update_zip64_extension_block(ptr noundef %8, ptr noundef %0, ptr noundef %314, i32 noundef %57, i64 %117, i64 %.val853, i64 %197) %.not807 = icmp eq i32 %317, 0 diff --git a/bench/meshlab/optimized/shell.ll b/bench/meshlab/optimized/shell.ll index d12ff3979c8..9a8f4be0ffb 100644 --- a/bench/meshlab/optimized/shell.ll +++ b/bench/meshlab/optimized/shell.ll @@ -824,9 +824,9 @@ _ZL5BuildR4MeshR9FaceGroup.exit: ; preds = %60, %62 %136 = getelementptr inbounds nuw i8, ptr %117, i64 8 br label %137 -137: ; preds = %.lr.ph169, %346 - %.054167 = phi double [ 0.000000e+00, %.lr.ph169 ], [ %342, %346 ] - %.sroa.0145.0166 = phi ptr [ %111, %.lr.ph169 ], [ %376, %346 ] +137: ; preds = %.lr.ph169, %343 + %.054167 = phi double [ 0.000000e+00, %.lr.ph169 ], [ %339, %343 ] + %.sroa.0145.0166 = phi ptr [ %111, %.lr.ph169 ], [ %373, %343 ] %138 = load ptr, ptr %120, align 8 %139 = load ptr, ptr %138, align 8 %140 = ptrtoint ptr %.sroa.0145.0166 to i64 @@ -877,7 +877,7 @@ _ZL5BuildR4MeshR9FaceGroup.exit: ; preds = %60, %62 %183 = fmul double %2, %164 %184 = fmul double %2, %168 %185 = fmul double %2, %171 - br label %316 + br label %313 186: ; preds = %137 %187 = getelementptr inbounds nuw i8, ptr %149, i64 8 @@ -973,8 +973,8 @@ _Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit: ; preds %253 = fmul double %.024.i, %252 %254 = call double @sin(double noundef %.0.i) #27 %255 = fmul double %.024.i, %254 - %.sroa.0.0.vec.insert202 = insertelement <2 x double> poison, double %162, i64 0 - %.sroa.0.8.vec.insert = insertelement <2 x double> %.sroa.0.0.vec.insert202, double %167, i64 1 + %.sroa.0.0.vec.insert205 = insertelement <2 x double> poison, double %162, i64 0 + %.sroa.0.8.vec.insert = insertelement <2 x double> %.sroa.0.0.vec.insert205, double %167, i64 1 %.sroa.5.16.vec.insert = insertelement <2 x double> poison, double %169, i64 0 %.sroa.5.24.vec.insert = insertelement <2 x double> %.sroa.5.16.vec.insert, double %172, i64 1 %256 = fneg double %253 @@ -983,181 +983,181 @@ _Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit: ; preds %259 = fdiv double 1.000000e+00, %258 %260 = fmul double %255, %259 %261 = fmul double %259, -0.000000e+00 + %.sroa.2.i.i.i.i.i.i.i.i.i.sroa.0.0.vec.insert = insertelement <1 x double> poison, double %261, i64 0 %262 = fmul double %259, %256 + %.sroa.2.i.i.i.i.i.i.i.i.i.sroa.4.8.vec.insert = insertelement <1 x double> poison, double %262, i64 0 %263 = fmul double %.025.i, %259 + %.sroa.2.i.i.i.i.i.i.i.i.i.sroa.6.16.vec.insert = insertelement <1 x double> poison, double %263, i64 0 %264 = insertelement <2 x double> poison, double %260, i64 0 %265 = shufflevector <2 x double> %264, <2 x double> poison, <2 x i32> zeroinitializer %266 = fmul <2 x double> %265, %.sroa.0.8.vec.insert - %267 = insertelement <1 x double> poison, double %261, i64 0 - %268 = shufflevector <1 x double> %267, <1 x double> poison, <2 x i32> zeroinitializer - %269 = fmul <2 x double> %.sroa.5.24.vec.insert, %268 - %270 = fadd <2 x double> %266, %269 - store <2 x double> %270, ptr %5, align 16, !alias.scope !14 - %271 = insertelement <1 x double> poison, double %262, i64 0 - %272 = shufflevector <1 x double> %271, <1 x double> poison, <2 x i32> zeroinitializer - %273 = fmul <2 x double> %.sroa.0.8.vec.insert, %272 - %274 = insertelement <1 x double> poison, double %263, i64 0 - %275 = shufflevector <1 x double> %274, <1 x double> poison, <2 x i32> zeroinitializer - %276 = fmul <2 x double> %.sroa.5.24.vec.insert, %275 - %277 = fadd <2 x double> %273, %276 - store <2 x double> %277, ptr %123, align 16, !alias.scope !14 + %267 = shufflevector <1 x double> %.sroa.2.i.i.i.i.i.i.i.i.i.sroa.0.0.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %268 = fmul <2 x double> %.sroa.5.24.vec.insert, %267 + %269 = fadd <2 x double> %266, %268 + store <2 x double> %269, ptr %5, align 16, !alias.scope !14 + %270 = shufflevector <1 x double> %.sroa.2.i.i.i.i.i.i.i.i.i.sroa.4.8.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %271 = fmul <2 x double> %.sroa.0.8.vec.insert, %270 + %272 = shufflevector <1 x double> %.sroa.2.i.i.i.i.i.i.i.i.i.sroa.6.16.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer + %273 = fmul <2 x double> %.sroa.5.24.vec.insert, %272 + %274 = fadd <2 x double> %271, %273 + store <2 x double> %274, ptr %123, align 16, !alias.scope !14 store i32 0, ptr %125, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(11) %124, i8 0, i64 11, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %126, i8 -1, i64 16, i1 false) store i64 0, ptr %127, align 8 - %278 = call noundef nonnull align 16 dereferenceable(224) ptr @_ZN5Eigen9JacobiSVDINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi2EE7computeERKS2_j(ptr noundef nonnull align 16 dereferenceable(224) %6, ptr noundef nonnull align 16 dereferenceable(32) %5, i32 noundef 20) - %279 = load <2 x double>, ptr %131, align 16 - %.sroa.092.0.vec.extract = extractelement <2 x double> %279, i64 0 - %.sroa.092.8.vec.extract = extractelement <2 x double> %279, i64 1 - %280 = fcmp ult double %.sroa.092.0.vec.extract, %.sroa.092.8.vec.extract - br i1 %280, label %281, label %282 - -281: ; preds = %_Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit + %275 = call noundef nonnull align 16 dereferenceable(224) ptr @_ZN5Eigen9JacobiSVDINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi2EE7computeERKS2_j(ptr noundef nonnull align 16 dereferenceable(224) %6, ptr noundef nonnull align 16 dereferenceable(32) %5, i32 noundef 20) + %276 = load <2 x double>, ptr %131, align 16 + %.sroa.092.0.vec.extract = extractelement <2 x double> %276, i64 0 + %.sroa.092.8.vec.extract = extractelement <2 x double> %276, i64 1 + %277 = fcmp ult double %.sroa.092.0.vec.extract, %.sroa.092.8.vec.extract + br i1 %277, label %278, label %279 + +278: ; preds = %_Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit call void @_Z11ensure_failPKcS0_j(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, i32 noundef 108) #26 unreachable -282: ; preds = %_Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit - %283 = load <2 x double>, ptr %130, align 16 - %284 = load <2 x double>, ptr %129, align 16 - %285 = load <2 x double>, ptr %128, align 16 - %286 = load <2 x double>, ptr %6, align 16 - %287 = fmul double %2, %.sroa.092.0.vec.extract - %288 = fcmp olt double %.sroa.092.8.vec.extract, %287 - %289 = select i1 %288, double %.sroa.092.8.vec.extract, double %287 - %290 = insertelement <2 x double> poison, double %287, i64 0 - %291 = shufflevector <2 x double> %290, <2 x double> poison, <2 x i32> zeroinitializer - %292 = fmul <2 x double> %286, %291 - %293 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> zeroinitializer - %294 = fmul <2 x double> %292, %293 - %295 = insertelement <2 x double> poison, double %289, i64 0 - %296 = shufflevector <2 x double> %295, <2 x double> poison, <2 x i32> zeroinitializer - %297 = fmul <2 x double> %285, %296 - %298 = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> zeroinitializer - %299 = fmul <2 x double> %297, %298 - %300 = fadd <2 x double> %294, %299 - %301 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> - %302 = fmul <2 x double> %292, %301 - %303 = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> - %304 = fmul <2 x double> %297, %303 - %305 = fadd <2 x double> %302, %304 +279: ; preds = %_Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit + %280 = load <2 x double>, ptr %130, align 16 + %281 = load <2 x double>, ptr %129, align 16 + %282 = load <2 x double>, ptr %128, align 16 + %283 = load <2 x double>, ptr %6, align 16 + %284 = fmul double %2, %.sroa.092.0.vec.extract + %285 = fcmp olt double %.sroa.092.8.vec.extract, %284 + %286 = select i1 %285, double %.sroa.092.8.vec.extract, double %284 + %287 = insertelement <2 x double> poison, double %284, i64 0 + %288 = shufflevector <2 x double> %287, <2 x double> poison, <2 x i32> zeroinitializer + %289 = fmul <2 x double> %283, %288 + %290 = shufflevector <2 x double> %281, <2 x double> poison, <2 x i32> zeroinitializer + %291 = fmul <2 x double> %289, %290 + %292 = insertelement <2 x double> poison, double %286, i64 0 + %293 = shufflevector <2 x double> %292, <2 x double> poison, <2 x i32> zeroinitializer + %294 = fmul <2 x double> %282, %293 + %295 = shufflevector <2 x double> %280, <2 x double> poison, <2 x i32> zeroinitializer + %296 = fmul <2 x double> %294, %295 + %297 = fadd <2 x double> %291, %296 + %298 = shufflevector <2 x double> %281, <2 x double> poison, <2 x i32> + %299 = fmul <2 x double> %289, %298 + %300 = shufflevector <2 x double> %280, <2 x double> poison, <2 x i32> + %301 = fmul <2 x double> %294, %300 + %302 = fadd <2 x double> %299, %301 %.sroa.0173.8.vec.insert = insertelement <2 x double> poison, double %.025.i, i64 0 - %306 = shufflevector <2 x double> %.sroa.0173.8.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer - %307 = fmul <2 x double> %300, %306 - %308 = fmul <2 x double> %305, zeroinitializer - %309 = fadd <2 x double> %307, %308 + %303 = shufflevector <2 x double> %.sroa.0173.8.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer + %304 = fmul <2 x double> %297, %303 + %305 = fmul <2 x double> %302, zeroinitializer + %306 = fadd <2 x double> %304, %305 %.sroa.0.0.vec.insert = insertelement <2 x double> poison, double %253, i64 0 - %310 = shufflevector <2 x double> %.sroa.0.0.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer - %311 = fmul <2 x double> %300, %310 - %312 = insertelement <2 x double> poison, double %255, i64 0 - %313 = shufflevector <2 x double> %312, <2 x double> poison, <2 x i32> zeroinitializer - %314 = fmul <2 x double> %305, %313 - %315 = fadd <2 x double> %311, %314 - %.sroa.084.0.vec.extract = extractelement <2 x double> %309, i64 0 - %.sroa.084.8.vec.extract = extractelement <2 x double> %309, i64 1 - %.sroa.081.0.vec.extract = extractelement <2 x double> %315, i64 0 - %.sroa.081.8.vec.extract = extractelement <2 x double> %315, i64 1 - br label %316 - -316: ; preds = %282, %179 - %.sroa.0140.0 = phi double [ %180, %179 ], [ 0.000000e+00, %282 ] - %.sroa.5.0 = phi double [ %181, %179 ], [ 0.000000e+00, %282 ] - %.sroa.9.0 = phi double [ %132, %179 ], [ 0.000000e+00, %282 ] - %.sroa.13.0 = phi double [ %182, %179 ], [ %.sroa.084.0.vec.extract, %282 ] - %.sroa.16.0 = phi double [ %183, %179 ], [ %.sroa.084.8.vec.extract, %282 ] - %.sroa.22.0 = phi double [ %184, %179 ], [ %.sroa.081.0.vec.extract, %282 ] - %.sroa.25.0 = phi double [ %185, %179 ], [ %.sroa.081.8.vec.extract, %282 ] - %317 = load ptr, ptr %134, align 8 - %318 = load ptr, ptr %317, align 8 - %319 = ptrtoint ptr %318 to i64 - %320 = sub i64 %140, %319 - %321 = load ptr, ptr %133, align 8 - %322 = sdiv exact i64 %320, 3 - %323 = getelementptr inbounds i8, ptr %321, i64 %322 - store double %.sroa.0140.0, ptr %323, align 8 - %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 8 + %307 = shufflevector <2 x double> %.sroa.0.0.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer + %308 = fmul <2 x double> %297, %307 + %309 = insertelement <2 x double> poison, double %255, i64 0 + %310 = shufflevector <2 x double> %309, <2 x double> poison, <2 x i32> zeroinitializer + %311 = fmul <2 x double> %302, %310 + %312 = fadd <2 x double> %308, %311 + %.sroa.084.0.vec.extract = extractelement <2 x double> %306, i64 0 + %.sroa.084.8.vec.extract = extractelement <2 x double> %306, i64 1 + %.sroa.081.0.vec.extract = extractelement <2 x double> %312, i64 0 + %.sroa.081.8.vec.extract = extractelement <2 x double> %312, i64 1 + br label %313 + +313: ; preds = %279, %179 + %.sroa.0140.0 = phi double [ %180, %179 ], [ 0.000000e+00, %279 ] + %.sroa.5.0 = phi double [ %181, %179 ], [ 0.000000e+00, %279 ] + %.sroa.9.0 = phi double [ %132, %179 ], [ 0.000000e+00, %279 ] + %.sroa.13.0 = phi double [ %182, %179 ], [ %.sroa.084.0.vec.extract, %279 ] + %.sroa.16.0 = phi double [ %183, %179 ], [ %.sroa.084.8.vec.extract, %279 ] + %.sroa.22.0 = phi double [ %184, %179 ], [ %.sroa.081.0.vec.extract, %279 ] + %.sroa.25.0 = phi double [ %185, %179 ], [ %.sroa.081.8.vec.extract, %279 ] + %314 = load ptr, ptr %134, align 8 + %315 = load ptr, ptr %314, align 8 + %316 = ptrtoint ptr %315 to i64 + %317 = sub i64 %140, %316 + %318 = load ptr, ptr %133, align 8 + %319 = sdiv exact i64 %317, 3 + %320 = getelementptr inbounds i8, ptr %318, i64 %319 + store double %.sroa.0140.0, ptr %320, align 8 + %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 8 store double %.sroa.5.0, ptr %.sroa.5.0..sroa_idx, align 8 - %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 16 + %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 16 store double %.sroa.9.0, ptr %.sroa.9.0..sroa_idx, align 8 - %.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 24 + %.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 24 store double %.sroa.13.0, ptr %.sroa.13.0..sroa_idx, align 8 - %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 32 + %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 32 store double %.sroa.16.0, ptr %.sroa.16.0..sroa_idx, align 8 - %.sroa.19.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 40 + %.sroa.19.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 40 store double %.sroa.9.0, ptr %.sroa.19.0..sroa_idx, align 8 - %.sroa.22.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 48 + %.sroa.22.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 48 store double %.sroa.22.0, ptr %.sroa.22.0..sroa_idx, align 8 - %.sroa.25.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 56 + %.sroa.25.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 56 store double %.sroa.25.0, ptr %.sroa.25.0..sroa_idx, align 8 - %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 64 + %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 64 store double %.sroa.9.0, ptr %.sroa.28.0..sroa_idx, align 8 - %324 = fsub double %.sroa.13.0, %.sroa.0140.0 - %325 = fsub double %.sroa.16.0, %.sroa.5.0 - %326 = fsub double %.sroa.9.0, %.sroa.9.0 - %327 = fsub double %.sroa.22.0, %.sroa.0140.0 - %328 = fsub double %.sroa.25.0, %.sroa.5.0 - %329 = fneg double %328 - %330 = fmul double %326, %329 - %331 = call double @llvm.fmuladd.f64(double %325, double %326, double %330) - %332 = fneg double %326 - %333 = fmul double %324, %332 - %334 = call double @llvm.fmuladd.f64(double %326, double %327, double %333) - %335 = fneg double %327 - %336 = fmul double %325, %335 - %337 = call double @llvm.fmuladd.f64(double %324, double %328, double %336) - %338 = fmul double %334, %334 - %339 = call double @llvm.fmuladd.f64(double %331, double %331, double %338) - %340 = call double @llvm.fmuladd.f64(double %337, double %337, double %339) - %sqrt.i = call noundef double @llvm.sqrt.f64(double %340) - %341 = fmul double %sqrt.i, 5.000000e-01 - %342 = fadd double %.054167, %341 - %343 = call double @llvm.fabs.f64(double %342) - %344 = fcmp ueq double %343, 0x7FF0000000000000 - br i1 %344, label %345, label %346 - -345: ; preds = %316 + %321 = fsub double %.sroa.13.0, %.sroa.0140.0 + %322 = fsub double %.sroa.16.0, %.sroa.5.0 + %323 = fsub double %.sroa.9.0, %.sroa.9.0 + %324 = fsub double %.sroa.22.0, %.sroa.0140.0 + %325 = fsub double %.sroa.25.0, %.sroa.5.0 + %326 = fneg double %325 + %327 = fmul double %323, %326 + %328 = call double @llvm.fmuladd.f64(double %322, double %323, double %327) + %329 = fneg double %323 + %330 = fmul double %321, %329 + %331 = call double @llvm.fmuladd.f64(double %323, double %324, double %330) + %332 = fneg double %324 + %333 = fmul double %322, %332 + %334 = call double @llvm.fmuladd.f64(double %321, double %325, double %333) + %335 = fmul double %331, %331 + %336 = call double @llvm.fmuladd.f64(double %328, double %328, double %335) + %337 = call double @llvm.fmuladd.f64(double %334, double %334, double %336) + %sqrt.i = call noundef double @llvm.sqrt.f64(double %337) + %338 = fmul double %sqrt.i, 5.000000e-01 + %339 = fadd double %.054167, %338 + %340 = call double @llvm.fabs.f64(double %339) + %341 = fcmp ueq double %340, 0x7FF0000000000000 + br i1 %341, label %342, label %343 + +342: ; preds = %313 call void @_Z11ensure_failPKcS0_j(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.4, i32 noundef 130) #26 unreachable -346: ; preds = %316 - %347 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 8 - %348 = load ptr, ptr %347, align 8 - %349 = load ptr, ptr %136, align 8 - %350 = load ptr, ptr %349, align 8 - %351 = ptrtoint ptr %350 to i64 - %352 = sub i64 %140, %351 - %353 = load ptr, ptr %135, align 8 - %354 = sdiv exact i64 %352, 3 - %355 = getelementptr inbounds i8, ptr %353, i64 %354 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %355, ptr noundef nonnull align 8 dereferenceable(24) %348, i64 24, i1 false) - %356 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 16 - %357 = load ptr, ptr %356, align 8 - %358 = load ptr, ptr %136, align 8 - %359 = load ptr, ptr %358, align 8 - %360 = ptrtoint ptr %359 to i64 - %361 = sub i64 %140, %360 - %362 = load ptr, ptr %135, align 8 - %363 = sdiv exact i64 %361, 3 - %364 = getelementptr inbounds i8, ptr %362, i64 %363 - %365 = getelementptr inbounds nuw i8, ptr %364, i64 24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %365, ptr noundef nonnull align 8 dereferenceable(24) %357, i64 24, i1 false) - %366 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 24 - %367 = load ptr, ptr %366, align 8 - %368 = load ptr, ptr %136, align 8 - %369 = load ptr, ptr %368, align 8 - %370 = ptrtoint ptr %369 to i64 - %371 = sub i64 %140, %370 - %372 = load ptr, ptr %135, align 8 - %373 = sdiv exact i64 %371, 3 - %374 = getelementptr inbounds i8, ptr %372, i64 %373 - %375 = getelementptr inbounds nuw i8, ptr %374, i64 48 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %375, ptr noundef nonnull align 8 dereferenceable(24) %367, i64 24, i1 false) - %376 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 216 - %.not = icmp eq ptr %376, %113 +343: ; preds = %313 + %344 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 8 + %345 = load ptr, ptr %344, align 8 + %346 = load ptr, ptr %136, align 8 + %347 = load ptr, ptr %346, align 8 + %348 = ptrtoint ptr %347 to i64 + %349 = sub i64 %140, %348 + %350 = load ptr, ptr %135, align 8 + %351 = sdiv exact i64 %349, 3 + %352 = getelementptr inbounds i8, ptr %350, i64 %351 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %352, ptr noundef nonnull align 8 dereferenceable(24) %345, i64 24, i1 false) + %353 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 16 + %354 = load ptr, ptr %353, align 8 + %355 = load ptr, ptr %136, align 8 + %356 = load ptr, ptr %355, align 8 + %357 = ptrtoint ptr %356 to i64 + %358 = sub i64 %140, %357 + %359 = load ptr, ptr %135, align 8 + %360 = sdiv exact i64 %358, 3 + %361 = getelementptr inbounds i8, ptr %359, i64 %360 + %362 = getelementptr inbounds nuw i8, ptr %361, i64 24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %362, ptr noundef nonnull align 8 dereferenceable(24) %354, i64 24, i1 false) + %363 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 24 + %364 = load ptr, ptr %363, align 8 + %365 = load ptr, ptr %136, align 8 + %366 = load ptr, ptr %365, align 8 + %367 = ptrtoint ptr %366 to i64 + %368 = sub i64 %140, %367 + %369 = load ptr, ptr %135, align 8 + %370 = sdiv exact i64 %368, 3 + %371 = getelementptr inbounds i8, ptr %369, i64 %370 + %372 = getelementptr inbounds nuw i8, ptr %371, i64 48 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %372, ptr noundef nonnull align 8 dereferenceable(24) %364, i64 24, i1 false) + %373 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 216 + %.not = icmp eq ptr %373, %113 br i1 %.not, label %._crit_edge170, label %137 -._crit_edge170: ; preds = %346, %._crit_edge - %377 = icmp eq i32 %59, 1 - ret i1 %377 +._crit_edge170: ; preds = %343, %._crit_edge + %374 = icmp eq i32 %59, 1 + ret i1 %374 } ; Function Attrs: mustprogress uwtable diff --git a/bench/nlohmann_json/optimized/diag_on.ll b/bench/nlohmann_json/optimized/diag_on.ll index cb0f34b9e20..003d0d6be64 100644 --- a/bench/nlohmann_json/optimized/diag_on.ll +++ b/bench/nlohmann_json/optimized/diag_on.ll @@ -7210,8 +7210,8 @@ _ZNSt10unique_ptrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEZN8nlohman 67: ; preds = %2 %68 = getelementptr inbounds nuw i8, ptr %1, i64 8 %69 = load i64, ptr %68, align 8, !tbaa !12 - %70 = inttoptr i64 %69 to ptr store i64 %69, ptr %5, align 8, !tbaa !12 + %70 = inttoptr i64 %69 to ptr br label %thread-pre-split 71: ; preds = %2 diff --git a/bench/nori/optimized/accel.ll b/bench/nori/optimized/accel.ll index eed86504566..efa33786b92 100644 --- a/bench/nori/optimized/accel.ll +++ b/bench/nori/optimized/accel.ll @@ -679,14 +679,17 @@ declare noundef zeroext i1 @_ZNK4nori4Mesh12rayIntersectEjRKNS_4TRayINS_6TPointI define linkonce_odr hidden void @_ZNK5Eigen10MatrixBaseINS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS1_IS4_KNS1_INS2_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIfEEKNS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEEEKNS_5BlockIKNSA_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEE10normalizedEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Matrix.95") align 8 %0, ptr noundef nonnull align 1 dereferenceable(1) %1) local_unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 36 %4 = load float, ptr %3, align 4 + %.sroa.0.i.i.i.i.i.i.sroa.0.0.vec.insert = insertelement <1 x float> poison, float %4, i64 0 %5 = getelementptr inbounds nuw i8, ptr %1, i64 40 %6 = load ptr, ptr %5, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 124 %8 = load float, ptr %7, align 4 + %.sroa.7.i.i.i.i.i.i.sroa.0.0.vec.insert = insertelement <1 x float> poison, float %8, i64 0 %9 = getelementptr inbounds nuw i8, ptr %1, i64 128 %10 = load ptr, ptr %9, align 8 %11 = getelementptr inbounds nuw i8, ptr %1, i64 220 %12 = load float, ptr %11, align 4 + %.sroa.14.i.i.i.i.i.i.sroa.0.0.vec.insert = insertelement <1 x float> poison, float %12, i64 0 %13 = getelementptr inbounds nuw i8, ptr %1, i64 224 %14 = load ptr, ptr %13, align 8 %15 = getelementptr inbounds nuw i8, ptr %1, i64 232 @@ -732,228 +735,225 @@ _ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit: ; preds = %23 br i1 %29, label %.lr.ph.i.preheader.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i.i .lr.ph.i.preheader.i.i.i.i.i.i: ; preds = %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit - %30 = insertelement <1 x float> poison, float %4, i64 0 - %31 = shufflevector <1 x float> %30, <1 x float> poison, <4 x i32> zeroinitializer - %32 = insertelement <1 x float> poison, float %8, i64 0 - %33 = shufflevector <1 x float> %32, <1 x float> poison, <4 x i32> zeroinitializer - %34 = insertelement <1 x float> poison, float %12, i64 0 - %35 = shufflevector <1 x float> %34, <1 x float> poison, <4 x i32> zeroinitializer + %30 = shufflevector <1 x float> %.sroa.0.i.i.i.i.i.i.sroa.0.0.vec.insert, <1 x float> poison, <4 x i32> zeroinitializer + %31 = shufflevector <1 x float> %.sroa.7.i.i.i.i.i.i.sroa.0.0.vec.insert, <1 x float> poison, <4 x i32> zeroinitializer + %32 = shufflevector <1 x float> %.sroa.14.i.i.i.i.i.i.sroa.0.0.vec.insert, <1 x float> poison, <4 x i32> zeroinitializer br label %.lr.ph.i.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i, %.lr.ph.i.preheader.i.i.i.i.i.i - %.011.i.i.i.i.i.i.i = phi i64 [ %48, %.lr.ph.i.i.i.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i.i.i.i ] - %36 = getelementptr inbounds nuw float, ptr %25, i64 %.011.i.i.i.i.i.i.i - %37 = getelementptr inbounds nuw float, ptr %6, i64 %.011.i.i.i.i.i.i.i + %.011.i.i.i.i.i.i.i = phi i64 [ %45, %.lr.ph.i.i.i.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i.i.i.i ] + %33 = getelementptr inbounds nuw float, ptr %25, i64 %.011.i.i.i.i.i.i.i + %34 = getelementptr inbounds nuw float, ptr %6, i64 %.011.i.i.i.i.i.i.i + %35 = load <4 x float>, ptr %34, align 1 + %36 = fmul <4 x float> %30, %35 + %37 = getelementptr inbounds nuw float, ptr %10, i64 %.011.i.i.i.i.i.i.i %38 = load <4 x float>, ptr %37, align 1 %39 = fmul <4 x float> %31, %38 - %40 = getelementptr inbounds nuw float, ptr %10, i64 %.011.i.i.i.i.i.i.i - %41 = load <4 x float>, ptr %40, align 1 - %42 = fmul <4 x float> %33, %41 - %43 = fadd <4 x float> %39, %42 - %44 = getelementptr inbounds nuw float, ptr %14, i64 %.011.i.i.i.i.i.i.i - %45 = load <4 x float>, ptr %44, align 1 - %46 = fmul <4 x float> %35, %45 - %47 = fadd <4 x float> %43, %46 - store <4 x float> %47, ptr %36, align 16 - %48 = add nuw nsw i64 %.011.i.i.i.i.i.i.i, 4 - %49 = icmp samesign ult i64 %48, %28 - br i1 %49, label %.lr.ph.i.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i.i, !llvm.loop !22 + %40 = fadd <4 x float> %36, %39 + %41 = getelementptr inbounds nuw float, ptr %14, i64 %.011.i.i.i.i.i.i.i + %42 = load <4 x float>, ptr %41, align 1 + %43 = fmul <4 x float> %32, %42 + %44 = fadd <4 x float> %40, %43 + store <4 x float> %44, ptr %33, align 16 + %45 = add nuw nsw i64 %.011.i.i.i.i.i.i.i, 4 + %46 = icmp samesign ult i64 %45, %28 + br i1 %46, label %.lr.ph.i.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i.i, !llvm.loop !22 ._crit_edge.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit.thread, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit - %50 = phi i64 [ %19, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit.thread ], [ %28, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit ], [ %28, %.lr.ph.i.i.i.i.i.i.i ] + %47 = phi i64 [ %19, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit.thread ], [ %28, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit ], [ %28, %.lr.ph.i.i.i.i.i.i.i ] %.sink.i23 = phi ptr [ null, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit.thread ], [ %25, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit ], [ %25, %.lr.ph.i.i.i.i.i.i.i ] - %51 = icmp slt i64 %50, %16 - br i1 %51, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit + %48 = icmp slt i64 %47, %16 + br i1 %48, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit .lr.ph.i.i.i.i.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i - %.05.i.i.i.i.i.i.i.i = phi i64 [ %64, %.lr.ph.i.i.i.i.i.i.i.i ], [ %50, %._crit_edge.i.i.i.i.i.i.i ] - %52 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05.i.i.i.i.i.i.i.i - %53 = getelementptr inbounds float, ptr %6, i64 %.05.i.i.i.i.i.i.i.i + %.05.i.i.i.i.i.i.i.i = phi i64 [ %61, %.lr.ph.i.i.i.i.i.i.i.i ], [ %47, %._crit_edge.i.i.i.i.i.i.i ] + %49 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05.i.i.i.i.i.i.i.i + %50 = getelementptr inbounds float, ptr %6, i64 %.05.i.i.i.i.i.i.i.i + %51 = load float, ptr %50, align 4 + %52 = fmul float %4, %51 + %53 = getelementptr inbounds float, ptr %10, i64 %.05.i.i.i.i.i.i.i.i %54 = load float, ptr %53, align 4 - %55 = fmul float %4, %54 - %56 = getelementptr inbounds float, ptr %10, i64 %.05.i.i.i.i.i.i.i.i - %57 = load float, ptr %56, align 4 - %58 = fmul float %8, %57 - %59 = fadd float %55, %58 - %60 = getelementptr inbounds float, ptr %14, i64 %.05.i.i.i.i.i.i.i.i - %61 = load float, ptr %60, align 4 - %62 = fmul float %12, %61 - %63 = fadd float %59, %62 - store float %63, ptr %52, align 4 - %64 = add nsw i64 %.05.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %64, %16 + %55 = fmul float %8, %54 + %56 = fadd float %52, %55 + %57 = getelementptr inbounds float, ptr %14, i64 %.05.i.i.i.i.i.i.i.i + %58 = load float, ptr %57, align 4 + %59 = fmul float %12, %58 + %60 = fadd float %56, %59 + store float %60, ptr %49, align 4 + %61 = add nsw i64 %.05.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %61, %16 br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit, label %.lr.ph.i.i.i.i.i.i.i.i, !llvm.loop !23 _ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i.i - %65 = sdiv i64 %16, 8 - %66 = shl nsw i64 %65, 3 - %67 = sdiv i64 %16, 4 - %68 = shl nsw i64 %67, 2 + %62 = sdiv i64 %16, 8 + %63 = shl nsw i64 %62, 3 + %64 = sdiv i64 %16, 4 + %65 = shl nsw i64 %64, 2 %.off.i.i.i.i = add nsw i64 %16, 3 %.not.i.i.i.i = icmp ult i64 %.off.i.i.i.i, 7 - br i1 %.not.i.i.i.i, label %105, label %69 - -69: ; preds = %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit - %70 = load <4 x float>, ptr %.sink.i23, align 16 - %71 = fmul <4 x float> %70, %70 - %72 = icmp sgt i64 %16, 7 - br i1 %72, label %73, label %95 - -73: ; preds = %69 - %74 = getelementptr inbounds nuw i8, ptr %.sink.i23, i64 16 - %75 = load <4 x float>, ptr %74, align 16 - %76 = fmul <4 x float> %75, %75 - %77 = icmp samesign ugt i64 %16, 15 - br i1 %77, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i - -.lr.ph.i.i.i.i: ; preds = %73, %.lr.ph.i.i.i.i - %.05478.i.i.i.i = phi i64 [ %.054.i.i.i.i, %.lr.ph.i.i.i.i ], [ 8, %73 ] - %.054.in77.i.i.i.i = phi i64 [ %.05478.i.i.i.i, %.lr.ph.i.i.i.i ], [ 0, %73 ] - %storemerge76.i.i.i.i = phi <4 x float> [ %86, %.lr.ph.i.i.i.i ], [ %76, %73 ] - %.17375.i.i.i.i = phi <4 x float> [ %81, %.lr.ph.i.i.i.i ], [ %71, %73 ] - %78 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.05478.i.i.i.i - %79 = load <4 x float>, ptr %78, align 16 - %80 = fmul <4 x float> %79, %79 - %81 = fadd <4 x float> %.17375.i.i.i.i, %80 - %82 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.054.in77.i.i.i.i - %83 = getelementptr inbounds nuw i8, ptr %82, i64 48 - %84 = load <4 x float>, ptr %83, align 16 - %85 = fmul <4 x float> %84, %84 - %86 = fadd <4 x float> %storemerge76.i.i.i.i, %85 + br i1 %.not.i.i.i.i, label %102, label %66 + +66: ; preds = %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit + %67 = load <4 x float>, ptr %.sink.i23, align 16 + %68 = fmul <4 x float> %67, %67 + %69 = icmp sgt i64 %16, 7 + br i1 %69, label %70, label %92 + +70: ; preds = %66 + %71 = getelementptr inbounds nuw i8, ptr %.sink.i23, i64 16 + %72 = load <4 x float>, ptr %71, align 16 + %73 = fmul <4 x float> %72, %72 + %74 = icmp samesign ugt i64 %16, 15 + br i1 %74, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i + +.lr.ph.i.i.i.i: ; preds = %70, %.lr.ph.i.i.i.i + %.05478.i.i.i.i = phi i64 [ %.054.i.i.i.i, %.lr.ph.i.i.i.i ], [ 8, %70 ] + %.054.in77.i.i.i.i = phi i64 [ %.05478.i.i.i.i, %.lr.ph.i.i.i.i ], [ 0, %70 ] + %storemerge76.i.i.i.i = phi <4 x float> [ %83, %.lr.ph.i.i.i.i ], [ %73, %70 ] + %.17375.i.i.i.i = phi <4 x float> [ %78, %.lr.ph.i.i.i.i ], [ %68, %70 ] + %75 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.05478.i.i.i.i + %76 = load <4 x float>, ptr %75, align 16 + %77 = fmul <4 x float> %76, %76 + %78 = fadd <4 x float> %.17375.i.i.i.i, %77 + %79 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.054.in77.i.i.i.i + %80 = getelementptr inbounds nuw i8, ptr %79, i64 48 + %81 = load <4 x float>, ptr %80, align 16 + %82 = fmul <4 x float> %81, %81 + %83 = fadd <4 x float> %storemerge76.i.i.i.i, %82 %.054.i.i.i.i = add nuw nsw i64 %.05478.i.i.i.i, 8 - %87 = icmp slt i64 %.054.i.i.i.i, %66 - br i1 %87, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i, !llvm.loop !24 - -._crit_edge.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %73 - %.173.lcssa.i.i.i.i = phi <4 x float> [ %71, %73 ], [ %81, %.lr.ph.i.i.i.i ] - %storemerge.lcssa.i.i.i.i = phi <4 x float> [ %76, %73 ], [ %86, %.lr.ph.i.i.i.i ] - %88 = fadd <4 x float> %.173.lcssa.i.i.i.i, %storemerge.lcssa.i.i.i.i - %89 = icmp sgt i64 %68, %66 - br i1 %89, label %90, label %95 - -90: ; preds = %._crit_edge.i.i.i.i - %91 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %66 - %92 = load <4 x float>, ptr %91, align 16 - %93 = fmul <4 x float> %92, %92 - %94 = fadd <4 x float> %88, %93 - br label %95 - -95: ; preds = %90, %._crit_edge.i.i.i.i, %69 - %.072.i.i.i.i = phi <4 x float> [ %94, %90 ], [ %88, %._crit_edge.i.i.i.i ], [ %71, %69 ] - %96 = shufflevector <4 x float> %.072.i.i.i.i, <4 x float> poison, <4 x i32> - %97 = fadd <4 x float> %.072.i.i.i.i, %96 - %shift = shufflevector <4 x float> %97, <4 x float> poison, <4 x i32> - %foldExtExtBinop = fadd <4 x float> %97, %shift - %98 = extractelement <4 x float> %foldExtExtBinop, i64 0 - %99 = icmp slt i64 %68, %16 - br i1 %99, label %.lr.ph83.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - -.lr.ph83.i.i.i.i: ; preds = %95, %.lr.ph83.i.i.i.i - %.05281.i.i.i.i = phi i64 [ %104, %.lr.ph83.i.i.i.i ], [ %68, %95 ] - %.180.i.i.i.i = phi float [ %103, %.lr.ph83.i.i.i.i ], [ %98, %95 ] - %100 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05281.i.i.i.i - %101 = load float, ptr %100, align 4 - %102 = fmul float %101, %101 - %103 = fadd float %.180.i.i.i.i, %102 - %104 = add nsw i64 %.05281.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %104, %16 + %84 = icmp slt i64 %.054.i.i.i.i, %63 + br i1 %84, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i, !llvm.loop !24 + +._crit_edge.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %70 + %.173.lcssa.i.i.i.i = phi <4 x float> [ %68, %70 ], [ %78, %.lr.ph.i.i.i.i ] + %storemerge.lcssa.i.i.i.i = phi <4 x float> [ %73, %70 ], [ %83, %.lr.ph.i.i.i.i ] + %85 = fadd <4 x float> %.173.lcssa.i.i.i.i, %storemerge.lcssa.i.i.i.i + %86 = icmp sgt i64 %65, %63 + br i1 %86, label %87, label %92 + +87: ; preds = %._crit_edge.i.i.i.i + %88 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %63 + %89 = load <4 x float>, ptr %88, align 16 + %90 = fmul <4 x float> %89, %89 + %91 = fadd <4 x float> %85, %90 + br label %92 + +92: ; preds = %87, %._crit_edge.i.i.i.i, %66 + %.072.i.i.i.i = phi <4 x float> [ %91, %87 ], [ %85, %._crit_edge.i.i.i.i ], [ %68, %66 ] + %93 = shufflevector <4 x float> %.072.i.i.i.i, <4 x float> poison, <4 x i32> + %94 = fadd <4 x float> %.072.i.i.i.i, %93 + %shift = shufflevector <4 x float> %94, <4 x float> poison, <4 x i32> + %foldExtExtBinop = fadd <4 x float> %94, %shift + %95 = extractelement <4 x float> %foldExtExtBinop, i64 0 + %96 = icmp slt i64 %65, %16 + br i1 %96, label %.lr.ph83.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit + +.lr.ph83.i.i.i.i: ; preds = %92, %.lr.ph83.i.i.i.i + %.05281.i.i.i.i = phi i64 [ %101, %.lr.ph83.i.i.i.i ], [ %65, %92 ] + %.180.i.i.i.i = phi float [ %100, %.lr.ph83.i.i.i.i ], [ %95, %92 ] + %97 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05281.i.i.i.i + %98 = load float, ptr %97, align 4 + %99 = fmul float %98, %98 + %100 = fadd float %.180.i.i.i.i, %99 + %101 = add nsw i64 %.05281.i.i.i.i, 1 + %exitcond.not.i.i.i.i = icmp eq i64 %101, %16 br i1 %exitcond.not.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit, label %.lr.ph83.i.i.i.i, !llvm.loop !25 -105: ; preds = %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit - %106 = load float, ptr %.sink.i23, align 4 - %107 = fmul float %106, %106 - %108 = icmp sgt i64 %16, 1 - br i1 %108, label %.lr.ph88.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - -.lr.ph88.i.i.i.i: ; preds = %105, %.lr.ph88.i.i.i.i - %.086.i.i.i.i = phi i64 [ %113, %.lr.ph88.i.i.i.i ], [ 1, %105 ] - %.385.i.i.i.i = phi float [ %112, %.lr.ph88.i.i.i.i ], [ %107, %105 ] - %109 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.086.i.i.i.i - %110 = load float, ptr %109, align 4 - %111 = fmul float %110, %110 - %112 = fadd float %.385.i.i.i.i, %111 - %113 = add nuw nsw i64 %.086.i.i.i.i, 1 - %exitcond94.not.i.i.i.i = icmp eq i64 %113, %16 +102: ; preds = %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit + %103 = load float, ptr %.sink.i23, align 4 + %104 = fmul float %103, %103 + %105 = icmp sgt i64 %16, 1 + br i1 %105, label %.lr.ph88.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit + +.lr.ph88.i.i.i.i: ; preds = %102, %.lr.ph88.i.i.i.i + %.086.i.i.i.i = phi i64 [ %110, %.lr.ph88.i.i.i.i ], [ 1, %102 ] + %.385.i.i.i.i = phi float [ %109, %.lr.ph88.i.i.i.i ], [ %104, %102 ] + %106 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.086.i.i.i.i + %107 = load float, ptr %106, align 4 + %108 = fmul float %107, %107 + %109 = fadd float %.385.i.i.i.i, %108 + %110 = add nuw nsw i64 %.086.i.i.i.i, 1 + %exitcond94.not.i.i.i.i = icmp eq i64 %110, %16 br i1 %exitcond94.not.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit, label %.lr.ph88.i.i.i.i, !llvm.loop !26 -_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit: ; preds = %.lr.ph83.i.i.i.i, %.lr.ph88.i.i.i.i, %105, %95 - %.0.i.i = phi float [ %107, %105 ], [ %98, %95 ], [ %112, %.lr.ph88.i.i.i.i ], [ %103, %.lr.ph83.i.i.i.i ] - %114 = fcmp ogt float %.0.i.i, 0.000000e+00 - br i1 %114, label %115, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread +_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit: ; preds = %.lr.ph83.i.i.i.i, %.lr.ph88.i.i.i.i, %102, %92 + %.0.i.i = phi float [ %104, %102 ], [ %95, %92 ], [ %109, %.lr.ph88.i.i.i.i ], [ %100, %.lr.ph83.i.i.i.i ] + %111 = fcmp ogt float %.0.i.i, 0.000000e+00 + br i1 %111, label %112, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread -115: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - %116 = tail call float @llvm.sqrt.f32(float %.0.i.i) +112: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit + %113 = tail call float @llvm.sqrt.f32(float %.0.i.i) tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) invoke void @_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %16, i64 noundef %16, i64 noundef 1) to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i unwind label %.body -_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i: ; preds = %115 - %117 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %118 = load i64, ptr %117, align 8 - %.not.i.i.i.i.i.i = icmp eq i64 %118, %16 - br i1 %.not.i.i.i.i.i.i, label %119, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i +_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i: ; preds = %112 + %114 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %115 = load i64, ptr %114, align 8 + %.not.i.i.i.i.i.i = icmp eq i64 %115, %16 + br i1 %.not.i.i.i.i.i.i, label %116, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i _ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i invoke void @_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %16, i64 noundef %16, i64 noundef 1) to label %.noexc.i unwind label %.body .noexc.i: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i - %.pr.i.i.i.i.i = load i64, ptr %117, align 8 + %.pr.i.i.i.i.i = load i64, ptr %114, align 8 %.pre = sdiv i64 %.pr.i.i.i.i.i, 4 %.pre42 = shl nsw i64 %.pre, 2 - br label %119 - -119: ; preds = %.noexc.i, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i - %.pre-phi43 = phi i64 [ %.pre42, %.noexc.i ], [ %68, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i ] - %120 = phi i64 [ %.pr.i.i.i.i.i, %.noexc.i ], [ %16, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i ] - %121 = load ptr, ptr %0, align 8 - %122 = icmp sgt i64 %120, 3 - br i1 %122, label %.lr.ph.i.preheader.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i - -.lr.ph.i.preheader.i.i.i.i.i: ; preds = %119 - %123 = insertelement <4 x float> poison, float %116, i64 0 - %124 = shufflevector <4 x float> %123, <4 x float> poison, <4 x i32> zeroinitializer + br label %116 + +116: ; preds = %.noexc.i, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i + %.pre-phi43 = phi i64 [ %.pre42, %.noexc.i ], [ %65, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i ] + %117 = phi i64 [ %.pr.i.i.i.i.i, %.noexc.i ], [ %16, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i ] + %118 = load ptr, ptr %0, align 8 + %119 = icmp sgt i64 %117, 3 + br i1 %119, label %.lr.ph.i.preheader.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i + +.lr.ph.i.preheader.i.i.i.i.i: ; preds = %116 + %120 = insertelement <4 x float> poison, float %113, i64 0 + %121 = shufflevector <4 x float> %120, <4 x float> poison, <4 x i32> zeroinitializer br label %.lr.ph.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %.lr.ph.i.preheader.i.i.i.i.i - %.011.i.i.i.i.i.i = phi i64 [ %129, %.lr.ph.i.i.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i.i.i ] - %125 = getelementptr inbounds nuw float, ptr %121, i64 %.011.i.i.i.i.i.i - %126 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.011.i.i.i.i.i.i - %127 = load <4 x float>, ptr %126, align 16 - %128 = fdiv <4 x float> %127, %124 - store <4 x float> %128, ptr %125, align 16 - %129 = add nuw nsw i64 %.011.i.i.i.i.i.i, 4 - %130 = icmp slt i64 %129, %.pre-phi43 - br i1 %130, label %.lr.ph.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i, !llvm.loop !27 - -._crit_edge.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %119 - %131 = icmp slt i64 %.pre-phi43, %120 - br i1 %131, label %.lr.ph.i.i.i.i.i.i.i8, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit + %.011.i.i.i.i.i.i = phi i64 [ %126, %.lr.ph.i.i.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i.i.i ] + %122 = getelementptr inbounds nuw float, ptr %118, i64 %.011.i.i.i.i.i.i + %123 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.011.i.i.i.i.i.i + %124 = load <4 x float>, ptr %123, align 16 + %125 = fdiv <4 x float> %124, %121 + store <4 x float> %125, ptr %122, align 16 + %126 = add nuw nsw i64 %.011.i.i.i.i.i.i, 4 + %127 = icmp slt i64 %126, %.pre-phi43 + br i1 %127, label %.lr.ph.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i, !llvm.loop !27 + +._crit_edge.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %116 + %128 = icmp slt i64 %.pre-phi43, %117 + br i1 %128, label %.lr.ph.i.i.i.i.i.i.i8, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit .lr.ph.i.i.i.i.i.i.i8: ; preds = %._crit_edge.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i8 - %.05.i.i.i.i.i.i.i = phi i64 [ %136, %.lr.ph.i.i.i.i.i.i.i8 ], [ %.pre-phi43, %._crit_edge.i.i.i.i.i.i ] - %132 = getelementptr inbounds float, ptr %121, i64 %.05.i.i.i.i.i.i.i - %133 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05.i.i.i.i.i.i.i - %134 = load float, ptr %133, align 4 - %135 = fdiv float %134, %116 - store float %135, ptr %132, align 4 - %136 = add nsw i64 %.05.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i = icmp eq i64 %136, %120 + %.05.i.i.i.i.i.i.i = phi i64 [ %133, %.lr.ph.i.i.i.i.i.i.i8 ], [ %.pre-phi43, %._crit_edge.i.i.i.i.i.i ] + %129 = getelementptr inbounds float, ptr %118, i64 %.05.i.i.i.i.i.i.i + %130 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05.i.i.i.i.i.i.i + %131 = load float, ptr %130, align 4 + %132 = fdiv float %131, %113 + store float %132, ptr %129, align 4 + %133 = add nsw i64 %.05.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i.i.i.i = icmp eq i64 %133, %117 br i1 %exitcond.not.i.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit, label %.lr.ph.i.i.i.i.i.i.i8, !llvm.loop !28 -.body: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i, %115 - %137 = landingpad { ptr, i32 } +.body: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i, %112 + %134 = landingpad { ptr, i32 } cleanup - %138 = load ptr, ptr %0, align 8 - tail call void @free(ptr noundef %138) #16 + %135 = load ptr, ptr %0, align 8 + tail call void @free(ptr noundef %135) #16 tail call void @free(ptr noundef nonnull %.sink.i23) #16 - resume { ptr, i32 } %137 + resume { ptr, i32 } %134 _ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread: ; preds = %2, %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %.sroa.0.12633 = phi ptr [ %.sink.i23, %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ null, %2 ] store ptr %.sroa.0.12633, ptr %0, align 8 - %139 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %16, ptr %139, align 8 + %136 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %16, ptr %136, align 8 br label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit _ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i8, %._crit_edge.i.i.i.i.i.i, %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread diff --git a/bench/ockam-rs/optimized/1411u8drt798uxi8.ll b/bench/ockam-rs/optimized/1411u8drt798uxi8.ll index 0913ca82065..868bd3aa763 100644 --- a/bench/ockam-rs/optimized/1411u8drt798uxi8.ll +++ b/bench/ockam-rs/optimized/1411u8drt798uxi8.ll @@ -78696,7 +78696,7 @@ define hidden void @"_ZN89_$LT$minicbor..bytes..ByteArray$LT$_$GT$$u20$as$u20$mi br i1 %.not.not, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread", label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread": ; preds = %14 - %.val.i61 = load <4 x i8>, ptr %11, align 1, !alias.scope !10896 + %.val.i = load i32, ptr %11, align 1, !alias.scope !10896 br label %17 "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit": ; preds = %14 @@ -78707,7 +78707,7 @@ define hidden void @"_ZN89_$LT$minicbor..bytes..ByteArray$LT$_$GT$$u20$as$u20$mi call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !10902 %.sroa.0.0.copyload = load i64, ptr %5, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 - %.sroa.5.0.copyload = load <4 x i8>, ptr %.sroa.5.0..sroa_idx, align 8 + %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(52) %.sroa.8, ptr noundef nonnull align 4 dereferenceable(52) %.sroa.8.0..sroa_idx, i64 52, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !10899 @@ -78727,11 +78727,11 @@ define hidden void @"_ZN89_$LT$minicbor..bytes..ByteArray$LT$_$GT$$u20$as$u20$mi call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.431.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.431, i64 40, i1 false) br label %20 -17: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit" - %.sroa.5.055.ph = phi <4 x i8> [ %.sroa.5.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit" ], [ %.val.i61, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread" ] +17: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread" + %.sroa.5.053 = phi i32 [ %.val.i, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread" ], [ %.sroa.5.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit" ] call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.8) %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store <4 x i8> %.sroa.5.055.ph, ptr %18, align 8 + store i32 %.sroa.5.053, ptr %18, align 8 store i64 2, ptr %0, align 8 br label %20 @@ -78740,7 +78740,7 @@ define hidden void @"_ZN89_$LT$minicbor..bytes..ByteArray$LT$_$GT$$u20$as$u20$mi call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.8) store i64 %.sroa.0.0.copyload, ptr %0, align 8 %.sroa.240.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store <4 x i8> %.sroa.5.0.copyload, ptr %.sroa.240.0..sroa_idx, align 8 + store i32 %.sroa.5.0.copyload, ptr %.sroa.240.0..sroa_idx, align 8 %.sroa.341.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(52) %.sroa.341.0..sroa_idx, ptr noundef nonnull align 4 dereferenceable(52) %.sroa.341, i64 52, i1 false) br label %20 diff --git a/bench/open3d/optimized/Geometry3D.ll b/bench/open3d/optimized/Geometry3D.ll index e51814de1a4..ed734b80af9 100644 --- a/bench/open3d/optimized/Geometry3D.ll +++ b/bench/open3d/optimized/Geometry3D.ll @@ -525,15 +525,17 @@ define void @_ZNK6open3d8geometry10Geometry3D15TransformPointsERKN5Eigen6MatrixI %.sroa.018.022 = phi ptr [ %4, %.lr.ph ], [ %46, %14 ] %15 = getelementptr inbounds nuw i8, ptr %.sroa.018.022, i64 8 %16 = getelementptr inbounds nuw i8, ptr %.sroa.018.022, i64 16 - %17 = load <1 x double>, ptr %.sroa.018.022, align 8, !tbaa !16 - %18 = load <1 x double>, ptr %15, align 8, !tbaa !16 + %17 = load double, ptr %.sroa.018.022, align 8, !tbaa !16 + %.sroa.0.sroa.0.0.vec.insert = insertelement <1 x double> poison, double %17, i64 0 + %18 = load double, ptr %15, align 8, !tbaa !16 + %.sroa.0.sroa.4.8.vec.insert = insertelement <1 x double> poison, double %18, i64 0 %19 = load double, ptr %16, align 8, !tbaa !16 %.sroa.0.sroa.6.24.vec.insert = insertelement <2 x double> poison, double %19, i64 0 %20 = load <2 x double>, ptr %1, align 16, !tbaa !11 - %21 = shufflevector <1 x double> %17, <1 x double> poison, <2 x i32> zeroinitializer + %21 = shufflevector <1 x double> %.sroa.0.sroa.0.0.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer %22 = fmul <2 x double> %20, %21 %23 = load <2 x double>, ptr %7, align 16, !tbaa !11 - %24 = shufflevector <1 x double> %18, <1 x double> poison, <2 x i32> zeroinitializer + %24 = shufflevector <1 x double> %.sroa.0.sroa.4.8.vec.insert, <1 x double> poison, <2 x i32> zeroinitializer %25 = fmul <2 x double> %23, %24 %26 = fadd <2 x double> %22, %25 %27 = load <2 x double>, ptr %8, align 16, !tbaa !11 diff --git a/bench/open3d/optimized/VoxelGrid.ll b/bench/open3d/optimized/VoxelGrid.ll index 0b2760e9318..c12866e976d 100644 --- a/bench/open3d/optimized/VoxelGrid.ll +++ b/bench/open3d/optimized/VoxelGrid.ll @@ -34903,7 +34903,7 @@ define noundef nonnull align 8 dereferenceable(136) ptr @_ZN6open3d8geometry9Vox %.not112116 = icmp eq ptr %47, %48 br i1 %.not112116, label %.critedge, label %.lr.ph -49: ; preds = %162 +49: ; preds = %161 %50 = getelementptr inbounds nuw i8, ptr %.sroa.087.0117, i64 24 %.not112 = icmp eq ptr %50, %48 br i1 %.not112, label %.critedge, label %.lr.ph @@ -35029,146 +35029,145 @@ define noundef nonnull align 8 dereferenceable(136) ptr @_ZN6open3d8geometry9Vox %146 = shufflevector <1 x double> %145, <1 x double> poison, <2 x i32> %147 = fmul <2 x double> %82, %146 %148 = fadd <2 x double> %147, %144 - %149 = bitcast double %142 to <1 x double> - %150 = shufflevector <1 x double> %149, <1 x double> poison, <2 x i32> - %151 = fmul <2 x double> %83, %150 - %152 = fadd <2 x double> %151, %148 - %153 = extractelement <2 x double> %152, i64 1 + %149 = extractelement <2 x double> %83, i64 1 + %150 = fmul double %149, %142 + %151 = extractelement <2 x double> %148, i64 1 + %152 = fadd double %150, %151 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %154 = fdiv double %122, %92 - %155 = fdiv double %153, %92 - %156 = invoke { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88) %1, double noundef %154, double noundef %155) - to label %157 unwind label %160 - -157: ; preds = %.lr.ph - %158 = extractvalue { i8, double } %156, 0 - %159 = trunc nuw i8 %158 to i1 - %.not = xor i1 %159, true + %153 = fdiv double %122, %92 + %154 = fdiv double %152, %92 + %155 = invoke { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88) %1, double noundef %153, double noundef %154) + to label %156 unwind label %159 + +156: ; preds = %.lr.ph + %157 = extractvalue { i8, double } %155, 0 + %158 = trunc nuw i8 %157 to i1 + %.not = xor i1 %158, true %or.cond = and i1 %3, %.not - br i1 %or.cond, label %.thread109, label %162 + br i1 %or.cond, label %.thread109, label %161 -160: ; preds = %.lr.ph - %161 = landingpad { ptr, i32 } +159: ; preds = %.lr.ph + %160 = landingpad { ptr, i32 } cleanup %.not.i.i.i73 = icmp eq ptr %47, null - br i1 %.not.i.i.i73, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74, label %206 - -162: ; preds = %157 - %163 = extractvalue { i8, double } %156, 1 - %164 = fcmp ule double %163, 0.000000e+00 - %or.cond4 = select i1 %.not, i1 true, i1 %164 - %165 = fcmp ult double %92, %163 - %or.cond49 = select i1 %or.cond4, i1 true, i1 %165 + br i1 %.not.i.i.i73, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74, label %205 + +161: ; preds = %156 + %162 = extractvalue { i8, double } %155, 1 + %163 = fcmp ule double %162, 0.000000e+00 + %or.cond4 = select i1 %.not, i1 true, i1 %163 + %164 = fcmp ult double %92, %162 + %or.cond49 = select i1 %or.cond4, i1 true, i1 %164 br i1 %or.cond49, label %49, label %.thread109 .critedge: ; preds = %49, %45 - %166 = load i64, ptr %42, align 8, !tbaa !22 - %167 = getelementptr inbounds nuw i8, ptr %.sroa.091.0120, i64 64 - %168 = load i64, ptr %167, align 8, !tbaa !62 - %169 = urem i64 %168, %166 - %170 = load ptr, ptr %24, align 8, !tbaa !21 - %171 = getelementptr inbounds nuw ptr, ptr %170, i64 %169 - %172 = load ptr, ptr %171, align 8, !tbaa !64 - br label %173 - -173: ; preds = %173, %.critedge - %.0.i.i.i.i = phi ptr [ %172, %.critedge ], [ %174, %173 ] - %174 = load ptr, ptr %.0.i.i.i.i, align 8, !tbaa !18 - %.not.i.i.i.i = icmp eq ptr %174, %.sroa.091.0120 - br i1 %.not.i.i.i.i, label %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i, label %173, !llvm.loop !832 - -_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i: ; preds = %173 - %175 = icmp eq ptr %.0.i.i.i.i, %172 - %176 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 - %.not18.i.i.i.i = icmp eq ptr %176, null - br i1 %175, label %177, label %187 - -177: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i - br i1 %.not18.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %178 - -178: ; preds = %177 - %179 = getelementptr inbounds nuw i8, ptr %176, i64 64 - %180 = load i64, ptr %179, align 8, !tbaa !62 - %181 = urem i64 %180, %166 - %.not9.i.i.i.i.i = icmp eq i64 %181, %169 - br i1 %.not9.i.i.i.i.i, label %194, label %182 - -182: ; preds = %178 - %183 = getelementptr inbounds nuw ptr, ptr %170, i64 %181 - store ptr %172, ptr %183, align 8, !tbaa !64 + %165 = load i64, ptr %42, align 8, !tbaa !22 + %166 = getelementptr inbounds nuw i8, ptr %.sroa.091.0120, i64 64 + %167 = load i64, ptr %166, align 8, !tbaa !62 + %168 = urem i64 %167, %165 + %169 = load ptr, ptr %24, align 8, !tbaa !21 + %170 = getelementptr inbounds nuw ptr, ptr %169, i64 %168 + %171 = load ptr, ptr %170, align 8, !tbaa !64 + br label %172 + +172: ; preds = %172, %.critedge + %.0.i.i.i.i = phi ptr [ %171, %.critedge ], [ %173, %172 ] + %173 = load ptr, ptr %.0.i.i.i.i, align 8, !tbaa !18 + %.not.i.i.i.i = icmp eq ptr %173, %.sroa.091.0120 + br i1 %.not.i.i.i.i, label %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i, label %172, !llvm.loop !832 + +_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i: ; preds = %172 + %174 = icmp eq ptr %.0.i.i.i.i, %171 + %175 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 + %.not18.i.i.i.i = icmp eq ptr %175, null + br i1 %174, label %176, label %186 + +176: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i + br i1 %.not18.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %177 + +177: ; preds = %176 + %178 = getelementptr inbounds nuw i8, ptr %175, i64 64 + %179 = load i64, ptr %178, align 8, !tbaa !62 + %180 = urem i64 %179, %165 + %.not9.i.i.i.i.i = icmp eq i64 %180, %168 + br i1 %.not9.i.i.i.i.i, label %193, label %181 + +181: ; preds = %177 + %182 = getelementptr inbounds nuw ptr, ptr %169, i64 %180 + store ptr %171, ptr %182, align 8, !tbaa !64 br label %._crit_edge.i.i.i.i.i -._crit_edge.i.i.i.i.i: ; preds = %182, %177 - %184 = icmp eq ptr %25, %172 - br i1 %184, label %185, label %186 +._crit_edge.i.i.i.i.i: ; preds = %181, %176 + %183 = icmp eq ptr %25, %171 + br i1 %183, label %184, label %185 -185: ; preds = %._crit_edge.i.i.i.i.i - store ptr %176, ptr %25, align 8, !tbaa !7 - br label %186 +184: ; preds = %._crit_edge.i.i.i.i.i + store ptr %175, ptr %25, align 8, !tbaa !7 + br label %185 -186: ; preds = %185, %._crit_edge.i.i.i.i.i - store ptr null, ptr %171, align 8, !tbaa !64 - br label %194 +185: ; preds = %184, %._crit_edge.i.i.i.i.i + store ptr null, ptr %170, align 8, !tbaa !64 + br label %193 -187: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i - br i1 %.not18.i.i.i.i, label %194, label %188 +186: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i + br i1 %.not18.i.i.i.i, label %193, label %187 -188: ; preds = %187 - %189 = getelementptr inbounds nuw i8, ptr %176, i64 64 - %190 = load i64, ptr %189, align 8, !tbaa !62 - %191 = urem i64 %190, %166 - %.not17.i.i.i.i = icmp eq i64 %191, %169 - br i1 %.not17.i.i.i.i, label %194, label %192 +187: ; preds = %186 + %188 = getelementptr inbounds nuw i8, ptr %175, i64 64 + %189 = load i64, ptr %188, align 8, !tbaa !62 + %190 = urem i64 %189, %165 + %.not17.i.i.i.i = icmp eq i64 %190, %168 + br i1 %.not17.i.i.i.i, label %193, label %191 -192: ; preds = %188 - %193 = getelementptr inbounds nuw ptr, ptr %170, i64 %191 - store ptr %.0.i.i.i.i, ptr %193, align 8, !tbaa !64 - br label %194 +191: ; preds = %187 + %192 = getelementptr inbounds nuw ptr, ptr %169, i64 %190 + store ptr %.0.i.i.i.i, ptr %192, align 8, !tbaa !64 + br label %193 -194: ; preds = %192, %188, %187, %186, %178 - %195 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 - store ptr %195, ptr %.0.i.i.i.i, align 8, !tbaa !18 +193: ; preds = %191, %187, %186, %185, %177 + %194 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 + store ptr %194, ptr %.0.i.i.i.i, align 8, !tbaa !18 call void @_ZdlPvm(ptr noundef nonnull %.sroa.091.0120, i64 noundef 72) #37 - %196 = load i64, ptr %43, align 8, !tbaa !28 - %197 = add i64 %196, -1 - store i64 %197, ptr %43, align 8, !tbaa !28 - br label %199 - -.thread109: ; preds = %157, %162 - %198 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 - br label %199 - -199: ; preds = %.thread109, %194 - %.sroa.091.1 = phi ptr [ %195, %194 ], [ %198, %.thread109 ] - %200 = load ptr, ptr %9, align 8, !tbaa !691 - %.not.i.i.i = icmp eq ptr %200, null - br i1 %.not.i.i.i, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit, label %201 - -201: ; preds = %199 - %202 = load ptr, ptr %44, align 8, !tbaa !695 - %203 = ptrtoint ptr %202 to i64 - %204 = ptrtoint ptr %200 to i64 - %205 = sub i64 %203, %204 - call void @_ZdlPvm(ptr noundef nonnull %200, i64 noundef %205) #37 + %195 = load i64, ptr %43, align 8, !tbaa !28 + %196 = add i64 %195, -1 + store i64 %196, ptr %43, align 8, !tbaa !28 + br label %198 + +.thread109: ; preds = %156, %161 + %197 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 + br label %198 + +198: ; preds = %.thread109, %193 + %.sroa.091.1 = phi ptr [ %194, %193 ], [ %197, %.thread109 ] + %199 = load ptr, ptr %9, align 8, !tbaa !691 + %.not.i.i.i = icmp eq ptr %199, null + br i1 %.not.i.i.i, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit, label %200 + +200: ; preds = %198 + %201 = load ptr, ptr %44, align 8, !tbaa !695 + %202 = ptrtoint ptr %201 to i64 + %203 = ptrtoint ptr %199 to i64 + %204 = sub i64 %202, %203 + call void @_ZdlPvm(ptr noundef nonnull %199, i64 noundef %204) #37 br label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit -_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit: ; preds = %199, %201 +_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit: ; preds = %198, %200 call void @llvm.lifetime.end.p0(ptr nonnull %9) %.not111 = icmp eq ptr %.sroa.091.1, null br i1 %.not111, label %._crit_edge, label %45, !llvm.loop !833 -206: ; preds = %160 - %207 = load ptr, ptr %44, align 8, !tbaa !695 - %208 = ptrtoint ptr %207 to i64 - %209 = ptrtoint ptr %47 to i64 - %210 = sub i64 %208, %209 - call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %210) #37 +205: ; preds = %159 + %206 = load ptr, ptr %44, align 8, !tbaa !695 + %207 = ptrtoint ptr %206 to i64 + %208 = ptrtoint ptr %47 to i64 + %209 = sub i64 %207, %208 + call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %209) #37 br label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74 -_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74: ; preds = %160, %206 +_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74: ; preds = %159, %205 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) - resume { ptr, i32 } %161 + resume { ptr, i32 } %160 } declare { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88), double noundef, double noundef) local_unnamed_addr #6 @@ -35254,9 +35253,9 @@ define noundef nonnull align 8 dereferenceable(136) ptr @_ZN6open3d8geometry9Vox %.not109110 = icmp eq ptr %47, %48 br i1 %.not109110, label %.critedge, label %.lr.ph -.lr.ph: ; preds = %45, %160 - %.028112 = phi i1 [ %spec.select, %160 ], [ true, %45 ] - %.sroa.084.0111 = phi ptr [ %163, %160 ], [ %47, %45 ] +.lr.ph: ; preds = %45, %159 + %.028112 = phi i1 [ %spec.select, %159 ], [ true, %45 ] + %.sroa.084.0111 = phi ptr [ %162, %159 ], [ %47, %45 ] call void @llvm.lifetime.start.p0(ptr nonnull %7) store ptr %28, ptr %7, align 8, !tbaa !827 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.2.i.i.i.i.i.i.i.sroa.0) @@ -35376,152 +35375,151 @@ define noundef nonnull align 8 dereferenceable(136) ptr @_ZN6open3d8geometry9Vox %144 = shufflevector <1 x double> %143, <1 x double> poison, <2 x i32> %145 = fmul <2 x double> %80, %144 %146 = fadd <2 x double> %145, %142 - %147 = bitcast double %140 to <1 x double> - %148 = shufflevector <1 x double> %147, <1 x double> poison, <2 x i32> - %149 = fmul <2 x double> %81, %148 - %150 = fadd <2 x double> %149, %146 - %151 = extractelement <2 x double> %150, i64 1 + %147 = extractelement <2 x double> %81, i64 1 + %148 = fmul double %147, %140 + %149 = extractelement <2 x double> %146, i64 1 + %150 = fadd double %148, %149 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %152 = fdiv double %120, %90 - %153 = fdiv double %151, %90 - %154 = invoke { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88) %1, double noundef %152, double noundef %153) - to label %155 unwind label %158 - -155: ; preds = %.lr.ph - %156 = extractvalue { i8, double } %154, 0 - %157 = trunc nuw i8 %156 to i1 - %.not = xor i1 %157, true + %151 = fdiv double %120, %90 + %152 = fdiv double %150, %90 + %153 = invoke { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88) %1, double noundef %151, double noundef %152) + to label %154 unwind label %157 + +154: ; preds = %.lr.ph + %155 = extractvalue { i8, double } %153, 0 + %156 = trunc nuw i8 %155 to i1 + %.not = xor i1 %156, true %or.cond = and i1 %3, %.not - br i1 %or.cond, label %.thread106, label %160 + br i1 %or.cond, label %.thread106, label %159 -158: ; preds = %.lr.ph - %159 = landingpad { ptr, i32 } +157: ; preds = %.lr.ph + %158 = landingpad { ptr, i32 } cleanup %.not.i.i.i70 = icmp eq ptr %47, null - br i1 %.not.i.i.i70, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71, label %204 + br i1 %.not.i.i.i70, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71, label %203 -160: ; preds = %155 - %161 = extractvalue { i8, double } %154, 1 - %162 = fcmp ogt double %161, 0.000000e+00 - %or.cond4 = select i1 %157, i1 %162, i1 false +159: ; preds = %154 + %160 = extractvalue { i8, double } %153, 1 + %161 = fcmp ogt double %160, 0.000000e+00 + %or.cond4 = select i1 %156, i1 %161, i1 false %not.or.cond4 = xor i1 %or.cond4, true %spec.select = select i1 %not.or.cond4, i1 %.028112, i1 false - %163 = getelementptr inbounds nuw i8, ptr %.sroa.084.0111, i64 24 - %.not109 = icmp eq ptr %163, %48 + %162 = getelementptr inbounds nuw i8, ptr %.sroa.084.0111, i64 24 + %.not109 = icmp eq ptr %162, %48 %or.cond120 = select i1 %or.cond4, i1 true, i1 %.not109 br i1 %or.cond120, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %160 +._crit_edge: ; preds = %159 br i1 %spec.select, label %.critedge, label %.thread106 .critedge: ; preds = %45, %._crit_edge - %164 = load i64, ptr %42, align 8, !tbaa !22 - %165 = getelementptr inbounds nuw i8, ptr %.sroa.088.0116, i64 64 - %166 = load i64, ptr %165, align 8, !tbaa !62 - %167 = urem i64 %166, %164 - %168 = load ptr, ptr %24, align 8, !tbaa !21 - %169 = getelementptr inbounds nuw ptr, ptr %168, i64 %167 - %170 = load ptr, ptr %169, align 8, !tbaa !64 - br label %171 - -171: ; preds = %171, %.critedge - %.0.i.i.i.i = phi ptr [ %170, %.critedge ], [ %172, %171 ] - %172 = load ptr, ptr %.0.i.i.i.i, align 8, !tbaa !18 - %.not.i.i.i.i = icmp eq ptr %172, %.sroa.088.0116 - br i1 %.not.i.i.i.i, label %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i, label %171, !llvm.loop !832 - -_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i: ; preds = %171 - %173 = icmp eq ptr %.0.i.i.i.i, %170 - %174 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 - %.not18.i.i.i.i = icmp eq ptr %174, null - br i1 %173, label %175, label %185 - -175: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i - br i1 %.not18.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %176 - -176: ; preds = %175 - %177 = getelementptr inbounds nuw i8, ptr %174, i64 64 - %178 = load i64, ptr %177, align 8, !tbaa !62 - %179 = urem i64 %178, %164 - %.not9.i.i.i.i.i = icmp eq i64 %179, %167 - br i1 %.not9.i.i.i.i.i, label %192, label %180 - -180: ; preds = %176 - %181 = getelementptr inbounds nuw ptr, ptr %168, i64 %179 - store ptr %170, ptr %181, align 8, !tbaa !64 - br label %._crit_edge.i.i.i.i.i - -._crit_edge.i.i.i.i.i: ; preds = %180, %175 - %182 = icmp eq ptr %25, %170 - br i1 %182, label %183, label %184 + %163 = load i64, ptr %42, align 8, !tbaa !22 + %164 = getelementptr inbounds nuw i8, ptr %.sroa.088.0116, i64 64 + %165 = load i64, ptr %164, align 8, !tbaa !62 + %166 = urem i64 %165, %163 + %167 = load ptr, ptr %24, align 8, !tbaa !21 + %168 = getelementptr inbounds nuw ptr, ptr %167, i64 %166 + %169 = load ptr, ptr %168, align 8, !tbaa !64 + br label %170 + +170: ; preds = %170, %.critedge + %.0.i.i.i.i = phi ptr [ %169, %.critedge ], [ %171, %170 ] + %171 = load ptr, ptr %.0.i.i.i.i, align 8, !tbaa !18 + %.not.i.i.i.i = icmp eq ptr %171, %.sroa.088.0116 + br i1 %.not.i.i.i.i, label %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i, label %170, !llvm.loop !832 + +_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i: ; preds = %170 + %172 = icmp eq ptr %.0.i.i.i.i, %169 + %173 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 + %.not18.i.i.i.i = icmp eq ptr %173, null + br i1 %172, label %174, label %184 + +174: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i + br i1 %.not18.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %175 + +175: ; preds = %174 + %176 = getelementptr inbounds nuw i8, ptr %173, i64 64 + %177 = load i64, ptr %176, align 8, !tbaa !62 + %178 = urem i64 %177, %163 + %.not9.i.i.i.i.i = icmp eq i64 %178, %166 + br i1 %.not9.i.i.i.i.i, label %191, label %179 -183: ; preds = %._crit_edge.i.i.i.i.i - store ptr %174, ptr %25, align 8, !tbaa !7 - br label %184 +179: ; preds = %175 + %180 = getelementptr inbounds nuw ptr, ptr %167, i64 %178 + store ptr %169, ptr %180, align 8, !tbaa !64 + br label %._crit_edge.i.i.i.i.i -184: ; preds = %183, %._crit_edge.i.i.i.i.i - store ptr null, ptr %169, align 8, !tbaa !64 - br label %192 +._crit_edge.i.i.i.i.i: ; preds = %179, %174 + %181 = icmp eq ptr %25, %169 + br i1 %181, label %182, label %183 -185: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i - br i1 %.not18.i.i.i.i, label %192, label %186 +182: ; preds = %._crit_edge.i.i.i.i.i + store ptr %173, ptr %25, align 8, !tbaa !7 + br label %183 -186: ; preds = %185 - %187 = getelementptr inbounds nuw i8, ptr %174, i64 64 - %188 = load i64, ptr %187, align 8, !tbaa !62 - %189 = urem i64 %188, %164 - %.not17.i.i.i.i = icmp eq i64 %189, %167 - br i1 %.not17.i.i.i.i, label %192, label %190 +183: ; preds = %182, %._crit_edge.i.i.i.i.i + store ptr null, ptr %168, align 8, !tbaa !64 + br label %191 -190: ; preds = %186 - %191 = getelementptr inbounds nuw ptr, ptr %168, i64 %189 - store ptr %.0.i.i.i.i, ptr %191, align 8, !tbaa !64 - br label %192 +184: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i + br i1 %.not18.i.i.i.i, label %191, label %185 -192: ; preds = %190, %186, %185, %184, %176 - %193 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 - store ptr %193, ptr %.0.i.i.i.i, align 8, !tbaa !18 +185: ; preds = %184 + %186 = getelementptr inbounds nuw i8, ptr %173, i64 64 + %187 = load i64, ptr %186, align 8, !tbaa !62 + %188 = urem i64 %187, %163 + %.not17.i.i.i.i = icmp eq i64 %188, %166 + br i1 %.not17.i.i.i.i, label %191, label %189 + +189: ; preds = %185 + %190 = getelementptr inbounds nuw ptr, ptr %167, i64 %188 + store ptr %.0.i.i.i.i, ptr %190, align 8, !tbaa !64 + br label %191 + +191: ; preds = %189, %185, %184, %183, %175 + %192 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 + store ptr %192, ptr %.0.i.i.i.i, align 8, !tbaa !18 call void @_ZdlPvm(ptr noundef nonnull %.sroa.088.0116, i64 noundef 72) #37 - %194 = load i64, ptr %43, align 8, !tbaa !28 - %195 = add i64 %194, -1 - store i64 %195, ptr %43, align 8, !tbaa !28 - br label %197 + %193 = load i64, ptr %43, align 8, !tbaa !28 + %194 = add i64 %193, -1 + store i64 %194, ptr %43, align 8, !tbaa !28 + br label %196 -.thread106: ; preds = %155, %._crit_edge - %196 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 - br label %197 +.thread106: ; preds = %154, %._crit_edge + %195 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 + br label %196 -197: ; preds = %.thread106, %192 - %.sroa.088.1 = phi ptr [ %193, %192 ], [ %196, %.thread106 ] - %198 = load ptr, ptr %9, align 8, !tbaa !691 - %.not.i.i.i = icmp eq ptr %198, null - br i1 %.not.i.i.i, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit, label %199 +196: ; preds = %.thread106, %191 + %.sroa.088.1 = phi ptr [ %192, %191 ], [ %195, %.thread106 ] + %197 = load ptr, ptr %9, align 8, !tbaa !691 + %.not.i.i.i = icmp eq ptr %197, null + br i1 %.not.i.i.i, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit, label %198 -199: ; preds = %197 - %200 = load ptr, ptr %44, align 8, !tbaa !695 - %201 = ptrtoint ptr %200 to i64 - %202 = ptrtoint ptr %198 to i64 - %203 = sub i64 %201, %202 - call void @_ZdlPvm(ptr noundef nonnull %198, i64 noundef %203) #37 +198: ; preds = %196 + %199 = load ptr, ptr %44, align 8, !tbaa !695 + %200 = ptrtoint ptr %199 to i64 + %201 = ptrtoint ptr %197 to i64 + %202 = sub i64 %200, %201 + call void @_ZdlPvm(ptr noundef nonnull %197, i64 noundef %202) #37 br label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit -_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit: ; preds = %197, %199 +_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit: ; preds = %196, %198 call void @llvm.lifetime.end.p0(ptr nonnull %9) %.not108 = icmp eq ptr %.sroa.088.1, null br i1 %.not108, label %._crit_edge119, label %45, !llvm.loop !834 -204: ; preds = %158 - %205 = load ptr, ptr %44, align 8, !tbaa !695 - %206 = ptrtoint ptr %205 to i64 - %207 = ptrtoint ptr %47 to i64 - %208 = sub i64 %206, %207 - call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %208) #37 +203: ; preds = %157 + %204 = load ptr, ptr %44, align 8, !tbaa !695 + %205 = ptrtoint ptr %204 to i64 + %206 = ptrtoint ptr %47 to i64 + %207 = sub i64 %205, %206 + call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %207) #37 br label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71 -_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71: ; preds = %158, %204 +_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71: ; preds = %157, %203 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) - resume { ptr, i32 } %159 + resume { ptr, i32 } %158 } ; Function Attrs: mustprogress ssp uwtable diff --git a/bench/opencv/optimized/gfluidbackend.ll b/bench/opencv/optimized/gfluidbackend.ll index 7d3c84b4cb5..5a37823d055 100644 --- a/bench/opencv/optimized/gfluidbackend.ll +++ b/bench/opencv/optimized/gfluidbackend.ll @@ -2398,11 +2398,11 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i: ; preds = %443 _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i %.pre = load ptr, ptr %436, align 8, !tbaa !123 - %.pre233 = load ptr, ptr %437, align 8, !tbaa !123 + %.pre232 = load ptr, ptr %437, align 8, !tbaa !123 br label %.noexc122 .noexc122: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge, %435 - %446 = phi ptr [ %438, %435 ], [ %.pre233, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge ] + %446 = phi ptr [ %438, %435 ], [ %.pre232, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge ] %447 = phi ptr [ %439, %435 ], [ %.pre, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge ] %448 = phi ptr [ null, %435 ], [ %445, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge ] %.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %446, %447 @@ -4345,9 +4345,9 @@ _ZNK3ade4util5Range13IterableRangeINS1_8ZipRangeIJNS1_9IotaRangeImLi1EEERSt6vect %156 = load ptr, ptr %154, align 8, !tbaa !340 %157 = load ptr, ptr %155, align 8, !tbaa !340 %158 = icmp eq ptr %156, %157 - br i1 %158, label %.loopexit789, label %.lr.ph1222 + br i1 %158, label %.loopexit789, label %.lr.ph1221 -.lr.ph1222: ; preds = %_ZNK3ade4util5Range13IterableRangeINS1_8ZipRangeIJNS1_9IotaRangeImLi1EEERSt6vectorINS_6HandleINS_4NodeEEESaIS9_EEEEEE8iteratorneERKSF_.exit.preheader +.lr.ph1221: ; preds = %_ZNK3ade4util5Range13IterableRangeINS1_8ZipRangeIJNS1_9IotaRangeImLi1EEERSt6vectorINS_6HandleINS_4NodeEEESaIS9_EEEEEE8iteratorneERKSF_.exit.preheader %159 = getelementptr inbounds nuw i8, ptr %40, i64 56 %160 = getelementptr inbounds nuw i8, ptr %40, i64 72 %161 = getelementptr inbounds nuw i8, ptr %40, i64 64 @@ -4571,19 +4571,19 @@ _ZNKSt10_HashtableIN3ade7details10MetadataIdESt4pairIKS2_St10unique_ptrINS1_8Met %272 = load i64, ptr %149, align 8, !tbaa !346 %.not.not.i.i.i = icmp eq i64 %272, 0 %273 = load i32, ptr %271, align 4 - br i1 %.not.not.i.i.i, label %.preheader1528, label %278 + br i1 %.not.not.i.i.i, label %.preheader1527, label %278 -.preheader1528: ; preds = %.loopexit801, %274 +.preheader1527: ; preds = %.loopexit801, %274 %.sroa.06.0.in.i.i.i = phi ptr [ %.sroa.06.0.i.i.i, %274 ], [ %151, %.loopexit801 ] %.sroa.06.0.i.i.i = load ptr, ptr %.sroa.06.0.in.i.i.i, align 8, !tbaa !52 %.not.i.i.i = icmp eq ptr %.sroa.06.0.i.i.i, null br i1 %.not.i.i.i, label %.thread, label %274 -274: ; preds = %.preheader1528 +274: ; preds = %.preheader1527 %275 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i.i.i, i64 8 %276 = load i32, ptr %275, align 4, !tbaa !23 %277 = icmp eq i32 %273, %276 - br i1 %277, label %.loopexit793, label %.preheader1528, !llvm.loop !347 + br i1 %277, label %.loopexit793, label %.preheader1527, !llvm.loop !347 278: ; preds = %.loopexit801 %279 = sext i32 %273 to i64 @@ -4697,11 +4697,11 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i: ; preds = %315 _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i %.pre = load ptr, ptr %308, align 8, !tbaa !123 - %.pre1323 = load ptr, ptr %309, align 8, !tbaa !123 + %.pre1322 = load ptr, ptr %309, align 8, !tbaa !123 br label %.noexc187 .noexc187: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge, %307 - %318 = phi ptr [ %310, %307 ], [ %.pre1323, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ] + %318 = phi ptr [ %310, %307 ], [ %.pre1322, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ] %319 = phi ptr [ %311, %307 ], [ %.pre, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ] %320 = phi ptr [ null, %307 ], [ %317, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ] %.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %318, %319 @@ -4716,19 +4716,19 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge 325: ; preds = %321, %.noexc187 %326 = load i32, ptr %271, align 4 - br i1 %.not.not.i.i.i, label %.preheader1525, label %331 + br i1 %.not.not.i.i.i, label %.preheader1524, label %331 -.preheader1525: ; preds = %325, %327 +.preheader1524: ; preds = %325, %327 %.sroa.06.0.in.i.i.i196 = phi ptr [ %.sroa.06.0.i.i.i197, %327 ], [ %151, %325 ] %.sroa.06.0.i.i.i197 = load ptr, ptr %.sroa.06.0.in.i.i.i196, align 8, !tbaa !52 %.not.i.i.i198 = icmp eq ptr %.sroa.06.0.i.i.i197, null br i1 %.not.i.i.i198, label %.loopexit.i.i, label %327 -327: ; preds = %.preheader1525 +327: ; preds = %.preheader1524 %328 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i.i.i197, i64 8 %329 = load i32, ptr %328, align 4, !tbaa !23 %330 = icmp eq i32 %326, %329 - br i1 %330, label %.loopexit790, label %.preheader1525, !llvm.loop !357 + br i1 %330, label %.loopexit790, label %.preheader1524, !llvm.loop !357 331: ; preds = %325 %332 = sext i32 %326 to i64 @@ -4768,7 +4768,7 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ..loopexit_crit_edge21.i.i.i.i.i194: ; preds = %346 br label %.loopexit.i.i, !llvm.loop !350 -.loopexit.i.i: ; preds = %331, %.lr.ph.i.i.i.i.i190, %.preheader1525, %..loopexit_crit_edge21.i.i.i.i.i194 +.loopexit.i.i: ; preds = %331, %.lr.ph.i.i.i.i.i190, %.preheader1524, %..loopexit_crit_edge21.i.i.i.i.i194 invoke void @_ZSt20__throw_out_of_rangePKc(ptr noundef nonnull @.str.115) #36 to label %.noexc199 unwind label %373 @@ -5070,7 +5070,7 @@ _ZNSt5stackIN3ade6HandleINS0_4NodeEEESt5dequeIS3_SaIS3_EEE4pushERKS3_.exit: ; pr call void @_ZdlPv(ptr noundef nonnull %320) #35 br label %.body -.thread: ; preds = %.lr.ph.i.i.i.i.i, %.preheader1528, %449, %_ZNSt5stackIN3ade6HandleINS0_4NodeEEESt5dequeIS3_SaIS3_EEE4pushERKS3_.exit, %..loopexit_crit_edge21.i.i.i.i.i, %278, %.loopexit793 +.thread: ; preds = %.lr.ph.i.i.i.i.i, %.preheader1527, %449, %_ZNSt5stackIN3ade6HandleINS0_4NodeEEESt5dequeIS3_SaIS3_EEE4pushERKS3_.exit, %..loopexit_crit_edge21.i.i.i.i.i, %278, %.loopexit793 %454 = add nuw i64 %.sroa.10.01216, 1 %455 = getelementptr inbounds nuw i8, ptr %.sroa.0.01217, i64 16 %456 = icmp eq i64 %454, -1 @@ -5078,8 +5078,8 @@ _ZNSt5stackIN3ade6HandleINS0_4NodeEEESt5dequeIS3_SaIS3_EEE4pushERKS3_.exit: ; pr %narrow.i.i.i.i.i.i.i = select i1 %456, i1 true, i1 %457 br i1 %narrow.i.i.i.i.i.i.i, label %_ZNK3ade4util5Range13IterableRangeINS1_8ZipRangeIJNS1_9IotaRangeImLi1EEERSt6vectorINS_6HandleINS_4NodeEEESaIS9_EEEEEE8iteratorneERKSF_.exit.preheader, label %192 -458: ; preds = %.lr.ph1222, %_ZN3ade6HandleINS_4NodeEED2Ev.exit634 - %459 = phi ptr [ %156, %.lr.ph1222 ], [ %1819, %_ZN3ade6HandleINS_4NodeEED2Ev.exit634 ] +458: ; preds = %.lr.ph1221, %_ZN3ade6HandleINS_4NodeEED2Ev.exit634 + %459 = phi ptr [ %156, %.lr.ph1221 ], [ %1819, %_ZN3ade6HandleINS_4NodeEED2Ev.exit634 ] %460 = load ptr, ptr %159, align 8, !tbaa !366, !noalias !367 %461 = icmp eq ptr %459, %460 br i1 %461, label %462, label %_ZNSt5stackIN3ade6HandleINS0_4NodeEEESt5dequeIS3_SaIS3_EEE3topEv.exit @@ -5809,9 +5809,9 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i306: ; preds = %765 %772 = load ptr, ptr %58, align 8, !tbaa !102 %773 = load ptr, ptr %171, align 8, !tbaa !102 %774 = icmp eq ptr %772, %773 - br i1 %774, label %._crit_edge, label %.lr.ph1219 + br i1 %774, label %._crit_edge, label %.lr.ph1218 -.lr.ph1219: ; preds = %771 +.lr.ph1218: ; preds = %771 %.sroa.5679.0.copyload = load ptr, ptr %.sroa.5679.0..sroa_idx, align 8 %.sroa.0678.0.copyload = load ptr, ptr %57, align 8 %775 = icmp eq ptr %.sroa.0678.0.copyload, %.sroa.5679.0.copyload @@ -5819,8 +5819,8 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i306: ; preds = %765 %777 = getelementptr inbounds nuw i8, ptr %732, i64 32 br label %778 -778: ; preds = %.lr.ph1219, %_ZN3ade6HandleINS_4EdgeEED2Ev.exit - %779 = phi ptr [ %772, %.lr.ph1219 ], [ %1759, %_ZN3ade6HandleINS_4EdgeEED2Ev.exit ] +778: ; preds = %.lr.ph1218, %_ZN3ade6HandleINS_4EdgeEED2Ev.exit + %779 = phi ptr [ %772, %.lr.ph1218 ], [ %1759, %_ZN3ade6HandleINS_4EdgeEED2Ev.exit ] %780 = load i8, ptr %170, align 8, !tbaa !395, !range !103, !noundef !53 %781 = trunc nuw i8 %780 to i1 %or.cond = select i1 %781, i1 %775, i1 false @@ -6468,19 +6468,19 @@ _ZNKSt10_HashtableIN3ade7details10MetadataIdESt4pairIKS2_St10unique_ptrINS1_8Met %1044 = load i64, ptr %180, align 8, !tbaa !346 %.not.not.i.i.i410 = icmp eq i64 %1044, 0 %1045 = load i32, ptr %776, align 4 - br i1 %.not.not.i.i.i410, label %.preheader1520, label %1050 + br i1 %.not.not.i.i.i410, label %.preheader1519, label %1050 -.preheader1520: ; preds = %.loopexit762, %1046 +.preheader1519: ; preds = %.loopexit762, %1046 %.sroa.06.0.in.i.i.i419 = phi ptr [ %.sroa.06.0.i.i.i420, %1046 ], [ %182, %.loopexit762 ] %.sroa.06.0.i.i.i420 = load ptr, ptr %.sroa.06.0.in.i.i.i419, align 8, !tbaa !52 %.not.i.i.i421 = icmp eq ptr %.sroa.06.0.i.i.i420, null br i1 %.not.i.i.i421, label %.loopexit.i.i417, label %1046 -1046: ; preds = %.preheader1520 +1046: ; preds = %.preheader1519 %1047 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i.i.i420, i64 8 %1048 = load i32, ptr %1047, align 4, !tbaa !23 %1049 = icmp eq i32 %1045, %1048 - br i1 %1049, label %.loopexit755, label %.preheader1520, !llvm.loop !357 + br i1 %1049, label %.loopexit755, label %.preheader1519, !llvm.loop !357 1050: ; preds = %.loopexit762 %1051 = sext i32 %1045 to i64 @@ -6520,7 +6520,7 @@ _ZNKSt10_HashtableIN3ade7details10MetadataIdESt4pairIKS2_St10unique_ptrINS1_8Met ..loopexit_crit_edge21.i.i.i.i.i416: ; preds = %1065 br label %.loopexit.i.i417, !llvm.loop !350 -.loopexit.i.i417: ; preds = %1050, %.lr.ph.i.i.i.i.i412, %.preheader1520, %..loopexit_crit_edge21.i.i.i.i.i416 +.loopexit.i.i417: ; preds = %1050, %.lr.ph.i.i.i.i.i412, %.preheader1519, %..loopexit_crit_edge21.i.i.i.i.i416 invoke void @_ZSt20__throw_out_of_rangePKc(ptr noundef nonnull @.str.115) #36 to label %.noexc422 unwind label %1158 diff --git a/bench/openvdb/optimized/Prune.ll b/bench/openvdb/optimized/Prune.ll index cd45bdbc500..86eb473660b 100644 --- a/bench/openvdb/optimized/Prune.ll +++ b/bench/openvdb/optimized/Prune.ll @@ -40400,35 +40400,35 @@ for.end: ; preds = %for.inc.i.i.i, %_ZN ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZSt13__introselectIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEElN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_T0_T1_(ptr noundef %__first, ptr noundef %__nth, ptr noundef %__last, i64 noundef %__depth_limit) local_unnamed_addr #5 comdat { entry: - %sub.ptr.lhs.cast22 = ptrtoint ptr %__last to i64 - %sub.ptr.rhs.cast23 = ptrtoint ptr %__first to i64 - %sub.ptr.sub24 = sub i64 %sub.ptr.lhs.cast22, %sub.ptr.rhs.cast23 - %cmp25 = icmp sgt i64 %sub.ptr.sub24, 24 - br i1 %cmp25, label %while.body, label %while.end + %sub.ptr.lhs.cast23 = ptrtoint ptr %__last to i64 + %sub.ptr.rhs.cast24 = ptrtoint ptr %__first to i64 + %sub.ptr.sub25 = sub i64 %sub.ptr.lhs.cast23, %sub.ptr.rhs.cast24 + %cmp26 = icmp sgt i64 %sub.ptr.sub25, 24 + br i1 %cmp26, label %while.body, label %while.end while.body: ; preds = %entry, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit - %sub.ptr.sub29 = phi i64 [ %sub.ptr.sub, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %sub.ptr.sub24, %entry ] - %__first.addr.028 = phi ptr [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__first, %entry ] - %__last.addr.027 = phi ptr [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__last, %entry ] - %__depth_limit.addr.026 = phi i64 [ %dec, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__depth_limit, %entry ] - %cmp1 = icmp eq i64 %__depth_limit.addr.026, 0 + %sub.ptr.sub30 = phi i64 [ %sub.ptr.sub, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %sub.ptr.sub25, %entry ] + %__first.addr.029 = phi ptr [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__first, %entry ] + %__last.addr.028 = phi ptr [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__last, %entry ] + %__depth_limit.addr.027 = phi i64 [ %dec, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__depth_limit, %entry ] + %cmp1 = icmp eq i64 %__depth_limit.addr.027, 0 br i1 %cmp1, label %if.then, label %if.end if.then: ; preds = %while.body %add.ptr = getelementptr inbounds nuw i8, ptr %__nth, i64 8 - tail call void @_ZSt13__heap_selectIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_T0_(ptr noundef %__first.addr.028, ptr noundef nonnull %add.ptr, ptr noundef %__last.addr.027) - %__tmp.sroa.0.0.copyload.i.i = load ptr, ptr %__first.addr.028, align 8 + tail call void @_ZSt13__heap_selectIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_T0_(ptr noundef %__first.addr.029, ptr noundef nonnull %add.ptr, ptr noundef %__last.addr.028) + %__tmp.sroa.0.0.copyload.i.i = load ptr, ptr %__first.addr.029, align 8 %0 = load i64, ptr %__nth, align 8 - store i64 %0, ptr %__first.addr.028, align 8 + store i64 %0, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i, ptr %__nth, align 8 br label %return if.end: ; preds = %while.body - %dec = add nsw i64 %__depth_limit.addr.026, -1 - %div.i1718 = lshr i64 %sub.ptr.sub29, 4 - %add.ptr.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.751", ptr %__first.addr.028, i64 %div.i1718 - %add.ptr1.i = getelementptr inbounds nuw i8, ptr %__first.addr.028, i64 8 - %add.ptr2.i = getelementptr inbounds i8, ptr %__last.addr.027, i64 -8 + %dec = add nsw i64 %__depth_limit.addr.027, -1 + %div.i1819 = lshr i64 %sub.ptr.sub30, 4 + %add.ptr.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.751", ptr %__first.addr.029, i64 %div.i1819 + %add.ptr1.i = getelementptr inbounds nuw i8, ptr %__first.addr.029, i64 8 + %add.ptr2.i = getelementptr inbounds i8, ptr %__last.addr.028, i64 -8 %1 = load float, ptr %add.ptr1.i, align 4 %2 = load float, ptr %add.ptr.i, align 4 %cmp.i.i.i.i = fcmp olt float %1, %2 @@ -40440,26 +40440,26 @@ if.then.i.i: ; preds = %if.end br i1 %cmp.i.i19.i.i, label %if.then2.i.i, label %if.else.i.i if.then2.i.i: ; preds = %if.then.i.i - %__tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %__first.addr.028, align 8 + %__tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %__first.addr.029, align 8 %4 = load i64, ptr %add.ptr.i, align 8 - store i64 %4, ptr %__first.addr.028, align 8 + store i64 %4, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i.i.i, ptr %add.ptr.i, align 8 br label %while.body.i.i.preheader if.else.i.i: ; preds = %if.then.i.i %cmp.i.i20.i.i = fcmp olt float %1, %3 - %__tmp.sroa.0.0.copyload.i.i21.i.i = load ptr, ptr %__first.addr.028, align 8 + %__tmp.sroa.0.0.copyload.i.i21.i.i = load ptr, ptr %__first.addr.029, align 8 br i1 %cmp.i.i20.i.i, label %if.then4.i.i, label %if.else5.i.i if.then4.i.i: ; preds = %if.else.i.i %5 = load i64, ptr %add.ptr2.i, align 8 - store i64 %5, ptr %__first.addr.028, align 8 + store i64 %5, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i21.i.i, ptr %add.ptr2.i, align 8 br label %while.body.i.i.preheader if.else5.i.i: ; preds = %if.else.i.i %6 = load i64, ptr %add.ptr1.i, align 8 - store i64 %6, ptr %__first.addr.028, align 8 + store i64 %6, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i21.i.i, ptr %add.ptr1.i, align 8 br label %while.body.i.i.preheader @@ -40468,26 +40468,26 @@ if.else7.i.i: ; preds = %if.end br i1 %cmp.i.i23.i.i, label %if.then9.i.i, label %if.else10.i.i if.then9.i.i: ; preds = %if.else7.i.i - %__tmp.sroa.0.0.copyload.i.i24.i.i = load ptr, ptr %__first.addr.028, align 8 + %__tmp.sroa.0.0.copyload.i.i24.i.i = load ptr, ptr %__first.addr.029, align 8 %7 = load i64, ptr %add.ptr1.i, align 8 - store i64 %7, ptr %__first.addr.028, align 8 + store i64 %7, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i24.i.i, ptr %add.ptr1.i, align 8 br label %while.body.i.i.preheader if.else10.i.i: ; preds = %if.else7.i.i %cmp.i.i25.i.i = fcmp olt float %2, %3 - %__tmp.sroa.0.0.copyload.i.i26.i.i = load ptr, ptr %__first.addr.028, align 8 + %__tmp.sroa.0.0.copyload.i.i26.i.i = load ptr, ptr %__first.addr.029, align 8 br i1 %cmp.i.i25.i.i, label %if.then12.i.i, label %if.else13.i.i if.then12.i.i: ; preds = %if.else10.i.i %8 = load i64, ptr %add.ptr2.i, align 8 - store i64 %8, ptr %__first.addr.028, align 8 + store i64 %8, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i26.i.i, ptr %add.ptr2.i, align 8 br label %while.body.i.i.preheader if.else13.i.i: ; preds = %if.else10.i.i %9 = load i64, ptr %add.ptr.i, align 8 - store i64 %9, ptr %__first.addr.028, align 8 + store i64 %9, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i26.i.i, ptr %add.ptr.i, align 8 br label %while.body.i.i.preheader @@ -40495,9 +40495,9 @@ while.body.i.i.preheader: ; preds = %if.else13.i.i, %if. br label %while.body.i.i while.body.i.i: ; preds = %while.body.i.i.preheader, %if.end.i.i - %__last.addr.0.i.i = phi ptr [ %__last.addr.1.i.i, %if.end.i.i ], [ %__last.addr.027, %while.body.i.i.preheader ] + %__last.addr.0.i.i = phi ptr [ %__last.addr.1.i.i, %if.end.i.i ], [ %__last.addr.028, %while.body.i.i.preheader ] %__first.addr.0.i.i = phi ptr [ %incdec.ptr.i.i, %if.end.i.i ], [ %add.ptr1.i, %while.body.i.i.preheader ] - %10 = load float, ptr %__first.addr.028, align 4 + %10 = load float, ptr %__first.addr.029, align 4 br label %while.cond1.i.i while.cond1.i.i: ; preds = %while.cond1.i.i, %while.body.i.i @@ -40527,8 +40527,8 @@ if.end.i.i: ; preds = %while.end8.i.i _ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit: ; preds = %while.end8.i.i %cmp3.not = icmp ugt ptr %__first.addr.1.i.i, %__nth - %call.__last.addr.0 = select i1 %cmp3.not, ptr %__first.addr.1.i.i, ptr %__last.addr.027 - %__first.addr.0.call = select i1 %cmp3.not, ptr %__first.addr.028, ptr %__first.addr.1.i.i + %call.__last.addr.0 = select i1 %cmp3.not, ptr %__first.addr.1.i.i, ptr %__last.addr.028 + %__first.addr.0.call = select i1 %cmp3.not, ptr %__first.addr.029, ptr %__first.addr.1.i.i %sub.ptr.lhs.cast = ptrtoint ptr %call.__last.addr.0 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %__first.addr.0.call to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -40538,7 +40538,7 @@ _ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNode while.end: ; preds = %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit, %entry %__last.addr.0.lcssa = phi ptr [ %__last, %entry ], [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ] %__first.addr.0.lcssa = phi ptr [ %__first, %entry ], [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ] - %sub.ptr.rhs.cast.lcssa = phi i64 [ %sub.ptr.rhs.cast23, %entry ], [ %sub.ptr.rhs.cast, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ] + %sub.ptr.rhs.cast.lcssa = phi i64 [ %sub.ptr.rhs.cast24, %entry ], [ %sub.ptr.rhs.cast, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ] %cmp.i = icmp eq ptr %__first.addr.0.lcssa, %__last.addr.0.lcssa %__i.013.i = getelementptr inbounds nuw i8, ptr %__first.addr.0.lcssa, i64 8 %cmp1.not14.i = icmp eq ptr %__i.013.i, %__last.addr.0.lcssa @@ -40569,21 +40569,21 @@ if.else.i: ; preds = %for.body.i %__last.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %__first.pn15.i, i64 12 %16 = load i32, ptr %__last.sroa_idx.i.i, align 4 %17 = load float, ptr %__first.pn15.i, align 4 - %cmp.i.i10.i.i = fcmp ogt float %17, %14 - br i1 %cmp.i.i10.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i - -while.body.i.i15: ; preds = %if.else.i, %while.body.i.i15 - %__next.012.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] - %__last.addr.011.i.i = phi ptr [ %__next.012.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] - %18 = load i64, ptr %__next.012.i.i, align 8 - store i64 %18, ptr %__last.addr.011.i.i, align 8 - %__next.0.i.i = getelementptr inbounds i8, ptr %__next.012.i.i, i64 -8 + %cmp.i.i11.i.i15 = fcmp ogt float %17, %14 + br i1 %cmp.i.i11.i.i15, label %while.body.i.i16, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i + +while.body.i.i16: ; preds = %if.else.i, %while.body.i.i16 + %__next.013.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i16 ], [ %__first.pn15.i, %if.else.i ] + %__last.addr.012.i.i = phi ptr [ %__next.013.i.i, %while.body.i.i16 ], [ %__i.016.i, %if.else.i ] + %18 = load i64, ptr %__next.013.i.i, align 8 + store i64 %18, ptr %__last.addr.012.i.i, align 8 + %__next.0.i.i = getelementptr inbounds i8, ptr %__next.013.i.i, i64 -8 %19 = load float, ptr %__next.0.i.i, align 8 - %cmp.i.i.i.i16 = fcmp ogt float %19, %14 - br i1 %cmp.i.i.i.i16, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !522 + %cmp.i.i.i.i17 = fcmp ogt float %19, %14 + br i1 %cmp.i.i.i.i17, label %while.body.i.i16, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !522 -_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i15, %if.else.i - %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.012.i.i, %while.body.i.i15 ] +_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i16, %if.else.i + %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.013.i.i, %while.body.i.i16 ] store float %14, ptr %__last.addr.0.lcssa.i.i, align 8 %__last.addr.0.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %__last.addr.0.lcssa.i.i, i64 4 store i32 %16, ptr %__last.addr.0.sroa_idx.i.i, align 4 @@ -41511,35 +41511,35 @@ _ZNSt3setIN7openvdb5v11_04math5CoordESt4lessIS3_ESaIS3_EED2Ev.exit: ; preds = %f ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZSt13__introselectIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEElN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_T0_T1_(ptr noundef %__first, ptr noundef %__nth, ptr noundef %__last, i64 noundef %__depth_limit) local_unnamed_addr #5 comdat { entry: - %sub.ptr.lhs.cast22 = ptrtoint ptr %__last to i64 - %sub.ptr.rhs.cast23 = ptrtoint ptr %__first to i64 - %sub.ptr.sub24 = sub i64 %sub.ptr.lhs.cast22, %sub.ptr.rhs.cast23 - %cmp25 = icmp sgt i64 %sub.ptr.sub24, 24 - br i1 %cmp25, label %while.body, label %while.end + %sub.ptr.lhs.cast23 = ptrtoint ptr %__last to i64 + %sub.ptr.rhs.cast24 = ptrtoint ptr %__first to i64 + %sub.ptr.sub25 = sub i64 %sub.ptr.lhs.cast23, %sub.ptr.rhs.cast24 + %cmp26 = icmp sgt i64 %sub.ptr.sub25, 24 + br i1 %cmp26, label %while.body, label %while.end while.body: ; preds = %entry, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit - %sub.ptr.sub29 = phi i64 [ %sub.ptr.sub, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %sub.ptr.sub24, %entry ] - %__first.addr.028 = phi ptr [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__first, %entry ] - %__last.addr.027 = phi ptr [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__last, %entry ] - %__depth_limit.addr.026 = phi i64 [ %dec, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__depth_limit, %entry ] - %cmp1 = icmp eq i64 %__depth_limit.addr.026, 0 + %sub.ptr.sub30 = phi i64 [ %sub.ptr.sub, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %sub.ptr.sub25, %entry ] + %__first.addr.029 = phi ptr [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__first, %entry ] + %__last.addr.028 = phi ptr [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__last, %entry ] + %__depth_limit.addr.027 = phi i64 [ %dec, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__depth_limit, %entry ] + %cmp1 = icmp eq i64 %__depth_limit.addr.027, 0 br i1 %cmp1, label %if.then, label %if.end if.then: ; preds = %while.body %add.ptr = getelementptr inbounds nuw i8, ptr %__nth, i64 8 - tail call void @_ZSt13__heap_selectIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_T0_(ptr noundef %__first.addr.028, ptr noundef nonnull %add.ptr, ptr noundef %__last.addr.027) - %__tmp.sroa.0.0.copyload.i.i = load ptr, ptr %__first.addr.028, align 8 + tail call void @_ZSt13__heap_selectIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_T0_(ptr noundef %__first.addr.029, ptr noundef nonnull %add.ptr, ptr noundef %__last.addr.028) + %__tmp.sroa.0.0.copyload.i.i = load ptr, ptr %__first.addr.029, align 8 %0 = load i64, ptr %__nth, align 8 - store i64 %0, ptr %__first.addr.028, align 8 + store i64 %0, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i, ptr %__nth, align 8 br label %return if.end: ; preds = %while.body - %dec = add nsw i64 %__depth_limit.addr.026, -1 - %div.i1718 = lshr i64 %sub.ptr.sub29, 4 - %add.ptr.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.740", ptr %__first.addr.028, i64 %div.i1718 - %add.ptr1.i = getelementptr inbounds nuw i8, ptr %__first.addr.028, i64 8 - %add.ptr2.i = getelementptr inbounds i8, ptr %__last.addr.027, i64 -8 + %dec = add nsw i64 %__depth_limit.addr.027, -1 + %div.i1819 = lshr i64 %sub.ptr.sub30, 4 + %add.ptr.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.740", ptr %__first.addr.029, i64 %div.i1819 + %add.ptr1.i = getelementptr inbounds nuw i8, ptr %__first.addr.029, i64 8 + %add.ptr2.i = getelementptr inbounds i8, ptr %__last.addr.028, i64 -8 %1 = load float, ptr %add.ptr1.i, align 4 %2 = load float, ptr %add.ptr.i, align 4 %cmp.i.i.i.i = fcmp olt float %1, %2 @@ -41551,26 +41551,26 @@ if.then.i.i: ; preds = %if.end br i1 %cmp.i.i19.i.i, label %if.then2.i.i, label %if.else.i.i if.then2.i.i: ; preds = %if.then.i.i - %__tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %__first.addr.028, align 8 + %__tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %__first.addr.029, align 8 %4 = load i64, ptr %add.ptr.i, align 8 - store i64 %4, ptr %__first.addr.028, align 8 + store i64 %4, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i.i.i, ptr %add.ptr.i, align 8 br label %while.body.i.i.preheader if.else.i.i: ; preds = %if.then.i.i %cmp.i.i20.i.i = fcmp olt float %1, %3 - %__tmp.sroa.0.0.copyload.i.i21.i.i = load ptr, ptr %__first.addr.028, align 8 + %__tmp.sroa.0.0.copyload.i.i21.i.i = load ptr, ptr %__first.addr.029, align 8 br i1 %cmp.i.i20.i.i, label %if.then4.i.i, label %if.else5.i.i if.then4.i.i: ; preds = %if.else.i.i %5 = load i64, ptr %add.ptr2.i, align 8 - store i64 %5, ptr %__first.addr.028, align 8 + store i64 %5, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i21.i.i, ptr %add.ptr2.i, align 8 br label %while.body.i.i.preheader if.else5.i.i: ; preds = %if.else.i.i %6 = load i64, ptr %add.ptr1.i, align 8 - store i64 %6, ptr %__first.addr.028, align 8 + store i64 %6, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i21.i.i, ptr %add.ptr1.i, align 8 br label %while.body.i.i.preheader @@ -41579,26 +41579,26 @@ if.else7.i.i: ; preds = %if.end br i1 %cmp.i.i23.i.i, label %if.then9.i.i, label %if.else10.i.i if.then9.i.i: ; preds = %if.else7.i.i - %__tmp.sroa.0.0.copyload.i.i24.i.i = load ptr, ptr %__first.addr.028, align 8 + %__tmp.sroa.0.0.copyload.i.i24.i.i = load ptr, ptr %__first.addr.029, align 8 %7 = load i64, ptr %add.ptr1.i, align 8 - store i64 %7, ptr %__first.addr.028, align 8 + store i64 %7, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i24.i.i, ptr %add.ptr1.i, align 8 br label %while.body.i.i.preheader if.else10.i.i: ; preds = %if.else7.i.i %cmp.i.i25.i.i = fcmp olt float %2, %3 - %__tmp.sroa.0.0.copyload.i.i26.i.i = load ptr, ptr %__first.addr.028, align 8 + %__tmp.sroa.0.0.copyload.i.i26.i.i = load ptr, ptr %__first.addr.029, align 8 br i1 %cmp.i.i25.i.i, label %if.then12.i.i, label %if.else13.i.i if.then12.i.i: ; preds = %if.else10.i.i %8 = load i64, ptr %add.ptr2.i, align 8 - store i64 %8, ptr %__first.addr.028, align 8 + store i64 %8, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i26.i.i, ptr %add.ptr2.i, align 8 br label %while.body.i.i.preheader if.else13.i.i: ; preds = %if.else10.i.i %9 = load i64, ptr %add.ptr.i, align 8 - store i64 %9, ptr %__first.addr.028, align 8 + store i64 %9, ptr %__first.addr.029, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i26.i.i, ptr %add.ptr.i, align 8 br label %while.body.i.i.preheader @@ -41606,9 +41606,9 @@ while.body.i.i.preheader: ; preds = %if.else13.i.i, %if. br label %while.body.i.i while.body.i.i: ; preds = %while.body.i.i.preheader, %if.end.i.i - %__last.addr.0.i.i = phi ptr [ %__last.addr.1.i.i, %if.end.i.i ], [ %__last.addr.027, %while.body.i.i.preheader ] + %__last.addr.0.i.i = phi ptr [ %__last.addr.1.i.i, %if.end.i.i ], [ %__last.addr.028, %while.body.i.i.preheader ] %__first.addr.0.i.i = phi ptr [ %incdec.ptr.i.i, %if.end.i.i ], [ %add.ptr1.i, %while.body.i.i.preheader ] - %10 = load float, ptr %__first.addr.028, align 4 + %10 = load float, ptr %__first.addr.029, align 4 br label %while.cond1.i.i while.cond1.i.i: ; preds = %while.cond1.i.i, %while.body.i.i @@ -41638,8 +41638,8 @@ if.end.i.i: ; preds = %while.end8.i.i _ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit: ; preds = %while.end8.i.i %cmp3.not = icmp ugt ptr %__first.addr.1.i.i, %__nth - %call.__last.addr.0 = select i1 %cmp3.not, ptr %__first.addr.1.i.i, ptr %__last.addr.027 - %__first.addr.0.call = select i1 %cmp3.not, ptr %__first.addr.028, ptr %__first.addr.1.i.i + %call.__last.addr.0 = select i1 %cmp3.not, ptr %__first.addr.1.i.i, ptr %__last.addr.028 + %__first.addr.0.call = select i1 %cmp3.not, ptr %__first.addr.029, ptr %__first.addr.1.i.i %sub.ptr.lhs.cast = ptrtoint ptr %call.__last.addr.0 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %__first.addr.0.call to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -41649,7 +41649,7 @@ _ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12Interna while.end: ; preds = %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit, %entry %__last.addr.0.lcssa = phi ptr [ %__last, %entry ], [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ] %__first.addr.0.lcssa = phi ptr [ %__first, %entry ], [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ] - %sub.ptr.rhs.cast.lcssa = phi i64 [ %sub.ptr.rhs.cast23, %entry ], [ %sub.ptr.rhs.cast, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ] + %sub.ptr.rhs.cast.lcssa = phi i64 [ %sub.ptr.rhs.cast24, %entry ], [ %sub.ptr.rhs.cast, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ] %cmp.i = icmp eq ptr %__first.addr.0.lcssa, %__last.addr.0.lcssa %__i.013.i = getelementptr inbounds nuw i8, ptr %__first.addr.0.lcssa, i64 8 %cmp1.not14.i = icmp eq ptr %__i.013.i, %__last.addr.0.lcssa @@ -41680,21 +41680,21 @@ if.else.i: ; preds = %for.body.i %__last.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %__first.pn15.i, i64 12 %16 = load i32, ptr %__last.sroa_idx.i.i, align 4 %17 = load float, ptr %__first.pn15.i, align 4 - %cmp.i.i10.i.i = fcmp ogt float %17, %14 - br i1 %cmp.i.i10.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i - -while.body.i.i15: ; preds = %if.else.i, %while.body.i.i15 - %__next.012.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] - %__last.addr.011.i.i = phi ptr [ %__next.012.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] - %18 = load i64, ptr %__next.012.i.i, align 8 - store i64 %18, ptr %__last.addr.011.i.i, align 8 - %__next.0.i.i = getelementptr inbounds i8, ptr %__next.012.i.i, i64 -8 + %cmp.i.i11.i.i15 = fcmp ogt float %17, %14 + br i1 %cmp.i.i11.i.i15, label %while.body.i.i16, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i + +while.body.i.i16: ; preds = %if.else.i, %while.body.i.i16 + %__next.013.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i16 ], [ %__first.pn15.i, %if.else.i ] + %__last.addr.012.i.i = phi ptr [ %__next.013.i.i, %while.body.i.i16 ], [ %__i.016.i, %if.else.i ] + %18 = load i64, ptr %__next.013.i.i, align 8 + store i64 %18, ptr %__last.addr.012.i.i, align 8 + %__next.0.i.i = getelementptr inbounds i8, ptr %__next.013.i.i, i64 -8 %19 = load float, ptr %__next.0.i.i, align 8 - %cmp.i.i.i.i16 = fcmp ogt float %19, %14 - br i1 %cmp.i.i.i.i16, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !541 + %cmp.i.i.i.i17 = fcmp ogt float %19, %14 + br i1 %cmp.i.i.i.i17, label %while.body.i.i16, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !541 -_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i15, %if.else.i - %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.012.i.i, %while.body.i.i15 ] +_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i16, %if.else.i + %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.013.i.i, %while.body.i.i16 ] store float %14, ptr %__last.addr.0.lcssa.i.i, align 8 %__last.addr.0.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %__last.addr.0.lcssa.i.i, i64 4 store i32 %16, ptr %__last.addr.0.sroa_idx.i.i, align 4 @@ -49922,21 +49922,21 @@ if.then2.i: ; preds = %for.body.i if.else.i: ; preds = %for.body.i %13 = load double, ptr %__first.pn15.i, align 8 - %cmp.i.i10.i.i = fcmp ogt double %13, %9 - br i1 %cmp.i.i10.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i + %cmp.i.i9.i.i = fcmp ogt double %13, %9 + br i1 %cmp.i.i9.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i while.body.i.i15: ; preds = %if.else.i, %while.body.i.i15 %.in.i.i = phi double [ %14, %while.body.i.i15 ], [ %13, %if.else.i ] - %__next.012.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] - %__last.addr.011.i.i = phi ptr [ %__next.012.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] - store double %.in.i.i, ptr %__last.addr.011.i.i, align 8 - %__next.0.i.i = getelementptr inbounds i8, ptr %__next.012.i.i, i64 -8 + %__next.011.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] + %__last.addr.010.i.i = phi ptr [ %__next.011.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] + store double %.in.i.i, ptr %__last.addr.010.i.i, align 8 + %__next.0.i.i = getelementptr inbounds i8, ptr %__next.011.i.i, i64 -8 %14 = load double, ptr %__next.0.i.i, align 8 %cmp.i.i.i.i16 = fcmp ogt double %14, %9 br i1 %cmp.i.i.i.i16, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !619 _ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i15, %if.else.i - %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.012.i.i, %while.body.i.i15 ] + %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.011.i.i, %while.body.i.i15 ] store double %9, ptr %__last.addr.0.lcssa.i.i, align 8 br label %for.inc.i @@ -50008,8 +50008,8 @@ while.body.i.i.us: ; preds = %if.then.us, %while. br i1 %cmp.i.i8.us, label %while.body.i.i.us, label %while.end.i.i.loopexit.us, !llvm.loop !621 if.end17.i.i.us: ; preds = %while.end.i.i.loopexit.us - %cmp13.i.i.not.i.us = icmp eq i64 %spec.select.i.i.us, 0 - br i1 %cmp13.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us.preheader + %cmp12.i.i.not.i.us = icmp eq i64 %spec.select.i.i.us, 0 + br i1 %cmp12.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us.preheader if.end17.i.thread.i.us: ; preds = %while.end.i.i.loopexit.us %7 = load i64, ptr %add.ptr14.i.i.us, align 8 @@ -50017,26 +50017,26 @@ if.end17.i.thread.i.us: ; preds = %while.end.i.i.loope br label %land.rhs.i.i.i.us.preheader land.rhs.i.i.i.us.preheader: ; preds = %if.end17.i.thread.i.us, %if.end17.i.i.us - %__holeIndex.addr.014.i.i.i.us.ph = phi i64 [ %spec.select.i.i.us, %if.end17.i.i.us ], [ %sub13.i.i.us, %if.end17.i.thread.i.us ] + %__holeIndex.addr.013.i.i.i.us.ph = phi i64 [ %spec.select.i.i.us, %if.end17.i.i.us ], [ %sub13.i.i.us, %if.end17.i.thread.i.us ] br label %land.rhs.i.i.i.us land.rhs.i.i.i.us: ; preds = %land.rhs.i.i.i.us.preheader, %while.body.i.i.i.us - %__holeIndex.addr.014.i.i.i.us = phi i64 [ %__parent.015.i.i45.i.us, %while.body.i.i.i.us ], [ %__holeIndex.addr.014.i.i.i.us.ph, %land.rhs.i.i.i.us.preheader ] - %__parent.015.in.i.i.i.us = add nsw i64 %__holeIndex.addr.014.i.i.i.us, -1 - %__parent.015.i.i45.i.us = lshr i64 %__parent.015.in.i.i.i.us, 1 - %add.ptr.i.i.i.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.015.i.i45.i.us + %__holeIndex.addr.013.i.i.i.us = phi i64 [ %__parent.014.i.i78.i.us, %while.body.i.i.i.us ], [ %__holeIndex.addr.013.i.i.i.us.ph, %land.rhs.i.i.i.us.preheader ] + %__parent.014.in.i.i.i.us = add nsw i64 %__holeIndex.addr.013.i.i.i.us, -1 + %__parent.014.i.i78.i.us = lshr i64 %__parent.014.in.i.i.i.us, 1 + %add.ptr.i.i.i.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.014.i.i78.i.us %8 = load double, ptr %add.ptr.i.i.i.us, align 8 %cmp.i.i.i.i.i.us = fcmp olt double %8, %1 br i1 %cmp.i.i.i.i.i.us, label %while.body.i.i.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us while.body.i.i.i.us: ; preds = %land.rhs.i.i.i.us - %add.ptr3.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.014.i.i.i.us + %add.ptr3.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.013.i.i.i.us store double %8, ptr %add.ptr3.i.i.i.us, align 8 - %cmp.i.i.not.i.us = icmp eq i64 %__parent.015.i.i45.i.us, 0 + %cmp.i.i.not.i.us = icmp eq i64 %__parent.014.i.i78.i.us, 0 br i1 %cmp.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us, !llvm.loop !622 _ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us: ; preds = %land.rhs.i.i.i.us, %while.body.i.i.i.us, %if.end17.i.i.us - %__holeIndex.addr.0.lcssa.i.i.i.us = phi i64 [ 0, %if.end17.i.i.us ], [ 0, %while.body.i.i.i.us ], [ %__holeIndex.addr.014.i.i.i.us, %land.rhs.i.i.i.us ] + %__holeIndex.addr.0.lcssa.i.i.i.us = phi i64 [ 0, %if.end17.i.i.us ], [ 0, %while.body.i.i.i.us ], [ %__holeIndex.addr.013.i.i.i.us, %land.rhs.i.i.i.us ] %add.ptr6.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i.i.us store double %1, ptr %add.ptr6.i.i.i.us, align 8 br label %for.inc.us @@ -50154,8 +50154,8 @@ if.end.split: ; preds = %entry %add.ptr9 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %div13 %__value.sroa.0.0.copyload10 = load ptr, ptr %add.ptr9, align 8 %sub.i = add nsw i64 %sub.ptr.div, -1 - %div.i5759 = lshr i64 %sub.i, 1 - %cmp23.i = icmp samesign ult i64 %div13, %div.i5759 + %div.i5860 = lshr i64 %sub.i, 1 + %cmp23.i = icmp samesign ult i64 %div13, %div.i5860 br i1 %cmp23.i, label %while.body.i, label %while.end.i while.body.i: ; preds = %if.end.split, %while.body.i @@ -50174,7 +50174,7 @@ while.body.i: ; preds = %if.end.split, %whil %add.ptr5.i = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i %3 = load i64, ptr %add.ptr4.i, align 8 store i64 %3, ptr %add.ptr5.i, align 8 - %cmp.i = icmp slt i64 %spec.select.i, %div.i5759 + %cmp.i = icmp slt i64 %spec.select.i, %div.i5860 br i1 %cmp.i, label %while.body.i, label %while.end.i, !llvm.loop !621 while.end.i: ; preds = %while.body.i, %if.end.split @@ -50194,170 +50194,179 @@ if.then10.i: ; preds = %while.end.i if.end17.i: ; preds = %if.then10.i, %while.end.i %__holeIndex.addr.1.i = phi i64 [ %sub13.i, %if.then10.i ], [ %__holeIndex.addr.0.lcssa.i, %while.end.i ] - %cmp13.i.i = icmp samesign ugt i64 %__holeIndex.addr.1.i, %div13 %6 = ptrtoint ptr %__value.sroa.0.0.copyload10 to i64 + %cmp12.i.i = icmp samesign ugt i64 %__holeIndex.addr.1.i, %div13 + br i1 %cmp12.i.i, label %land.rhs.lr.ph.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit + +land.rhs.lr.ph.i.i: ; preds = %if.end17.i %7 = bitcast i64 %6 to double - br i1 %cmp13.i.i, label %land.rhs.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit + br label %land.rhs.i.i -land.rhs.i.i: ; preds = %if.end17.i, %while.body.i.i - %__holeIndex.addr.014.i.i = phi i64 [ %__parent.015.i.i65, %while.body.i.i ], [ %__holeIndex.addr.1.i, %if.end17.i ] - %__parent.015.in.i.i = add nsw i64 %__holeIndex.addr.014.i.i, -1 - %__parent.015.i.i65 = lshr i64 %__parent.015.in.i.i, 1 - %add.ptr.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.015.i.i65 +land.rhs.i.i: ; preds = %while.body.i.i, %land.rhs.lr.ph.i.i + %__holeIndex.addr.013.i.i = phi i64 [ %__holeIndex.addr.1.i, %land.rhs.lr.ph.i.i ], [ %__parent.014.i.i66, %while.body.i.i ] + %__parent.014.in.i.i = add nsw i64 %__holeIndex.addr.013.i.i, -1 + %__parent.014.i.i66 = lshr i64 %__parent.014.in.i.i, 1 + %add.ptr.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.014.i.i66 %8 = load double, ptr %add.ptr.i.i, align 8 %cmp.i.i.i.i = fcmp olt double %8, %7 br i1 %cmp.i.i.i.i, label %while.body.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit while.body.i.i: ; preds = %land.rhs.i.i - %add.ptr3.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.014.i.i + %add.ptr3.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.013.i.i store double %8, ptr %add.ptr3.i.i, align 8 - %cmp.i.i = icmp samesign ugt i64 %__parent.015.i.i65, %div13 + %cmp.i.i = icmp samesign ugt i64 %__parent.014.i.i66, %div13 br i1 %cmp.i.i, label %land.rhs.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit, !llvm.loop !622 _ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit: ; preds = %land.rhs.i.i, %while.body.i.i, %if.end17.i - %__holeIndex.addr.0.lcssa.i.i = phi i64 [ %__holeIndex.addr.1.i, %if.end17.i ], [ %__parent.015.i.i65, %while.body.i.i ], [ %__holeIndex.addr.014.i.i, %land.rhs.i.i ] + %__holeIndex.addr.0.lcssa.i.i = phi i64 [ %__holeIndex.addr.1.i, %if.end17.i ], [ %__parent.014.i.i66, %while.body.i.i ], [ %__holeIndex.addr.013.i.i, %land.rhs.i.i ] %add.ptr6.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i store i64 %6, ptr %add.ptr6.i.i, align 8 - %cmp760 = icmp eq i64 %div13, 0 - br i1 %cmp760, label %return, label %if.end9.split.lr.ph + %cmp761 = icmp eq i64 %div13, 0 + br i1 %cmp761, label %return, label %if.end9.split.lr.ph if.end9.split.lr.ph: ; preds = %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit - %div8.i37 = lshr exact i64 %sub, 1 + %div8.i38 = lshr exact i64 %sub, 1 br i1 %cmp6.i, label %if.end9.split.preheader, label %if.end9.split.us if.end9.split.preheader: ; preds = %if.end9.split.lr.ph - %sub13.i41 = or disjoint i64 %sub, 1 - %add.ptr14.i42 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %sub13.i41 - %add.ptr15.i43 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %div8.i37 + %sub13.i42 = or disjoint i64 %sub, 1 + %add.ptr14.i43 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %sub13.i42 + %add.ptr15.i44 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %div8.i38 br label %if.end9.split -if.end9.split.us: ; preds = %if.end9.split.lr.ph, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us - %__parent.061.us = phi i64 [ %dec.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us ], [ %div13, %if.end9.split.lr.ph ] - %dec.us = add nsw i64 %__parent.061.us, -1 +if.end9.split.us: ; preds = %if.end9.split.lr.ph, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us + %__parent.062.us = phi i64 [ %dec.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us ], [ %div13, %if.end9.split.lr.ph ] + %dec.us = add nsw i64 %__parent.062.us, -1 %add.ptr11.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %dec.us %__value.sroa.0.0.copyload12.us = load ptr, ptr %add.ptr11.us, align 8 - %cmp23.i16.not.us = icmp sgt i64 %__parent.061.us, %div.i5759 - br i1 %cmp23.i16.not.us, label %while.end.i17.us.thread, label %while.body.i44.us + %cmp23.i16.not.us = icmp sgt i64 %__parent.062.us, %div.i5860 + br i1 %cmp23.i16.not.us, label %while.end.i17.us.thread, label %while.body.i45.us while.end.i17.us.thread: ; preds = %if.end9.split.us %9 = ptrtoint ptr %__value.sroa.0.0.copyload12.us to i64 - br label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us - -while.body.i44.us: ; preds = %if.end9.split.us, %while.body.i44.us - %__holeIndex.addr.024.i45.us = phi i64 [ %spec.select.i52.us, %while.body.i44.us ], [ %dec.us, %if.end9.split.us ] - %add.i46.us = shl i64 %__holeIndex.addr.024.i45.us, 1 - %mul.i47.us = add i64 %add.i46.us, 2 - %add.ptr.i48.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %mul.i47.us - %10 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %add.i46.us - %add.ptr3.i49.us = getelementptr i8, ptr %10, i64 8 - %11 = load double, ptr %add.ptr.i48.us, align 8 - %12 = load double, ptr %add.ptr3.i49.us, align 8 - %cmp.i.i.i50.us = fcmp olt double %11, %12 - %dec.i51.us = or disjoint i64 %add.i46.us, 1 - %spec.select.i52.us = select i1 %cmp.i.i.i50.us, i64 %dec.i51.us, i64 %mul.i47.us - %add.ptr4.i53.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %spec.select.i52.us - %add.ptr5.i54.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i45.us - %13 = load i64, ptr %add.ptr4.i53.us, align 8 - store i64 %13, ptr %add.ptr5.i54.us, align 8 - %cmp.i55.us = icmp slt i64 %spec.select.i52.us, %div.i5759 - br i1 %cmp.i55.us, label %while.body.i44.us, label %while.end.i17.us, !llvm.loop !621 - -while.end.i17.us: ; preds = %while.body.i44.us - %cmp13.i.i23.not.us = icmp slt i64 %spec.select.i52.us, %__parent.061.us + br label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us + +while.body.i45.us: ; preds = %if.end9.split.us, %while.body.i45.us + %__holeIndex.addr.024.i46.us = phi i64 [ %spec.select.i53.us, %while.body.i45.us ], [ %dec.us, %if.end9.split.us ] + %add.i47.us = shl i64 %__holeIndex.addr.024.i46.us, 1 + %mul.i48.us = add i64 %add.i47.us, 2 + %add.ptr.i49.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %mul.i48.us + %10 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %add.i47.us + %add.ptr3.i50.us = getelementptr i8, ptr %10, i64 8 + %11 = load double, ptr %add.ptr.i49.us, align 8 + %12 = load double, ptr %add.ptr3.i50.us, align 8 + %cmp.i.i.i51.us = fcmp olt double %11, %12 + %dec.i52.us = or disjoint i64 %add.i47.us, 1 + %spec.select.i53.us = select i1 %cmp.i.i.i51.us, i64 %dec.i52.us, i64 %mul.i48.us + %add.ptr4.i54.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %spec.select.i53.us + %add.ptr5.i55.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i46.us + %13 = load i64, ptr %add.ptr4.i54.us, align 8 + store i64 %13, ptr %add.ptr5.i55.us, align 8 + %cmp.i56.us = icmp slt i64 %spec.select.i53.us, %div.i5860 + br i1 %cmp.i56.us, label %while.body.i45.us, label %while.end.i17.us, !llvm.loop !621 + +while.end.i17.us: ; preds = %while.body.i45.us %14 = ptrtoint ptr %__value.sroa.0.0.copyload12.us to i64 - %15 = bitcast i64 %14 to double - br i1 %cmp13.i.i23.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us, label %land.rhs.i.i26.us - -land.rhs.i.i26.us: ; preds = %while.end.i17.us, %while.body.i.i32.us - %__holeIndex.addr.014.i.i27.us = phi i64 [ %__parent.015.i.i29.us66, %while.body.i.i32.us ], [ %spec.select.i52.us, %while.end.i17.us ] - %__parent.015.in.i.i28.us = add nsw i64 %__holeIndex.addr.014.i.i27.us, -1 - %__parent.015.i.i29.us66 = lshr i64 %__parent.015.in.i.i28.us, 1 - %add.ptr.i.i30.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.015.i.i29.us66 - %16 = load double, ptr %add.ptr.i.i30.us, align 8 - %cmp.i.i.i.i31.us = fcmp olt double %16, %15 - br i1 %cmp.i.i.i.i31.us, label %while.body.i.i32.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us + %cmp12.i.i23.not.us = icmp slt i64 %spec.select.i53.us, %__parent.062.us + br i1 %cmp12.i.i23.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, label %land.rhs.lr.ph.i.i26.us -while.body.i.i32.us: ; preds = %land.rhs.i.i26.us - %add.ptr3.i.i33.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.014.i.i27.us - store double %16, ptr %add.ptr3.i.i33.us, align 8 - %cmp.i.i34.not.us = icmp slt i64 %__parent.015.i.i29.us66, %__parent.061.us - br i1 %cmp.i.i34.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us, label %land.rhs.i.i26.us, !llvm.loop !622 - -_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us: ; preds = %land.rhs.i.i26.us, %while.body.i.i32.us, %while.end.i17.us.thread, %while.end.i17.us - %17 = phi i64 [ %14, %while.end.i17.us ], [ %9, %while.end.i17.us.thread ], [ %14, %while.body.i.i32.us ], [ %14, %land.rhs.i.i26.us ] - %__holeIndex.addr.0.lcssa.i.i24.us = phi i64 [ %spec.select.i52.us, %while.end.i17.us ], [ %dec.us, %while.end.i17.us.thread ], [ %__holeIndex.addr.014.i.i27.us, %land.rhs.i.i26.us ], [ %__parent.015.i.i29.us66, %while.body.i.i32.us ] +land.rhs.lr.ph.i.i26.us: ; preds = %while.end.i17.us + %15 = bitcast i64 %14 to double + br label %land.rhs.i.i27.us + +land.rhs.i.i27.us: ; preds = %while.body.i.i33.us, %land.rhs.lr.ph.i.i26.us + %__holeIndex.addr.013.i.i28.us = phi i64 [ %spec.select.i53.us, %land.rhs.lr.ph.i.i26.us ], [ %__parent.014.i.i30.us67, %while.body.i.i33.us ] + %__parent.014.in.i.i29.us = add nsw i64 %__holeIndex.addr.013.i.i28.us, -1 + %__parent.014.i.i30.us67 = lshr i64 %__parent.014.in.i.i29.us, 1 + %add.ptr.i.i31.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.014.i.i30.us67 + %16 = load double, ptr %add.ptr.i.i31.us, align 8 + %cmp.i.i.i.i32.us = fcmp olt double %16, %15 + br i1 %cmp.i.i.i.i32.us, label %while.body.i.i33.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us + +while.body.i.i33.us: ; preds = %land.rhs.i.i27.us + %add.ptr3.i.i34.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.013.i.i28.us + store double %16, ptr %add.ptr3.i.i34.us, align 8 + %cmp.i.i35.not.us = icmp slt i64 %__parent.014.i.i30.us67, %__parent.062.us + br i1 %cmp.i.i35.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, label %land.rhs.i.i27.us, !llvm.loop !622 + +_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us: ; preds = %land.rhs.i.i27.us, %while.body.i.i33.us, %while.end.i17.us.thread, %while.end.i17.us + %17 = phi i64 [ %14, %while.end.i17.us ], [ %9, %while.end.i17.us.thread ], [ %14, %while.body.i.i33.us ], [ %14, %land.rhs.i.i27.us ] + %__holeIndex.addr.0.lcssa.i.i24.us = phi i64 [ %spec.select.i53.us, %while.end.i17.us ], [ %dec.us, %while.end.i17.us.thread ], [ %__holeIndex.addr.013.i.i28.us, %land.rhs.i.i27.us ], [ %__parent.014.i.i30.us67, %while.body.i.i33.us ] %add.ptr6.i.i25.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i24.us store i64 %17, ptr %add.ptr6.i.i25.us, align 8 %cmp7.us = icmp eq i64 %dec.us, 0 br i1 %cmp7.us, label %return, label %if.end9.split.us, !llvm.loop !624 -if.end9.split: ; preds = %if.end9.split.preheader, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56 - %__parent.061 = phi i64 [ %dec, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56 ], [ %div13, %if.end9.split.preheader ] - %dec = add nsw i64 %__parent.061, -1 +if.end9.split: ; preds = %if.end9.split.preheader, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 + %__parent.062 = phi i64 [ %dec, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 ], [ %div13, %if.end9.split.preheader ] + %dec = add nsw i64 %__parent.062, -1 %add.ptr11 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %dec %__value.sroa.0.0.copyload12 = load ptr, ptr %add.ptr11, align 8 - %cmp23.i16.not = icmp sgt i64 %__parent.061, %div.i5759 - br i1 %cmp23.i16.not, label %while.end.i17, label %while.body.i44 - -while.body.i44: ; preds = %if.end9.split, %while.body.i44 - %__holeIndex.addr.024.i45 = phi i64 [ %spec.select.i52, %while.body.i44 ], [ %dec, %if.end9.split ] - %add.i46 = shl i64 %__holeIndex.addr.024.i45, 1 - %mul.i47 = add i64 %add.i46, 2 - %add.ptr.i48 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %mul.i47 - %18 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %add.i46 - %add.ptr3.i49 = getelementptr i8, ptr %18, i64 8 - %19 = load double, ptr %add.ptr.i48, align 8 - %20 = load double, ptr %add.ptr3.i49, align 8 - %cmp.i.i.i50 = fcmp olt double %19, %20 - %dec.i51 = or disjoint i64 %add.i46, 1 - %spec.select.i52 = select i1 %cmp.i.i.i50, i64 %dec.i51, i64 %mul.i47 - %add.ptr4.i53 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %spec.select.i52 - %add.ptr5.i54 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i45 - %21 = load i64, ptr %add.ptr4.i53, align 8 - store i64 %21, ptr %add.ptr5.i54, align 8 - %cmp.i55 = icmp slt i64 %spec.select.i52, %div.i5759 - br i1 %cmp.i55, label %while.body.i44, label %while.end.i17, !llvm.loop !621 - -while.end.i17: ; preds = %while.body.i44, %if.end9.split - %__holeIndex.addr.0.lcssa.i18 = phi i64 [ %dec, %if.end9.split ], [ %spec.select.i52, %while.body.i44 ] - %cmp9.i38 = icmp eq i64 %__holeIndex.addr.0.lcssa.i18, %div8.i37 - br i1 %cmp9.i38, label %if.then10.i39, label %if.end17.i21 - -if.then10.i39: ; preds = %while.end.i17 - %22 = load i64, ptr %add.ptr14.i42, align 8 - store i64 %22, ptr %add.ptr15.i43, align 8 + %cmp23.i16.not = icmp sgt i64 %__parent.062, %div.i5860 + br i1 %cmp23.i16.not, label %while.end.i17, label %while.body.i45 + +while.body.i45: ; preds = %if.end9.split, %while.body.i45 + %__holeIndex.addr.024.i46 = phi i64 [ %spec.select.i53, %while.body.i45 ], [ %dec, %if.end9.split ] + %add.i47 = shl i64 %__holeIndex.addr.024.i46, 1 + %mul.i48 = add i64 %add.i47, 2 + %add.ptr.i49 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %mul.i48 + %18 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %add.i47 + %add.ptr3.i50 = getelementptr i8, ptr %18, i64 8 + %19 = load double, ptr %add.ptr.i49, align 8 + %20 = load double, ptr %add.ptr3.i50, align 8 + %cmp.i.i.i51 = fcmp olt double %19, %20 + %dec.i52 = or disjoint i64 %add.i47, 1 + %spec.select.i53 = select i1 %cmp.i.i.i51, i64 %dec.i52, i64 %mul.i48 + %add.ptr4.i54 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %spec.select.i53 + %add.ptr5.i55 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i46 + %21 = load i64, ptr %add.ptr4.i54, align 8 + store i64 %21, ptr %add.ptr5.i55, align 8 + %cmp.i56 = icmp slt i64 %spec.select.i53, %div.i5860 + br i1 %cmp.i56, label %while.body.i45, label %while.end.i17, !llvm.loop !621 + +while.end.i17: ; preds = %while.body.i45, %if.end9.split + %__holeIndex.addr.0.lcssa.i18 = phi i64 [ %dec, %if.end9.split ], [ %spec.select.i53, %while.body.i45 ] + %cmp9.i39 = icmp eq i64 %__holeIndex.addr.0.lcssa.i18, %div8.i38 + br i1 %cmp9.i39, label %if.then10.i40, label %if.end17.i21 + +if.then10.i40: ; preds = %while.end.i17 + %22 = load i64, ptr %add.ptr14.i43, align 8 + store i64 %22, ptr %add.ptr15.i44, align 8 br label %if.end17.i21 -if.end17.i21: ; preds = %if.then10.i39, %while.end.i17 - %__holeIndex.addr.1.i22 = phi i64 [ %sub13.i41, %if.then10.i39 ], [ %__holeIndex.addr.0.lcssa.i18, %while.end.i17 ] - %cmp13.i.i23.not = icmp slt i64 %__holeIndex.addr.1.i22, %__parent.061 +if.end17.i21: ; preds = %if.then10.i40, %while.end.i17 + %__holeIndex.addr.1.i22 = phi i64 [ %sub13.i42, %if.then10.i40 ], [ %__holeIndex.addr.0.lcssa.i18, %while.end.i17 ] %23 = ptrtoint ptr %__value.sroa.0.0.copyload12 to i64 - %24 = bitcast i64 %23 to double - br i1 %cmp13.i.i23.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56, label %land.rhs.i.i26 - -land.rhs.i.i26: ; preds = %if.end17.i21, %while.body.i.i32 - %__holeIndex.addr.014.i.i27 = phi i64 [ %__parent.015.i.i2967, %while.body.i.i32 ], [ %__holeIndex.addr.1.i22, %if.end17.i21 ] - %__parent.015.in.i.i28 = add nsw i64 %__holeIndex.addr.014.i.i27, -1 - %__parent.015.i.i2967 = lshr i64 %__parent.015.in.i.i28, 1 - %add.ptr.i.i30 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.015.i.i2967 - %25 = load double, ptr %add.ptr.i.i30, align 8 - %cmp.i.i.i.i31 = fcmp olt double %25, %24 - br i1 %cmp.i.i.i.i31, label %while.body.i.i32, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56 + %cmp12.i.i23.not = icmp slt i64 %__holeIndex.addr.1.i22, %__parent.062 + br i1 %cmp12.i.i23.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, label %land.rhs.lr.ph.i.i26 -while.body.i.i32: ; preds = %land.rhs.i.i26 - %add.ptr3.i.i33 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.014.i.i27 - store double %25, ptr %add.ptr3.i.i33, align 8 - %cmp.i.i34.not = icmp slt i64 %__parent.015.i.i2967, %__parent.061 - br i1 %cmp.i.i34.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56, label %land.rhs.i.i26, !llvm.loop !622 - -_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56: ; preds = %land.rhs.i.i26, %while.body.i.i32, %if.end17.i21 - %__holeIndex.addr.0.lcssa.i.i24 = phi i64 [ %__holeIndex.addr.1.i22, %if.end17.i21 ], [ %__parent.015.i.i2967, %while.body.i.i32 ], [ %__holeIndex.addr.014.i.i27, %land.rhs.i.i26 ] +land.rhs.lr.ph.i.i26: ; preds = %if.end17.i21 + %24 = bitcast i64 %23 to double + br label %land.rhs.i.i27 + +land.rhs.i.i27: ; preds = %while.body.i.i33, %land.rhs.lr.ph.i.i26 + %__holeIndex.addr.013.i.i28 = phi i64 [ %__holeIndex.addr.1.i22, %land.rhs.lr.ph.i.i26 ], [ %__parent.014.i.i3068, %while.body.i.i33 ] + %__parent.014.in.i.i29 = add nsw i64 %__holeIndex.addr.013.i.i28, -1 + %__parent.014.i.i3068 = lshr i64 %__parent.014.in.i.i29, 1 + %add.ptr.i.i31 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.014.i.i3068 + %25 = load double, ptr %add.ptr.i.i31, align 8 + %cmp.i.i.i.i32 = fcmp olt double %25, %24 + br i1 %cmp.i.i.i.i32, label %while.body.i.i33, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 + +while.body.i.i33: ; preds = %land.rhs.i.i27 + %add.ptr3.i.i34 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.013.i.i28 + store double %25, ptr %add.ptr3.i.i34, align 8 + %cmp.i.i35.not = icmp slt i64 %__parent.014.i.i3068, %__parent.062 + br i1 %cmp.i.i35.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, label %land.rhs.i.i27, !llvm.loop !622 + +_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57: ; preds = %land.rhs.i.i27, %while.body.i.i33, %if.end17.i21 + %__holeIndex.addr.0.lcssa.i.i24 = phi i64 [ %__holeIndex.addr.1.i22, %if.end17.i21 ], [ %__parent.014.i.i3068, %while.body.i.i33 ], [ %__holeIndex.addr.013.i.i28, %land.rhs.i.i27 ] %add.ptr6.i.i25 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i24 store i64 %23, ptr %add.ptr6.i.i25, align 8 %cmp7 = icmp eq i64 %dec, 0 br i1 %cmp7, label %return, label %if.end9.split, !llvm.loop !624 -return: ; preds = %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit, %entry +return: ; preds = %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit, %entry ret void } @@ -51001,21 +51010,21 @@ if.then2.i: ; preds = %for.body.i if.else.i: ; preds = %for.body.i %13 = load double, ptr %__first.pn15.i, align 8 - %cmp.i.i10.i.i = fcmp ogt double %13, %9 - br i1 %cmp.i.i10.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i + %cmp.i.i9.i.i = fcmp ogt double %13, %9 + br i1 %cmp.i.i9.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i while.body.i.i15: ; preds = %if.else.i, %while.body.i.i15 %.in.i.i = phi double [ %14, %while.body.i.i15 ], [ %13, %if.else.i ] - %__next.012.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] - %__last.addr.011.i.i = phi ptr [ %__next.012.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] - store double %.in.i.i, ptr %__last.addr.011.i.i, align 8 - %__next.0.i.i = getelementptr inbounds i8, ptr %__next.012.i.i, i64 -8 + %__next.011.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] + %__last.addr.010.i.i = phi ptr [ %__next.011.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] + store double %.in.i.i, ptr %__last.addr.010.i.i, align 8 + %__next.0.i.i = getelementptr inbounds i8, ptr %__next.011.i.i, i64 -8 %14 = load double, ptr %__next.0.i.i, align 8 %cmp.i.i.i.i16 = fcmp ogt double %14, %9 br i1 %cmp.i.i.i.i16, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !638 _ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i15, %if.else.i - %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.012.i.i, %while.body.i.i15 ] + %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.011.i.i, %while.body.i.i15 ] store double %9, ptr %__last.addr.0.lcssa.i.i, align 8 br label %for.inc.i @@ -51087,8 +51096,8 @@ while.body.i.i.us: ; preds = %if.then.us, %while. br i1 %cmp.i.i8.us, label %while.body.i.i.us, label %while.end.i.i.loopexit.us, !llvm.loop !640 if.end17.i.i.us: ; preds = %while.end.i.i.loopexit.us - %cmp13.i.i.not.i.us = icmp eq i64 %spec.select.i.i.us, 0 - br i1 %cmp13.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us.preheader + %cmp12.i.i.not.i.us = icmp eq i64 %spec.select.i.i.us, 0 + br i1 %cmp12.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us.preheader if.end17.i.thread.i.us: ; preds = %while.end.i.i.loopexit.us %7 = load i64, ptr %add.ptr14.i.i.us, align 8 @@ -51096,26 +51105,26 @@ if.end17.i.thread.i.us: ; preds = %while.end.i.i.loope br label %land.rhs.i.i.i.us.preheader land.rhs.i.i.i.us.preheader: ; preds = %if.end17.i.thread.i.us, %if.end17.i.i.us - %__holeIndex.addr.014.i.i.i.us.ph = phi i64 [ %spec.select.i.i.us, %if.end17.i.i.us ], [ %sub13.i.i.us, %if.end17.i.thread.i.us ] + %__holeIndex.addr.013.i.i.i.us.ph = phi i64 [ %spec.select.i.i.us, %if.end17.i.i.us ], [ %sub13.i.i.us, %if.end17.i.thread.i.us ] br label %land.rhs.i.i.i.us land.rhs.i.i.i.us: ; preds = %land.rhs.i.i.i.us.preheader, %while.body.i.i.i.us - %__holeIndex.addr.014.i.i.i.us = phi i64 [ %__parent.015.i.i45.i.us, %while.body.i.i.i.us ], [ %__holeIndex.addr.014.i.i.i.us.ph, %land.rhs.i.i.i.us.preheader ] - %__parent.015.in.i.i.i.us = add nsw i64 %__holeIndex.addr.014.i.i.i.us, -1 - %__parent.015.i.i45.i.us = lshr i64 %__parent.015.in.i.i.i.us, 1 - %add.ptr.i.i.i.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.015.i.i45.i.us + %__holeIndex.addr.013.i.i.i.us = phi i64 [ %__parent.014.i.i78.i.us, %while.body.i.i.i.us ], [ %__holeIndex.addr.013.i.i.i.us.ph, %land.rhs.i.i.i.us.preheader ] + %__parent.014.in.i.i.i.us = add nsw i64 %__holeIndex.addr.013.i.i.i.us, -1 + %__parent.014.i.i78.i.us = lshr i64 %__parent.014.in.i.i.i.us, 1 + %add.ptr.i.i.i.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.014.i.i78.i.us %8 = load double, ptr %add.ptr.i.i.i.us, align 8 %cmp.i.i.i.i.i.us = fcmp olt double %8, %1 br i1 %cmp.i.i.i.i.i.us, label %while.body.i.i.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us while.body.i.i.i.us: ; preds = %land.rhs.i.i.i.us - %add.ptr3.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.014.i.i.i.us + %add.ptr3.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.013.i.i.i.us store double %8, ptr %add.ptr3.i.i.i.us, align 8 - %cmp.i.i.not.i.us = icmp eq i64 %__parent.015.i.i45.i.us, 0 + %cmp.i.i.not.i.us = icmp eq i64 %__parent.014.i.i78.i.us, 0 br i1 %cmp.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us, !llvm.loop !641 _ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us: ; preds = %land.rhs.i.i.i.us, %while.body.i.i.i.us, %if.end17.i.i.us - %__holeIndex.addr.0.lcssa.i.i.i.us = phi i64 [ 0, %if.end17.i.i.us ], [ 0, %while.body.i.i.i.us ], [ %__holeIndex.addr.014.i.i.i.us, %land.rhs.i.i.i.us ] + %__holeIndex.addr.0.lcssa.i.i.i.us = phi i64 [ 0, %if.end17.i.i.us ], [ 0, %while.body.i.i.i.us ], [ %__holeIndex.addr.013.i.i.i.us, %land.rhs.i.i.i.us ] %add.ptr6.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i.i.us store double %1, ptr %add.ptr6.i.i.i.us, align 8 br label %for.inc.us @@ -51233,8 +51242,8 @@ if.end.split: ; preds = %entry %add.ptr9 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %div13 %__value.sroa.0.0.copyload10 = load ptr, ptr %add.ptr9, align 8 %sub.i = add nsw i64 %sub.ptr.div, -1 - %div.i5759 = lshr i64 %sub.i, 1 - %cmp23.i = icmp samesign ult i64 %div13, %div.i5759 + %div.i5860 = lshr i64 %sub.i, 1 + %cmp23.i = icmp samesign ult i64 %div13, %div.i5860 br i1 %cmp23.i, label %while.body.i, label %while.end.i while.body.i: ; preds = %if.end.split, %while.body.i @@ -51253,7 +51262,7 @@ while.body.i: ; preds = %if.end.split, %whil %add.ptr5.i = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i %3 = load i64, ptr %add.ptr4.i, align 8 store i64 %3, ptr %add.ptr5.i, align 8 - %cmp.i = icmp slt i64 %spec.select.i, %div.i5759 + %cmp.i = icmp slt i64 %spec.select.i, %div.i5860 br i1 %cmp.i, label %while.body.i, label %while.end.i, !llvm.loop !640 while.end.i: ; preds = %while.body.i, %if.end.split @@ -51273,170 +51282,179 @@ if.then10.i: ; preds = %while.end.i if.end17.i: ; preds = %if.then10.i, %while.end.i %__holeIndex.addr.1.i = phi i64 [ %sub13.i, %if.then10.i ], [ %__holeIndex.addr.0.lcssa.i, %while.end.i ] - %cmp13.i.i = icmp samesign ugt i64 %__holeIndex.addr.1.i, %div13 %6 = ptrtoint ptr %__value.sroa.0.0.copyload10 to i64 + %cmp12.i.i = icmp samesign ugt i64 %__holeIndex.addr.1.i, %div13 + br i1 %cmp12.i.i, label %land.rhs.lr.ph.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit + +land.rhs.lr.ph.i.i: ; preds = %if.end17.i %7 = bitcast i64 %6 to double - br i1 %cmp13.i.i, label %land.rhs.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit + br label %land.rhs.i.i -land.rhs.i.i: ; preds = %if.end17.i, %while.body.i.i - %__holeIndex.addr.014.i.i = phi i64 [ %__parent.015.i.i65, %while.body.i.i ], [ %__holeIndex.addr.1.i, %if.end17.i ] - %__parent.015.in.i.i = add nsw i64 %__holeIndex.addr.014.i.i, -1 - %__parent.015.i.i65 = lshr i64 %__parent.015.in.i.i, 1 - %add.ptr.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.015.i.i65 +land.rhs.i.i: ; preds = %while.body.i.i, %land.rhs.lr.ph.i.i + %__holeIndex.addr.013.i.i = phi i64 [ %__holeIndex.addr.1.i, %land.rhs.lr.ph.i.i ], [ %__parent.014.i.i66, %while.body.i.i ] + %__parent.014.in.i.i = add nsw i64 %__holeIndex.addr.013.i.i, -1 + %__parent.014.i.i66 = lshr i64 %__parent.014.in.i.i, 1 + %add.ptr.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.014.i.i66 %8 = load double, ptr %add.ptr.i.i, align 8 %cmp.i.i.i.i = fcmp olt double %8, %7 br i1 %cmp.i.i.i.i, label %while.body.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit while.body.i.i: ; preds = %land.rhs.i.i - %add.ptr3.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.014.i.i + %add.ptr3.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.013.i.i store double %8, ptr %add.ptr3.i.i, align 8 - %cmp.i.i = icmp samesign ugt i64 %__parent.015.i.i65, %div13 + %cmp.i.i = icmp samesign ugt i64 %__parent.014.i.i66, %div13 br i1 %cmp.i.i, label %land.rhs.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit, !llvm.loop !641 _ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit: ; preds = %land.rhs.i.i, %while.body.i.i, %if.end17.i - %__holeIndex.addr.0.lcssa.i.i = phi i64 [ %__holeIndex.addr.1.i, %if.end17.i ], [ %__parent.015.i.i65, %while.body.i.i ], [ %__holeIndex.addr.014.i.i, %land.rhs.i.i ] + %__holeIndex.addr.0.lcssa.i.i = phi i64 [ %__holeIndex.addr.1.i, %if.end17.i ], [ %__parent.014.i.i66, %while.body.i.i ], [ %__holeIndex.addr.013.i.i, %land.rhs.i.i ] %add.ptr6.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i store i64 %6, ptr %add.ptr6.i.i, align 8 - %cmp760 = icmp eq i64 %div13, 0 - br i1 %cmp760, label %return, label %if.end9.split.lr.ph + %cmp761 = icmp eq i64 %div13, 0 + br i1 %cmp761, label %return, label %if.end9.split.lr.ph if.end9.split.lr.ph: ; preds = %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit - %div8.i37 = lshr exact i64 %sub, 1 + %div8.i38 = lshr exact i64 %sub, 1 br i1 %cmp6.i, label %if.end9.split.preheader, label %if.end9.split.us if.end9.split.preheader: ; preds = %if.end9.split.lr.ph - %sub13.i41 = or disjoint i64 %sub, 1 - %add.ptr14.i42 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %sub13.i41 - %add.ptr15.i43 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %div8.i37 + %sub13.i42 = or disjoint i64 %sub, 1 + %add.ptr14.i43 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %sub13.i42 + %add.ptr15.i44 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %div8.i38 br label %if.end9.split -if.end9.split.us: ; preds = %if.end9.split.lr.ph, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us - %__parent.061.us = phi i64 [ %dec.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us ], [ %div13, %if.end9.split.lr.ph ] - %dec.us = add nsw i64 %__parent.061.us, -1 +if.end9.split.us: ; preds = %if.end9.split.lr.ph, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us + %__parent.062.us = phi i64 [ %dec.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us ], [ %div13, %if.end9.split.lr.ph ] + %dec.us = add nsw i64 %__parent.062.us, -1 %add.ptr11.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %dec.us %__value.sroa.0.0.copyload12.us = load ptr, ptr %add.ptr11.us, align 8 - %cmp23.i16.not.us = icmp sgt i64 %__parent.061.us, %div.i5759 - br i1 %cmp23.i16.not.us, label %while.end.i17.us.thread, label %while.body.i44.us + %cmp23.i16.not.us = icmp sgt i64 %__parent.062.us, %div.i5860 + br i1 %cmp23.i16.not.us, label %while.end.i17.us.thread, label %while.body.i45.us while.end.i17.us.thread: ; preds = %if.end9.split.us %9 = ptrtoint ptr %__value.sroa.0.0.copyload12.us to i64 - br label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us - -while.body.i44.us: ; preds = %if.end9.split.us, %while.body.i44.us - %__holeIndex.addr.024.i45.us = phi i64 [ %spec.select.i52.us, %while.body.i44.us ], [ %dec.us, %if.end9.split.us ] - %add.i46.us = shl i64 %__holeIndex.addr.024.i45.us, 1 - %mul.i47.us = add i64 %add.i46.us, 2 - %add.ptr.i48.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %mul.i47.us - %10 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %add.i46.us - %add.ptr3.i49.us = getelementptr i8, ptr %10, i64 8 - %11 = load double, ptr %add.ptr.i48.us, align 8 - %12 = load double, ptr %add.ptr3.i49.us, align 8 - %cmp.i.i.i50.us = fcmp olt double %11, %12 - %dec.i51.us = or disjoint i64 %add.i46.us, 1 - %spec.select.i52.us = select i1 %cmp.i.i.i50.us, i64 %dec.i51.us, i64 %mul.i47.us - %add.ptr4.i53.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %spec.select.i52.us - %add.ptr5.i54.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i45.us - %13 = load i64, ptr %add.ptr4.i53.us, align 8 - store i64 %13, ptr %add.ptr5.i54.us, align 8 - %cmp.i55.us = icmp slt i64 %spec.select.i52.us, %div.i5759 - br i1 %cmp.i55.us, label %while.body.i44.us, label %while.end.i17.us, !llvm.loop !640 - -while.end.i17.us: ; preds = %while.body.i44.us - %cmp13.i.i23.not.us = icmp slt i64 %spec.select.i52.us, %__parent.061.us + br label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us + +while.body.i45.us: ; preds = %if.end9.split.us, %while.body.i45.us + %__holeIndex.addr.024.i46.us = phi i64 [ %spec.select.i53.us, %while.body.i45.us ], [ %dec.us, %if.end9.split.us ] + %add.i47.us = shl i64 %__holeIndex.addr.024.i46.us, 1 + %mul.i48.us = add i64 %add.i47.us, 2 + %add.ptr.i49.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %mul.i48.us + %10 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %add.i47.us + %add.ptr3.i50.us = getelementptr i8, ptr %10, i64 8 + %11 = load double, ptr %add.ptr.i49.us, align 8 + %12 = load double, ptr %add.ptr3.i50.us, align 8 + %cmp.i.i.i51.us = fcmp olt double %11, %12 + %dec.i52.us = or disjoint i64 %add.i47.us, 1 + %spec.select.i53.us = select i1 %cmp.i.i.i51.us, i64 %dec.i52.us, i64 %mul.i48.us + %add.ptr4.i54.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %spec.select.i53.us + %add.ptr5.i55.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i46.us + %13 = load i64, ptr %add.ptr4.i54.us, align 8 + store i64 %13, ptr %add.ptr5.i55.us, align 8 + %cmp.i56.us = icmp slt i64 %spec.select.i53.us, %div.i5860 + br i1 %cmp.i56.us, label %while.body.i45.us, label %while.end.i17.us, !llvm.loop !640 + +while.end.i17.us: ; preds = %while.body.i45.us %14 = ptrtoint ptr %__value.sroa.0.0.copyload12.us to i64 - %15 = bitcast i64 %14 to double - br i1 %cmp13.i.i23.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us, label %land.rhs.i.i26.us + %cmp12.i.i23.not.us = icmp slt i64 %spec.select.i53.us, %__parent.062.us + br i1 %cmp12.i.i23.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, label %land.rhs.lr.ph.i.i26.us -land.rhs.i.i26.us: ; preds = %while.end.i17.us, %while.body.i.i32.us - %__holeIndex.addr.014.i.i27.us = phi i64 [ %__parent.015.i.i29.us66, %while.body.i.i32.us ], [ %spec.select.i52.us, %while.end.i17.us ] - %__parent.015.in.i.i28.us = add nsw i64 %__holeIndex.addr.014.i.i27.us, -1 - %__parent.015.i.i29.us66 = lshr i64 %__parent.015.in.i.i28.us, 1 - %add.ptr.i.i30.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.015.i.i29.us66 - %16 = load double, ptr %add.ptr.i.i30.us, align 8 - %cmp.i.i.i.i31.us = fcmp olt double %16, %15 - br i1 %cmp.i.i.i.i31.us, label %while.body.i.i32.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us - -while.body.i.i32.us: ; preds = %land.rhs.i.i26.us - %add.ptr3.i.i33.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.014.i.i27.us - store double %16, ptr %add.ptr3.i.i33.us, align 8 - %cmp.i.i34.not.us = icmp slt i64 %__parent.015.i.i29.us66, %__parent.061.us - br i1 %cmp.i.i34.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us, label %land.rhs.i.i26.us, !llvm.loop !641 - -_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us: ; preds = %land.rhs.i.i26.us, %while.body.i.i32.us, %while.end.i17.us.thread, %while.end.i17.us - %17 = phi i64 [ %14, %while.end.i17.us ], [ %9, %while.end.i17.us.thread ], [ %14, %while.body.i.i32.us ], [ %14, %land.rhs.i.i26.us ] - %__holeIndex.addr.0.lcssa.i.i24.us = phi i64 [ %spec.select.i52.us, %while.end.i17.us ], [ %dec.us, %while.end.i17.us.thread ], [ %__holeIndex.addr.014.i.i27.us, %land.rhs.i.i26.us ], [ %__parent.015.i.i29.us66, %while.body.i.i32.us ] +land.rhs.lr.ph.i.i26.us: ; preds = %while.end.i17.us + %15 = bitcast i64 %14 to double + br label %land.rhs.i.i27.us + +land.rhs.i.i27.us: ; preds = %while.body.i.i33.us, %land.rhs.lr.ph.i.i26.us + %__holeIndex.addr.013.i.i28.us = phi i64 [ %spec.select.i53.us, %land.rhs.lr.ph.i.i26.us ], [ %__parent.014.i.i30.us67, %while.body.i.i33.us ] + %__parent.014.in.i.i29.us = add nsw i64 %__holeIndex.addr.013.i.i28.us, -1 + %__parent.014.i.i30.us67 = lshr i64 %__parent.014.in.i.i29.us, 1 + %add.ptr.i.i31.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.014.i.i30.us67 + %16 = load double, ptr %add.ptr.i.i31.us, align 8 + %cmp.i.i.i.i32.us = fcmp olt double %16, %15 + br i1 %cmp.i.i.i.i32.us, label %while.body.i.i33.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us + +while.body.i.i33.us: ; preds = %land.rhs.i.i27.us + %add.ptr3.i.i34.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.013.i.i28.us + store double %16, ptr %add.ptr3.i.i34.us, align 8 + %cmp.i.i35.not.us = icmp slt i64 %__parent.014.i.i30.us67, %__parent.062.us + br i1 %cmp.i.i35.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, label %land.rhs.i.i27.us, !llvm.loop !641 + +_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us: ; preds = %land.rhs.i.i27.us, %while.body.i.i33.us, %while.end.i17.us.thread, %while.end.i17.us + %17 = phi i64 [ %14, %while.end.i17.us ], [ %9, %while.end.i17.us.thread ], [ %14, %while.body.i.i33.us ], [ %14, %land.rhs.i.i27.us ] + %__holeIndex.addr.0.lcssa.i.i24.us = phi i64 [ %spec.select.i53.us, %while.end.i17.us ], [ %dec.us, %while.end.i17.us.thread ], [ %__holeIndex.addr.013.i.i28.us, %land.rhs.i.i27.us ], [ %__parent.014.i.i30.us67, %while.body.i.i33.us ] %add.ptr6.i.i25.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i24.us store i64 %17, ptr %add.ptr6.i.i25.us, align 8 %cmp7.us = icmp eq i64 %dec.us, 0 br i1 %cmp7.us, label %return, label %if.end9.split.us, !llvm.loop !643 -if.end9.split: ; preds = %if.end9.split.preheader, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56 - %__parent.061 = phi i64 [ %dec, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56 ], [ %div13, %if.end9.split.preheader ] - %dec = add nsw i64 %__parent.061, -1 +if.end9.split: ; preds = %if.end9.split.preheader, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 + %__parent.062 = phi i64 [ %dec, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 ], [ %div13, %if.end9.split.preheader ] + %dec = add nsw i64 %__parent.062, -1 %add.ptr11 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %dec %__value.sroa.0.0.copyload12 = load ptr, ptr %add.ptr11, align 8 - %cmp23.i16.not = icmp sgt i64 %__parent.061, %div.i5759 - br i1 %cmp23.i16.not, label %while.end.i17, label %while.body.i44 - -while.body.i44: ; preds = %if.end9.split, %while.body.i44 - %__holeIndex.addr.024.i45 = phi i64 [ %spec.select.i52, %while.body.i44 ], [ %dec, %if.end9.split ] - %add.i46 = shl i64 %__holeIndex.addr.024.i45, 1 - %mul.i47 = add i64 %add.i46, 2 - %add.ptr.i48 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %mul.i47 - %18 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %add.i46 - %add.ptr3.i49 = getelementptr i8, ptr %18, i64 8 - %19 = load double, ptr %add.ptr.i48, align 8 - %20 = load double, ptr %add.ptr3.i49, align 8 - %cmp.i.i.i50 = fcmp olt double %19, %20 - %dec.i51 = or disjoint i64 %add.i46, 1 - %spec.select.i52 = select i1 %cmp.i.i.i50, i64 %dec.i51, i64 %mul.i47 - %add.ptr4.i53 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %spec.select.i52 - %add.ptr5.i54 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i45 - %21 = load i64, ptr %add.ptr4.i53, align 8 - store i64 %21, ptr %add.ptr5.i54, align 8 - %cmp.i55 = icmp slt i64 %spec.select.i52, %div.i5759 - br i1 %cmp.i55, label %while.body.i44, label %while.end.i17, !llvm.loop !640 - -while.end.i17: ; preds = %while.body.i44, %if.end9.split - %__holeIndex.addr.0.lcssa.i18 = phi i64 [ %dec, %if.end9.split ], [ %spec.select.i52, %while.body.i44 ] - %cmp9.i38 = icmp eq i64 %__holeIndex.addr.0.lcssa.i18, %div8.i37 - br i1 %cmp9.i38, label %if.then10.i39, label %if.end17.i21 - -if.then10.i39: ; preds = %while.end.i17 - %22 = load i64, ptr %add.ptr14.i42, align 8 - store i64 %22, ptr %add.ptr15.i43, align 8 + %cmp23.i16.not = icmp sgt i64 %__parent.062, %div.i5860 + br i1 %cmp23.i16.not, label %while.end.i17, label %while.body.i45 + +while.body.i45: ; preds = %if.end9.split, %while.body.i45 + %__holeIndex.addr.024.i46 = phi i64 [ %spec.select.i53, %while.body.i45 ], [ %dec, %if.end9.split ] + %add.i47 = shl i64 %__holeIndex.addr.024.i46, 1 + %mul.i48 = add i64 %add.i47, 2 + %add.ptr.i49 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %mul.i48 + %18 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %add.i47 + %add.ptr3.i50 = getelementptr i8, ptr %18, i64 8 + %19 = load double, ptr %add.ptr.i49, align 8 + %20 = load double, ptr %add.ptr3.i50, align 8 + %cmp.i.i.i51 = fcmp olt double %19, %20 + %dec.i52 = or disjoint i64 %add.i47, 1 + %spec.select.i53 = select i1 %cmp.i.i.i51, i64 %dec.i52, i64 %mul.i48 + %add.ptr4.i54 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %spec.select.i53 + %add.ptr5.i55 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i46 + %21 = load i64, ptr %add.ptr4.i54, align 8 + store i64 %21, ptr %add.ptr5.i55, align 8 + %cmp.i56 = icmp slt i64 %spec.select.i53, %div.i5860 + br i1 %cmp.i56, label %while.body.i45, label %while.end.i17, !llvm.loop !640 + +while.end.i17: ; preds = %while.body.i45, %if.end9.split + %__holeIndex.addr.0.lcssa.i18 = phi i64 [ %dec, %if.end9.split ], [ %spec.select.i53, %while.body.i45 ] + %cmp9.i39 = icmp eq i64 %__holeIndex.addr.0.lcssa.i18, %div8.i38 + br i1 %cmp9.i39, label %if.then10.i40, label %if.end17.i21 + +if.then10.i40: ; preds = %while.end.i17 + %22 = load i64, ptr %add.ptr14.i43, align 8 + store i64 %22, ptr %add.ptr15.i44, align 8 br label %if.end17.i21 -if.end17.i21: ; preds = %if.then10.i39, %while.end.i17 - %__holeIndex.addr.1.i22 = phi i64 [ %sub13.i41, %if.then10.i39 ], [ %__holeIndex.addr.0.lcssa.i18, %while.end.i17 ] - %cmp13.i.i23.not = icmp slt i64 %__holeIndex.addr.1.i22, %__parent.061 +if.end17.i21: ; preds = %if.then10.i40, %while.end.i17 + %__holeIndex.addr.1.i22 = phi i64 [ %sub13.i42, %if.then10.i40 ], [ %__holeIndex.addr.0.lcssa.i18, %while.end.i17 ] %23 = ptrtoint ptr %__value.sroa.0.0.copyload12 to i64 - %24 = bitcast i64 %23 to double - br i1 %cmp13.i.i23.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56, label %land.rhs.i.i26 + %cmp12.i.i23.not = icmp slt i64 %__holeIndex.addr.1.i22, %__parent.062 + br i1 %cmp12.i.i23.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, label %land.rhs.lr.ph.i.i26 -land.rhs.i.i26: ; preds = %if.end17.i21, %while.body.i.i32 - %__holeIndex.addr.014.i.i27 = phi i64 [ %__parent.015.i.i2967, %while.body.i.i32 ], [ %__holeIndex.addr.1.i22, %if.end17.i21 ] - %__parent.015.in.i.i28 = add nsw i64 %__holeIndex.addr.014.i.i27, -1 - %__parent.015.i.i2967 = lshr i64 %__parent.015.in.i.i28, 1 - %add.ptr.i.i30 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.015.i.i2967 - %25 = load double, ptr %add.ptr.i.i30, align 8 - %cmp.i.i.i.i31 = fcmp olt double %25, %24 - br i1 %cmp.i.i.i.i31, label %while.body.i.i32, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56 - -while.body.i.i32: ; preds = %land.rhs.i.i26 - %add.ptr3.i.i33 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.014.i.i27 - store double %25, ptr %add.ptr3.i.i33, align 8 - %cmp.i.i34.not = icmp slt i64 %__parent.015.i.i2967, %__parent.061 - br i1 %cmp.i.i34.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56, label %land.rhs.i.i26, !llvm.loop !641 - -_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56: ; preds = %land.rhs.i.i26, %while.body.i.i32, %if.end17.i21 - %__holeIndex.addr.0.lcssa.i.i24 = phi i64 [ %__holeIndex.addr.1.i22, %if.end17.i21 ], [ %__parent.015.i.i2967, %while.body.i.i32 ], [ %__holeIndex.addr.014.i.i27, %land.rhs.i.i26 ] +land.rhs.lr.ph.i.i26: ; preds = %if.end17.i21 + %24 = bitcast i64 %23 to double + br label %land.rhs.i.i27 + +land.rhs.i.i27: ; preds = %while.body.i.i33, %land.rhs.lr.ph.i.i26 + %__holeIndex.addr.013.i.i28 = phi i64 [ %__holeIndex.addr.1.i22, %land.rhs.lr.ph.i.i26 ], [ %__parent.014.i.i3068, %while.body.i.i33 ] + %__parent.014.in.i.i29 = add nsw i64 %__holeIndex.addr.013.i.i28, -1 + %__parent.014.i.i3068 = lshr i64 %__parent.014.in.i.i29, 1 + %add.ptr.i.i31 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.014.i.i3068 + %25 = load double, ptr %add.ptr.i.i31, align 8 + %cmp.i.i.i.i32 = fcmp olt double %25, %24 + br i1 %cmp.i.i.i.i32, label %while.body.i.i33, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 + +while.body.i.i33: ; preds = %land.rhs.i.i27 + %add.ptr3.i.i34 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.013.i.i28 + store double %25, ptr %add.ptr3.i.i34, align 8 + %cmp.i.i35.not = icmp slt i64 %__parent.014.i.i3068, %__parent.062 + br i1 %cmp.i.i35.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, label %land.rhs.i.i27, !llvm.loop !641 + +_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57: ; preds = %land.rhs.i.i27, %while.body.i.i33, %if.end17.i21 + %__holeIndex.addr.0.lcssa.i.i24 = phi i64 [ %__holeIndex.addr.1.i22, %if.end17.i21 ], [ %__parent.014.i.i3068, %while.body.i.i33 ], [ %__holeIndex.addr.013.i.i28, %land.rhs.i.i27 ] %add.ptr6.i.i25 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i24 store i64 %23, ptr %add.ptr6.i.i25, align 8 %cmp7 = icmp eq i64 %dec, 0 br i1 %cmp7, label %return, label %if.end9.split, !llvm.loop !643 -return: ; preds = %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit56, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit, %entry +return: ; preds = %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit, %entry ret void } diff --git a/bench/pbrt-v4/optimized/integrator.ll b/bench/pbrt-v4/optimized/integrator.ll index aae94ca4e9e..b8d3847ebff 100644 --- a/bench/pbrt-v4/optimized/integrator.ll +++ b/bench/pbrt-v4/optimized/integrator.ll @@ -28503,15 +28503,15 @@ _ZNK4pbrt16DiffuseAreaLight11AlphaMaskedERKNS_11InteractionE.exit.thread: ; pred br label %66 _ZNK4pbrt16DiffuseAreaLight11AlphaMaskedERKNS_11InteractionE.exit: ; preds = %44 - %46 = bitcast <2 x float> %.sroa.01.4.vec.insert.i.i.i to i64 - %47 = bitcast float %38 to i32 - %48 = mul i64 %46, -4132994306676758123 + %46 = bitcast float %38 to i32 + %47 = bitcast <2 x float> %.sroa.01.4.vec.insert.i.i.i to i64 + %48 = mul i64 %47, -4132994306676758123 %49 = lshr i64 %48, 47 %50 = xor i64 %49, %48 %51 = mul i64 %50, -4132994306676758123 %52 = xor i64 %51, 5744300541007557372 %53 = mul i64 %52, -4132994306676758123 - %54 = zext i32 %47 to i64 + %54 = zext i32 %46 to i64 %55 = xor i64 %53, %54 %56 = mul i64 %55, -4132994306676758123 %57 = lshr i64 %56, 47 diff --git a/bench/pbrt-v4/optimized/integrators.ll b/bench/pbrt-v4/optimized/integrators.ll index 0b9f831bf43..7182262c6e9 100644 --- a/bench/pbrt-v4/optimized/integrators.ll +++ b/bench/pbrt-v4/optimized/integrators.ll @@ -6486,15 +6486,15 @@ define dso_local { <2 x float>, <2 x float> } @_ZNK4pbrt10Integrator2TrERKNS_11I %126 = fmul float %125, 5.000000e-01 %.sroa.01.0.vec.insert.i = insertelement <2 x float> poison, float %122, i64 0 %.sroa.01.4.vec.insert.i = insertelement <2 x float> %.sroa.01.0.vec.insert.i, float %124, i64 1 - %127 = bitcast <2 x float> %.sroa.01.4.vec.insert.i to i64 - %128 = bitcast float %126 to i32 - %129 = mul i64 %127, -4132994306676758123 + %127 = bitcast float %126 to i32 + %128 = bitcast <2 x float> %.sroa.01.4.vec.insert.i to i64 + %129 = mul i64 %128, -4132994306676758123 %130 = lshr i64 %129, 47 %131 = xor i64 %130, %129 %132 = mul i64 %131, -4132994306676758123 %133 = xor i64 %132, 5744300541007557372 %134 = mul i64 %133, -4132994306676758123 - %135 = zext i32 %128 to i64 + %135 = zext i32 %127 to i64 %136 = xor i64 %134, %135 %137 = mul i64 %136, -4132994306676758123 %138 = lshr i64 %137, 47 @@ -6521,15 +6521,15 @@ define dso_local { <2 x float>, <2 x float> } @_ZNK4pbrt10Integrator2TrERKNS_11I %148 = fmul float %147, 5.000000e-01 %.sroa.01.0.vec.insert.i62 = insertelement <2 x float> poison, float %144, i64 0 %.sroa.01.4.vec.insert.i63 = insertelement <2 x float> %.sroa.01.0.vec.insert.i62, float %146, i64 1 - %149 = bitcast <2 x float> %.sroa.01.4.vec.insert.i63 to i64 - %150 = bitcast float %148 to i32 - %151 = mul i64 %149, -4132994306676758123 + %149 = bitcast float %148 to i32 + %150 = bitcast <2 x float> %.sroa.01.4.vec.insert.i63 to i64 + %151 = mul i64 %150, -4132994306676758123 %152 = lshr i64 %151, 47 %153 = xor i64 %152, %151 %154 = mul i64 %153, -4132994306676758123 %155 = xor i64 %154, 5744300541007557372 %156 = mul i64 %155, -4132994306676758123 - %157 = zext i32 %150 to i64 + %157 = zext i32 %149 to i64 %158 = xor i64 %156, %157 %159 = mul i64 %158, -4132994306676758123 %160 = lshr i64 %159, 47 @@ -68860,15 +68860,15 @@ _ZNK4pbrt16DiffuseAreaLight11AlphaMaskedERKNS_11InteractionE.exit.thread: ; pred br label %66 _ZNK4pbrt16DiffuseAreaLight11AlphaMaskedERKNS_11InteractionE.exit: ; preds = %44 - %46 = bitcast <2 x float> %.sroa.01.4.vec.insert.i.i.i to i64 - %47 = bitcast float %38 to i32 - %48 = mul i64 %46, -4132994306676758123 + %46 = bitcast float %38 to i32 + %47 = bitcast <2 x float> %.sroa.01.4.vec.insert.i.i.i to i64 + %48 = mul i64 %47, -4132994306676758123 %49 = lshr i64 %48, 47 %50 = xor i64 %49, %48 %51 = mul i64 %50, -4132994306676758123 %52 = xor i64 %51, 5744300541007557372 %53 = mul i64 %52, -4132994306676758123 - %54 = zext i32 %47 to i64 + %54 = zext i32 %46 to i64 %55 = xor i64 %53, %54 %56 = mul i64 %55, -4132994306676758123 %57 = lshr i64 %56, 47 diff --git a/bench/php/optimized/zip.ll b/bench/php/optimized/zip.ll index 83c0c76a91a..62217d9a1fc 100644 --- a/bench/php/optimized/zip.ll +++ b/bench/php/optimized/zip.ll @@ -5844,8 +5844,8 @@ zend_hash_update_mem.exit124: ; preds = %136, %138 167: ; preds = %158 %168 = call ptr @zend_hash_find(ptr noundef nonnull %166, ptr noundef nonnull %159) #16 - %.not238 = icmp eq ptr %168, null - br i1 %.not238, label %169, label %191 + %.not241 = icmp eq ptr %168, null + br i1 %.not241, label %169, label %191 169: ; preds = %167 %170 = load ptr, ptr %9, align 8, !tbaa !66 @@ -6062,16 +6062,16 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 br i1 %.not101, label %242, label %244 242: ; preds = %232 - br i1 %.not102, label %243, label %.thread258 + br i1 %.not102, label %243, label %.thread261 243: ; preds = %242 store i32 3, ptr %240, align 4, !tbaa !59 - br label %.thread258 + br label %.thread261 244: ; preds = %232 - br i1 %.not102, label %249, label %.thread258 + br i1 %.not102, label %249, label %.thread261 -.thread258: ; preds = %242, %243, %244 +.thread261: ; preds = %242, %243, %244 %245 = getelementptr inbounds nuw i8, ptr %236, i64 92 %246 = load i32, ptr %245, align 4, !tbaa !76 %247 = trunc i32 %246 to i16 @@ -6084,12 +6084,12 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 %252 = trunc i32 %251 to i16 br label %253 -253: ; preds = %249, %.thread258 - %.sink239 = phi i16 [ %252, %249 ], [ %248, %.thread258 ] +253: ; preds = %249, %.thread261 + %.sink242 = phi i16 [ %252, %249 ], [ %248, %.thread261 ] %254 = getelementptr inbounds nuw i8, ptr %12, i64 8 - store i16 %.sink239, ptr %254, align 4 + store i16 %.sink242, ptr %254, align 4 %255 = getelementptr inbounds nuw i8, ptr %12, i64 10 - store i16 %.sink239, ptr %255, align 2 + store i16 %.sink242, ptr %255, align 2 %256 = getelementptr inbounds nuw i8, ptr %236, i64 64 call void @zend_hash_apply_with_argument(ptr noundef nonnull %256, ptr noundef nonnull @phar_zip_changed_apply, ptr noundef nonnull %11) #16 %257 = load ptr, ptr %9, align 8, !tbaa !66 @@ -6111,11 +6111,11 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 %266 = load ptr, ptr %9, align 8, !tbaa !66 %267 = load ptr, ptr %266, align 8, !tbaa !21 %268 = call i64 (ptr, i64, ptr, ...) @zend_spprintf(ptr noundef nonnull %3, i64 noundef 4096, ptr noundef nonnull @.str.65, ptr noundef %267, ptr noundef nonnull %263) #16 - %.pre240 = load ptr, ptr %10, align 8, !tbaa !60 + %.pre243 = load ptr, ptr %10, align 8, !tbaa !60 br label %269 269: ; preds = %265, %264 - %270 = phi ptr [ %.pre240, %265 ], [ %263, %264 ] + %270 = phi ptr [ %.pre243, %265 ], [ %263, %264 ] call void @_efree(ptr noundef %270) #16 br label %271 @@ -6267,11 +6267,11 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 358: ; preds = %351 %359 = call i32 @_php_stream_free(ptr noundef nonnull %354, i32 noundef 3) #16 - %.pre241 = load ptr, ptr %9, align 8, !tbaa !66 + %.pre244 = load ptr, ptr %9, align 8, !tbaa !66 br label %360 360: ; preds = %358, %351 - %361 = phi ptr [ %.pre241, %358 ], [ %352, %351 ] + %361 = phi ptr [ %.pre244, %358 ], [ %352, %351 ] %362 = getelementptr inbounds nuw i8, ptr %361, i64 256 %363 = load ptr, ptr %362, align 8, !tbaa !78 %.not113 = icmp eq ptr %363, null @@ -6284,11 +6284,11 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 367: ; preds = %364 %368 = call i32 @_php_stream_free(ptr noundef nonnull %363, i32 noundef 3) #16 - %.pre242 = load ptr, ptr %9, align 8, !tbaa !66 + %.pre245 = load ptr, ptr %9, align 8, !tbaa !66 br label %369 369: ; preds = %367, %364 - %370 = phi ptr [ %.pre242, %367 ], [ %361, %364 ] + %370 = phi ptr [ %.pre245, %367 ], [ %361, %364 ] %371 = getelementptr inbounds nuw i8, ptr %370, i64 256 store ptr null, ptr %371, align 8, !tbaa !78 br label %372 @@ -6323,11 +6323,11 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 387: ; preds = %386 %388 = call i32 @_php_stream_free(ptr noundef %.0, i32 noundef 3) #16 - %.pre243 = load ptr, ptr %9, align 8, !tbaa !66 + %.pre246 = load ptr, ptr %9, align 8, !tbaa !66 br label %389 389: ; preds = %387, %386 - %390 = phi ptr [ %.pre243, %387 ], [ %384, %386 ] + %390 = phi ptr [ %.pre246, %387 ], [ %384, %386 ] %391 = load ptr, ptr %11, align 8, !tbaa !72 %392 = getelementptr inbounds nuw i8, ptr %390, i64 248 store ptr %391, ptr %392, align 8, !tbaa !65 diff --git a/bench/proj/optimized/adams.ll b/bench/proj/optimized/adams.ll index 882edd888fd..bc76c96bb37 100644 --- a/bench/proj/optimized/adams.ll +++ b/bench/proj/optimized/adams.ll @@ -141,127 +141,127 @@ define internal fastcc noundef ptr @_ZL14pj_adams_setupP8PJconstsN12_GLOBAL__N_1 %15 = getelementptr inbounds nuw i8, ptr %0, i64 24 %16 = load ptr, ptr %15, align 8, !tbaa !47 %17 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %14, ptr noundef %16, ptr noundef nonnull @.str.5) - %.sroa.015.0..sroa.015.0..cast = inttoptr i64 %17 to ptr + %18 = inttoptr i64 %17 to ptr %.not = icmp eq i64 %17, 0 - %spec.store.select = select i1 %.not, ptr @.str.6, ptr %.sroa.015.0..sroa.015.0..cast - %18 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(7) @.str.7) #9 - %19 = icmp eq i32 %18, 0 - br i1 %19, label %20, label %23 - -20: ; preds = %13 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 0, ptr %21, align 4, !tbaa !48 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store ptr @_ZL23peirce_q_square_inverse5PJ_XYP8PJconsts, ptr %22, align 8, !tbaa !45 + %spec.store.select = select i1 %.not, ptr @.str.6, ptr %18 + %19 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(7) @.str.7) #9 + %20 = icmp eq i32 %19, 0 + br i1 %20, label %21, label %24 + +21: ; preds = %13 + %22 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 0, ptr %22, align 4, !tbaa !48 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store ptr @_ZL23peirce_q_square_inverse5PJ_XYP8PJconsts, ptr %23, align 8, !tbaa !45 br label %.thread75 -23: ; preds = %13 - %24 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(8) @.str.6) #9 - %25 = icmp eq i32 %24, 0 - br i1 %25, label %26, label %29 +24: ; preds = %13 + %25 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(8) @.str.6) #9 + %26 = icmp eq i32 %25, 0 + br i1 %26, label %27, label %30 -26: ; preds = %23 - %27 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 1, ptr %27, align 4, !tbaa !48 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store ptr @_ZL24peirce_q_diamond_inverse5PJ_XYP8PJconsts, ptr %28, align 8, !tbaa !45 +27: ; preds = %24 + %28 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 1, ptr %28, align 4, !tbaa !48 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store ptr @_ZL24peirce_q_diamond_inverse5PJ_XYP8PJconsts, ptr %29, align 8, !tbaa !45 br label %.thread75 -29: ; preds = %23 - %30 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(12) @.str.8) #9 - %31 = icmp eq i32 %30, 0 - br i1 %31, label %32, label %34 +30: ; preds = %24 + %31 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(12) @.str.8) #9 + %32 = icmp eq i32 %31, 0 + br i1 %32, label %33, label %35 -32: ; preds = %29 - %33 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 2, ptr %33, align 4, !tbaa !48 +33: ; preds = %30 + %34 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 2, ptr %34, align 4, !tbaa !48 br label %.thread75 -34: ; preds = %29 - %35 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(12) @.str.9) #9 - %36 = icmp eq i32 %35, 0 - br i1 %36, label %37, label %39 +35: ; preds = %30 + %36 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(12) @.str.9) #9 + %37 = icmp eq i32 %36, 0 + br i1 %37, label %38, label %40 -37: ; preds = %34 - %38 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 3, ptr %38, align 4, !tbaa !48 +38: ; preds = %35 + %39 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 3, ptr %39, align 4, !tbaa !48 br label %.thread75 -39: ; preds = %34 - %40 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(11) @.str.10) #9 - %41 = icmp eq i32 %40, 0 - br i1 %41, label %42, label %57 - -42: ; preds = %39 - %43 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 4, ptr %43, align 4, !tbaa !48 - %44 = load ptr, ptr %0, align 8, !tbaa !46 - %45 = load ptr, ptr %15, align 8, !tbaa !47 - %46 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %44, ptr noundef %45, ptr noundef nonnull @.str.11) - %47 = and i64 %46, 4294967295 - %.not71 = icmp eq i64 %47, 0 - br i1 %.not71, label %.thread75, label %48 - -48: ; preds = %42 - %49 = load ptr, ptr %0, align 8, !tbaa !46 - %50 = load ptr, ptr %15, align 8, !tbaa !47 - %51 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %49, ptr noundef %50, ptr noundef nonnull @.str.12) - %52 = bitcast i64 %51 to double - %53 = tail call double @llvm.fabs.f64(double %52) - %or.cond = fcmp ule double %53, 1.000000e+00 - br i1 %or.cond, label %.thread, label %55 - -.thread: ; preds = %48 - %54 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %51, ptr %54, align 8, !tbaa !49 +40: ; preds = %35 + %41 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(11) @.str.10) #9 + %42 = icmp eq i32 %41, 0 + br i1 %42, label %43, label %58 + +43: ; preds = %40 + %44 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 4, ptr %44, align 4, !tbaa !48 + %45 = load ptr, ptr %0, align 8, !tbaa !46 + %46 = load ptr, ptr %15, align 8, !tbaa !47 + %47 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %45, ptr noundef %46, ptr noundef nonnull @.str.11) + %48 = and i64 %47, 4294967295 + %.not71 = icmp eq i64 %48, 0 + br i1 %.not71, label %.thread75, label %49 + +49: ; preds = %43 + %50 = load ptr, ptr %0, align 8, !tbaa !46 + %51 = load ptr, ptr %15, align 8, !tbaa !47 + %52 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %50, ptr noundef %51, ptr noundef nonnull @.str.12) + %53 = bitcast i64 %52 to double + %54 = tail call double @llvm.fabs.f64(double %53) + %or.cond = fcmp ule double %54, 1.000000e+00 + br i1 %or.cond, label %.thread, label %56 + +.thread: ; preds = %49 + %55 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %52, ptr %55, align 8, !tbaa !49 br label %.thread75 -55: ; preds = %48 +56: ; preds = %49 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.13) - %56 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) + %57 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) br label %.thread75 -57: ; preds = %39 - %58 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(9) @.str.14) #9 - %59 = icmp eq i32 %58, 0 - br i1 %59, label %60, label %75 - -60: ; preds = %57 - %61 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 5, ptr %61, align 4, !tbaa !48 - %62 = load ptr, ptr %0, align 8, !tbaa !46 - %63 = load ptr, ptr %15, align 8, !tbaa !47 - %64 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %62, ptr noundef %63, ptr noundef nonnull @.str.15) - %65 = and i64 %64, 4294967295 - %.not70 = icmp eq i64 %65, 0 - br i1 %.not70, label %.thread75, label %66 - -66: ; preds = %60 - %67 = load ptr, ptr %0, align 8, !tbaa !46 - %68 = load ptr, ptr %15, align 8, !tbaa !47 - %69 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %67, ptr noundef %68, ptr noundef nonnull @.str.16) - %70 = bitcast i64 %69 to double - %71 = tail call double @llvm.fabs.f64(double %70) - %or.cond5 = fcmp ule double %71, 1.000000e+00 - br i1 %or.cond5, label %.thread73, label %73 - -.thread73: ; preds = %66 - %72 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store i64 %69, ptr %72, align 8, !tbaa !50 +58: ; preds = %40 + %59 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(9) @.str.14) #9 + %60 = icmp eq i32 %59, 0 + br i1 %60, label %61, label %76 + +61: ; preds = %58 + %62 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 5, ptr %62, align 4, !tbaa !48 + %63 = load ptr, ptr %0, align 8, !tbaa !46 + %64 = load ptr, ptr %15, align 8, !tbaa !47 + %65 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %63, ptr noundef %64, ptr noundef nonnull @.str.15) + %66 = and i64 %65, 4294967295 + %.not70 = icmp eq i64 %66, 0 + br i1 %.not70, label %.thread75, label %67 + +67: ; preds = %61 + %68 = load ptr, ptr %0, align 8, !tbaa !46 + %69 = load ptr, ptr %15, align 8, !tbaa !47 + %70 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %68, ptr noundef %69, ptr noundef nonnull @.str.16) + %71 = bitcast i64 %70 to double + %72 = tail call double @llvm.fabs.f64(double %71) + %or.cond5 = fcmp ule double %72, 1.000000e+00 + br i1 %or.cond5, label %.thread73, label %74 + +.thread73: ; preds = %67 + %73 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store i64 %70, ptr %73, align 8, !tbaa !50 br label %.thread75 -73: ; preds = %66 +74: ; preds = %67 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.17) - %74 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) + %75 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) br label %.thread75 -75: ; preds = %57 +76: ; preds = %58 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.18) - %76 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) + %77 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) br label %.thread75 -.thread75: ; preds = %20, %32, %42, %60, %37, %26, %.thread, %.thread73, %7, %11, %75, %55, %73, %5 - %.0 = phi ptr [ %6, %5 ], [ %56, %55 ], [ %74, %73 ], [ %76, %75 ], [ %0, %11 ], [ %0, %7 ], [ %0, %.thread73 ], [ %0, %.thread ], [ %0, %26 ], [ %0, %37 ], [ %0, %60 ], [ %0, %42 ], [ %0, %32 ], [ %0, %20 ] +.thread75: ; preds = %21, %33, %43, %61, %38, %27, %.thread, %.thread73, %7, %11, %76, %56, %74, %5 + %.0 = phi ptr [ %6, %5 ], [ %57, %56 ], [ %75, %74 ], [ %77, %76 ], [ %0, %11 ], [ %0, %7 ], [ %0, %.thread73 ], [ %0, %.thread ], [ %0, %27 ], [ %0, %38 ], [ %0, %61 ], [ %0, %43 ], [ %0, %33 ], [ %0, %21 ] ret ptr %.0 } diff --git a/bench/proj/optimized/airocean.ll b/bench/proj/optimized/airocean.ll index 47e58f7c24a..7484fa8485c 100644 --- a/bench/proj/optimized/airocean.ll +++ b/bench/proj/optimized/airocean.ll @@ -62,7 +62,7 @@ define hidden noundef ptr @_Z37pj_projection_specific_setup_airoceanP8PJconsts(p 4: ; preds = %1 %5 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef %0, i32 noundef 4096) - br label %120 + br label %121 6: ; preds = %1 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(10304) %2, ptr noundef nonnull align 16 dereferenceable(1656) @_ZL14base_ico_faces, i64 1656, i1 false) @@ -82,186 +82,186 @@ define hidden noundef ptr @_Z37pj_projection_specific_setup_airoceanP8PJconsts(p %14 = getelementptr inbounds nuw i8, ptr %0, i64 24 %15 = load ptr, ptr %14, align 8, !tbaa !42 %16 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %13, ptr noundef %15, ptr noundef nonnull @.str.1) - %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %16 to ptr + %17 = inttoptr i64 %16 to ptr %.not = icmp eq i64 %16, 0 - br i1 %.not, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %17 - -17: ; preds = %6 - %18 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(11) @.str.2) #10 - %.not18 = icmp eq i32 %18, 0 - br i1 %.not18, label %.preheader, label %114 - -.preheader: ; preds = %17, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i ], [ 0, %17 ] - %19 = getelementptr inbounds nuw [4 x [4 x double]], ptr @_ZL18base_ico_air_trans, i64 %indvars.iv.i - %20 = getelementptr inbounds nuw [4 x [4 x double]], ptr %10, i64 %indvars.iv.i - %21 = getelementptr inbounds nuw i8, ptr %19, i64 32 - %22 = getelementptr inbounds nuw i8, ptr %19, i64 64 - %23 = getelementptr inbounds nuw i8, ptr %19, i64 96 + br i1 %.not, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %18 + +18: ; preds = %6 + %19 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(11) @.str.2) #10 + %.not19 = icmp eq i32 %19, 0 + br i1 %.not19, label %.preheader, label %115 + +.preheader: ; preds = %18, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i ], [ 0, %18 ] + %20 = getelementptr inbounds nuw [4 x [4 x double]], ptr @_ZL18base_ico_air_trans, i64 %indvars.iv.i + %21 = getelementptr inbounds nuw [4 x [4 x double]], ptr %10, i64 %indvars.iv.i + %22 = getelementptr inbounds nuw i8, ptr %20, i64 32 + %23 = getelementptr inbounds nuw i8, ptr %20, i64 64 + %24 = getelementptr inbounds nuw i8, ptr %20, i64 96 br label %.preheader.i.i -.preheader.i.i: ; preds = %33, %.preheader - %indvars.iv26.i.i = phi i64 [ 0, %.preheader ], [ %indvars.iv.next27.i.i, %33 ] - %24 = getelementptr inbounds nuw [4 x double], ptr @_ZL23orient_horizontal_trans, i64 %indvars.iv26.i.i - %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %26 = getelementptr inbounds nuw i8, ptr %24, i64 16 - %27 = getelementptr inbounds nuw i8, ptr %24, i64 24 - %28 = getelementptr inbounds nuw [4 x double], ptr %20, i64 %indvars.iv26.i.i - %29 = load double, ptr %24, align 16, !tbaa !43 - %30 = load double, ptr %25, align 8, !tbaa !43 - %31 = load double, ptr %26, align 16, !tbaa !43 - %32 = load double, ptr %27, align 8, !tbaa !43 - br label %34 - -33: ; preds = %34 +.preheader.i.i: ; preds = %34, %.preheader + %indvars.iv26.i.i = phi i64 [ 0, %.preheader ], [ %indvars.iv.next27.i.i, %34 ] + %25 = getelementptr inbounds nuw [4 x double], ptr @_ZL23orient_horizontal_trans, i64 %indvars.iv26.i.i + %26 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %27 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %28 = getelementptr inbounds nuw i8, ptr %25, i64 24 + %29 = getelementptr inbounds nuw [4 x double], ptr %21, i64 %indvars.iv26.i.i + %30 = load double, ptr %25, align 16, !tbaa !43 + %31 = load double, ptr %26, align 8, !tbaa !43 + %32 = load double, ptr %27, align 16, !tbaa !43 + %33 = load double, ptr %28, align 8, !tbaa !43 + br label %35 + +34: ; preds = %35 %indvars.iv.next27.i.i = add nuw nsw i64 %indvars.iv26.i.i, 1 %exitcond29.not.i.i = icmp eq i64 %indvars.iv.next27.i.i, 4 br i1 %exitcond29.not.i.i, label %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i, label %.preheader.i.i, !llvm.loop !44 -34: ; preds = %34, %.preheader.i.i - %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %34 ] - %35 = getelementptr inbounds nuw double, ptr %19, i64 %indvars.iv.i.i - %36 = load double, ptr %35, align 8, !tbaa !43 - %37 = getelementptr inbounds nuw double, ptr %21, i64 %indvars.iv.i.i - %38 = load double, ptr %37, align 8, !tbaa !43 - %39 = fmul double %30, %38 - %40 = tail call double @llvm.fmuladd.f64(double %29, double %36, double %39) - %41 = getelementptr inbounds nuw double, ptr %22, i64 %indvars.iv.i.i - %42 = load double, ptr %41, align 8, !tbaa !43 - %43 = tail call double @llvm.fmuladd.f64(double %31, double %42, double %40) - %44 = getelementptr inbounds nuw double, ptr %23, i64 %indvars.iv.i.i - %45 = load double, ptr %44, align 8, !tbaa !43 - %46 = tail call double @llvm.fmuladd.f64(double %32, double %45, double %43) - %47 = getelementptr inbounds nuw double, ptr %28, i64 %indvars.iv.i.i - store double %46, ptr %47, align 8, !tbaa !43 +35: ; preds = %35, %.preheader.i.i + %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %35 ] + %36 = getelementptr inbounds nuw double, ptr %20, i64 %indvars.iv.i.i + %37 = load double, ptr %36, align 8, !tbaa !43 + %38 = getelementptr inbounds nuw double, ptr %22, i64 %indvars.iv.i.i + %39 = load double, ptr %38, align 8, !tbaa !43 + %40 = fmul double %31, %39 + %41 = tail call double @llvm.fmuladd.f64(double %30, double %37, double %40) + %42 = getelementptr inbounds nuw double, ptr %23, i64 %indvars.iv.i.i + %43 = load double, ptr %42, align 8, !tbaa !43 + %44 = tail call double @llvm.fmuladd.f64(double %32, double %43, double %41) + %45 = getelementptr inbounds nuw double, ptr %24, i64 %indvars.iv.i.i + %46 = load double, ptr %45, align 8, !tbaa !43 + %47 = tail call double @llvm.fmuladd.f64(double %33, double %46, double %44) + %48 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv.i.i + store double %47, ptr %48, align 8, !tbaa !43 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 4 - br i1 %exitcond.not.i.i, label %33, label %34, !llvm.loop !46 + br i1 %exitcond.not.i.i, label %34, label %35, !llvm.loop !46 -_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i: ; preds = %33 - %48 = getelementptr inbounds nuw [4 x [4 x double]], ptr @_ZL18base_air_ico_trans, i64 %indvars.iv.i - %49 = getelementptr inbounds nuw [4 x [4 x double]], ptr %11, i64 %indvars.iv.i +_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i: ; preds = %34 + %49 = getelementptr inbounds nuw [4 x [4 x double]], ptr @_ZL18base_air_ico_trans, i64 %indvars.iv.i + %50 = getelementptr inbounds nuw [4 x [4 x double]], ptr %11, i64 %indvars.iv.i br label %.preheader.i15.i -.preheader.i15.i: ; preds = %59, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i - %indvars.iv26.i16.i = phi i64 [ 0, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i ], [ %indvars.iv.next27.i20.i, %59 ] - %50 = getelementptr inbounds nuw [4 x double], ptr %48, i64 %indvars.iv26.i16.i - %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 - %52 = getelementptr inbounds nuw i8, ptr %50, i64 16 - %53 = getelementptr inbounds nuw i8, ptr %50, i64 24 - %54 = getelementptr inbounds nuw [4 x double], ptr %49, i64 %indvars.iv26.i16.i - %55 = load double, ptr %50, align 16, !tbaa !43 - %56 = load double, ptr %51, align 8, !tbaa !43 - %57 = load double, ptr %52, align 16, !tbaa !43 - %58 = load double, ptr %53, align 8, !tbaa !43 - br label %60 - -59: ; preds = %60 +.preheader.i15.i: ; preds = %60, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i + %indvars.iv26.i16.i = phi i64 [ 0, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i ], [ %indvars.iv.next27.i20.i, %60 ] + %51 = getelementptr inbounds nuw [4 x double], ptr %49, i64 %indvars.iv26.i16.i + %52 = getelementptr inbounds nuw i8, ptr %51, i64 8 + %53 = getelementptr inbounds nuw i8, ptr %51, i64 16 + %54 = getelementptr inbounds nuw i8, ptr %51, i64 24 + %55 = getelementptr inbounds nuw [4 x double], ptr %50, i64 %indvars.iv26.i16.i + %56 = load double, ptr %51, align 16, !tbaa !43 + %57 = load double, ptr %52, align 8, !tbaa !43 + %58 = load double, ptr %53, align 16, !tbaa !43 + %59 = load double, ptr %54, align 8, !tbaa !43 + br label %61 + +60: ; preds = %61 %indvars.iv.next27.i20.i = add nuw nsw i64 %indvars.iv26.i16.i, 1 %exitcond29.not.i21.i = icmp eq i64 %indvars.iv.next27.i20.i, 4 br i1 %exitcond29.not.i21.i, label %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i, label %.preheader.i15.i, !llvm.loop !44 -60: ; preds = %60, %.preheader.i15.i - %indvars.iv.i17.i = phi i64 [ 0, %.preheader.i15.i ], [ %indvars.iv.next.i18.i, %60 ] - %61 = getelementptr inbounds nuw double, ptr @_ZL27orient_horizontal_inv_trans, i64 %indvars.iv.i17.i - %62 = load double, ptr %61, align 8, !tbaa !43 - %63 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 32), i64 %indvars.iv.i17.i - %64 = load double, ptr %63, align 8, !tbaa !43 - %65 = fmul double %56, %64 - %66 = tail call double @llvm.fmuladd.f64(double %55, double %62, double %65) - %67 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 64), i64 %indvars.iv.i17.i - %68 = load double, ptr %67, align 8, !tbaa !43 - %69 = tail call double @llvm.fmuladd.f64(double %57, double %68, double %66) - %70 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 96), i64 %indvars.iv.i17.i - %71 = load double, ptr %70, align 8, !tbaa !43 - %72 = tail call double @llvm.fmuladd.f64(double %58, double %71, double %69) - %73 = getelementptr inbounds nuw double, ptr %54, i64 %indvars.iv.i17.i - store double %72, ptr %73, align 8, !tbaa !43 +61: ; preds = %61, %.preheader.i15.i + %indvars.iv.i17.i = phi i64 [ 0, %.preheader.i15.i ], [ %indvars.iv.next.i18.i, %61 ] + %62 = getelementptr inbounds nuw double, ptr @_ZL27orient_horizontal_inv_trans, i64 %indvars.iv.i17.i + %63 = load double, ptr %62, align 8, !tbaa !43 + %64 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 32), i64 %indvars.iv.i17.i + %65 = load double, ptr %64, align 8, !tbaa !43 + %66 = fmul double %57, %65 + %67 = tail call double @llvm.fmuladd.f64(double %56, double %63, double %66) + %68 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 64), i64 %indvars.iv.i17.i + %69 = load double, ptr %68, align 8, !tbaa !43 + %70 = tail call double @llvm.fmuladd.f64(double %58, double %69, double %67) + %71 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 96), i64 %indvars.iv.i17.i + %72 = load double, ptr %71, align 8, !tbaa !43 + %73 = tail call double @llvm.fmuladd.f64(double %59, double %72, double %70) + %74 = getelementptr inbounds nuw double, ptr %55, i64 %indvars.iv.i17.i + store double %73, ptr %74, align 8, !tbaa !43 %indvars.iv.next.i18.i = add nuw nsw i64 %indvars.iv.i17.i, 1 %exitcond.not.i19.i = icmp eq i64 %indvars.iv.next.i18.i, 4 - br i1 %exitcond.not.i19.i, label %59, label %60, !llvm.loop !46 - -_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i: ; preds = %59 - %74 = getelementptr inbounds nuw %"struct.(anonymous namespace)::pj_face", ptr @_ZL19base_airocean_faces, i64 %indvars.iv.i - %75 = load double, ptr %74, align 8, !tbaa !47, !noalias !49 - %76 = getelementptr inbounds nuw i8, ptr %74, i64 8 - %77 = load double, ptr %76, align 8, !tbaa !52, !noalias !49 - %78 = fneg double %77 - %79 = tail call double @llvm.fmuladd.f64(double %75, double 0.000000e+00, double %78) - %80 = fadd double %79, 0.000000e+00 - %81 = fadd double %80, 0x401721D5D2BDD232 - %82 = fmul double %77, 0.000000e+00 - %83 = fadd double %75, %82 - %84 = fadd double %83, 0.000000e+00 - %85 = tail call double @llvm.fmuladd.f64(double %75, double 0.000000e+00, double %82) - %86 = fadd double %85, 1.000000e+00 - %87 = getelementptr inbounds nuw i8, ptr %74, i64 24 - %88 = load double, ptr %87, align 8, !tbaa !47, !noalias !53 - %89 = getelementptr inbounds nuw i8, ptr %74, i64 32 - %90 = load double, ptr %89, align 8, !tbaa !52, !noalias !53 - %91 = fneg double %90 - %92 = tail call double @llvm.fmuladd.f64(double %88, double 0.000000e+00, double %91) - %93 = fadd double %92, 0.000000e+00 - %94 = fadd double %93, 0x401721D5D2BDD232 - %95 = fmul double %90, 0.000000e+00 - %96 = fadd double %88, %95 - %97 = fadd double %96, 0.000000e+00 - %98 = tail call double @llvm.fmuladd.f64(double %88, double 0.000000e+00, double %95) - %99 = fadd double %98, 1.000000e+00 - %100 = getelementptr inbounds nuw i8, ptr %74, i64 48 - %101 = load double, ptr %100, align 8, !tbaa !47, !noalias !56 - %102 = getelementptr inbounds nuw i8, ptr %74, i64 56 - %103 = load double, ptr %102, align 8, !tbaa !52, !noalias !56 - %104 = fneg double %103 - %105 = tail call double @llvm.fmuladd.f64(double %101, double 0.000000e+00, double %104) - %106 = fadd double %105, 0.000000e+00 - %107 = fadd double %106, 0x401721D5D2BDD232 - %108 = fmul double %103, 0.000000e+00 - %109 = fadd double %101, %108 - %110 = fadd double %109, 0.000000e+00 - %111 = tail call double @llvm.fmuladd.f64(double %101, double 0.000000e+00, double %108) - %112 = fadd double %111, 1.000000e+00 - %113 = getelementptr inbounds nuw %"struct.(anonymous namespace)::pj_face", ptr %7, i64 %indvars.iv.i - store double %81, ptr %113, align 8, !tbaa !43 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 8 - store double %84, ptr %.sroa.4.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 16 - store double %86, ptr %.sroa.5.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 24 - store double %94, ptr %.sroa.6.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.7.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 32 - store double %97, ptr %.sroa.7.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.8.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 40 - store double %99, ptr %.sroa.8.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.9.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 48 - store double %107, ptr %.sroa.9.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.10.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 56 - store double %110, ptr %.sroa.10.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.11.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 64 - store double %112, ptr %.sroa.11.0..sroa_idx.i, align 8, !tbaa !43 + br i1 %exitcond.not.i19.i, label %60, label %61, !llvm.loop !46 + +_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i: ; preds = %60 + %75 = getelementptr inbounds nuw %"struct.(anonymous namespace)::pj_face", ptr @_ZL19base_airocean_faces, i64 %indvars.iv.i + %76 = load double, ptr %75, align 8, !tbaa !47, !noalias !49 + %77 = getelementptr inbounds nuw i8, ptr %75, i64 8 + %78 = load double, ptr %77, align 8, !tbaa !52, !noalias !49 + %79 = fneg double %78 + %80 = tail call double @llvm.fmuladd.f64(double %76, double 0.000000e+00, double %79) + %81 = fadd double %80, 0.000000e+00 + %82 = fadd double %81, 0x401721D5D2BDD232 + %83 = fmul double %78, 0.000000e+00 + %84 = fadd double %76, %83 + %85 = fadd double %84, 0.000000e+00 + %86 = tail call double @llvm.fmuladd.f64(double %76, double 0.000000e+00, double %83) + %87 = fadd double %86, 1.000000e+00 + %88 = getelementptr inbounds nuw i8, ptr %75, i64 24 + %89 = load double, ptr %88, align 8, !tbaa !47, !noalias !53 + %90 = getelementptr inbounds nuw i8, ptr %75, i64 32 + %91 = load double, ptr %90, align 8, !tbaa !52, !noalias !53 + %92 = fneg double %91 + %93 = tail call double @llvm.fmuladd.f64(double %89, double 0.000000e+00, double %92) + %94 = fadd double %93, 0.000000e+00 + %95 = fadd double %94, 0x401721D5D2BDD232 + %96 = fmul double %91, 0.000000e+00 + %97 = fadd double %89, %96 + %98 = fadd double %97, 0.000000e+00 + %99 = tail call double @llvm.fmuladd.f64(double %89, double 0.000000e+00, double %96) + %100 = fadd double %99, 1.000000e+00 + %101 = getelementptr inbounds nuw i8, ptr %75, i64 48 + %102 = load double, ptr %101, align 8, !tbaa !47, !noalias !56 + %103 = getelementptr inbounds nuw i8, ptr %75, i64 56 + %104 = load double, ptr %103, align 8, !tbaa !52, !noalias !56 + %105 = fneg double %104 + %106 = tail call double @llvm.fmuladd.f64(double %102, double 0.000000e+00, double %105) + %107 = fadd double %106, 0.000000e+00 + %108 = fadd double %107, 0x401721D5D2BDD232 + %109 = fmul double %104, 0.000000e+00 + %110 = fadd double %102, %109 + %111 = fadd double %110, 0.000000e+00 + %112 = tail call double @llvm.fmuladd.f64(double %102, double 0.000000e+00, double %109) + %113 = fadd double %112, 1.000000e+00 + %114 = getelementptr inbounds nuw %"struct.(anonymous namespace)::pj_face", ptr %7, i64 %indvars.iv.i + store double %82, ptr %114, align 8, !tbaa !43 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 8 + store double %85, ptr %.sroa.4.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 16 + store double %87, ptr %.sroa.5.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 24 + store double %95, ptr %.sroa.6.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.7.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 32 + store double %98, ptr %.sroa.7.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.8.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 40 + store double %100, ptr %.sroa.8.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.9.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 48 + store double %108, ptr %.sroa.9.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.10.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 56 + store double %111, ptr %.sroa.10.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.11.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 64 + store double %113, ptr %.sroa.11.0..sroa_idx.i, align 8, !tbaa !43 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 23 br i1 %exitcond.not.i, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %.preheader, !llvm.loop !59 -114: ; preds = %17 - %115 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(9) @.str.3) #10 - %.not19 = icmp eq i32 %115, 0 - br i1 %.not19, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %116 +115: ; preds = %18 + %116 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(9) @.str.3) #10 + %.not20 = icmp eq i32 %116, 0 + br i1 %.not20, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %117 -116: ; preds = %114 +117: ; preds = %115 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) - %117 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) - br label %120 - -_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit: ; preds = %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i, %114, %6 - %118 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store ptr @_ZL16airocean_inverse5PJ_XYP8PJconsts, ptr %118, align 8, !tbaa !60 - %119 = getelementptr inbounds nuw i8, ptr %0, i64 104 - store ptr @_ZL16airocean_forward5PJ_LPP8PJconsts, ptr %119, align 8, !tbaa !61 - br label %120 - -120: ; preds = %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, %116, %4 - %.0 = phi ptr [ %5, %4 ], [ %117, %116 ], [ %0, %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit ] + %118 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) + br label %121 + +_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit: ; preds = %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i, %115, %6 + %119 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store ptr @_ZL16airocean_inverse5PJ_XYP8PJconsts, ptr %119, align 8, !tbaa !60 + %120 = getelementptr inbounds nuw i8, ptr %0, i64 104 + store ptr @_ZL16airocean_forward5PJ_LPP8PJconsts, ptr %120, align 8, !tbaa !61 + br label %121 + +121: ; preds = %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, %117, %4 + %.0 = phi ptr [ %5, %4 ], [ %118, %117 ], [ %0, %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit ] ret ptr %.0 } diff --git a/bench/proj/optimized/datum_set.ll b/bench/proj/optimized/datum_set.ll index 3b02698612c..926eb5a9075 100644 --- a/bench/proj/optimized/datum_set.ll +++ b/bench/proj/optimized/datum_set.ll @@ -17,221 +17,221 @@ define hidden noundef range(i32 -1, 2) i32 @_Z12pj_datum_setP6pj_ctxP8ARG_listP8 %5 = getelementptr inbounds nuw i8, ptr %2, i64 528 store i32 0, ptr %5, align 8, !tbaa !3 %6 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str) - %.sroa.046.0..sroa.046.0..cast = inttoptr i64 %6 to ptr + %7 = inttoptr i64 %6 to ptr %.not = icmp eq i64 %6, 0 - br i1 %.not, label %.critedge111, label %.preheader + br i1 %.not, label %.critedge113, label %.preheader -.preheader: ; preds = %3, %7 - %.081 = phi ptr [ %8, %7 ], [ %1, %3 ] - %.not96 = icmp eq ptr %.081, null - br i1 %.not96, label %.critedge111.thread, label %7 +.preheader: ; preds = %3, %8 + %.081 = phi ptr [ %9, %8 ], [ %1, %3 ] + %.not98 = icmp eq ptr %.081, null + br i1 %.not98, label %.critedge113.thread, label %8 -7: ; preds = %.preheader - %8 = load ptr, ptr %.081, align 8, !tbaa !36 - %.not97 = icmp eq ptr %8, null - br i1 %.not97, label %.critedge, label %.preheader, !llvm.loop !37 +8: ; preds = %.preheader + %9 = load ptr, ptr %.081, align 8, !tbaa !36 + %.not99 = icmp eq ptr %9, null + br i1 %.not99, label %.critedge, label %.preheader, !llvm.loop !37 -.critedge: ; preds = %7 - %9 = tail call noundef ptr @_Z17pj_get_datums_refv() - %10 = load ptr, ptr %9, align 8, !tbaa !39 - %.not98120 = icmp eq ptr %10, null - br i1 %.not98120, label %.critedge112, label %.lr.ph +.critedge: ; preds = %8 + %10 = tail call noundef ptr @_Z17pj_get_datums_refv() + %11 = load ptr, ptr %10, align 8, !tbaa !39 + %.not100122 = icmp eq ptr %11, null + br i1 %.not100122, label %.critedge114, label %.lr.ph -11: ; preds = %.lr.ph +12: ; preds = %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %12 = getelementptr inbounds nuw %struct.PJ_DATUMS, ptr %9, i64 %indvars.iv.next - %13 = load ptr, ptr %12, align 8, !tbaa !39 - %.not98 = icmp eq ptr %13, null - br i1 %.not98, label %.critedge112, label %.lr.ph, !llvm.loop !41 - -.lr.ph: ; preds = %.critedge, %11 - %indvars.iv = phi i64 [ %indvars.iv.next, %11 ], [ 0, %.critedge ] - %14 = phi ptr [ %13, %11 ], [ %10, %.critedge ] - %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.046.0..sroa.046.0..cast, ptr noundef nonnull dereferenceable(1) %14) #7 - %.not99 = icmp eq i32 %15, 0 - br i1 %.not99, label %.critedge4, label %11 - -.critedge112: ; preds = %11, %.critedge + %13 = getelementptr inbounds nuw %struct.PJ_DATUMS, ptr %10, i64 %indvars.iv.next + %14 = load ptr, ptr %13, align 8, !tbaa !39 + %.not100 = icmp eq ptr %14, null + br i1 %.not100, label %.critedge114, label %.lr.ph, !llvm.loop !41 + +.lr.ph: ; preds = %.critedge, %12 + %indvars.iv = phi i64 [ %indvars.iv.next, %12 ], [ 0, %.critedge ] + %15 = phi ptr [ %14, %12 ], [ %11, %.critedge ] + %16 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) %15) #7 + %.not101 = icmp eq i32 %16, 0 + br i1 %.not101, label %.critedge4, label %12 + +.critedge114: ; preds = %12, %.critedge tail call void (ptr, i32, ptr, ...) @_Z6pj_logP6pj_ctxiPKcz(ptr noundef %0, i32 noundef 1, ptr noundef nonnull @.str.1) tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %0, i32 noundef 1027) - br label %.critedge111.thread + br label %.critedge113.thread .critedge4: ; preds = %.lr.ph - %16 = getelementptr inbounds nuw %struct.PJ_DATUMS, ptr %9, i64 %indvars.iv - %17 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %18 = load ptr, ptr %17, align 8, !tbaa !42 - %.not100 = icmp eq ptr %18, null - br i1 %.not100, label %28, label %19 - -19: ; preds = %.critedge4 - %char0 = load i8, ptr %18, align 1 - %.not101 = icmp eq i8 %char0, 0 - br i1 %.not101, label %28, label %20 - -20: ; preds = %19 + %17 = getelementptr inbounds nuw %struct.PJ_DATUMS, ptr %10, i64 %indvars.iv + %18 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %19 = load ptr, ptr %18, align 8, !tbaa !42 + %.not102 = icmp eq ptr %19, null + br i1 %.not102, label %29, label %20 + +20: ; preds = %.critedge4 + %char0 = load i8, ptr %19, align 1 + %.not103 = icmp eq i8 %char0, 0 + br i1 %.not103, label %29, label %21 + +21: ; preds = %20 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(7) %4, ptr noundef nonnull align 1 dereferenceable(7) @.str.2, i64 7, i1 false) #8 - %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #7 - %22 = getelementptr inbounds nuw i8, ptr %4, i64 %21 - %23 = sub i64 99, %21 - %24 = call ptr @strncpy(ptr noundef nonnull %22, ptr noundef nonnull %18, i64 noundef %23) #8 - %25 = getelementptr inbounds nuw i8, ptr %4, i64 99 - store i8 0, ptr %25, align 1, !tbaa !43 - %26 = call noundef ptr @_Z10pj_mkparamPKc(ptr noundef nonnull %4) - %.not102 = icmp eq ptr %26, null - br i1 %.not102, label %.thread, label %27 - -.thread: ; preds = %20 + %22 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #7 + %23 = getelementptr inbounds nuw i8, ptr %4, i64 %22 + %24 = sub i64 99, %22 + %25 = call ptr @strncpy(ptr noundef nonnull %23, ptr noundef nonnull %19, i64 noundef %24) #8 + %26 = getelementptr inbounds nuw i8, ptr %4, i64 99 + store i8 0, ptr %26, align 1, !tbaa !43 + %27 = call noundef ptr @_Z10pj_mkparamPKc(ptr noundef nonnull %4) + %.not104 = icmp eq ptr %27, null + br i1 %.not104, label %.thread, label %28 + +.thread: ; preds = %21 call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %0, i32 noundef 4096) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %.critedge111.thread + br label %.critedge113.thread -27: ; preds = %20 - store ptr %26, ptr %.081, align 8, !tbaa !36 +28: ; preds = %21 + store ptr %27, ptr %.081, align 8, !tbaa !36 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %28 - -28: ; preds = %27, %19, %.critedge4 - %.182 = phi ptr [ %26, %27 ], [ %.081, %19 ], [ %.081, %.critedge4 ] - %29 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %30 = load ptr, ptr %29, align 8, !tbaa !44 - %.not103 = icmp eq ptr %30, null - br i1 %.not103, label %.critedge111, label %31 - -31: ; preds = %28 - %char0104 = load i8, ptr %30, align 1 - %.not105 = icmp eq i8 %char0104, 0 - br i1 %.not105, label %.critedge111, label %32 - -32: ; preds = %31 - %33 = call noundef ptr @_Z10pj_mkparamPKc(ptr noundef nonnull %30) - %.not106 = icmp eq ptr %33, null - br i1 %.not106, label %.thread114, label %34 - -.thread114: ; preds = %32 + br label %29 + +29: ; preds = %28, %20, %.critedge4 + %.182 = phi ptr [ %27, %28 ], [ %.081, %20 ], [ %.081, %.critedge4 ] + %30 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %31 = load ptr, ptr %30, align 8, !tbaa !44 + %.not105 = icmp eq ptr %31, null + br i1 %.not105, label %.critedge113, label %32 + +32: ; preds = %29 + %char0106 = load i8, ptr %31, align 1 + %.not107 = icmp eq i8 %char0106, 0 + br i1 %.not107, label %.critedge113, label %33 + +33: ; preds = %32 + %34 = call noundef ptr @_Z10pj_mkparamPKc(ptr noundef nonnull %31) + %.not108 = icmp eq ptr %34, null + br i1 %.not108, label %.thread116, label %35 + +.thread116: ; preds = %33 call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %0, i32 noundef 4096) - br label %.critedge111.thread + br label %.critedge113.thread -34: ; preds = %32 - store ptr %33, ptr %.182, align 8, !tbaa !36 - br label %.critedge111 +35: ; preds = %33 + store ptr %34, ptr %.182, align 8, !tbaa !36 + br label %.critedge113 -.critedge111: ; preds = %34, %31, %28, %3 - %35 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.3) - %.not107 = icmp eq i64 %35, 0 - br i1 %.not107, label %37, label %36 +.critedge113: ; preds = %35, %32, %29, %3 + %36 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.3) + %.not109 = icmp eq i64 %36, 0 + br i1 %.not109, label %38, label %37 -36: ; preds = %.critedge111 +37: ; preds = %.critedge113 store i32 3, ptr %5, align 8, !tbaa !3 - br label %.critedge111.thread - -37: ; preds = %.critedge111 - %38 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.4) - %.not108 = icmp eq i64 %38, 0 - br i1 %.not108, label %.critedge111.thread, label %39 - -39: ; preds = %37 - %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %38 to ptr - %40 = getelementptr inbounds nuw i8, ptr %2, i64 536 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %40, i8 0, i64 56, i1 false) - %41 = load i8, ptr %.sroa.0.0..sroa.0.0..cast, align 1, !tbaa !43 - %.not125 = icmp eq i8 %41, 0 - br i1 %.not125, label %._crit_edge.thread, label %.lr.ph124 - -._crit_edge.thread: ; preds = %39 - %42 = getelementptr inbounds nuw i8, ptr %2, i64 560 - br label %56 - -.lr.ph124: ; preds = %39, %.critedge6 - %indvars.iv130 = phi i64 [ %indvars.iv.next131, %.critedge6 ], [ 0, %39 ] - %.0123 = phi ptr [ %spec.select, %.critedge6 ], [ %.sroa.0.0..sroa.0.0..cast, %39 ] - %43 = call noundef double @_Z7pj_atofPKc(ptr noundef nonnull %.0123) - %indvars.iv.next131 = add nuw nsw i64 %indvars.iv130, 1 - %44 = getelementptr inbounds nuw double, ptr %40, i64 %indvars.iv130 - store double %43, ptr %44, align 8, !tbaa !45 - br label %45 - -45: ; preds = %47, %.lr.ph124 - %.1 = phi ptr [ %.0123, %.lr.ph124 ], [ %48, %47 ] - %46 = load i8, ptr %.1, align 1, !tbaa !43 - switch i8 %46, label %47 [ + br label %.critedge113.thread + +38: ; preds = %.critedge113 + %39 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.4) + %.not110 = icmp eq i64 %39, 0 + br i1 %.not110, label %.critedge113.thread, label %40 + +40: ; preds = %38 + %41 = inttoptr i64 %39 to ptr + %42 = getelementptr inbounds nuw i8, ptr %2, i64 536 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %42, i8 0, i64 56, i1 false) + %43 = load i8, ptr %41, align 1, !tbaa !43 + %.not127 = icmp eq i8 %43, 0 + br i1 %.not127, label %._crit_edge.thread, label %.lr.ph126 + +._crit_edge.thread: ; preds = %40 + %44 = getelementptr inbounds nuw i8, ptr %2, i64 560 + br label %58 + +.lr.ph126: ; preds = %40, %.critedge6 + %indvars.iv132 = phi i64 [ %indvars.iv.next133, %.critedge6 ], [ 0, %40 ] + %.0125 = phi ptr [ %spec.select, %.critedge6 ], [ %41, %40 ] + %45 = call noundef double @_Z7pj_atofPKc(ptr noundef nonnull %.0125) + %indvars.iv.next133 = add nuw nsw i64 %indvars.iv132, 1 + %46 = getelementptr inbounds nuw double, ptr %42, i64 %indvars.iv132 + store double %45, ptr %46, align 8, !tbaa !45 + br label %47 + +47: ; preds = %49, %.lr.ph126 + %.1 = phi ptr [ %.0125, %.lr.ph126 ], [ %50, %49 ] + %48 = load i8, ptr %.1, align 1, !tbaa !43 + switch i8 %48, label %49 [ i8 0, label %.critedge6 i8 44, label %.critedge6 ] -47: ; preds = %45 - %48 = getelementptr inbounds nuw i8, ptr %.1, i64 1 - br label %45, !llvm.loop !46 +49: ; preds = %47 + %50 = getelementptr inbounds nuw i8, ptr %.1, i64 1 + br label %47, !llvm.loop !46 -.critedge6: ; preds = %45, %45 - %49 = icmp eq i8 %46, 44 - %spec.select.idx = zext i1 %49 to i64 +.critedge6: ; preds = %47, %47 + %51 = icmp eq i8 %48, 44 + %spec.select.idx = zext i1 %51 to i64 %spec.select = getelementptr inbounds nuw i8, ptr %.1, i64 %spec.select.idx - %50 = load i8, ptr %spec.select, align 1, !tbaa !43 - %51 = icmp ne i8 %50, 0 - %52 = icmp samesign ult i64 %indvars.iv130, 6 - %53 = select i1 %51, i1 %52, i1 false - br i1 %53, label %.lr.ph124, label %._crit_edge, !llvm.loop !47 + %52 = load i8, ptr %spec.select, align 1, !tbaa !43 + %53 = icmp ne i8 %52, 0 + %54 = icmp samesign ult i64 %indvars.iv132, 6 + %55 = select i1 %53, i1 %54, i1 false + br i1 %55, label %.lr.ph126, label %._crit_edge, !llvm.loop !47 ._crit_edge: ; preds = %.critedge6 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %2, i64 560 %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !45 - %54 = getelementptr inbounds nuw i8, ptr %2, i64 560 - %55 = fcmp une double %.pre, 0.000000e+00 - br i1 %55, label %._crit_edge._crit_edge, label %56 + %56 = getelementptr inbounds nuw i8, ptr %2, i64 560 + %57 = fcmp une double %.pre, 0.000000e+00 + br i1 %57, label %._crit_edge._crit_edge, label %58 ._crit_edge._crit_edge: ; preds = %._crit_edge - %.phi.trans.insert133 = getelementptr inbounds nuw i8, ptr %2, i64 568 - %.pre134 = load double, ptr %.phi.trans.insert133, align 8, !tbaa !45 - br label %70 - -56: ; preds = %._crit_edge.thread, %._crit_edge - %57 = phi ptr [ %42, %._crit_edge.thread ], [ %54, %._crit_edge ] - %58 = phi double [ 0.000000e+00, %._crit_edge.thread ], [ %.pre, %._crit_edge ] - %59 = getelementptr inbounds nuw i8, ptr %2, i64 568 - %60 = load double, ptr %59, align 8, !tbaa !45 - %61 = fcmp une double %60, 0.000000e+00 - br i1 %61, label %70, label %62 - -62: ; preds = %56 - %63 = getelementptr inbounds nuw i8, ptr %2, i64 576 - %64 = load double, ptr %63, align 8, !tbaa !45 - %65 = fcmp une double %64, 0.000000e+00 - br i1 %65, label %70, label %66 - -66: ; preds = %62 - %67 = getelementptr inbounds nuw i8, ptr %2, i64 584 - %68 = load double, ptr %67, align 8, !tbaa !45 - %69 = fcmp une double %68, 0.000000e+00 - br i1 %69, label %70, label %84 - -70: ; preds = %._crit_edge._crit_edge, %66, %62, %56 - %71 = phi ptr [ %54, %._crit_edge._crit_edge ], [ %57, %66 ], [ %57, %62 ], [ %57, %56 ] - %72 = phi double [ %.pre, %._crit_edge._crit_edge ], [ %58, %66 ], [ %58, %62 ], [ %58, %56 ] - %73 = phi double [ %.pre134, %._crit_edge._crit_edge ], [ %60, %66 ], [ %60, %62 ], [ %60, %56 ] + %.phi.trans.insert135 = getelementptr inbounds nuw i8, ptr %2, i64 568 + %.pre136 = load double, ptr %.phi.trans.insert135, align 8, !tbaa !45 + br label %72 + +58: ; preds = %._crit_edge.thread, %._crit_edge + %59 = phi ptr [ %44, %._crit_edge.thread ], [ %56, %._crit_edge ] + %60 = phi double [ 0.000000e+00, %._crit_edge.thread ], [ %.pre, %._crit_edge ] + %61 = getelementptr inbounds nuw i8, ptr %2, i64 568 + %62 = load double, ptr %61, align 8, !tbaa !45 + %63 = fcmp une double %62, 0.000000e+00 + br i1 %63, label %72, label %64 + +64: ; preds = %58 + %65 = getelementptr inbounds nuw i8, ptr %2, i64 576 + %66 = load double, ptr %65, align 8, !tbaa !45 + %67 = fcmp une double %66, 0.000000e+00 + br i1 %67, label %72, label %68 + +68: ; preds = %64 + %69 = getelementptr inbounds nuw i8, ptr %2, i64 584 + %70 = load double, ptr %69, align 8, !tbaa !45 + %71 = fcmp une double %70, 0.000000e+00 + br i1 %71, label %72, label %86 + +72: ; preds = %._crit_edge._crit_edge, %68, %64, %58 + %73 = phi ptr [ %56, %._crit_edge._crit_edge ], [ %59, %68 ], [ %59, %64 ], [ %59, %58 ] + %74 = phi double [ %.pre, %._crit_edge._crit_edge ], [ %60, %68 ], [ %60, %64 ], [ %60, %58 ] + %75 = phi double [ %.pre136, %._crit_edge._crit_edge ], [ %62, %68 ], [ %62, %64 ], [ %62, %58 ] store i32 2, ptr %5, align 8, !tbaa !3 - %74 = fmul double %72, 0x3ED455A5B2FF8F9D - store double %74, ptr %71, align 8, !tbaa !45 - %75 = getelementptr inbounds nuw i8, ptr %2, i64 568 - %76 = fmul double %73, 0x3ED455A5B2FF8F9D - store double %76, ptr %75, align 8, !tbaa !45 - %77 = getelementptr inbounds nuw i8, ptr %2, i64 576 - %78 = load double, ptr %77, align 8, !tbaa !45 - %79 = fmul double %78, 0x3ED455A5B2FF8F9D - store double %79, ptr %77, align 8, !tbaa !45 - %80 = getelementptr inbounds nuw i8, ptr %2, i64 584 - %81 = load double, ptr %80, align 8, !tbaa !45 - %82 = fdiv double %81, 1.000000e+06 - %83 = fadd double %82, 1.000000e+00 - store double %83, ptr %80, align 8, !tbaa !45 - br label %.critedge111.thread - -84: ; preds = %66 + %76 = fmul double %74, 0x3ED455A5B2FF8F9D + store double %76, ptr %73, align 8, !tbaa !45 + %77 = getelementptr inbounds nuw i8, ptr %2, i64 568 + %78 = fmul double %75, 0x3ED455A5B2FF8F9D + store double %78, ptr %77, align 8, !tbaa !45 + %79 = getelementptr inbounds nuw i8, ptr %2, i64 576 + %80 = load double, ptr %79, align 8, !tbaa !45 + %81 = fmul double %80, 0x3ED455A5B2FF8F9D + store double %81, ptr %79, align 8, !tbaa !45 + %82 = getelementptr inbounds nuw i8, ptr %2, i64 584 + %83 = load double, ptr %82, align 8, !tbaa !45 + %84 = fdiv double %83, 1.000000e+06 + %85 = fadd double %84, 1.000000e+00 + store double %85, ptr %82, align 8, !tbaa !45 + br label %.critedge113.thread + +86: ; preds = %68 store i32 1, ptr %5, align 8, !tbaa !3 - br label %.critedge111.thread + br label %.critedge113.thread -.critedge111.thread: ; preds = %.preheader, %.thread114, %.thread, %.critedge112, %36, %37, %84, %70 - %.6 = phi i32 [ 0, %70 ], [ 0, %84 ], [ 0, %37 ], [ 0, %36 ], [ 1, %.thread114 ], [ 1, %.thread ], [ 1, %.critedge112 ], [ -1, %.preheader ] +.critedge113.thread: ; preds = %.preheader, %.thread116, %.thread, %.critedge114, %37, %38, %86, %72 + %.6 = phi i32 [ 0, %72 ], [ 0, %86 ], [ 0, %38 ], [ 0, %37 ], [ 1, %.thread116 ], [ 1, %.thread ], [ 1, %.critedge114 ], [ -1, %.preheader ] ret i32 %.6 } diff --git a/bench/proj/optimized/geod_set.ll b/bench/proj/optimized/geod_set.ll index d22e3c76ce8..35836675f77 100644 --- a/bench/proj/optimized/geod_set.ll +++ b/bench/proj/optimized/geod_set.ll @@ -69,22 +69,22 @@ define hidden void @geod_set(i32 noundef %0, ptr noundef readonly captures(none) ._crit_edge: ; preds = %18, %.thread, %9 %12 = tail call noundef ptr @_Z18pj_get_default_ctxv() %13 = call noundef i32 @_Z10pj_ell_setP6pj_ctxP8ARG_listPdS3_(ptr noundef %12, ptr noundef %8, ptr noundef nonnull @GEODESIC, ptr noundef nonnull %3) - %.not67 = icmp eq i32 %13, 0 - br i1 %.not67, label %24, label %23 + %.not68 = icmp eq i32 %13, 0 + br i1 %.not68, label %24, label %23 .lr.ph: ; preds = %.lr.ph.preheader, %18 %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %18 ] - %.05978 = phi ptr [ %8, %.lr.ph.preheader ], [ %19, %18 ] + %.05979 = phi ptr [ %8, %.lr.ph.preheader ], [ %19, %18 ] %14 = getelementptr inbounds nuw ptr, ptr %1, i64 %indvars.iv %15 = load ptr, ptr %14, align 8, !tbaa !4 %16 = tail call noundef ptr @_Z10pj_mkparamPKc(ptr noundef %15) - store ptr %16, ptr %.05978, align 8, !tbaa !9 - %.not76 = icmp eq ptr %16, null - br i1 %.not76, label %17, label %18 + store ptr %16, ptr %.05979, align 8, !tbaa !9 + %.not77 = icmp eq ptr %16, null + br i1 %.not77, label %17, label %18 17: ; preds = %.lr.ph tail call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.1) - %.pre = load ptr, ptr %.05978, align 8, !tbaa !9 + %.pre = load ptr, ptr %.05979, align 8, !tbaa !9 br label %18 18: ; preds = %17, %.lr.ph @@ -101,172 +101,172 @@ define hidden void @geod_set(i32 noundef %0, ptr noundef readonly captures(none) 24: ; preds = %23, %._crit_edge %25 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.3) - %.sroa.026.0..sroa.026.0..cast = inttoptr i64 %25 to ptr - %.not68 = icmp eq i64 %25, 0 - br i1 %.not68, label %43, label %26 - -26: ; preds = %24 - %27 = call ptr @proj_get_units_from_database(ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.4, i32 noundef 0, ptr noundef null) - %.not69 = icmp eq ptr %27, null - br i1 %.not69, label %.critedge95, label %.lr.ph82.split - -.lr.ph82.split: ; preds = %26 - %28 = load ptr, ptr %27, align 8, !tbaa !13 - %.not7086 = icmp eq ptr %28, null - br i1 %.not7086, label %.critedge95, label %.lr.ph89 - -.critedge: ; preds = %39 - call void @proj_unit_list_destroy(ptr noundef nonnull %27) - br i1 %.1, label %44, label %42 - -.lr.ph89: ; preds = %.lr.ph82.split, %39 - %indvars.iv97 = phi i64 [ %indvars.iv.next98, %39 ], [ 0, %.lr.ph82.split ] - %29 = phi ptr [ %41, %39 ], [ %28, %.lr.ph82.split ] - %.0618087 = phi i1 [ %.1, %39 ], [ false, %.lr.ph82.split ] - %30 = getelementptr inbounds nuw i8, ptr %29, i64 40 - %31 = load ptr, ptr %30, align 8, !tbaa !14 - %.not75 = icmp eq ptr %31, null - br i1 %.not75, label %39, label %32 - -32: ; preds = %.lr.ph89 - %33 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) %.sroa.026.0..sroa.026.0..cast) #7 - %34 = icmp eq i32 %33, 0 - br i1 %34, label %35, label %39 - -35: ; preds = %32 - %36 = getelementptr inbounds nuw i8, ptr %29, i64 32 - %37 = load double, ptr %36, align 8, !tbaa !18 - store double %37, ptr @to_meter, align 8, !tbaa !19 - %38 = fdiv double 1.000000e+00, %37 - store double %38, ptr @fr_meter, align 8, !tbaa !19 - br label %39 - -39: ; preds = %.lr.ph89, %32, %35 - %.1 = phi i1 [ true, %35 ], [ %.0618087, %32 ], [ %.0618087, %.lr.ph89 ] - %indvars.iv.next98 = add nuw nsw i64 %indvars.iv97, 1 - %40 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv.next98 - %41 = load ptr, ptr %40, align 8, !tbaa !13 - %.not70 = icmp eq ptr %41, null - br i1 %.not70, label %.critedge, label %.lr.ph89 - -.critedge95: ; preds = %.lr.ph82.split, %26 - call void @proj_unit_list_destroy(ptr noundef %27) - br label %42 - -42: ; preds = %.critedge95, %.critedge - call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.5, ptr noundef nonnull %.sroa.026.0..sroa.026.0..cast) - br label %44 - -43: ; preds = %24 + %26 = inttoptr i64 %25 to ptr + %.not69 = icmp eq i64 %25, 0 + br i1 %.not69, label %44, label %27 + +27: ; preds = %24 + %28 = call ptr @proj_get_units_from_database(ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.4, i32 noundef 0, ptr noundef null) + %.not70 = icmp eq ptr %28, null + br i1 %.not70, label %.critedge96, label %.lr.ph83.split + +.lr.ph83.split: ; preds = %27 + %29 = load ptr, ptr %28, align 8, !tbaa !13 + %.not7187 = icmp eq ptr %29, null + br i1 %.not7187, label %.critedge96, label %.lr.ph90 + +.critedge: ; preds = %40 + call void @proj_unit_list_destroy(ptr noundef nonnull %28) + br i1 %.1, label %45, label %43 + +.lr.ph90: ; preds = %.lr.ph83.split, %40 + %indvars.iv98 = phi i64 [ %indvars.iv.next99, %40 ], [ 0, %.lr.ph83.split ] + %30 = phi ptr [ %42, %40 ], [ %29, %.lr.ph83.split ] + %.0618188 = phi i1 [ %.1, %40 ], [ false, %.lr.ph83.split ] + %31 = getelementptr inbounds nuw i8, ptr %30, i64 40 + %32 = load ptr, ptr %31, align 8, !tbaa !14 + %.not76 = icmp eq ptr %32, null + br i1 %.not76, label %40, label %33 + +33: ; preds = %.lr.ph90 + %34 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) %26) #7 + %35 = icmp eq i32 %34, 0 + br i1 %35, label %36, label %40 + +36: ; preds = %33 + %37 = getelementptr inbounds nuw i8, ptr %30, i64 32 + %38 = load double, ptr %37, align 8, !tbaa !18 + store double %38, ptr @to_meter, align 8, !tbaa !19 + %39 = fdiv double 1.000000e+00, %38 + store double %39, ptr @fr_meter, align 8, !tbaa !19 + br label %40 + +40: ; preds = %.lr.ph90, %33, %36 + %.1 = phi i1 [ true, %36 ], [ %.0618188, %33 ], [ %.0618188, %.lr.ph90 ] + %indvars.iv.next99 = add nuw nsw i64 %indvars.iv98, 1 + %41 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv.next99 + %42 = load ptr, ptr %41, align 8, !tbaa !13 + %.not71 = icmp eq ptr %42, null + br i1 %.not71, label %.critedge, label %.lr.ph90 + +.critedge96: ; preds = %.lr.ph83.split, %27 + call void @proj_unit_list_destroy(ptr noundef %28) + br label %43 + +43: ; preds = %.critedge96, %.critedge + call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.5, ptr noundef nonnull %26) + br label %45 + +44: ; preds = %24 store double 1.000000e+00, ptr @fr_meter, align 8, !tbaa !19 store double 1.000000e+00, ptr @to_meter, align 8, !tbaa !19 - br label %44 - -44: ; preds = %.critedge, %42, %43 - %45 = load double, ptr %3, align 8, !tbaa !19 - %46 = fsub double 1.000000e+00, %45 - %47 = call double @sqrt(double noundef %46) #8, !tbaa !20 - %48 = fadd double %47, 1.000000e+00 - %49 = fdiv double %45, %48 - store double %49, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 8), align 8, !tbaa !21 + br label %45 + +45: ; preds = %.critedge, %43, %44 + %46 = load double, ptr %3, align 8, !tbaa !19 + %47 = fsub double 1.000000e+00, %46 + %48 = call double @sqrt(double noundef %47) #8, !tbaa !20 + %49 = fadd double %48, 1.000000e+00 + %50 = fdiv double %46, %49 + store double %50, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 8), align 8, !tbaa !21 call void @geod_ini() - %50 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.6) - %51 = and i64 %50, 4294967295 - %.not71 = icmp eq i64 %51, 0 - br i1 %.not71, label %88, label %52 - -52: ; preds = %44 - %53 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.7) - store i64 %53, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 24), align 8, !tbaa !23 - %54 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.8) - store i64 %54, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 16), align 8, !tbaa !24 - %55 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.9) - %56 = and i64 %55, 4294967295 - %.not72 = icmp eq i64 %56, 0 - br i1 %.not72, label %60, label %57 - -57: ; preds = %52 - %58 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.10) - store i64 %58, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 48), align 8, !tbaa !25 - %59 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.11) - store i64 %59, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 40), align 8, !tbaa !26 + %51 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.6) + %52 = and i64 %51, 4294967295 + %.not72 = icmp eq i64 %52, 0 + br i1 %.not72, label %89, label %53 + +53: ; preds = %45 + %54 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.7) + store i64 %54, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 24), align 8, !tbaa !23 + %55 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.8) + store i64 %55, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 16), align 8, !tbaa !24 + %56 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.9) + %57 = and i64 %56, 4294967295 + %.not73 = icmp eq i64 %57, 0 + br i1 %.not73, label %61, label %58 + +58: ; preds = %53 + %59 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.10) + store i64 %59, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 48), align 8, !tbaa !25 + %60 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.11) + store i64 %60, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 40), align 8, !tbaa !26 call void @geod_inv() call void @geod_pre() - br label %66 - -60: ; preds = %52 - %61 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.12) - store i64 %61, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 64), align 8, !tbaa !27 - %62 = and i64 %61, 9223372036854775807 - %.not73 = icmp eq i64 %62, 0 - br i1 %.not73, label %65, label %63 - -63: ; preds = %60 - %64 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.13) - store i64 %64, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 32), align 8, !tbaa !28 + br label %67 + +61: ; preds = %53 + %62 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.12) + store i64 %62, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 64), align 8, !tbaa !27 + %63 = and i64 %62, 9223372036854775807 + %.not74 = icmp eq i64 %63, 0 + br i1 %.not74, label %66, label %64 + +64: ; preds = %61 + %65 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.13) + store i64 %65, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 32), align 8, !tbaa !28 call void @geod_pre() call void @geod_for() - br label %66 + br label %67 -65: ; preds = %60 +66: ; preds = %61 call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.14) - br label %66 + br label %67 -66: ; preds = %63, %65, %57 - %67 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.15) - %.sroa.03.0.extract.trunc = trunc i64 %67 to i32 +67: ; preds = %64, %66, %58 + %68 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.15) + %.sroa.03.0.extract.trunc = trunc i64 %68 to i32 store i32 %.sroa.03.0.extract.trunc, ptr @n_alpha, align 4, !tbaa !20 - %68 = icmp sgt i32 %.sroa.03.0.extract.trunc, 0 - br i1 %68, label %69, label %74 + %69 = icmp sgt i32 %.sroa.03.0.extract.trunc, 0 + br i1 %69, label %70, label %75 -69: ; preds = %66 - %70 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.16) - store i64 %70, ptr @del_alpha, align 8, !tbaa !19 - %71 = and i64 %70, 9223372036854775807 - %72 = icmp eq i64 %71, 0 - br i1 %72, label %73, label %88 +70: ; preds = %67 + %71 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.16) + store i64 %71, ptr @del_alpha, align 8, !tbaa !19 + %72 = and i64 %71, 9223372036854775807 + %73 = icmp eq i64 %72, 0 + br i1 %73, label %74, label %89 -73: ; preds = %69 +74: ; preds = %70 call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.17) - br label %88 - -74: ; preds = %66 - %75 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.18) - %76 = bitcast i64 %75 to double - %77 = fcmp une double %76, 0.000000e+00 - br i1 %77, label %78, label %84 - -78: ; preds = %74 - %79 = call double @llvm.fabs.f64(double %76) - %80 = load double, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 64), align 8, !tbaa !27 - %81 = fdiv double %80, %79 - %82 = fadd double %81, 5.000000e-01 - %83 = fptosi double %82 to i32 - store i32 %83, ptr @n_S, align 4, !tbaa !20 - br label %88 - -84: ; preds = %74 - %85 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.19) - %.sroa.0.0.extract.trunc = trunc i64 %85 to i32 + br label %89 + +75: ; preds = %67 + %76 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.18) + %77 = bitcast i64 %76 to double + %78 = fcmp une double %77, 0.000000e+00 + br i1 %78, label %79, label %85 + +79: ; preds = %75 + %80 = call double @llvm.fabs.f64(double %77) + %81 = load double, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 64), align 8, !tbaa !27 + %82 = fdiv double %81, %80 + %83 = fadd double %82, 5.000000e-01 + %84 = fptosi double %83 to i32 + store i32 %84, ptr @n_S, align 4, !tbaa !20 + br label %89 + +85: ; preds = %75 + %86 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.19) + %.sroa.0.0.extract.trunc = trunc i64 %86 to i32 store i32 %.sroa.0.0.extract.trunc, ptr @n_S, align 4, !tbaa !20 - %86 = icmp slt i32 %.sroa.0.0.extract.trunc, 1 - br i1 %86, label %87, label %88 + %87 = icmp slt i32 %.sroa.0.0.extract.trunc, 1 + br i1 %87, label %88, label %89 -87: ; preds = %84 +88: ; preds = %85 call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.20) - br label %88 + br label %89 -88: ; preds = %73, %69, %84, %87, %78, %44 - br i1 %.not, label %._crit_edge94, label %.lr.ph93 +89: ; preds = %74, %70, %85, %88, %79, %45 + br i1 %.not, label %._crit_edge95, label %.lr.ph94 -.lr.ph93: ; preds = %88, %.lr.ph93 - %.091 = phi ptr [ %89, %.lr.ph93 ], [ %8, %88 ] - %89 = load ptr, ptr %.091, align 8, !tbaa !9 - call void @free(ptr noundef nonnull %.091) #8 - %.not74 = icmp eq ptr %89, null - br i1 %.not74, label %._crit_edge94, label %.lr.ph93, !llvm.loop !29 +.lr.ph94: ; preds = %89, %.lr.ph94 + %.092 = phi ptr [ %90, %.lr.ph94 ], [ %8, %89 ] + %90 = load ptr, ptr %.092, align 8, !tbaa !9 + call void @free(ptr noundef nonnull %.092) #8 + %.not75 = icmp eq ptr %90, null + br i1 %.not75, label %._crit_edge95, label %.lr.ph94, !llvm.loop !29 -._crit_edge94: ; preds = %.lr.ph93, %88 +._crit_edge95: ; preds = %.lr.ph94, %89 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void } diff --git a/bench/proj/optimized/helmert.ll b/bench/proj/optimized/helmert.ll index 810113470f7..3d275436309 100644 --- a/bench/proj/optimized/helmert.ll +++ b/bench/proj/optimized/helmert.ll @@ -1083,44 +1083,44 @@ define internal fastcc noundef ptr @_ZL15read_conventionP8PJconsts(ptr noundef % %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 %9 = load ptr, ptr %8, align 8, !tbaa !40 %10 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %7, ptr noundef %9, ptr noundef nonnull @.str.60) - %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %10 to ptr - %.not20 = icmp eq i64 %10, 0 - br i1 %.not20, label %.thread.sink.split, label %11 - -11: ; preds = %6 - %12 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(16) @.str.62) #12 - %13 = icmp eq i32 %12, 0 - br i1 %13, label %17, label %14 - -14: ; preds = %11 - %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(17) @.str.63) #12 - %16 = icmp eq i32 %15, 0 - br i1 %16, label %17, label %.thread.sink.split - -17: ; preds = %14, %11 - %.sink = phi i32 [ 1, %11 ], [ 0, %14 ] - %18 = getelementptr inbounds nuw i8, ptr %3, i64 316 - store i32 %.sink, ptr %18, align 4, !tbaa !82 - %19 = load ptr, ptr %8, align 8, !tbaa !40 - %20 = tail call noundef ptr @_Z15pj_param_existsP8ARG_listPKc(ptr noundef %19, ptr noundef nonnull @.str.4) - %.not21 = icmp eq ptr %20, null - br i1 %.not21, label %.thread, label %21 - -21: ; preds = %17 - %22 = getelementptr inbounds nuw i8, ptr %3, i64 316 - %23 = load i32, ptr %22, align 4, !tbaa !82 - %.not22 = icmp eq i32 %23, 0 - br i1 %.not22, label %.thread.sink.split, label %.thread - -.thread.sink.split: ; preds = %21, %14, %6 - %.str.61.sink = phi ptr [ @.str.61, %6 ], [ @.str.64, %14 ], [ @.str.65, %21 ] - %.sink26 = phi i32 [ 1026, %6 ], [ 1027, %14 ], [ 1027, %21 ] + %11 = inttoptr i64 %10 to ptr + %.not21 = icmp eq i64 %10, 0 + br i1 %.not21, label %.thread.sink.split, label %12 + +12: ; preds = %6 + %13 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %11, ptr noundef nonnull dereferenceable(16) @.str.62) #12 + %14 = icmp eq i32 %13, 0 + br i1 %14, label %18, label %15 + +15: ; preds = %12 + %16 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %11, ptr noundef nonnull dereferenceable(17) @.str.63) #12 + %17 = icmp eq i32 %16, 0 + br i1 %17, label %18, label %.thread.sink.split + +18: ; preds = %15, %12 + %.sink = phi i32 [ 1, %12 ], [ 0, %15 ] + %19 = getelementptr inbounds nuw i8, ptr %3, i64 316 + store i32 %.sink, ptr %19, align 4, !tbaa !82 + %20 = load ptr, ptr %8, align 8, !tbaa !40 + %21 = tail call noundef ptr @_Z15pj_param_existsP8ARG_listPKc(ptr noundef %20, ptr noundef nonnull @.str.4) + %.not22 = icmp eq ptr %21, null + br i1 %.not22, label %.thread, label %22 + +22: ; preds = %18 + %23 = getelementptr inbounds nuw i8, ptr %3, i64 316 + %24 = load i32, ptr %23, align 4, !tbaa !82 + %.not23 = icmp eq i32 %24, 0 + br i1 %.not23, label %.thread.sink.split, label %.thread + +.thread.sink.split: ; preds = %22, %15, %6 + %.str.61.sink = phi ptr [ @.str.61, %6 ], [ @.str.64, %15 ], [ @.str.65, %22 ] + %.sink27 = phi i32 [ 1026, %6 ], [ 1027, %15 ], [ 1027, %22 ] tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull %.str.61.sink) - %24 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef %.sink26) + %25 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef %.sink27) br label %.thread -.thread: ; preds = %.thread.sink.split, %1, %17, %21 - %.1 = phi ptr [ %0, %21 ], [ %0, %17 ], [ %0, %1 ], [ %24, %.thread.sink.split ] +.thread: ; preds = %.thread.sink.split, %1, %18, %22 + %.1 = phi ptr [ %0, %22 ], [ %0, %18 ], [ %0, %1 ], [ %25, %.thread.sink.split ] ret ptr %.1 } diff --git a/bench/proj/optimized/horner.ll b/bench/proj/optimized/horner.ll index acec97a265b..feb437caed4 100644 --- a/bench/proj/optimized/horner.ll +++ b/bench/proj/optimized/horner.ll @@ -1219,46 +1219,46 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL11parse_coefsP8PJconstsPd br i1 %25, label %.lr.ph.preheader, label %.loopexit .lr.ph.preheader: ; preds = %20 - %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %24 to ptr + %26 = inttoptr i64 %24 to ptr %wide.trip.count = zext nneg i32 %3 to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %34 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %34 ] - %.02936 = phi ptr [ %.sroa.0.0..sroa.0.0..cast, %.lr.ph.preheader ], [ %.1, %34 ] +.lr.ph: ; preds = %.lr.ph.preheader, %35 + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %35 ] + %.02936 = phi ptr [ %26, %.lr.ph.preheader ], [ %.1, %35 ] %.not = icmp eq i64 %indvars.iv, 0 - br i1 %.not, label %34, label %26 + br i1 %.not, label %35, label %27 -26: ; preds = %.lr.ph - %27 = load ptr, ptr %5, align 8, !tbaa !75 - %28 = icmp eq ptr %27, null - br i1 %28, label %31, label %29 +27: ; preds = %.lr.ph + %28 = load ptr, ptr %5, align 8, !tbaa !75 + %29 = icmp eq ptr %28, null + br i1 %29, label %32, label %30 -29: ; preds = %26 - %30 = load i8, ptr %27, align 1, !tbaa !76 - %.not34 = icmp eq i8 %30, 44 - br i1 %.not34, label %32, label %31 +30: ; preds = %27 + %31 = load i8, ptr %28, align 1, !tbaa !76 + %.not34 = icmp eq i8 %31, 44 + br i1 %.not34, label %33, label %32 -31: ; preds = %29, %26 +32: ; preds = %30, %27 call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.30, ptr noundef nonnull %2, i32 noundef %3) br label %.loopexit -32: ; preds = %29 - %33 = getelementptr inbounds nuw i8, ptr %27, i64 1 - store ptr %33, ptr %5, align 8, !tbaa !75 - br label %34 +33: ; preds = %30 + %34 = getelementptr inbounds nuw i8, ptr %28, i64 1 + store ptr %34, ptr %5, align 8, !tbaa !75 + br label %35 -34: ; preds = %32, %.lr.ph - %.1 = phi ptr [ %33, %32 ], [ %.02936, %.lr.ph ] - %35 = call noundef double @_Z9pj_strtodPKcPPc(ptr noundef %.1, ptr noundef nonnull %5) - %36 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv - store double %35, ptr %36, align 8, !tbaa !62 +35: ; preds = %33, %.lr.ph + %.1 = phi ptr [ %34, %33 ], [ %.02936, %.lr.ph ] + %36 = call noundef double @_Z9pj_strtodPKcPPc(ptr noundef %.1, ptr noundef nonnull %5) + %37 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv + store double %36, ptr %37, align 8, !tbaa !62 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !77 -.loopexit: ; preds = %34, %20, %31, %19, %10 - %.0 = phi i32 [ 0, %10 ], [ 0, %19 ], [ 0, %31 ], [ 1, %20 ], [ 1, %34 ] +.loopexit: ; preds = %35, %20, %32, %19, %10 + %.0 = phi i32 [ 0, %10 ], [ 0, %19 ], [ 0, %32 ], [ 1, %20 ], [ 1, %35 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.0 } diff --git a/bench/proj/optimized/info.ll b/bench/proj/optimized/info.ll index 08d7c5b35fb..3f05c7b59ab 100644 --- a/bench/proj/optimized/info.ll +++ b/bench/proj/optimized/info.ll @@ -252,7 +252,7 @@ define void @proj_pj_info(ptr dead_on_unwind noalias writable writeonly sret(%st %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 store double -1.000000e+00, ptr %4, align 8, !tbaa !58 %5 = icmp eq ptr %1, null - br i1 %5, label %103, label %6 + br i1 %5, label %104, label %6 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %1, i64 816 @@ -306,7 +306,7 @@ define void @proj_pj_info(ptr dead_on_unwind noalias writable writeonly sret(%st store ptr @.str.2, ptr %29, align 8, !tbaa !88 %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr @.str.2, ptr %30, align 8, !tbaa !89 - br label %103 + br label %104 31: ; preds = %._crit_edge, %16, %6 %.0 = phi ptr [ %1, %6 ], [ %20, %16 ], [ %.3.ph, %._crit_edge ] @@ -316,158 +316,158 @@ define void @proj_pj_info(ptr dead_on_unwind noalias writable writeonly sret(%st %35 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %32, ptr noundef %34, ptr noundef nonnull @.str.3) %36 = and i64 %35, 4294967295 %.not = icmp eq i64 %36, 0 - br i1 %.not, label %41, label %37 + br i1 %.not, label %42, label %37 37: ; preds = %31 %38 = load ptr, ptr %.0, align 8, !tbaa !90 %39 = load ptr, ptr %33, align 8, !tbaa !91 %40 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %38, ptr noundef %39, ptr noundef nonnull @.str.4) - %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %40 to ptr - store ptr %.sroa.0.0..sroa.0.0..cast, ptr %0, align 8, !tbaa !87 - br label %41 - -41: ; preds = %37, %31 - %42 = getelementptr inbounds nuw i8, ptr %.0, i64 16 - %43 = load ptr, ptr %42, align 8, !tbaa !92 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %43, ptr %44, align 8, !tbaa !88 - %45 = getelementptr inbounds nuw i8, ptr %.0, i64 640 - %46 = load ptr, ptr %45, align 8, !tbaa !93 - %.not83 = icmp eq ptr %46, null - br i1 %.not83, label %92, label %47 - -47: ; preds = %41 - %48 = tail call ptr @__dynamic_cast(ptr nonnull %46, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj6common16IdentifiedObjectE, i64 0) #18 - %.not58 = icmp eq ptr %48, null - br i1 %.not58, label %52, label %49 - -49: ; preds = %47 - %50 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5osgeo4proj6common16IdentifiedObject7nameStrB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40) %48) #20 - %51 = load ptr, ptr %50, align 8, !tbaa !23 - store ptr %51, ptr %44, align 8, !tbaa !88 - br label %52 - -52: ; preds = %49, %47 - %53 = tail call ptr @__dynamic_cast(ptr nonnull %46, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj9operation10ConversionE, i64 -1) #18 - %54 = icmp eq ptr %53, null - br i1 %54, label %56, label %55 - -55: ; preds = %52 + %41 = inttoptr i64 %40 to ptr + store ptr %41, ptr %0, align 8, !tbaa !87 + br label %42 + +42: ; preds = %37, %31 + %43 = getelementptr inbounds nuw i8, ptr %.0, i64 16 + %44 = load ptr, ptr %43, align 8, !tbaa !92 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %44, ptr %45, align 8, !tbaa !88 + %46 = getelementptr inbounds nuw i8, ptr %.0, i64 640 + %47 = load ptr, ptr %46, align 8, !tbaa !93 + %.not83 = icmp eq ptr %47, null + br i1 %.not83, label %93, label %48 + +48: ; preds = %42 + %49 = tail call ptr @__dynamic_cast(ptr nonnull %47, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj6common16IdentifiedObjectE, i64 0) #18 + %.not58 = icmp eq ptr %49, null + br i1 %.not58, label %53, label %50 + +50: ; preds = %48 + %51 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5osgeo4proj6common16IdentifiedObject7nameStrB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #20 + %52 = load ptr, ptr %51, align 8, !tbaa !23 + store ptr %52, ptr %45, align 8, !tbaa !88 + br label %53 + +53: ; preds = %50, %48 + %54 = tail call ptr @__dynamic_cast(ptr nonnull %47, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj9operation10ConversionE, i64 -1) #18 + %55 = icmp eq ptr %54, null + br i1 %55, label %57, label %56 + +56: ; preds = %53 store double 0.000000e+00, ptr %4, align 8, !tbaa !58 - br label %92 - -56: ; preds = %52 - %57 = tail call ptr @__dynamic_cast(ptr nonnull %46, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj9operation19CoordinateOperationE, i64 0) #18 - %.not60 = icmp eq ptr %57, null - br i1 %.not60, label %92, label %58 - -58: ; preds = %56 - %59 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5osgeo4proj9operation19CoordinateOperation29coordinateOperationAccuraciesEv(ptr noundef nonnull align 8 dereferenceable(72) %57) - %60 = load ptr, ptr %59, align 8, !tbaa !94 - %61 = getelementptr inbounds nuw i8, ptr %59, i64 8 - %62 = load ptr, ptr %61, align 8, !tbaa !94 - %63 = icmp eq ptr %60, %62 - br i1 %63, label %92, label %64 - -64: ; preds = %58 - %65 = load ptr, ptr %60, align 8, !tbaa !96 - %66 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5osgeo4proj8metadata18PositionalAccuracy5valueB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #20 - %67 = load ptr, ptr %66, align 8, !tbaa !23 + br label %93 + +57: ; preds = %53 + %58 = tail call ptr @__dynamic_cast(ptr nonnull %47, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj9operation19CoordinateOperationE, i64 0) #18 + %.not60 = icmp eq ptr %58, null + br i1 %.not60, label %93, label %59 + +59: ; preds = %57 + %60 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5osgeo4proj9operation19CoordinateOperation29coordinateOperationAccuraciesEv(ptr noundef nonnull align 8 dereferenceable(72) %58) + %61 = load ptr, ptr %60, align 8, !tbaa !94 + %62 = getelementptr inbounds nuw i8, ptr %60, i64 8 + %63 = load ptr, ptr %62, align 8, !tbaa !94 + %64 = icmp eq ptr %61, %63 + br i1 %64, label %93, label %65 + +65: ; preds = %59 + %66 = load ptr, ptr %61, align 8, !tbaa !96 + %67 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5osgeo4proj8metadata18PositionalAccuracy5valueB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #20 + %68 = load ptr, ptr %67, align 8, !tbaa !23 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %68 = tail call ptr @__errno_location() #22 - %69 = load i32, ptr %68, align 4, !tbaa !55 - store i32 0, ptr %68, align 4, !tbaa !55 - %70 = call noundef double @strtod(ptr noundef %67, ptr noundef nonnull %3) - %71 = load ptr, ptr %3, align 8, !tbaa !56 - %72 = icmp eq ptr %71, %67 - br i1 %72, label %73, label %83 - -73: ; preds = %64 + %69 = tail call ptr @__errno_location() #22 + %70 = load i32, ptr %69, align 4, !tbaa !55 + store i32 0, ptr %69, align 4, !tbaa !55 + %71 = call noundef double @strtod(ptr noundef %68, ptr noundef nonnull %3) + %72 = load ptr, ptr %3, align 8, !tbaa !56 + %73 = icmp eq ptr %72, %68 + br i1 %73, label %74, label %84 + +74: ; preds = %65 invoke void @_ZSt24__throw_invalid_argumentPKc(ptr noundef nonnull @.str.7) #23 - to label %74 unwind label %75 + to label %75 unwind label %76 -74: ; preds = %73 +75: ; preds = %74 unreachable -75: ; preds = %.critedge.i.i, %73 - %76 = landingpad { ptr, i32 } +76: ; preds = %.critedge.i.i, %74 + %77 = landingpad { ptr, i32 } cleanup catch ptr @_ZTISt9exception - %77 = load i32, ptr %68, align 4, !tbaa !55 - %78 = icmp eq i32 %77, 0 - br i1 %78, label %79, label %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i + %78 = load i32, ptr %69, align 4, !tbaa !55 + %79 = icmp eq i32 %78, 0 + br i1 %79, label %80, label %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i -79: ; preds = %75 - store i32 %69, ptr %68, align 4, !tbaa !55 +80: ; preds = %76 + store i32 %70, ptr %69, align 4, !tbaa !55 br label %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i -_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i: ; preds = %79, %75 +_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i: ; preds = %80, %76 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %80 = extractvalue { ptr, i32 } %76, 1 - %81 = tail call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #18 - %82 = icmp eq i32 %80, %81 - br i1 %82, label %88, label %91 - -83: ; preds = %64 - %84 = load i32, ptr %68, align 4, !tbaa !55 - switch i32 %84, label %87 [ + %81 = extractvalue { ptr, i32 } %77, 1 + %82 = tail call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #18 + %83 = icmp eq i32 %81, %82 + br i1 %83, label %89, label %92 + +84: ; preds = %65 + %85 = load i32, ptr %69, align 4, !tbaa !55 + switch i32 %85, label %88 [ i32 34, label %.critedge.i.i - i32 0, label %86 + i32 0, label %87 ] -.critedge.i.i: ; preds = %83 +.critedge.i.i: ; preds = %84 invoke void @_ZSt20__throw_out_of_rangePKc(ptr noundef nonnull @.str.7) #23 - to label %85 unwind label %75 + to label %86 unwind label %76 -85: ; preds = %.critedge.i.i +86: ; preds = %.critedge.i.i unreachable -86: ; preds = %83 - store i32 %69, ptr %68, align 4, !tbaa !55 - br label %87 +87: ; preds = %84 + store i32 %70, ptr %69, align 4, !tbaa !55 + br label %88 -87: ; preds = %83, %86 +88: ; preds = %84, %87 call void @llvm.lifetime.end.p0(ptr nonnull %3) - store double %70, ptr %4, align 8, !tbaa !58 - br label %92 + store double %71, ptr %4, align 8, !tbaa !58 + br label %93 -88: ; preds = %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i - %89 = extractvalue { ptr, i32 } %76, 0 - %90 = tail call ptr @__cxa_begin_catch(ptr %89) #18 +89: ; preds = %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i + %90 = extractvalue { ptr, i32 } %77, 0 + %91 = tail call ptr @__cxa_begin_catch(ptr %90) #18 tail call void @__cxa_end_catch() - br label %92 - -91: ; preds = %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i - resume { ptr, i32 } %76 - -92: ; preds = %41, %55, %58, %88, %87, %56 - %93 = getelementptr inbounds nuw i8, ptr %.0, i64 32 - %94 = load ptr, ptr %93, align 8, !tbaa !99 - %.not61 = icmp eq ptr %94, null - br i1 %.not61, label %95, label %.thread78 - -95: ; preds = %92 - %96 = tail call noundef ptr @_Z10pj_get_defPK8PJconstsi(ptr noundef nonnull %.0, i32 noundef 0) - %97 = icmp eq ptr %96, null - br i1 %97, label %99, label %.thread78 - -.thread78: ; preds = %92, %95 - %.04581 = phi ptr [ %96, %95 ], [ %94, %92 ] - %98 = tail call noundef ptr @_Z9pj_shrinkPc(ptr noundef nonnull %.04581) - br label %99 - -99: ; preds = %95, %.thread78 - %.sink = phi ptr [ %98, %.thread78 ], [ @.str.6, %95 ] - %.04580 = phi ptr [ %.04581, %.thread78 ], [ null, %95 ] - %100 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %.sink, ptr %100, align 8, !tbaa !89 - store ptr %.04580, ptr %93, align 8, !tbaa !99 - %101 = tail call noundef i32 @_Z14pj_has_inverseP8PJconsts(ptr noundef nonnull %.0) - %102 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 %101, ptr %102, align 8, !tbaa !100 - br label %103 - -103: ; preds = %.thread73, %2, %99 + br label %93 + +92: ; preds = %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i + resume { ptr, i32 } %77 + +93: ; preds = %42, %56, %59, %89, %88, %57 + %94 = getelementptr inbounds nuw i8, ptr %.0, i64 32 + %95 = load ptr, ptr %94, align 8, !tbaa !99 + %.not61 = icmp eq ptr %95, null + br i1 %.not61, label %96, label %.thread78 + +96: ; preds = %93 + %97 = tail call noundef ptr @_Z10pj_get_defPK8PJconstsi(ptr noundef nonnull %.0, i32 noundef 0) + %98 = icmp eq ptr %97, null + br i1 %98, label %100, label %.thread78 + +.thread78: ; preds = %93, %96 + %.04581 = phi ptr [ %97, %96 ], [ %95, %93 ] + %99 = tail call noundef ptr @_Z9pj_shrinkPc(ptr noundef nonnull %.04581) + br label %100 + +100: ; preds = %96, %.thread78 + %.sink = phi ptr [ %99, %.thread78 ], [ @.str.6, %96 ] + %.04580 = phi ptr [ %.04581, %.thread78 ], [ null, %96 ] + %101 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %.sink, ptr %101, align 8, !tbaa !89 + store ptr %.04580, ptr %94, align 8, !tbaa !99 + %102 = tail call noundef i32 @_Z14pj_has_inverseP8PJconsts(ptr noundef nonnull %.0) + %103 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i32 %102, ptr %103, align 8, !tbaa !100 + br label %104 + +104: ; preds = %.thread73, %2, %100 ret void } diff --git a/bench/proj/optimized/param.ll b/bench/proj/optimized/param.ll index 5d12c6a95cc..cbe7a914b7e 100644 --- a/bench/proj/optimized/param.ll +++ b/bench/proj/optimized/param.ll @@ -206,8 +206,6 @@ declare i32 @strcmp(ptr noundef captures(none), ptr noundef captures(none)) loca ; Function Attrs: mustprogress uwtable define i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #8 { - %.sroa.0 = alloca double, align 8 - store double 0.000000e+00, ptr %.sroa.0, align 8 %4 = icmp eq ptr %0, null br i1 %4, label %5, label %7 @@ -216,7 +214,7 @@ define i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr br label %7 7: ; preds = %5, %3 - %.028 = phi ptr [ %6, %5 ], [ %0, %3 ] + %.048 = phi ptr [ %6, %5 ], [ %0, %3 ] %8 = getelementptr inbounds nuw i8, ptr %2, i64 1 %9 = load i8, ptr %2, align 1, !tbaa !3 %10 = sext i8 %9 to i32 @@ -274,126 +272,98 @@ define i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr _Z15pj_param_existsP8ARG_listPKc.exit: ; preds = %30, %33, %15, %28 %.020.i = phi ptr [ %.02127.i, %28 ], [ null, %15 ], [ null, %33 ], [ null, %30 ] %35 = icmp eq i8 %9, 116 - br i1 %35, label %36, label %39 + br i1 %35, label %36, label %38 36: ; preds = %_Z15pj_param_existsP8ARG_listPKc.exit %37 = icmp ne ptr %.020.i, null - %38 = zext i1 %37 to i32 - store i32 %38, ptr %.sroa.0, align 8, !tbaa !3 + %.sroa.0.0.insert.ext = zext i1 %37 to i64 br label %.loopexit -39: ; preds = %_Z15pj_param_existsP8ARG_listPKc.exit - %40 = icmp eq ptr %.020.i, null - br i1 %40, label %41, label %45 - -41: ; preds = %39 - switch i8 %9, label %.loopexit [ - i8 98, label %42 - i8 105, label %42 - i8 100, label %43 - i8 114, label %43 - i8 115, label %44 - ] - -42: ; preds = %41, %41 - store i32 0, ptr %.sroa.0, align 8, !tbaa !3 - br label %.loopexit - -43: ; preds = %41, %41 - store double 0.000000e+00, ptr %.sroa.0, align 8, !tbaa !3 - br label %.loopexit - -44: ; preds = %41 - store ptr null, ptr %.sroa.0, align 8, !tbaa !3 - br label %.loopexit - -45: ; preds = %39 - %46 = getelementptr inbounds nuw i8, ptr %.020.i, i64 8 - %47 = load i8, ptr %46, align 8, !tbaa !3 - %48 = or i8 %47, 1 - store i8 %48, ptr %46, align 8, !tbaa !3 - %49 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %8) #15 - %50 = getelementptr inbounds nuw i8, ptr %.020.i, i64 9 - %51 = and i64 %49, 4294967295 - %52 = getelementptr inbounds nuw i8, ptr %50, i64 %51 - %53 = load i8, ptr %52, align 1, !tbaa !3 - %54 = icmp eq i8 %53, 61 - %spec.select.idx = zext i1 %54 to i64 - %spec.select = getelementptr inbounds nuw i8, ptr %52, i64 %spec.select.idx +38: ; preds = %_Z15pj_param_existsP8ARG_listPKc.exit + %39 = icmp eq ptr %.020.i, null + br i1 %39, label %.loopexit, label %40 + +40: ; preds = %38 + %41 = getelementptr inbounds nuw i8, ptr %.020.i, i64 8 + %42 = load i8, ptr %41, align 8, !tbaa !3 + %43 = or i8 %42, 1 + store i8 %43, ptr %41, align 8, !tbaa !3 + %44 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %8) #15 + %45 = getelementptr inbounds nuw i8, ptr %.020.i, i64 9 + %46 = and i64 %44, 4294967295 + %47 = getelementptr inbounds nuw i8, ptr %45, i64 %46 + %48 = load i8, ptr %47, align 1, !tbaa !3 + %49 = icmp eq i8 %48, 61 + %spec.select.idx = zext i1 %49 to i64 + %spec.select = getelementptr inbounds nuw i8, ptr %47, i64 %spec.select.idx switch i8 %9, label %.loopexit [ - i8 105, label %55 - i8 100, label %65 - i8 114, label %67 - i8 115, label %69 - i8 98, label %70 + i8 105, label %50 + i8 100, label %59 + i8 114, label %62 + i8 115, label %65 + i8 98, label %67 ] -55: ; preds = %45 - %56 = tail call i64 @strtol(ptr noundef nonnull captures(none) %spec.select, ptr noundef null, i32 noundef 10) #17 - %57 = trunc i64 %56 to i32 - store i32 %57, ptr %.sroa.0, align 8, !tbaa !3 - %58 = load i8, ptr %spec.select, align 1, !tbaa !3 - %.not37 = icmp eq i8 %58, 0 - br i1 %.not37, label %.loopexit, label %.lr.ph - -.lr.ph: ; preds = %55, %62 - %59 = phi i8 [ %64, %62 ], [ %58, %55 ] - %.038 = phi ptr [ %63, %62 ], [ %spec.select, %55 ] - %60 = add i8 %59, -48 - %or.cond = icmp ult i8 %60, 10 - br i1 %or.cond, label %62, label %61 - -61: ; preds = %.lr.ph - tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %.028, i32 noundef 1027) - store i32 0, ptr %.sroa.0, align 8, !tbaa !3 - br label %62 - -62: ; preds = %.lr.ph, %61 - %63 = getelementptr inbounds nuw i8, ptr %.038, i64 1 - %64 = load i8, ptr %63, align 1, !tbaa !3 - %.not = icmp eq i8 %64, 0 +50: ; preds = %40 + %51 = tail call i64 @strtol(ptr noundef nonnull captures(none) %spec.select, ptr noundef null, i32 noundef 10) #17 + %.sroa.0.0.insert.ext32 = and i64 %51, 4294967295 + %52 = load i8, ptr %spec.select, align 1, !tbaa !3 + %.not55 = icmp eq i8 %52, 0 + br i1 %.not55, label %.loopexit, label %.lr.ph + +.lr.ph: ; preds = %50, %56 + %53 = phi i8 [ %58, %56 ], [ %52, %50 ] + %.057 = phi ptr [ %57, %56 ], [ %spec.select, %50 ] + %.sroa.0.356 = phi i64 [ %.sroa.0.4, %56 ], [ %.sroa.0.0.insert.ext32, %50 ] + %54 = add i8 %53, -48 + %or.cond = icmp ult i8 %54, 10 + br i1 %or.cond, label %56, label %55 + +55: ; preds = %.lr.ph + tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %.048, i32 noundef 1027) + br label %56 + +56: ; preds = %.lr.ph, %55 + %.sroa.0.4 = phi i64 [ 0, %55 ], [ %.sroa.0.356, %.lr.ph ] + %57 = getelementptr inbounds nuw i8, ptr %.057, i64 1 + %58 = load i8, ptr %57, align 1, !tbaa !3 + %.not = icmp eq i8 %58, 0 br i1 %.not, label %.loopexit, label %.lr.ph, !llvm.loop !21 -65: ; preds = %45 - %66 = tail call noundef double @_Z7pj_atofPKc(ptr noundef nonnull %spec.select) - store double %66, ptr %.sroa.0, align 8, !tbaa !3 +59: ; preds = %40 + %60 = tail call noundef double @_Z7pj_atofPKc(ptr noundef nonnull %spec.select) + %61 = bitcast double %60 to i64 br label %.loopexit -67: ; preds = %45 - %68 = tail call noundef double @_Z10dmstor_ctxP6pj_ctxPKcPPc(ptr noundef %.028, ptr noundef nonnull %spec.select, ptr noundef null) - store double %68, ptr %.sroa.0, align 8, !tbaa !3 +62: ; preds = %40 + %63 = tail call noundef double @_Z10dmstor_ctxP6pj_ctxPKcPPc(ptr noundef %.048, ptr noundef nonnull %spec.select, ptr noundef null) + %64 = bitcast double %63 to i64 br label %.loopexit -69: ; preds = %45 - store ptr %spec.select, ptr %.sroa.0, align 8, !tbaa !3 +65: ; preds = %40 + %66 = ptrtoint ptr %spec.select to i64 br label %.loopexit -70: ; preds = %45 - %71 = load i8, ptr %spec.select, align 1, !tbaa !3 - switch i8 %71, label %74 [ - i8 70, label %72 - i8 102, label %72 - i8 0, label %73 - i8 84, label %73 - i8 116, label %73 +67: ; preds = %40 + %68 = load i8, ptr %spec.select, align 1, !tbaa !3 + switch i8 %68, label %70 [ + i8 70, label %.loopexit + i8 102, label %.loopexit + i8 0, label %69 + i8 84, label %69 + i8 116, label %69 ] -72: ; preds = %70, %70 - store i32 0, ptr %.sroa.0, align 8, !tbaa !3 - br label %.loopexit - -73: ; preds = %70, %70, %70 - store i32 1, ptr %.sroa.0, align 8, !tbaa !3 +69: ; preds = %67, %67, %67 br label %.loopexit -74: ; preds = %70 - tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %.028, i32 noundef 1027) - store i32 0, ptr %.sroa.0, align 8, !tbaa !3 +70: ; preds = %67 + tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %.048, i32 noundef 1027) br label %.loopexit -.loopexit: ; preds = %62, %55, %45, %65, %67, %69, %74, %73, %72, %41, %42, %43, %44, %36 - %.sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.34354549 = load i64, ptr %.sroa.0, align 8 - ret i64 %.sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.34354549 +.loopexit: ; preds = %56, %50, %38, %40, %59, %62, %65, %70, %69, %67, %67, %36 + %.sroa.0.0 = phi i64 [ %.sroa.0.0.insert.ext, %36 ], [ 0, %40 ], [ %61, %59 ], [ %64, %62 ], [ %66, %65 ], [ 0, %70 ], [ 1, %69 ], [ 0, %67 ], [ 0, %67 ], [ 0, %38 ], [ %.sroa.0.0.insert.ext32, %50 ], [ %.sroa.0.4, %56 ] + ret i64 %.sroa.0.0 } declare noundef ptr @_Z18pj_get_default_ctxv() local_unnamed_addr #9 diff --git a/bench/proj/optimized/tmerc.ll b/bench/proj/optimized/tmerc.ll index abb671a1377..92fd202c04e 100644 --- a/bench/proj/optimized/tmerc.ll +++ b/bench/proj/optimized/tmerc.ll @@ -114,85 +114,85 @@ define internal fastcc noundef zeroext i1 @_ZL17getAlgoFromParamsP8PJconstsR9TMe 8: ; preds = %2 store i32 1, ptr %1, align 4, !tbaa !3 - br label %47 + br label %48 9: ; preds = %2 %10 = load ptr, ptr %0, align 8, !tbaa !42 %11 = load ptr, ptr %4, align 8, !tbaa !43 %12 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %10, ptr noundef %11, ptr noundef nonnull @.str.11) - %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %12 to ptr - %.not24 = icmp eq i64 %12, 0 - br i1 %.not24, label %25, label %13 + %13 = inttoptr i64 %12 to ptr + %.not25 = icmp eq i64 %12, 0 + br i1 %.not25, label %26, label %14 -13: ; preds = %9 - %14 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(15) @.str.12) #11 - %15 = icmp eq i32 %14, 0 - br i1 %15, label %16, label %17 +14: ; preds = %9 + %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(15) @.str.12) #11 + %16 = icmp eq i32 %15, 0 + br i1 %16, label %17, label %18 -16: ; preds = %13 +17: ; preds = %14 store i32 1, ptr %1, align 4, !tbaa !3 - br label %47 + br label %48 -17: ; preds = %13 - %18 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(15) @.str.13) #11 - %19 = icmp eq i32 %18, 0 - br i1 %19, label %20, label %21 +18: ; preds = %14 + %19 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(15) @.str.13) #11 + %20 = icmp eq i32 %19, 0 + br i1 %20, label %21, label %22 -20: ; preds = %17 +21: ; preds = %18 store i32 2, ptr %1, align 4, !tbaa !3 - br label %47 + br label %48 -21: ; preds = %17 - %22 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(5) @.str.14) #11 - %23 = icmp eq i32 %22, 0 - br i1 %23, label %.thread, label %24 +22: ; preds = %18 + %23 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(5) @.str.14) #11 + %24 = icmp eq i32 %23, 0 + br i1 %24, label %.thread, label %25 -.thread: ; preds = %21 +.thread: ; preds = %22 store i32 0, ptr %1, align 4, !tbaa !3 - br label %32 + br label %33 -24: ; preds = %21 +25: ; preds = %22 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.15) - br label %47 + br label %48 -25: ; preds = %9 - %26 = load ptr, ptr %0, align 8, !tbaa !42 - tail call void @_Z11pj_load_iniP6pj_ctx(ptr noundef %26) +26: ; preds = %9 %27 = load ptr, ptr %0, align 8, !tbaa !42 - tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %27, i32 noundef 0) + tail call void @_Z11pj_load_iniP6pj_ctx(ptr noundef %27) %28 = load ptr, ptr %0, align 8, !tbaa !42 - %29 = getelementptr inbounds nuw i8, ptr %28, i64 560 - %30 = load i32, ptr %29, align 8, !tbaa !44 - store i32 %30, ptr %1, align 4, !tbaa !3 - %31 = icmp eq i32 %30, 0 - br i1 %31, label %32, label %47 - -32: ; preds = %.thread, %25 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 216 - %34 = load double, ptr %33, align 8, !tbaa !67 - %35 = fcmp ogt double %34, 1.000000e-01 - br i1 %35, label %46, label %36 - -36: ; preds = %32 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 448 - %38 = load double, ptr %37, align 8, !tbaa !68 - %39 = fcmp une double %38, 0.000000e+00 - br i1 %39, label %46, label %40 - -40: ; preds = %36 - %41 = getelementptr inbounds nuw i8, ptr %0, i64 488 - %42 = load double, ptr %41, align 8, !tbaa !69 - %43 = fadd double %42, -1.000000e+00 - %44 = tail call double @llvm.fabs.f64(double %43) - %45 = fcmp ogt double %44, 1.000000e-02 - br i1 %45, label %46, label %47 - -46: ; preds = %40, %36, %32 + tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %28, i32 noundef 0) + %29 = load ptr, ptr %0, align 8, !tbaa !42 + %30 = getelementptr inbounds nuw i8, ptr %29, i64 560 + %31 = load i32, ptr %30, align 8, !tbaa !44 + store i32 %31, ptr %1, align 4, !tbaa !3 + %32 = icmp eq i32 %31, 0 + br i1 %32, label %33, label %48 + +33: ; preds = %.thread, %26 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %35 = load double, ptr %34, align 8, !tbaa !67 + %36 = fcmp ogt double %35, 1.000000e-01 + br i1 %36, label %47, label %37 + +37: ; preds = %33 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 448 + %39 = load double, ptr %38, align 8, !tbaa !68 + %40 = fcmp une double %39, 0.000000e+00 + br i1 %40, label %47, label %41 + +41: ; preds = %37 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 488 + %43 = load double, ptr %42, align 8, !tbaa !69 + %44 = fadd double %43, -1.000000e+00 + %45 = tail call double @llvm.fabs.f64(double %44) + %46 = fcmp ogt double %45, 1.000000e-02 + br i1 %46, label %47, label %48 + +47: ; preds = %41, %37, %33 store i32 2, ptr %1, align 4, !tbaa !3 - br label %47 + br label %48 -47: ; preds = %16, %20, %24, %46, %40, %25, %8 - %.0 = phi i1 [ true, %8 ], [ true, %16 ], [ true, %20 ], [ false, %24 ], [ true, %46 ], [ true, %40 ], [ true, %25 ] +48: ; preds = %17, %21, %25, %47, %41, %26, %8 + %.0 = phi i1 [ true, %8 ], [ true, %17 ], [ true, %21 ], [ false, %25 ], [ true, %47 ], [ true, %41 ], [ true, %26 ] ret i1 %.0 } diff --git a/bench/quickjs/optimized/qjsc.ll b/bench/quickjs/optimized/qjsc.ll index 7331812c6b6..f33ad3d70af 100644 --- a/bench/quickjs/optimized/qjsc.ll +++ b/bench/quickjs/optimized/qjsc.ll @@ -296,26 +296,26 @@ namelist_add.exit: ; preds = %27, %34 %37 = getelementptr inbounds nuw i8, ptr %32, i64 16 store i32 0, ptr %37, align 8, !tbaa !19 %38 = tail call ptr @JS_NewCModule(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @js_module_dummy_init) #18 - br label %90 + br label %91 .loopexit: ; preds = %10, %3 %39 = tail call i32 @has_suffix(ptr noundef %1, ptr noundef nonnull @.str) #18 - %.not36 = icmp eq i32 %39, 0 - br i1 %.not36, label %44, label %40 + %.not35 = icmp eq i32 %39, 0 + br i1 %.not35, label %44, label %40 40: ; preds = %.loopexit %41 = load ptr, ptr @stderr, align 8, !tbaa !23 %42 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %41, ptr noundef nonnull @.str.1, ptr noundef %1) #20 %43 = tail call ptr @JS_NewCModule(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @js_module_dummy_init) #18 store i1 true, ptr @dynamic_export, align 4 - br label %90 + br label %91 44: ; preds = %.loopexit call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) %45 = call ptr @js_load_file(ptr noundef %0, ptr noundef nonnull %5, ptr noundef %1) #18 - %.not37 = icmp eq ptr %45, null - br i1 %.not37, label %46, label %48 + %.not36 = icmp eq ptr %45, null + br i1 %.not36, label %46, label %48 46: ; preds = %44 %47 = call { i64, i64 } (ptr, ptr, ...) @JS_ThrowReferenceError(ptr noundef %0, ptr noundef nonnull @.str.2, ptr noundef %1) #18 @@ -335,38 +335,38 @@ namelist_add.exit: ; preds = %27, %34 call fastcc void @get_c_name(ptr noundef %6, ptr noundef %1) %55 = load i32, ptr @cname_list.1, align 8, !tbaa !7 %56 = icmp sgt i32 %55, 0 - br i1 %56, label %.lr.ph.i44, label %namelist_find.exit50.thread + br i1 %56, label %.lr.ph.i40, label %namelist_find.exit46.thread -.lr.ph.i44: ; preds = %54 +.lr.ph.i40: ; preds = %54 %57 = load ptr, ptr @cname_list.0, align 8, !tbaa !14 - %wide.trip.count.i45 = zext nneg i32 %55 to i64 + %wide.trip.count.i41 = zext nneg i32 %55 to i64 br label %59 58: ; preds = %59 - %indvars.iv.next.i48 = add nuw nsw i64 %indvars.iv.i46, 1 - %exitcond.not.i49 = icmp eq i64 %indvars.iv.next.i48, %wide.trip.count.i45 - br i1 %exitcond.not.i49, label %namelist_find.exit50.thread, label %59, !llvm.loop !22 + %indvars.iv.next.i44 = add nuw nsw i64 %indvars.iv.i42, 1 + %exitcond.not.i45 = icmp eq i64 %indvars.iv.next.i44, %wide.trip.count.i41 + br i1 %exitcond.not.i45, label %namelist_find.exit46.thread, label %59, !llvm.loop !22 -59: ; preds = %58, %.lr.ph.i44 - %indvars.iv.i46 = phi i64 [ 0, %.lr.ph.i44 ], [ %indvars.iv.next.i48, %58 ] - %60 = getelementptr inbounds nuw %struct.namelist_entry_t, ptr %57, i64 %indvars.iv.i46 +59: ; preds = %58, %.lr.ph.i40 + %indvars.iv.i42 = phi i64 [ 0, %.lr.ph.i40 ], [ %indvars.iv.next.i44, %58 ] + %60 = getelementptr inbounds nuw %struct.namelist_entry_t, ptr %57, i64 %indvars.iv.i42 %61 = load ptr, ptr %60, align 8, !tbaa !15 %62 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %61, ptr noundef nonnull readonly dereferenceable(1) %6) #19 - %.not.not.i47 = icmp eq i32 %62, 0 - br i1 %.not.not.i47, label %namelist_find.exit50, label %58 + %.not.not.i43 = icmp eq i32 %62, 0 + br i1 %.not.not.i43, label %namelist_find.exit46, label %58 -namelist_find.exit50: ; preds = %59 +namelist_find.exit46: ; preds = %59 call void @llvm.lifetime.start.p0(ptr nonnull %4) %63 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %6) #19 %64 = icmp ugt i64 %63, 1008 br i1 %64, label %65, label %67 -65: ; preds = %namelist_find.exit50 +65: ; preds = %namelist_find.exit46 %66 = getelementptr inbounds nuw i8, ptr %6, i64 1008 store i8 0, ptr %66, align 16, !tbaa !27 br label %67 -67: ; preds = %65, %namelist_find.exit50 +67: ; preds = %65, %namelist_find.exit46 %68 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 1024, ptr noundef nonnull @.str.30, ptr noundef nonnull %6, i32 noundef 1) #18 %69 = load i32, ptr @cname_list.1, align 8, !tbaa !7 %70 = icmp sgt i32 %69, 0 @@ -402,39 +402,39 @@ namelist_find.exit.i: ; preds = %74 find_unique_cname.exit: ; preds = %namelist_find.exit.i, %73, %67 call void @pstrcpy(ptr noundef nonnull %6, i32 noundef 1024, ptr noundef nonnull %4) #18 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %namelist_find.exit50.thread + br label %namelist_find.exit46.thread -namelist_find.exit50.thread: ; preds = %58, %54, %find_unique_cname.exit +namelist_find.exit46.thread: ; preds = %58, %54, %find_unique_cname.exit %82 = load ptr, ptr @outfile, align 8, !tbaa !23 call fastcc void @output_object_code(ptr noundef %0, ptr noundef %82, i64 %51, i64 %52, ptr noundef %6, i32 noundef 1) - %.sroa.02.0..sroa.02.0..cast = inttoptr i64 %51 to ptr - %83 = trunc i64 %52 to i32 - %84 = icmp ugt i32 %83, -12 - br i1 %84, label %85, label %JS_FreeValue.exit - -85: ; preds = %namelist_find.exit50.thread - %86 = load i32, ptr %.sroa.02.0..sroa.02.0..cast, align 4, !tbaa !28 - %87 = add i32 %86, -1 - store i32 %87, ptr %.sroa.02.0..sroa.02.0..cast, align 4, !tbaa !28 - %88 = icmp slt i32 %87, 1 - br i1 %88, label %89, label %JS_FreeValue.exit - -89: ; preds = %85 + %83 = inttoptr i64 %51 to ptr + %84 = trunc i64 %52 to i32 + %85 = icmp ugt i32 %84, -12 + br i1 %85, label %86, label %JS_FreeValue.exit + +86: ; preds = %namelist_find.exit46.thread + %87 = load i32, ptr %83, align 4, !tbaa !28 + %88 = add i32 %87, -1 + store i32 %88, ptr %83, align 4, !tbaa !28 + %89 = icmp slt i32 %88, 1 + br i1 %89, label %90, label %JS_FreeValue.exit + +90: ; preds = %86 call void @__JS_FreeValue(ptr noundef %0, i64 %51, i64 %52) #18 br label %JS_FreeValue.exit -JS_FreeValue.exit: ; preds = %namelist_find.exit50.thread, %85, %89 +JS_FreeValue.exit: ; preds = %namelist_find.exit46.thread, %86, %90 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %90 + br label %91 .critedge: ; preds = %48, %46 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %90 + br label %91 -90: ; preds = %namelist_add.exit, %40, %JS_FreeValue.exit, %.critedge - %.1 = phi ptr [ null, %.critedge ], [ %38, %namelist_add.exit ], [ %43, %40 ], [ %.sroa.02.0..sroa.02.0..cast, %JS_FreeValue.exit ] +91: ; preds = %namelist_add.exit, %40, %JS_FreeValue.exit, %.critedge + %.1 = phi ptr [ null, %.critedge ], [ %38, %namelist_add.exit ], [ %43, %40 ], [ %83, %JS_FreeValue.exit ] ret ptr %.1 } diff --git a/bench/quickjs/optimized/quickjs-libc.ll b/bench/quickjs/optimized/quickjs-libc.ll index 4c10153b712..dfbb46f0399 100644 --- a/bench/quickjs/optimized/quickjs-libc.ll +++ b/bench/quickjs/optimized/quickjs-libc.ll @@ -358,78 +358,78 @@ declare noundef i32 @fclose(ptr noundef captures(none)) local_unnamed_addr #1 define dso_local range(i32 -1, 1) i32 @js_module_set_import_meta(ptr noundef %0, i64 %1, i64 %2, i32 noundef %3, i32 noundef %4) local_unnamed_addr #0 { %6 = alloca [4112 x i8], align 16 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %.sroa.037.0..sroa.037.0..cast = inttoptr i64 %1 to ptr - %7 = tail call i32 @JS_GetModuleName(ptr noundef %0, ptr noundef %.sroa.037.0..sroa.037.0..cast) #30 - %8 = tail call ptr @JS_AtomToCString(ptr noundef %0, i32 noundef %7) #30 - tail call void @JS_FreeAtom(ptr noundef %0, i32 noundef %7) #30 - %.not = icmp eq ptr %8, null - br i1 %.not, label %JS_FreeValue.exit, label %9 + %7 = inttoptr i64 %1 to ptr + %8 = tail call i32 @JS_GetModuleName(ptr noundef %0, ptr noundef %7) #30 + %9 = tail call ptr @JS_AtomToCString(ptr noundef %0, i32 noundef %8) #30 + tail call void @JS_FreeAtom(ptr noundef %0, i32 noundef %8) #30 + %.not = icmp eq ptr %9, null + br i1 %.not, label %JS_FreeValue.exit, label %10 -9: ; preds = %5 - %10 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %8, i32 noundef 58) #32 - %.not42 = icmp eq ptr %10, null - br i1 %.not42, label %11, label %20 +10: ; preds = %5 + %11 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %9, i32 noundef 58) #32 + %.not42 = icmp eq ptr %11, null + br i1 %.not42, label %12, label %21 -11: ; preds = %9 +12: ; preds = %10 store i64 13281251761613158, ptr %6, align 16 %.not43 = icmp eq i32 %3, 0 - br i1 %.not43, label %18, label %12 + br i1 %.not43, label %19, label %13 -12: ; preds = %11 - %13 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %6) #32 - %14 = getelementptr inbounds nuw i8, ptr %6, i64 %13 - %15 = call ptr @realpath(ptr noundef nonnull %8, ptr noundef nonnull %14) #30 - %.not44.not = icmp eq ptr %15, null - br i1 %.not44.not, label %16, label %.critedge +13: ; preds = %12 + %14 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %6) #32 + %15 = getelementptr inbounds nuw i8, ptr %6, i64 %14 + %16 = call ptr @realpath(ptr noundef nonnull %9, ptr noundef nonnull %15) #30 + %.not44.not = icmp eq ptr %16, null + br i1 %.not44.not, label %17, label %.critedge -16: ; preds = %12 - %17 = call { i64, i64 } (ptr, ptr, ...) @JS_ThrowTypeError(ptr noundef %0, ptr noundef nonnull @.str.2) #30 - call void @JS_FreeCString(ptr noundef %0, ptr noundef nonnull %8) #30 +17: ; preds = %13 + %18 = call { i64, i64 } (ptr, ptr, ...) @JS_ThrowTypeError(ptr noundef %0, ptr noundef nonnull @.str.2) #30 + call void @JS_FreeCString(ptr noundef %0, ptr noundef nonnull %9) #30 br label %JS_FreeValue.exit -18: ; preds = %11 - %19 = call ptr @pstrcat(ptr noundef nonnull %6, i32 noundef 4112, ptr noundef nonnull %8) #30 +19: ; preds = %12 + %20 = call ptr @pstrcat(ptr noundef nonnull %6, i32 noundef 4112, ptr noundef nonnull %9) #30 br label %.critedge -20: ; preds = %9 - call void @pstrcpy(ptr noundef nonnull %6, i32 noundef 4112, ptr noundef nonnull %8) #30 +21: ; preds = %10 + call void @pstrcpy(ptr noundef nonnull %6, i32 noundef 4112, ptr noundef nonnull %9) #30 br label %.critedge -.critedge: ; preds = %12, %18, %20 - call void @JS_FreeCString(ptr noundef %0, ptr noundef nonnull %8) #30 - %21 = call { i64, i64 } @JS_GetImportMeta(ptr noundef %0, ptr noundef %.sroa.037.0..sroa.037.0..cast) #30 - %22 = extractvalue { i64, i64 } %21, 0 - %23 = extractvalue { i64, i64 } %21, 1 - %24 = and i64 %23, 4294967295 - %.not46 = icmp eq i64 %24, 6 - br i1 %.not46, label %JS_FreeValue.exit, label %25 - -25: ; preds = %.critedge - %26 = call { i64, i64 } @JS_NewString(ptr noundef %0, ptr noundef nonnull %6) #30 - %27 = extractvalue { i64, i64 } %26, 0 - %28 = extractvalue { i64, i64 } %26, 1 - %29 = call i32 @JS_DefinePropertyValueStr(ptr noundef %0, i64 %22, i64 %23, ptr noundef nonnull @.str.3, i64 %27, i64 %28, i32 noundef 7) #30 - %30 = icmp ne i32 %4, 0 - %.sroa.0.0.insert.ext.i = zext i1 %30 to i64 - %31 = call i32 @JS_DefinePropertyValueStr(ptr noundef %0, i64 %22, i64 %23, ptr noundef nonnull @.str.4, i64 %.sroa.0.0.insert.ext.i, i64 1, i32 noundef 7) #30 - %32 = trunc i64 %23 to i32 - %33 = icmp ugt i32 %32, -12 - br i1 %33, label %34, label %JS_FreeValue.exit - -34: ; preds = %25 - %35 = inttoptr i64 %22 to ptr - %36 = load i32, ptr %35, align 4, !tbaa !14 - %37 = add i32 %36, -1 - store i32 %37, ptr %35, align 4, !tbaa !14 - %38 = icmp slt i32 %37, 1 - br i1 %38, label %39, label %JS_FreeValue.exit +.critedge: ; preds = %13, %19, %21 + call void @JS_FreeCString(ptr noundef %0, ptr noundef nonnull %9) #30 + %22 = call { i64, i64 } @JS_GetImportMeta(ptr noundef %0, ptr noundef %7) #30 + %23 = extractvalue { i64, i64 } %22, 0 + %24 = extractvalue { i64, i64 } %22, 1 + %25 = and i64 %24, 4294967295 + %.not46 = icmp eq i64 %25, 6 + br i1 %.not46, label %JS_FreeValue.exit, label %26 + +26: ; preds = %.critedge + %27 = call { i64, i64 } @JS_NewString(ptr noundef %0, ptr noundef nonnull %6) #30 + %28 = extractvalue { i64, i64 } %27, 0 + %29 = extractvalue { i64, i64 } %27, 1 + %30 = call i32 @JS_DefinePropertyValueStr(ptr noundef %0, i64 %23, i64 %24, ptr noundef nonnull @.str.3, i64 %28, i64 %29, i32 noundef 7) #30 + %31 = icmp ne i32 %4, 0 + %.sroa.0.0.insert.ext.i = zext i1 %31 to i64 + %32 = call i32 @JS_DefinePropertyValueStr(ptr noundef %0, i64 %23, i64 %24, ptr noundef nonnull @.str.4, i64 %.sroa.0.0.insert.ext.i, i64 1, i32 noundef 7) #30 + %33 = trunc i64 %24 to i32 + %34 = icmp ugt i32 %33, -12 + br i1 %34, label %35, label %JS_FreeValue.exit + +35: ; preds = %26 + %36 = inttoptr i64 %23 to ptr + %37 = load i32, ptr %36, align 4, !tbaa !14 + %38 = add i32 %37, -1 + store i32 %38, ptr %36, align 4, !tbaa !14 + %39 = icmp slt i32 %38, 1 + br i1 %39, label %40, label %JS_FreeValue.exit -39: ; preds = %34 - call void @__JS_FreeValue(ptr noundef %0, i64 %22, i64 %23) #30 +40: ; preds = %35 + call void @__JS_FreeValue(ptr noundef %0, i64 %23, i64 %24) #30 br label %JS_FreeValue.exit -JS_FreeValue.exit: ; preds = %39, %34, %25, %16, %.critedge, %5 - %.0 = phi i32 [ -1, %16 ], [ -1, %5 ], [ -1, %.critedge ], [ 0, %25 ], [ 0, %34 ], [ 0, %39 ] +JS_FreeValue.exit: ; preds = %40, %35, %26, %17, %.critedge, %5 + %.0 = phi i32 [ -1, %17 ], [ -1, %5 ], [ -1, %.critedge ], [ 0, %26 ], [ 0, %35 ], [ 0, %40 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 %.0 } @@ -532,8 +532,8 @@ define dso_local ptr @js_module_loader(ptr noundef %0, ptr noundef %1, ptr readn 29: ; preds = %3 call void @llvm.lifetime.start.p0(ptr nonnull %4) %30 = call ptr @js_load_file(ptr noundef %0, ptr noundef nonnull %4, ptr noundef %1) - %.not27 = icmp eq ptr %30, null - br i1 %.not27, label %31, label %33 + %.not26 = icmp eq ptr %30, null + br i1 %.not26, label %31, label %33 31: ; preds = %29 %32 = tail call { i64, i64 } (ptr, ptr, ...) @JS_ThrowReferenceError(ptr noundef %0, ptr noundef nonnull @.str.6, ptr noundef %1) #30 @@ -546,28 +546,28 @@ define dso_local ptr @js_module_loader(ptr noundef %0, ptr noundef %1, ptr readn %37 = extractvalue { i64, i64 } %35, 1 tail call void @js_free(ptr noundef %0, ptr noundef nonnull %30) #30 %38 = and i64 %37, 4294967295 - %.not32 = icmp eq i64 %38, 6 - br i1 %.not32, label %.critedge, label %39 + %.not28 = icmp eq i64 %38, 6 + br i1 %.not28, label %.critedge, label %39 39: ; preds = %33 %40 = tail call i32 @js_module_set_import_meta(ptr noundef %0, i64 %36, i64 poison, i32 noundef 1, i32 noundef 0) - %.sroa.02.0..sroa.02.0..cast = inttoptr i64 %36 to ptr - %41 = trunc i64 %37 to i32 - %42 = icmp ugt i32 %41, -12 - br i1 %42, label %43, label %JS_FreeValue.exit - -43: ; preds = %39 - %44 = load i32, ptr %.sroa.02.0..sroa.02.0..cast, align 4, !tbaa !14 - %45 = add i32 %44, -1 - store i32 %45, ptr %.sroa.02.0..sroa.02.0..cast, align 4, !tbaa !14 - %46 = icmp slt i32 %45, 1 - br i1 %46, label %47, label %JS_FreeValue.exit + %41 = inttoptr i64 %36 to ptr + %42 = trunc i64 %37 to i32 + %43 = icmp ugt i32 %42, -12 + br i1 %43, label %44, label %JS_FreeValue.exit -47: ; preds = %43 +44: ; preds = %39 + %45 = load i32, ptr %41, align 4, !tbaa !14 + %46 = add i32 %45, -1 + store i32 %46, ptr %41, align 4, !tbaa !14 + %47 = icmp slt i32 %46, 1 + br i1 %47, label %48, label %JS_FreeValue.exit + +48: ; preds = %44 tail call void @__JS_FreeValue(ptr noundef %0, i64 %36, i64 %37) #30 br label %JS_FreeValue.exit -JS_FreeValue.exit: ; preds = %39, %43, %47 +JS_FreeValue.exit: ; preds = %39, %44, %48 call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %js_module_loader_so.exit @@ -576,7 +576,7 @@ JS_FreeValue.exit: ; preds = %39, %43, %47 br label %js_module_loader_so.exit js_module_loader_so.exit: ; preds = %26, %24, %22, %9, %JS_FreeValue.exit, %.critedge - %.1 = phi ptr [ null, %.critedge ], [ %.sroa.02.0..sroa.02.0..cast, %JS_FreeValue.exit ], [ null, %9 ], [ null, %26 ], [ null, %24 ], [ %23, %22 ] + %.1 = phi ptr [ null, %.critedge ], [ %41, %JS_FreeValue.exit ], [ null, %9 ], [ null, %26 ], [ null, %24 ], [ %23, %22 ] ret ptr %.1 } diff --git a/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll b/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll index 52537b289fd..7c5416dd764 100644 --- a/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll +++ b/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll @@ -46723,8 +46723,8 @@ common.resume: ; preds = %77, %.body.thread.i br label %138 138: ; preds = %133, %128 - %.sroa.019.033 = phi ptr [ null, %128 ], [ %134, %133 ] - store ptr %.sroa.019.033, ptr %0, align 8, !alias.scope !8939, !noalias !8942 + %.sroa.019.034 = phi ptr [ null, %128 ], [ %134, %133 ] + store ptr %.sroa.019.034, ptr %0, align 8, !alias.scope !8939, !noalias !8942 call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %25 @@ -165369,7 +165369,7 @@ define void @"_ZN81_$LT$typst..text..lang..Region$u20$as$u20$typst..foundations. %14 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr55drop_in_place$LT$typst..foundations..cast..CastInfo$GT$17h1ada62c17a51fa02E.llvm.4622153547959463051"(ptr noalias noundef nonnull align 8 dereferenceable(48) %4) #61 - to label %.thread32 unwind label %15, !noalias !30179 + to label %.thread30 unwind label %15, !noalias !30179 15: ; preds = %13 %16 = landingpad { ptr, i32 } @@ -165507,17 +165507,17 @@ define void @"_ZN81_$LT$typst..text..lang..Region$u20$as$u20$typst..foundations. call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %22 -66: ; preds = %29, %.thread32 +66: ; preds = %29, %.thread30 %67 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #63 unreachable -.thread: ; preds = %29, %25, %.thread32 - %.pn31 = phi { ptr, i32 } [ %14, %.thread32 ], [ %26, %25 ], [ %26, %29 ] - resume { ptr, i32 } %.pn31 +.thread: ; preds = %29, %25, %.thread30 + %.pn29 = phi { ptr, i32 } [ %14, %.thread30 ], [ %26, %25 ], [ %26, %29 ] + resume { ptr, i32 } %.pn29 -.thread32: ; preds = %13 +.thread30: ; preds = %13 invoke void @"_ZN4core3ptr53drop_in_place$LT$typst..foundations..value..Value$GT$17h54cec887ca59b7d7E.llvm.3683678558897460461"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) #61 to label %.thread unwind label %66 } diff --git a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll index 5baec224c26..0d22184dc3e 100644 --- a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll +++ b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll @@ -28094,16 +28094,16 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal store i32 0, ptr %25, align 8 store i64 -9223372036854775808, ptr %22, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !6224) - %.val.i.i.i238.i = load ptr, ptr %1, align 8, !alias.scope !6227, !noalias !6232, !nonnull !4, !align !565, !noundef !4 + %.val.i.i.i235.i = load ptr, ptr %1, align 8, !alias.scope !6227, !noalias !6232, !nonnull !4, !align !565, !noundef !4 %26 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val1.i.i.i239.i = load i64, ptr %26, align 8, !alias.scope !6240, !noalias !6232, !noundef !4 + %.val1.i.i.i236.i = load i64, ptr %26, align 8, !alias.scope !6240, !noalias !6232, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !6241) tail call void @llvm.experimental.noalias.scope.decl(metadata !6244) - %27 = load ptr, ptr %.val.i.i.i238.i, align 8, !alias.scope !6247, !noalias !6248, !nonnull !4, !noundef !4 - %.pn1.in.i.i.i.i.i.i.i.i.i240.i = getelementptr inbounds nuw i8, ptr %27, i64 48 - %.pn1.i.i.i.i.i.i.i.i.i241.i = load i64, ptr %.pn1.in.i.i.i.i.i.i.i.i.i240.i, align 8, !alias.scope !6255, !noalias !6258, !noundef !4 - %.not.i242.i = icmp ugt i64 %.pn1.i.i.i.i.i.i.i.i.i241.i, %.val1.i.i.i239.i - br i1 %.not.i242.i, label %.lr.ph.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" + %27 = load ptr, ptr %.val.i.i.i235.i, align 8, !alias.scope !6247, !noalias !6248, !nonnull !4, !noundef !4 + %.pn1.in.i.i.i.i.i.i.i.i.i237.i = getelementptr inbounds nuw i8, ptr %27, i64 48 + %.pn1.i.i.i.i.i.i.i.i.i238.i = load i64, ptr %.pn1.in.i.i.i.i.i.i.i.i.i237.i, align 8, !alias.scope !6255, !noalias !6258, !noundef !4 + %.not.i239.i = icmp ugt i64 %.pn1.i.i.i.i.i.i.i.i.i238.i, %.val1.i.i.i236.i + br i1 %.not.i239.i, label %.lr.ph.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" .lr.ph.i: ; preds = %2 %28 = getelementptr inbounds nuw i8, ptr %18, i64 8 @@ -28117,15 +28117,13 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal %36 = getelementptr inbounds nuw i8, ptr %8, i64 8 %37 = getelementptr inbounds nuw i8, ptr %8, i64 16 call void @llvm.lifetime.start.p0(ptr nonnull %14), !noalias !6259 - %38 = sub nuw i64 %.pn1.i.i.i.i.i.i.i.i.i241.i, %.val1.i.i.i239.i + %38 = sub nuw i64 %.pn1.i.i.i.i.i.i.i.i.i238.i, %.val1.i.i.i236.i %39 = icmp ult i64 %38, 8 br i1 %39, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %.lr.ph.i %.sroa.6.i.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 16 %.sroa.6.i.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 24 - %.sroa.6.i.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 28 - %.sroa.6.i.sroa.8.0..sroa_idx92 = getelementptr inbounds nuw i8, ptr %19, i64 20 br label %43 40: ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" @@ -28135,17 +28133,17 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal br i1 %42, label %._crit_edge, label %43 43: ; preds = %.lr.ph, %40 - %.sroa.18.sroa.0.0243.i189 = phi <4 x i8> [ undef, %.lr.ph ], [ %71, %40 ] - %.val1.i.i.i245.i188 = phi i64 [ %.val1.i.i.i239.i, %.lr.ph ], [ %.val1.i.i.i.i, %40 ] - %44 = phi ptr [ %27, %.lr.ph ], [ %138, %40 ] + %.sroa.18.sroa.0.0240.i147 = phi i64 [ 0, %.lr.ph ], [ %49, %40 ] + %.val1.i.i.i242.i146 = phi i64 [ %.val1.i.i.i236.i, %.lr.ph ], [ %.val1.i.i.i.i, %40 ] + %44 = phi ptr [ %27, %.lr.ph ], [ %135, %40 ] call void @llvm.experimental.noalias.scope.decl(metadata !6260) call void @llvm.experimental.noalias.scope.decl(metadata !6263) %.pn3.in.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %44, i64 40 %.pn3.i.i.i.i.i.i.i.i.i = load ptr, ptr %.pn3.in.i.i.i.i.i.i.i.i.i, align 8, !alias.scope !6266, !noalias !6269, !nonnull !4, !noundef !4 - %45 = getelementptr inbounds i8, ptr %.pn3.i.i.i.i.i.i.i.i.i, i64 %.val1.i.i.i245.i188 + %45 = getelementptr inbounds i8, ptr %.pn3.i.i.i.i.i.i.i.i.i, i64 %.val1.i.i.i242.i146 %46 = load i64, ptr %45, align 1, !alias.scope !6279, !noalias !6283 store i64 %46, ptr %14, align 8, !alias.scope !6287, !noalias !6288 - %47 = add i64 %.val1.i.i.i245.i188, 8 + %47 = add i64 %.val1.i.i.i242.i146, 8 store i64 %47, ptr %26, align 8, !alias.scope !6263, !noalias !6289 %48 = invoke noundef i32 @"_ZN64_$LT$exif..endian..BigEndian$u20$as$u20$exif..endian..Endian$GT$7loadu3217h4a435939c7411829E"(ptr noalias noundef nonnull readonly align 1 %14, i64 noundef 8, i64 noundef 0) to label %.noexc unwind label %.loopexit @@ -28196,7 +28194,7 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal br label %69 ._crit_edge: ; preds = %40, %51, %53, %59, %.lr.ph.i - %.sroa.18.sroa.0.1.i = phi <4 x i8> [ undef, %.lr.ph.i ], [ , %59 ], [ %.sroa.18.sroa.0.0243.i189, %53 ], [ , %51 ], [ %71, %40 ] + %.sroa.18.sroa.0.1.i = phi i64 [ 0, %.lr.ph.i ], [ 16, %59 ], [ %.sroa.18.sroa.0.0240.i147, %53 ], [ 16, %51 ], [ %49, %40 ] %.sroa.12.1.i = phi i64 [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.112.llvm.16978709814855407318 to i64), %.lr.ph.i ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.246 to i64), %59 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.112.llvm.16978709814855407318 to i64), %53 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.246 to i64), %51 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.112.llvm.16978709814855407318 to i64), %40 ] %.sroa.6125.1.i = phi i64 [ 1, %.lr.ph.i ], [ 0, %59 ], [ 1, %53 ], [ 0, %51 ], [ 1, %40 ] call void @llvm.lifetime.end.p0(ptr nonnull %14), !noalias !6259 @@ -28204,8 +28202,8 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal 69: ; preds = %66, %59, %.noexc %70 = phi i64 [ %64, %59 ], [ -1, %.noexc ], [ %68, %66 ] - %71 = bitcast i32 %50 to <4 x i8> call void @llvm.lifetime.end.p0(ptr nonnull %14), !noalias !6259 + %71 = bitcast i32 %50 to <4 x i8> %.sroa.025.0.vec.extract.i = extractelement <4 x i8> %71, i64 0 switch i8 %.sroa.025.0.vec.extract.i, label %72 [ i8 102, label %82 @@ -28228,13 +28226,13 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal 76: ; preds = %72 %77 = icmp sgt i64 %70, -1 - br i1 %77, label %78, label %155 + br i1 %77, label %78, label %150 78: ; preds = %76 %.05.i.i37.i.i = load i64, ptr %26, align 8, !noalias !6347, !noundef !4 %79 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %.05.i.i37.i.i, i64 %70) %80 = extractvalue { i64, i1 } %79, 1 - br i1 %80, label %155, label %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i" + br i1 %80, label %150, label %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i" "_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i": ; preds = %78 %81 = extractvalue { i64, i1 } %79, 0 @@ -28261,7 +28259,7 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal %.sroa.025.3.vec.extract31.i = extractelement <4 x i8> %71, i64 3 %89 = icmp eq i8 %.sroa.025.3.vec.extract31.i, 97 %or.cond11.i = select i1 %or.cond8.i, i1 %89, i1 false - br i1 %or.cond11.i, label %142, label %72 + br i1 %or.cond11.i, label %138, label %72 90: ; preds = %82 call void @llvm.lifetime.start.p0(ptr nonnull %19), !noalias !6355 @@ -28272,48 +28270,45 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal .noexc29: ; preds = %90 %91 = load i64, ptr %18, align 8, !range !26, !noalias !6355, !noundef !4 %trunc107.i = trunc nuw i64 %91 to i1 - %.sroa.6.i.sroa.0.0.copyload83 = load i64, ptr %28, align 8, !noalias !6355 - %.sroa.6.i.sroa.6.0.copyload87 = load i64, ptr %.sroa.6.i.sroa.6.0..sroa_idx, align 8, !noalias !6355 - %.sroa.6.i.sroa.8.0.copyload95 = load i32, ptr %.sroa.6.i.sroa.8.0..sroa_idx, align 4, !noalias !6355 - br i1 %trunc107.i, label %120, label %92 + %.sroa.6.i.sroa.0.0.copyload60 = load i64, ptr %28, align 8, !noalias !6355 + %.sroa.6.i.sroa.6.0.copyload64 = load i64, ptr %.sroa.6.i.sroa.6.0..sroa_idx, align 8, !noalias !6355 + %.sroa.6.i.sroa.7.0.copyload68 = load i64, ptr %.sroa.6.i.sroa.7.0..sroa_idx, align 8, !noalias !6355 + call void @llvm.lifetime.end.p0(ptr nonnull %18), !noalias !6355 + br i1 %trunc107.i, label %.loopexit245, label %92 92: ; preds = %.noexc29 - %.sroa.6.i.sroa.7.0.copyload = load i32, ptr %.sroa.6.i.sroa.7.0..sroa_idx, align 8, !noalias !6355 - call void @llvm.lifetime.end.p0(ptr nonnull %18), !noalias !6355 - store i64 %.sroa.6.i.sroa.0.0.copyload83, ptr %19, align 8, !noalias !6355 - store i64 %.sroa.6.i.sroa.6.0.copyload87, ptr %29, align 8, !noalias !6355 - store i32 %.sroa.6.i.sroa.7.0.copyload, ptr %30, align 8, !noalias !6355 - store i32 %.sroa.6.i.sroa.8.0.copyload95, ptr %.sroa.6.i.sroa.8.0..sroa_idx92, align 4, !noalias !6355 - %.cast157 = inttoptr i64 %.sroa.6.i.sroa.6.0.copyload87 to ptr - %93 = load i64, ptr %30, align 8, !noalias !6355, !noundef !4 + store i64 %.sroa.6.i.sroa.0.0.copyload60, ptr %19, align 8, !noalias !6355 + store i64 %.sroa.6.i.sroa.6.0.copyload64, ptr %29, align 8, !noalias !6355 + store i64 %.sroa.6.i.sroa.7.0.copyload68, ptr %30, align 8, !noalias !6355 + %.cast116 = inttoptr i64 %.sroa.6.i.sroa.6.0.copyload64 to ptr call void @llvm.lifetime.start.p0(ptr nonnull %13), !noalias !6355 - store ptr %.cast157, ptr %13, align 8, !noalias !6356 - store i64 %93, ptr %31, align 8, !noalias !6356 + store ptr %.cast116, ptr %13, align 8, !noalias !6356 + store i64 %.sroa.6.i.sroa.7.0.copyload68, ptr %31, align 8, !noalias !6356 call void @llvm.lifetime.start.p0(ptr nonnull %12), !noalias !6356 invoke void @_ZN4exif7isobmff11BoxSplitter5slice17h9dc27e1acee0e8bdE(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %12, ptr noalias noundef nonnull align 8 dereferenceable(16) %13, i64 noundef 8) to label %.noexc.i unwind label %.loopexit.split-lp.loopexit.i, !noalias !6355 .noexc.i: ; preds = %92 - %94 = load i64, ptr %12, align 8, !range !6360, !noalias !6356, !noundef !4 - %95 = icmp eq i64 %94, 7 - %96 = load ptr, ptr %32, align 8, !noalias !6356 - %97 = load i64, ptr %33, align 8, !noalias !6356 + %93 = load i64, ptr %12, align 8, !range !6360, !noalias !6356, !noundef !4 + %94 = icmp eq i64 %93, 7 + %95 = load ptr, ptr %32, align 8, !noalias !6356 + %96 = load i64, ptr %33, align 8, !noalias !6356 call void @llvm.lifetime.end.p0(ptr nonnull %12), !noalias !6356 - br i1 %95, label %98, label %.loopexit205.i + br i1 %94, label %97, label %.loopexit202.i -98: ; preds = %.noexc.i - %99 = icmp ult i64 %97, 4 - br i1 %99, label %100, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i" +97: ; preds = %.noexc.i + %98 = icmp ult i64 %96, 4 + br i1 %98, label %99, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i" -100: ; preds = %98 - invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h332fde1d59776f82E(i64 noundef 4, i64 noundef %97, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.43c633cc9d0c07b847282a0596e0d119.217) #82 +99: ; preds = %97 + invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h332fde1d59776f82E(i64 noundef 4, i64 noundef %96, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.43c633cc9d0c07b847282a0596e0d119.217) #82 to label %.noexc118.i unwind label %.loopexit.split-lp.loopexit.split-lp.i, !noalias !6355 -.noexc118.i: ; preds = %100 +.noexc118.i: ; preds = %99 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i": ; preds = %98 - %101 = invoke noundef i32 @"_ZN64_$LT$exif..endian..BigEndian$u20$as$u20$exif..endian..Endian$GT$7loadu3217h4a435939c7411829E"(ptr noalias noundef nonnull readonly align 1 %96, i64 noundef %97, i64 noundef 4) +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i": ; preds = %97 + %100 = invoke noundef i32 @"_ZN64_$LT$exif..endian..BigEndian$u20$as$u20$exif..endian..Endian$GT$7loadu3217h4a435939c7411829E"(ptr noalias noundef nonnull readonly align 1 %95, i64 noundef %96, i64 noundef 4) to label %.noexc119.i unwind label %.loopexit.split-lp.loopexit.i, !noalias !6355 .noexc119.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i", %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit28.i.i" @@ -28322,95 +28317,90 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal to label %.noexc120.i unwind label %.loopexit.i, !noalias !6355 .noexc120.i: ; preds = %.noexc119.i - %102 = load i64, ptr %11, align 8, !range !6360, !noalias !6356, !noundef !4 - switch i64 %102, label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" [ - i64 7, label %103 - i64 1, label %113 + %101 = load i64, ptr %11, align 8, !range !6360, !noalias !6356, !noundef !4 + switch i64 %101, label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" [ + i64 7, label %102 + i64 1, label %112 ] -103: ; preds = %.noexc120.i - %104 = load i32, ptr %34, align 8, !noalias !6356 - %105 = load ptr, ptr @_ZN4exif7isobmff11HEIF_BRANDS17h827cc918e7d08a1eE, align 8, !noalias !6356, !nonnull !4, !align !5, !noundef !4 - %106 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN4exif7isobmff11HEIF_BRANDS17h827cc918e7d08a1eE, i64 8), align 8, !noalias !6356, !noundef !4 +102: ; preds = %.noexc120.i + %103 = load i32, ptr %34, align 8, !noalias !6356 + %104 = load ptr, ptr @_ZN4exif7isobmff11HEIF_BRANDS17h827cc918e7d08a1eE, align 8, !noalias !6356, !nonnull !4, !align !5, !noundef !4 + %105 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN4exif7isobmff11HEIF_BRANDS17h827cc918e7d08a1eE, i64 8), align 8, !noalias !6356, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %10), !noalias !6361 - %107 = getelementptr inbounds [4 x i8], ptr %105, i64 %106 - store ptr %105, ptr %10, align 8, !noalias !6361 - store ptr %107, ptr %35, align 8, !noalias !6361 - br label %108 + %106 = getelementptr inbounds [4 x i8], ptr %104, i64 %105 + store ptr %104, ptr %10, align 8, !noalias !6361 + store ptr %106, ptr %35, align 8, !noalias !6361 + br label %107 -108: ; preds = %110, %103 - %109 = invoke noundef align 1 dereferenceable_or_null(4) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8e262a66b703b557E.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %10) - to label %.noexc.i.i unwind label %118, !noalias !6365 +107: ; preds = %109, %102 + %108 = invoke noundef align 1 dereferenceable_or_null(4) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8e262a66b703b557E.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %10) + to label %.noexc.i.i unwind label %117, !noalias !6365 -.noexc.i.i: ; preds = %108 - %.not.not.not.not.i.not.not.not.i.not.i.i = icmp eq ptr %109, null - br i1 %.not.not.not.not.i.not.not.not.i.not.i.i, label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit28.i.i", label %110 +.noexc.i.i: ; preds = %107 + %.not.not.not.not.i.not.not.not.i.not.i.i = icmp eq ptr %108, null + br i1 %.not.not.not.not.i.not.not.not.i.not.i.i, label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit28.i.i", label %109 -110: ; preds = %.noexc.i.i - %111 = load i32, ptr %109, align 1, !alias.scope !6366, !noalias !6373 - %112 = icmp eq i32 %111, %104 - br i1 %112, label %121, label %108 +109: ; preds = %.noexc.i.i + %110 = load i32, ptr %108, align 1, !alias.scope !6366, !noalias !6373 + %111 = icmp eq i32 %110, %103 + br i1 %111, label %119, label %107 -113: ; preds = %.noexc120.i +112: ; preds = %.noexc120.i %.val25.i.i = load ptr, ptr %34, align 8, !noalias !6356, !nonnull !4, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %9), !noalias !6379 invoke void @_ZN3std2io5error14repr_bitpacked11decode_repr17had847663024859d8E.llvm.16845035774076767816(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %9, ptr noundef nonnull %.val25.i.i) to label %.noexc121.i unwind label %.loopexit.split-lp.loopexit.split-lp.i, !noalias !6355 -.noexc121.i: ; preds = %113 - %114 = load i8, ptr %9, align 8, !range !572, !alias.scope !6386, !noalias !6379, !noundef !4 - %115 = icmp eq i8 %114, 3 - br i1 %115, label %116, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i" +.noexc121.i: ; preds = %112 + %113 = load i8, ptr %9, align 8, !range !572, !alias.scope !6386, !noalias !6379, !noundef !4 + %114 = icmp eq i8 %113, 3 + br i1 %114, label %115, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i" -116: ; preds = %.noexc121.i - %117 = getelementptr inbounds nuw i8, ptr %9, i64 8 - invoke void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$std..io..error..Custom$GT$$GT$17hc955abe8797c5cc0E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(8) %117) +115: ; preds = %.noexc121.i + %116 = getelementptr inbounds nuw i8, ptr %9, i64 8 + invoke void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$std..io..error..Custom$GT$$GT$17hc955abe8797c5cc0E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(8) %116) to label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i" unwind label %.loopexit.split-lp.loopexit.split-lp.i, !noalias !6355 -"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i": ; preds = %116, %.noexc121.i +"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i": ; preds = %115, %.noexc121.i call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !6379 br label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" "_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i": ; preds = %.noexc120.i, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %11), !noalias !6356 - br label %.loopexit205.i + br label %.loopexit202.i "_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit28.i.i": ; preds = %.noexc.i.i call void @llvm.lifetime.end.p0(ptr nonnull %10), !noalias !6361 call void @llvm.lifetime.end.p0(ptr nonnull %11), !noalias !6356 br label %.noexc119.i -118: ; preds = %108 - %119 = landingpad { ptr, i32 } +117: ; preds = %107 + %118 = landingpad { ptr, i32 } cleanup br label %.body.i -120: ; preds = %.noexc29 - %.sroa.6.i.sroa.7.0.copyload91158 = load <4 x i8>, ptr %.sroa.6.i.sroa.7.0..sroa_idx, align 8, !noalias !6355 - call void @llvm.lifetime.end.p0(ptr nonnull %18), !noalias !6355 - br label %139 - .loopexit.i: ; preds = %.noexc119.i %lpad.loopexit.i = landingpad { ptr, i32 } cleanup br label %.body.i .loopexit.split-lp.loopexit.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i", %92 - %lpad.loopexit202.i = landingpad { ptr, i32 } + %lpad.loopexit199.i = landingpad { ptr, i32 } cleanup br label %.body.i -.loopexit.split-lp.loopexit.split-lp.i: ; preds = %116, %113, %100 - %lpad.loopexit.split-lp203.i = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp.i: ; preds = %115, %112, %99 + %lpad.loopexit.split-lp200.i = landingpad { ptr, i32 } cleanup br label %.body.i -.body.i: ; preds = %.loopexit.split-lp.loopexit.split-lp.i, %.loopexit.split-lp.loopexit.i, %.loopexit.i, %118 - %eh.lpad-body.i = phi { ptr, i32 } [ %119, %118 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit202.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp203.i, %.loopexit.split-lp.loopexit.split-lp.i ] +.body.i: ; preds = %.loopexit.split-lp.loopexit.split-lp.i, %.loopexit.split-lp.loopexit.i, %.loopexit.i, %117 + %eh.lpad-body.i = phi { ptr, i32 } [ %118, %117 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit199.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp200.i, %.loopexit.split-lp.loopexit.split-lp.i ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %19) #83 - to label %.body unwind label %140, !noalias !6355 + to label %.body unwind label %136, !noalias !6355 -121: ; preds = %110 +119: ; preds = %109 call void @llvm.lifetime.end.p0(ptr nonnull %10), !noalias !6361 call void @llvm.lifetime.end.p0(ptr nonnull %11), !noalias !6356 call void @llvm.lifetime.end.p0(ptr nonnull %13), !noalias !6355 @@ -28419,294 +28409,276 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he34f37b9bfa2d460E.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %19) to label %.noexc30 unwind label %.loopexit -.noexc30: ; preds = %121 - %122 = load i64, ptr %36, align 8, !range !570, !noalias !6390, !noundef !4 - %.not.i.i.i.i = icmp eq i64 %122, 0 - br i1 %.not.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", label %123 +.noexc30: ; preds = %119 + %120 = load i64, ptr %36, align 8, !range !570, !noalias !6390, !noundef !4 + %.not.i.i.i.i = icmp eq i64 %120, 0 + br i1 %.not.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", label %121 -123: ; preds = %.noexc30 - %124 = load i64, ptr %37, align 8, !noalias !6390, !noundef !4 - %125 = icmp eq i64 %124, 0 - br i1 %125, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", label %126 +121: ; preds = %.noexc30 + %122 = load i64, ptr %37, align 8, !noalias !6390, !noundef !4 + %123 = icmp eq i64 %122, 0 + br i1 %123, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", label %124 -126: ; preds = %123 - %127 = load ptr, ptr %8, align 8, !noalias !6390, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %127, i64 noundef %124, i64 noundef %122) #85, !noalias !6355 +124: ; preds = %121 + %125 = load ptr, ptr %8, align 8, !noalias !6390, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %125, i64 noundef %122, i64 noundef %120) #85, !noalias !6355 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i": ; preds = %126, %123, %.noexc30 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i": ; preds = %124, %121, %.noexc30 call void @llvm.lifetime.end.p0(ptr nonnull %8), !noalias !6390 call void @llvm.lifetime.end.p0(ptr nonnull %19), !noalias !6355 %.val1.i.i.i.pre.i = load i64, ptr %26, align 8, !alias.scope !6240, !noalias !6232 br label %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" -.loopexit205.i: ; preds = %.noexc.i, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" - %.sroa.9.2.ph.i = phi i64 [ 53, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %97, %.noexc.i ] - %.sroa.6133.2.ph.i = phi ptr [ @anon.43c633cc9d0c07b847282a0596e0d119.218, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %96, %.noexc.i ] - %.sroa.0132.0.ph.i = phi i64 [ 0, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %94, %.noexc.i ] +.loopexit202.i: ; preds = %.noexc.i, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" + %.sroa.9.2.ph.i = phi i64 [ 53, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %96, %.noexc.i ] + %.sroa.6130.2.ph.i = phi ptr [ @anon.43c633cc9d0c07b847282a0596e0d119.218, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %95, %.noexc.i ] + %.sroa.0129.0.ph.i = phi i64 [ 0, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %93, %.noexc.i ] call void @llvm.lifetime.end.p0(ptr nonnull %13), !noalias !6355 - %128 = ptrtoint ptr %.sroa.6133.2.ph.i to i64 - %.sroa.35.sroa.0.0.extract.trunc = trunc i64 %.sroa.9.2.ph.i to i32 - %129 = bitcast i32 %.sroa.35.sroa.0.0.extract.trunc to <4 x i8> - %.sroa.35.sroa.13.0.extract.shift = lshr i64 %.sroa.9.2.ph.i, 32 - %.sroa.35.sroa.13.0.extract.trunc = trunc nuw i64 %.sroa.35.sroa.13.0.extract.shift to i32 + %126 = ptrtoint ptr %.sroa.6130.2.ph.i to i64 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !6397 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he34f37b9bfa2d460E.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %19) to label %.noexc31 unwind label %.loopexit.split-lp -.noexc31: ; preds = %.loopexit205.i - %130 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %131 = load i64, ptr %130, align 8, !range !570, !noalias !6397, !noundef !4 - %.not.i.i.i123.i = icmp eq i64 %131, 0 - br i1 %.not.i.i.i123.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i", label %132 +.noexc31: ; preds = %.loopexit202.i + %127 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %128 = load i64, ptr %127, align 8, !range !570, !noalias !6397, !noundef !4 + %.not.i.i.i123.i = icmp eq i64 %128, 0 + br i1 %.not.i.i.i123.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i", label %129 -132: ; preds = %.noexc31 - %133 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %134 = load i64, ptr %133, align 8, !noalias !6397, !noundef !4 - %135 = icmp eq i64 %134, 0 - br i1 %135, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i", label %136 +129: ; preds = %.noexc31 + %130 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %131 = load i64, ptr %130, align 8, !noalias !6397, !noundef !4 + %132 = icmp eq i64 %131, 0 + br i1 %132, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i", label %133 -136: ; preds = %132 - %137 = load ptr, ptr %7, align 8, !noalias !6397, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %137, i64 noundef %134, i64 noundef %131) #85, !noalias !6355 +133: ; preds = %129 + %134 = load ptr, ptr %7, align 8, !noalias !6397, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %134, i64 noundef %131, i64 noundef %128) #85, !noalias !6355 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i": ; preds = %136, %132, %.noexc31 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i": ; preds = %133, %129, %.noexc31 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !6397 - br label %139 + br label %.loopexit245 "_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i": ; preds = %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i", %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit.thread.i.i" %.val1.i.i.i.i = phi i64 [ %81, %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i" ], [ %.05.i.i.i.i, %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit.thread.i.i" ], [ %.val1.i.i.i.pre.i, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i" ] %.val.i.i.i.i = load ptr, ptr %1, align 8, !alias.scope !6227, !noalias !6232, !nonnull !4, !align !565, !noundef !4 call void @llvm.experimental.noalias.scope.decl(metadata !6404) call void @llvm.experimental.noalias.scope.decl(metadata !6406) - %138 = load ptr, ptr %.val.i.i.i.i, align 8, !alias.scope !6408, !noalias !6248, !nonnull !4, !noundef !4 - %.pn1.in.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %138, i64 48 + %135 = load ptr, ptr %.val.i.i.i.i, align 8, !alias.scope !6408, !noalias !6248, !nonnull !4, !noundef !4 + %.pn1.in.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %135, i64 48 %.pn1.i.i.i.i.i.i.i.i.i.i = load i64, ptr %.pn1.in.i.i.i.i.i.i.i.i.i.i, align 8, !alias.scope !6255, !noalias !6409, !noundef !4 %.not.i.i = icmp ugt i64 %.pn1.i.i.i.i.i.i.i.i.i.i, %.val1.i.i.i.i br i1 %.not.i.i, label %40, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" -139: ; preds = %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i", %120 - %.sroa.35.sroa.13.1 = phi i32 [ %.sroa.6.i.sroa.8.0.copyload95, %120 ], [ %.sroa.35.sroa.13.0.extract.trunc, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ] - %.sroa.35.sroa.0.1 = phi <4 x i8> [ %.sroa.6.i.sroa.7.0.copyload91158, %120 ], [ %129, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ] - %.sroa.27.1 = phi i64 [ %.sroa.6.i.sroa.6.0.copyload87, %120 ], [ %128, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ] - %.sroa.14.1 = phi i64 [ %.sroa.6.i.sroa.0.0.copyload83, %120 ], [ %.sroa.0132.0.ph.i, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ] +.loopexit245: ; preds = %.noexc29, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" + %.sroa.35.1 = phi i64 [ %.sroa.9.2.ph.i, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ], [ %.sroa.6.i.sroa.7.0.copyload68, %.noexc29 ] + %.sroa.27.1 = phi i64 [ %126, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ], [ %.sroa.6.i.sroa.6.0.copyload64, %.noexc29 ] + %.sroa.14.1 = phi i64 [ %.sroa.0129.0.ph.i, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ], [ %.sroa.6.i.sroa.0.0.copyload60, %.noexc29 ] call void @llvm.lifetime.end.p0(ptr nonnull %19), !noalias !6355 br label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" -140: ; preds = %150, %.body.i - %141 = landingpad { ptr, i32 } +136: ; preds = %145, %.body.i + %137 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #84, !noalias !6389 unreachable -142: ; preds = %86 - %143 = load i8, ptr %24, align 8, !range !23, !alias.scope !6224, !noalias !6389, !noundef !4 - %144 = trunc nuw i8 %143 to i1 - br i1 %144, label %145, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" +138: ; preds = %86 + %139 = load i8, ptr %24, align 8, !range !23, !alias.scope !6224, !noalias !6389, !noundef !4 + %140 = trunc nuw i8 %139 to i1 + br i1 %140, label %141, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" -145: ; preds = %142 +141: ; preds = %138 call void @llvm.lifetime.start.p0(ptr nonnull %17), !noalias !6355 call void @llvm.lifetime.start.p0(ptr nonnull %16), !noalias !6355 invoke fastcc void @"_ZN4exif7isobmff15Parser$LT$R$GT$19read_file_level_box17h2a9b2589d4aed971E"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %16, ptr noalias noundef nonnull align 8 dereferenceable(64) %22, i64 noundef %70) to label %.noexc32 unwind label %.loopexit.split-lp -.noexc32: ; preds = %145 - %146 = load i64, ptr %16, align 8, !range !26, !noalias !6355, !noundef !4 - %trunc103.i = trunc nuw i64 %146 to i1 - %147 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %.sroa.644.i.sroa.0.0.copyload97 = load i64, ptr %147, align 8, !noalias !6355 - %.sroa.644.i.sroa.6.0..sroa_idx100 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %.sroa.644.i.sroa.6.0.copyload101 = load i64, ptr %.sroa.644.i.sroa.6.0..sroa_idx100, align 8, !noalias !6355 - %.sroa.644.i.sroa.7.0..sroa_idx104 = getelementptr inbounds nuw i8, ptr %16, i64 24 - %.sroa.644.i.sroa.8.0..sroa_idx108 = getelementptr inbounds nuw i8, ptr %16, i64 28 - %.sroa.644.i.sroa.8.0.copyload109 = load i32, ptr %.sroa.644.i.sroa.8.0..sroa_idx108, align 4, !noalias !6355 - br i1 %trunc103.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread137", label %148 - -148: ; preds = %.noexc32 - %.sroa.644.i.sroa.7.0.copyload = load i32, ptr %.sroa.644.i.sroa.7.0..sroa_idx104, align 8, !noalias !6355 +.noexc32: ; preds = %141 + %142 = load i64, ptr %16, align 8, !range !26, !noalias !6355, !noundef !4 + %trunc103.i = trunc nuw i64 %142 to i1 + %143 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %.sroa.644.i.sroa.0.0.copyload70 = load i64, ptr %143, align 8, !noalias !6355 + %.sroa.644.i.sroa.6.0..sroa_idx73 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %.sroa.644.i.sroa.6.0.copyload74 = load i64, ptr %.sroa.644.i.sroa.6.0..sroa_idx73, align 8, !noalias !6355 + %.sroa.644.i.sroa.7.0..sroa_idx77 = getelementptr inbounds nuw i8, ptr %16, i64 24 + %.sroa.644.i.sroa.7.0.copyload78 = load i64, ptr %.sroa.644.i.sroa.7.0..sroa_idx77, align 8, !noalias !6355 call void @llvm.lifetime.end.p0(ptr nonnull %16), !noalias !6355 - store i64 %.sroa.644.i.sroa.0.0.copyload97, ptr %17, align 8, !noalias !6355 - %.sroa.644.i.sroa.6.0..sroa_idx98 = getelementptr inbounds nuw i8, ptr %17, i64 8 - store i64 %.sroa.644.i.sroa.6.0.copyload101, ptr %.sroa.644.i.sroa.6.0..sroa_idx98, align 8, !noalias !6355 - %.sroa.644.i.sroa.7.0..sroa_idx102 = getelementptr inbounds nuw i8, ptr %17, i64 16 - store i32 %.sroa.644.i.sroa.7.0.copyload, ptr %.sroa.644.i.sroa.7.0..sroa_idx102, align 8, !noalias !6355 - %.sroa.644.i.sroa.8.0..sroa_idx106 = getelementptr inbounds nuw i8, ptr %17, i64 20 - store i32 %.sroa.644.i.sroa.8.0.copyload109, ptr %.sroa.644.i.sroa.8.0..sroa_idx106, align 4, !noalias !6355 + br i1 %trunc103.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102", label %144 + +144: ; preds = %.noexc32 + store i64 %.sroa.644.i.sroa.0.0.copyload70, ptr %17, align 8, !noalias !6355 + %.sroa.644.i.sroa.6.0..sroa_idx71 = getelementptr inbounds nuw i8, ptr %17, i64 8 + store i64 %.sroa.644.i.sroa.6.0.copyload74, ptr %.sroa.644.i.sroa.6.0..sroa_idx71, align 8, !noalias !6355 + %.sroa.644.i.sroa.7.0..sroa_idx75 = getelementptr inbounds nuw i8, ptr %17, i64 16 + store i64 %.sroa.644.i.sroa.7.0.copyload78, ptr %.sroa.644.i.sroa.7.0..sroa_idx75, align 8, !noalias !6355 call void @llvm.lifetime.start.p0(ptr nonnull %15), !noalias !6355 - %.cast = inttoptr i64 %.sroa.644.i.sroa.6.0.copyload101 to ptr - %149 = load i64, ptr %.sroa.644.i.sroa.7.0..sroa_idx102, align 8, !noalias !6355, !noundef !4 - invoke fastcc void @"_ZN4exif7isobmff15Parser$LT$R$GT$10parse_meta17hf004740fb162f77bE"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %15, ptr noalias noundef nonnull align 8 dereferenceable(64) %22, ptr noalias noundef nonnull readonly align 1 %.cast, i64 noundef %149) - to label %152 unwind label %150, !noalias !6389 + %.cast = inttoptr i64 %.sroa.644.i.sroa.6.0.copyload74 to ptr + invoke fastcc void @"_ZN4exif7isobmff15Parser$LT$R$GT$10parse_meta17hf004740fb162f77bE"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %15, ptr noalias noundef nonnull align 8 dereferenceable(64) %22, ptr noalias noundef nonnull readonly align 1 %.cast, i64 noundef %.sroa.644.i.sroa.7.0.copyload78) + to label %147 unwind label %145, !noalias !6389 -"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread137": ; preds = %.noexc32 - %.sroa.644.i.sroa.7.0.copyload105156 = load <4 x i8>, ptr %.sroa.644.i.sroa.7.0..sroa_idx104, align 8, !noalias !6355 - call void @llvm.lifetime.end.p0(ptr nonnull %16), !noalias !6355 +"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102": ; preds = %.noexc32 call void @llvm.lifetime.end.p0(ptr nonnull %17), !noalias !6355 br label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" -150: ; preds = %148 - %151 = landingpad { ptr, i32 } +145: ; preds = %144 + %146 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %17) #83 - to label %.body unwind label %140, !noalias !6389 - -152: ; preds = %148 - %153 = load i64, ptr %15, align 8, !range !26, !noalias !6355, !noundef !4 - %154 = getelementptr inbounds nuw i8, ptr %15, i64 8 - %.sroa.647.i.sroa.0.0.copyload110 = load i64, ptr %154, align 8, !noalias !6355 - %.sroa.647.i.sroa.5.0..sroa_idx111 = getelementptr inbounds nuw i8, ptr %15, i64 16 - %.sroa.647.i.sroa.5.0.copyload112 = load i64, ptr %.sroa.647.i.sroa.5.0..sroa_idx111, align 8, !noalias !6355 - %.sroa.647.i.sroa.6.0..sroa_idx113 = getelementptr inbounds nuw i8, ptr %15, i64 24 - %.sroa.647.i.sroa.6.0.copyload114154 = load <4 x i8>, ptr %.sroa.647.i.sroa.6.0..sroa_idx113, align 8, !noalias !6355 - %.sroa.647.i.sroa.7.0..sroa_idx115 = getelementptr inbounds nuw i8, ptr %15, i64 28 - %.sroa.647.i.sroa.7.0.copyload116 = load i32, ptr %.sroa.647.i.sroa.7.0..sroa_idx115, align 4, !noalias !6355 + to label %.body unwind label %136, !noalias !6389 + +147: ; preds = %144 + %148 = load i64, ptr %15, align 8, !range !26, !noalias !6355, !noundef !4 + %149 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %.sroa.647.i.sroa.0.0.copyload79 = load i64, ptr %149, align 8, !noalias !6355 + %.sroa.647.i.sroa.5.0..sroa_idx80 = getelementptr inbounds nuw i8, ptr %15, i64 16 + %.sroa.647.i.sroa.5.0.copyload81 = load i64, ptr %.sroa.647.i.sroa.5.0..sroa_idx80, align 8, !noalias !6355 + %.sroa.647.i.sroa.6.0..sroa_idx82 = getelementptr inbounds nuw i8, ptr %15, i64 24 + %.sroa.647.i.sroa.6.0.copyload83 = load i64, ptr %.sroa.647.i.sroa.6.0..sroa_idx82, align 8, !noalias !6355 call void @llvm.lifetime.end.p0(ptr nonnull %15), !noalias !6355 invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %17) to label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" unwind label %.loopexit.split-lp -155: ; preds = %78, %76 +150: ; preds = %78, %76 %.sroa.753.sroa.0.2.ph.i = phi ptr [ @anon.43c633cc9d0c07b847282a0596e0d119.639.llvm.16978709814855407318, %78 ], [ @anon.43c633cc9d0c07b847282a0596e0d119.251, %76 ] %.sroa.051.0.ph.i = phi i64 [ 1, %78 ], [ 0, %76 ] - %156 = ptrtoint ptr %.sroa.753.sroa.0.2.ph.i to i64 + %151 = ptrtoint ptr %.sroa.753.sroa.0.2.ph.i to i64 br label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" -.loopexit: ; preds = %43, %90, %121 +.loopexit: ; preds = %43, %90, %119 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp: ; preds = %.loopexit205.i, %145, %152 +.loopexit.split-lp: ; preds = %.loopexit202.i, %141, %147 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %.loopexit, %.loopexit.split-lp, %.body.i, %150 - %eh.lpad-body = phi { ptr, i32 } [ %eh.lpad-body.i, %.body.i ], [ %151, %150 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +.body: ; preds = %.loopexit, %.loopexit.split-lp, %.body.i, %145 + %eh.lpad-body = phi { ptr, i32 } [ %eh.lpad-body.i, %.body.i ], [ %146, %145 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE"(ptr noalias noundef nonnull align 8 dereferenceable(64) %22) #83 - to label %.thread unwind label %209 + to label %.thread unwind label %203 -"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit": ; preds = %152 - %trunc105.i = trunc nuw i64 %153 to i1 +"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit": ; preds = %147 + %trunc105.i = trunc nuw i64 %148 to i1 call void @llvm.lifetime.end.p0(ptr nonnull %17), !noalias !6355 - br i1 %trunc105.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread", label %157 + br i1 %trunc105.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread", label %152 -157: ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" +152: ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" call void @llvm.lifetime.start.p0(ptr nonnull %21) - store i64 %.sroa.647.i.sroa.0.0.copyload110, ptr %21, align 8 + store i64 %.sroa.647.i.sroa.0.0.copyload79, ptr %21, align 8 %.sroa.27.8..sroa_idx48 = getelementptr inbounds nuw i8, ptr %21, i64 8 - store i64 %.sroa.647.i.sroa.5.0.copyload112, ptr %.sroa.27.8..sroa_idx48, align 8 + store i64 %.sroa.647.i.sroa.5.0.copyload81, ptr %.sroa.27.8..sroa_idx48, align 8 %.sroa.35.8..sroa_idx53 = getelementptr inbounds nuw i8, ptr %21, i64 16 - store <4 x i8> %.sroa.647.i.sroa.6.0.copyload114154, ptr %.sroa.35.8..sroa_idx53, align 8 - %.sroa.35.8..sroa_idx53.sroa_idx = getelementptr inbounds nuw i8, ptr %21, i64 20 - store i32 %.sroa.647.i.sroa.7.0.copyload116, ptr %.sroa.35.8..sroa_idx53.sroa_idx, align 4 - %158 = load i64, ptr %.sroa.35.8..sroa_idx53, align 8, !noundef !4 - %159 = icmp ult i64 %158, 4 - br i1 %159, label %199, label %161 - -"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread": ; preds = %139, %155, %._crit_edge, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread137", %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" - %.sroa.14.2132 = phi i64 [ %.sroa.647.i.sroa.0.0.copyload110, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.0.0.copyload97, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread137" ], [ %.sroa.14.1, %139 ], [ %.sroa.051.0.ph.i, %155 ], [ %.sroa.6125.1.i, %._crit_edge ] - %.sroa.27.2128 = phi i64 [ %.sroa.647.i.sroa.5.0.copyload112, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.6.0.copyload101, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread137" ], [ %.sroa.27.1, %139 ], [ %156, %155 ], [ %.sroa.12.1.i, %._crit_edge ] - %.sroa.35.sroa.0.2124 = phi <4 x i8> [ %.sroa.647.i.sroa.6.0.copyload114154, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.7.0.copyload105156, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread137" ], [ %.sroa.35.sroa.0.1, %139 ], [ , %155 ], [ %.sroa.18.sroa.0.1.i, %._crit_edge ] - %.sroa.35.sroa.13.2123 = phi i32 [ %.sroa.647.i.sroa.7.0.copyload116, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.8.0.copyload109, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread137" ], [ %.sroa.35.sroa.13.1, %139 ], [ 0, %155 ], [ 0, %._crit_edge ] - %160 = icmp eq i64 %.sroa.14.2132, 1 - br i1 %160, label %227, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" - -161: ; preds = %157 - %162 = inttoptr i64 %.sroa.647.i.sroa.5.0.copyload112 to ptr - %163 = invoke noundef i32 @"_ZN64_$LT$exif..endian..BigEndian$u20$as$u20$exif..endian..Endian$GT$7loadu3217h4a435939c7411829E"(ptr noalias noundef nonnull readonly align 1 %162, i64 noundef %158, i64 noundef 0) - to label %166 unwind label %164 - -164: ; preds = %174, %171, %161 - %165 = landingpad { ptr, i32 } + store i64 %.sroa.647.i.sroa.6.0.copyload83, ptr %.sroa.35.8..sroa_idx53, align 8 + %153 = icmp ult i64 %.sroa.647.i.sroa.6.0.copyload83, 4 + br i1 %153, label %193, label %155 + +"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread": ; preds = %.loopexit245, %150, %._crit_edge, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102", %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" + %.sroa.14.297 = phi i64 [ %.sroa.647.i.sroa.0.0.copyload79, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.0.0.copyload70, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102" ], [ %.sroa.14.1, %.loopexit245 ], [ %.sroa.051.0.ph.i, %150 ], [ %.sroa.6125.1.i, %._crit_edge ] + %.sroa.27.293 = phi i64 [ %.sroa.647.i.sroa.5.0.copyload81, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.6.0.copyload74, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102" ], [ %.sroa.27.1, %.loopexit245 ], [ %151, %150 ], [ %.sroa.12.1.i, %._crit_edge ] + %.sroa.35.289 = phi i64 [ %.sroa.647.i.sroa.6.0.copyload83, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.7.0.copyload78, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102" ], [ %.sroa.35.1, %.loopexit245 ], [ 24, %150 ], [ %.sroa.18.sroa.0.1.i, %._crit_edge ] + %154 = icmp eq i64 %.sroa.14.297, 1 + br i1 %154, label %221, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" + +155: ; preds = %152 + %156 = inttoptr i64 %.sroa.647.i.sroa.5.0.copyload81 to ptr + %157 = invoke noundef i32 @"_ZN64_$LT$exif..endian..BigEndian$u20$as$u20$exif..endian..Endian$GT$7loadu3217h4a435939c7411829E"(ptr noalias noundef nonnull readonly align 1 %156, i64 noundef %.sroa.647.i.sroa.6.0.copyload83, i64 noundef 0) + to label %160 unwind label %158 + +158: ; preds = %168, %165, %155 + %159 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %21) #83 - to label %211 unwind label %209 + to label %205 unwind label %203 -166: ; preds = %161 - %167 = zext i32 %163 to i64 - %168 = load i64, ptr %.sroa.35.8..sroa_idx53, align 8, !noundef !4 - %169 = add i64 %168, -4 - %170 = icmp ult i64 %169, %167 - br i1 %170, label %199, label %171 +160: ; preds = %155 + %161 = zext i32 %157 to i64 + %162 = load i64, ptr %.sroa.35.8..sroa_idx53, align 8, !noundef !4 + %163 = add i64 %162, -4 + %164 = icmp ult i64 %163, %161 + br i1 %164, label %193, label %165 -171: ; preds = %166 +165: ; preds = %160 call void @llvm.lifetime.start.p0(ptr nonnull %20) - %172 = add nuw nsw i64 %167, 4 + %166 = add nuw nsw i64 %161, 4 call void @llvm.experimental.noalias.scope.decl(metadata !6410) call void @llvm.experimental.noalias.scope.decl(metadata !6413) - %173 = invoke { i64, i64 } @_ZN4core5slice5index5range17hc6a150385bfca842E(i64 noundef %172, i64 noundef %168, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ecbbdf4ce99fb387dde54de6349d4c38.142.llvm.10579729455205085779) - to label %174 unwind label %164 - -174: ; preds = %171 - %175 = extractvalue { i64, i64 } %173, 0 - %176 = extractvalue { i64, i64 } %173, 1 - store i64 %175, ptr %.sroa.35.8..sroa_idx53, align 8, !alias.scope !6413, !noalias !6410 - %177 = load ptr, ptr %.sroa.27.8..sroa_idx48, align 8, !alias.scope !6413, !noalias !6410, !nonnull !4, !noundef !4 - %178 = getelementptr inbounds i8, ptr %177, i64 %175 - %179 = sub i64 %168, %176 - %180 = getelementptr inbounds i8, ptr %177, i64 %176 - %181 = getelementptr inbounds nuw i8, ptr %20, i64 24 - store i64 %176, ptr %181, align 8, !alias.scope !6410, !noalias !6413 - %182 = getelementptr inbounds nuw i8, ptr %20, i64 32 - store i64 %179, ptr %182, align 8, !alias.scope !6410, !noalias !6413 - store ptr %178, ptr %20, align 8, !alias.scope !6410, !noalias !6413 - %183 = getelementptr inbounds nuw i8, ptr %20, i64 8 - store ptr %180, ptr %183, align 8, !alias.scope !6410, !noalias !6413 - %184 = getelementptr inbounds nuw i8, ptr %20, i64 16 - store ptr %21, ptr %184, align 8, !alias.scope !6410, !noalias !6413 + %167 = invoke { i64, i64 } @_ZN4core5slice5index5range17hc6a150385bfca842E(i64 noundef %166, i64 noundef %162, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ecbbdf4ce99fb387dde54de6349d4c38.142.llvm.10579729455205085779) + to label %168 unwind label %158 + +168: ; preds = %165 + %169 = extractvalue { i64, i64 } %167, 0 + %170 = extractvalue { i64, i64 } %167, 1 + store i64 %169, ptr %.sroa.35.8..sroa_idx53, align 8, !alias.scope !6413, !noalias !6410 + %171 = load ptr, ptr %.sroa.27.8..sroa_idx48, align 8, !alias.scope !6413, !noalias !6410, !nonnull !4, !noundef !4 + %172 = getelementptr inbounds i8, ptr %171, i64 %169 + %173 = sub i64 %162, %170 + %174 = getelementptr inbounds i8, ptr %171, i64 %170 + %175 = getelementptr inbounds nuw i8, ptr %20, i64 24 + store i64 %170, ptr %175, align 8, !alias.scope !6410, !noalias !6413 + %176 = getelementptr inbounds nuw i8, ptr %20, i64 32 + store i64 %173, ptr %176, align 8, !alias.scope !6410, !noalias !6413 + store ptr %172, ptr %20, align 8, !alias.scope !6410, !noalias !6413 + %177 = getelementptr inbounds nuw i8, ptr %20, i64 8 + store ptr %174, ptr %177, align 8, !alias.scope !6410, !noalias !6413 + %178 = getelementptr inbounds nuw i8, ptr %20, i64 16 + store ptr %21, ptr %178, align 8, !alias.scope !6410, !noalias !6413 invoke void @"_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h50274a3985a77014E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(40) %20) - to label %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" unwind label %164 + to label %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" unwind label %158 -"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit": ; preds = %174 +"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit": ; preds = %168 call void @llvm.lifetime.end.p0(ptr nonnull %20) - %185 = getelementptr inbounds nuw i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %185, ptr noundef nonnull align 8 dereferenceable(24) %21, i64 24, i1 false) + %179 = getelementptr inbounds nuw i8, ptr %0, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %179, ptr noundef nonnull align 8 dereferenceable(24) %21, i64 24, i1 false) store i64 0, ptr %0, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %21) - br label %186 + br label %180 -186: ; preds = %245, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread", %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" - %187 = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ true, %245 ], [ false, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] - %.sroa.14.2131 = phi i64 [ %.sroa.647.i.sroa.0.0.copyload110, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ 1, %245 ], [ %.sroa.14.2132150, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] - %.sroa.27.2127 = phi i64 [ %.sroa.647.i.sroa.5.0.copyload112, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ %.sroa.27.2128, %245 ], [ %.sroa.27.2128151, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] +180: ; preds = %239, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread", %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" + %181 = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ true, %239 ], [ false, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] + %.sroa.14.296 = phi i64 [ %.sroa.647.i.sroa.0.0.copyload79, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ 1, %239 ], [ %.sroa.14.297113, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] + %.sroa.27.292 = phi i64 [ %.sroa.647.i.sroa.5.0.copyload81, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ %.sroa.27.293, %239 ], [ %.sroa.27.293114, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] call void @llvm.experimental.noalias.scope.decl(metadata !6415) call void @llvm.experimental.noalias.scope.decl(metadata !6418) - %188 = load i64, ptr %22, align 8, !range !570, !alias.scope !6421, !noundef !4 - %189 = icmp eq i64 %188, -9223372036854775808 - br i1 %189, label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit", label %190 + %182 = load i64, ptr %22, align 8, !range !570, !alias.scope !6421, !noundef !4 + %183 = icmp eq i64 %182, -9223372036854775808 + br i1 %183, label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit", label %184 -190: ; preds = %186 +184: ; preds = %180 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !6422 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfe7e05562bdee3caE.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %22) - to label %.noexc36 unwind label %225 - -.noexc36: ; preds = %190 - %191 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %192 = load i64, ptr %191, align 8, !range !570, !noalias !6422, !noundef !4 - %.not.i.i.i.i.i.i = icmp eq i64 %192, 0 - br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", label %193 - -193: ; preds = %.noexc36 - %194 = getelementptr inbounds nuw i8, ptr %6, i64 16 - %195 = load i64, ptr %194, align 8, !noalias !6422, !noundef !4 - %196 = icmp eq i64 %195, 0 - br i1 %196, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", label %197 - -197: ; preds = %193 - %198 = load ptr, ptr %6, align 8, !noalias !6422, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %198, i64 noundef %195, i64 noundef %192) #85 + to label %.noexc36 unwind label %219 + +.noexc36: ; preds = %184 + %185 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %186 = load i64, ptr %185, align 8, !range !570, !noalias !6422, !noundef !4 + %.not.i.i.i.i.i.i = icmp eq i64 %186, 0 + br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", label %187 + +187: ; preds = %.noexc36 + %188 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %189 = load i64, ptr %188, align 8, !noalias !6422, !noundef !4 + %190 = icmp eq i64 %189, 0 + br i1 %190, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", label %191 + +191: ; preds = %187 + %192 = load ptr, ptr %6, align 8, !noalias !6422, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %192, i64 noundef %189, i64 noundef %186) #85 br label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i" -"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i": ; preds = %197, %193, %.noexc36 +"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i": ; preds = %191, %187, %.noexc36 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !6422 br label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit" -199: ; preds = %166, %157 - %anon.43c633cc9d0c07b847282a0596e0d119.213.sink = phi ptr [ @anon.43c633cc9d0c07b847282a0596e0d119.214, %157 ], [ @anon.43c633cc9d0c07b847282a0596e0d119.213, %166 ] - %.sink = phi i64 [ 23, %157 ], [ 26, %166 ] - %200 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 0, ptr %200, align 8 +193: ; preds = %160, %152 + %anon.43c633cc9d0c07b847282a0596e0d119.213.sink = phi ptr [ @anon.43c633cc9d0c07b847282a0596e0d119.214, %152 ], [ @anon.43c633cc9d0c07b847282a0596e0d119.213, %160 ] + %.sink = phi i64 [ 23, %152 ], [ 26, %160 ] + %194 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 0, ptr %194, align 8 %.sroa.48.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %anon.43c633cc9d0c07b847282a0596e0d119.213.sink, ptr %.sroa.48.0..sroa_idx, align 8 %.sroa.59.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -28714,185 +28686,182 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal store i64 1, ptr %0, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !6431 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he34f37b9bfa2d460E.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %21) - to label %.noexc37 unwind label %212 + to label %.noexc37 unwind label %206 -.noexc37: ; preds = %199 - %201 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %202 = load i64, ptr %201, align 8, !range !570, !noalias !6431, !noundef !4 - %.not.i.i.i = icmp eq i64 %202, 0 - br i1 %.not.i.i.i, label %214, label %203 +.noexc37: ; preds = %193 + %195 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %196 = load i64, ptr %195, align 8, !range !570, !noalias !6431, !noundef !4 + %.not.i.i.i = icmp eq i64 %196, 0 + br i1 %.not.i.i.i, label %208, label %197 -203: ; preds = %.noexc37 - %204 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %205 = load i64, ptr %204, align 8, !noalias !6431, !noundef !4 - %206 = icmp eq i64 %205, 0 - br i1 %206, label %214, label %207 +197: ; preds = %.noexc37 + %198 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %199 = load i64, ptr %198, align 8, !noalias !6431, !noundef !4 + %200 = icmp eq i64 %199, 0 + br i1 %200, label %208, label %201 -207: ; preds = %203 - %208 = load ptr, ptr %5, align 8, !noalias !6431, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %208, i64 noundef %205, i64 noundef %202) #85 - br label %214 +201: ; preds = %197 + %202 = load ptr, ptr %5, align 8, !noalias !6431, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %202, i64 noundef %199, i64 noundef %196) #85 + br label %208 -209: ; preds = %254, %211, %164, %.body - %210 = landingpad { ptr, i32 } +203: ; preds = %248, %205, %158, %.body + %204 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #84 unreachable -211: ; preds = %212, %164 - %.pn = phi { ptr, i32 } [ %213, %212 ], [ %165, %164 ] +205: ; preds = %206, %158 + %.pn = phi { ptr, i32 } [ %207, %206 ], [ %159, %158 ] invoke void @"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE"(ptr noalias noundef nonnull align 8 dereferenceable(64) %22) #83 - to label %.thread unwind label %209 + to label %.thread unwind label %203 -212: ; preds = %199 - %213 = landingpad { ptr, i32 } +206: ; preds = %193 + %207 = landingpad { ptr, i32 } cleanup - br label %211 + br label %205 -214: ; preds = %207, %203, %.noexc37 +208: ; preds = %201, %197, %.noexc37 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !6431 call void @llvm.lifetime.end.p0(ptr nonnull %21) call void @llvm.experimental.noalias.scope.decl(metadata !6438) call void @llvm.experimental.noalias.scope.decl(metadata !6441) - %215 = load i64, ptr %22, align 8, !range !570, !alias.scope !6444, !noundef !4 - %216 = icmp eq i64 %215, -9223372036854775808 - br i1 %216, label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41", label %.noexc40 + %209 = load i64, ptr %22, align 8, !range !570, !alias.scope !6444, !noundef !4 + %210 = icmp eq i64 %209, -9223372036854775808 + br i1 %210, label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41", label %.noexc40 -.noexc40: ; preds = %214 +.noexc40: ; preds = %208 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !6445 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfe7e05562bdee3caE.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %22) - %217 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %218 = load i64, ptr %217, align 8, !range !570, !noalias !6445, !noundef !4 - %.not.i.i.i.i.i.i38 = icmp eq i64 %218, 0 - br i1 %.not.i.i.i.i.i.i38, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", label %219 - -219: ; preds = %.noexc40 - %220 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %221 = load i64, ptr %220, align 8, !noalias !6445, !noundef !4 - %222 = icmp eq i64 %221, 0 - br i1 %222, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", label %223 + %211 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %212 = load i64, ptr %211, align 8, !range !570, !noalias !6445, !noundef !4 + %.not.i.i.i.i.i.i38 = icmp eq i64 %212, 0 + br i1 %.not.i.i.i.i.i.i38, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", label %213 + +213: ; preds = %.noexc40 + %214 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %215 = load i64, ptr %214, align 8, !noalias !6445, !noundef !4 + %216 = icmp eq i64 %215, 0 + br i1 %216, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", label %217 -223: ; preds = %219 - %224 = load ptr, ptr %4, align 8, !noalias !6445, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %224, i64 noundef %221, i64 noundef %218) #85 +217: ; preds = %213 + %218 = load ptr, ptr %4, align 8, !noalias !6445, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %218, i64 noundef %215, i64 noundef %212) #85 br label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39" -"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39": ; preds = %223, %219, %.noexc40 +"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39": ; preds = %217, %213, %.noexc40 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !6445 br label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41" -225: ; preds = %190 - %226 = landingpad { ptr, i32 } +219: ; preds = %184 + %220 = landingpad { ptr, i32 } cleanup - br i1 %187, label %254, label %.thread + br i1 %181, label %248, label %.thread -"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41": ; preds = %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", %214 +"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41": ; preds = %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", %208 call void @llvm.lifetime.end.p0(ptr nonnull %22) br label %"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit" "_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit": ; preds = %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i", %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit", %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41" ret void -227: ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" - %228 = inttoptr i64 %.sroa.27.2128 to ptr - %229 = and i64 %.sroa.27.2128, 3 - switch i64 %229, label %default.unreachable [ - i64 2, label %230 - i64 3, label %234 - i64 0, label %237 - i64 1, label %240 +221: ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" + %222 = inttoptr i64 %.sroa.27.293 to ptr + %223 = and i64 %.sroa.27.293, 3 + switch i64 %223, label %default.unreachable [ + i64 2, label %224 + i64 3, label %228 + i64 0, label %231 + i64 1, label %234 ] -default.unreachable: ; preds = %227 +default.unreachable: ; preds = %221 unreachable -230: ; preds = %227 - %231 = lshr i64 %.sroa.27.2128, 32 - %232 = trunc nuw i64 %231 to i32 - %233 = call noundef i8 @_ZN3std3sys3pal4unix17decode_error_kind17h9c6936ce8cf07affE.llvm.16978709814855407318(i32 noundef %232), !range !1741 +224: ; preds = %221 + %225 = lshr i64 %.sroa.27.293, 32 + %226 = trunc nuw i64 %225 to i32 + %227 = call noundef i8 @_ZN3std3sys3pal4unix17decode_error_kind17h9c6936ce8cf07affE.llvm.16978709814855407318(i32 noundef %226), !range !1741 br label %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit -234: ; preds = %227 - %235 = lshr i64 %.sroa.27.2128, 32 - %spec.select.i.i.i = trunc nuw nsw i64 %235 to i8 - %236 = icmp ult i64 %.sroa.27.2128, 176093659136 - call void @llvm.assume(i1 %236) +228: ; preds = %221 + %229 = lshr i64 %.sroa.27.293, 32 + %spec.select.i.i.i = trunc nuw nsw i64 %229 to i8 + %230 = icmp ult i64 %.sroa.27.293, 176093659136 + call void @llvm.assume(i1 %230) br label %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit -237: ; preds = %227 - %238 = getelementptr inbounds nuw i8, ptr %228, i64 16 - %239 = load i8, ptr %238, align 8, !range !1741, !noalias !6454, !noundef !4 +231: ; preds = %221 + %232 = getelementptr inbounds nuw i8, ptr %222, i64 16 + %233 = load i8, ptr %232, align 8, !range !1741, !noalias !6454, !noundef !4 br label %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit -240: ; preds = %227 - %241 = getelementptr i8, ptr %228, i64 15 - %242 = load i8, ptr %241, align 8, !range !1741, !noalias !6454, !noundef !4 +234: ; preds = %221 + %235 = getelementptr i8, ptr %222, i64 15 + %236 = load i8, ptr %235, align 8, !range !1741, !noalias !6454, !noundef !4 br label %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit -"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread": ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i", %2, %142, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" - %.sroa.35.sroa.13.2123153 = phi i32 [ %.sroa.35.sroa.13.2123, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.35.sroa.13.2123, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ 0, %142 ], [ 0, %2 ], [ 0, %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] - %.sroa.35.sroa.0.2124152 = phi <4 x i8> [ %.sroa.35.sroa.0.2124, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.35.sroa.0.2124, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ , %142 ], [ , %2 ], [ , %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] - %.sroa.27.2128151 = phi i64 [ %.sroa.27.2128, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.27.2128, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.252 to i64), %142 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.231 to i64), %2 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.231 to i64), %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] - %.sroa.14.2132150 = phi i64 [ 1, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.14.2132, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ 0, %142 ], [ 2, %2 ], [ 2, %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] - %243 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.14.2132150, ptr %243, align 8 +"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread": ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i", %2, %138, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" + %.sroa.35.289115 = phi i64 [ %.sroa.35.289, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.35.289, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ 4, %2 ], [ 32, %138 ], [ 4, %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] + %.sroa.27.293114 = phi i64 [ %.sroa.27.293, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.27.293, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.231 to i64), %2 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.252 to i64), %138 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.231 to i64), %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] + %.sroa.14.297113 = phi i64 [ 1, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.14.297, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ 2, %2 ], [ 0, %138 ], [ 2, %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] + %237 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.sroa.14.297113, ptr %237, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.27.2128151, ptr %.sroa.2.0..sroa_idx, align 8 + store i64 %.sroa.27.293114, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 - store <4 x i8> %.sroa.35.sroa.0.2124152, ptr %.sroa.3.0..sroa_idx, align 8 - %.sroa.4.0..sroa_idx81 = getelementptr inbounds nuw i8, ptr %0, i64 28 - store i32 %.sroa.35.sroa.13.2123153, ptr %.sroa.4.0..sroa_idx81, align 4 + store i64 %.sroa.35.289115, ptr %.sroa.3.0..sroa_idx, align 8 store i64 1, ptr %0, align 8 - br label %186 + br label %180 -_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit: ; preds = %240, %237, %234, %230 - %.0.i = phi i8 [ %233, %230 ], [ %spec.select.i.i.i, %234 ], [ %239, %237 ], [ %242, %240 ] - %244 = icmp eq i8 %.0.i, 37 - br i1 %244, label %245, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" +_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit: ; preds = %234, %231, %228, %224 + %.0.i = phi i8 [ %227, %224 ], [ %spec.select.i.i.i, %228 ], [ %233, %231 ], [ %236, %234 ] + %238 = icmp eq i8 %.0.i, 37 + br i1 %238, label %239, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" -245: ; preds = %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit - %246 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 0, ptr %246, align 8 +239: ; preds = %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit + %240 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 0, ptr %240, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr @anon.43c633cc9d0c07b847282a0596e0d119.215, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 16, ptr %.sroa.5.0..sroa_idx, align 8 store i64 1, ptr %0, align 8 - br label %186 + br label %180 -"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit": ; preds = %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", %186 +"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit": ; preds = %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", %180 call void @llvm.lifetime.end.p0(ptr nonnull %22) - %cond.i = icmp eq i64 %.sroa.14.2131, 1 - %or.cond159 = select i1 %187, i1 %cond.i, i1 false - br i1 %or.cond159, label %247, label %"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit" + %cond.i = icmp eq i64 %.sroa.14.296, 1 + %or.cond117 = select i1 %181, i1 %cond.i, i1 false + br i1 %or.cond117, label %241, label %"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit" -247: ; preds = %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit" - %248 = inttoptr i64 %.sroa.27.2127 to ptr +241: ; preds = %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit" + %242 = inttoptr i64 %.sroa.27.292 to ptr call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !6457 - %249 = icmp ne i64 %.sroa.27.2127, 0 - call void @llvm.assume(i1 %249) - call void @_ZN3std2io5error14repr_bitpacked11decode_repr17had847663024859d8E.llvm.16845035774076767816(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %3, ptr noundef nonnull %248), !noalias !6457 - %250 = load i8, ptr %3, align 8, !range !572, !alias.scope !6464, !noalias !6457, !noundef !4 - %251 = icmp eq i8 %250, 3 - br i1 %251, label %252, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i" - -252: ; preds = %247 - %253 = getelementptr inbounds nuw i8, ptr %3, i64 8 - call void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$std..io..error..Custom$GT$$GT$17hc955abe8797c5cc0E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(8) %253), !noalias !6457 + %243 = icmp ne i64 %.sroa.27.292, 0 + call void @llvm.assume(i1 %243) + call void @_ZN3std2io5error14repr_bitpacked11decode_repr17had847663024859d8E.llvm.16845035774076767816(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %3, ptr noundef nonnull %242), !noalias !6457 + %244 = load i8, ptr %3, align 8, !range !572, !alias.scope !6464, !noalias !6457, !noundef !4 + %245 = icmp eq i8 %244, 3 + br i1 %245, label %246, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i" + +246: ; preds = %241 + %247 = getelementptr inbounds nuw i8, ptr %3, i64 8 + call void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$std..io..error..Custom$GT$$GT$17hc955abe8797c5cc0E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(8) %247), !noalias !6457 br label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i" -"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i": ; preds = %252, %247 +"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i": ; preds = %246, %241 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !6457 br label %"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit" -.thread: ; preds = %211, %254, %225, %.body - %.pn23.pn = phi { ptr, i32 } [ %226, %254 ], [ %226, %225 ], [ %eh.lpad-body, %.body ], [ %.pn, %211 ] +.thread: ; preds = %205, %248, %219, %.body + %.pn23.pn = phi { ptr, i32 } [ %220, %248 ], [ %220, %219 ], [ %eh.lpad-body, %.body ], [ %.pn, %205 ] resume { ptr, i32 } %.pn23.pn -254: ; preds = %225 - %255 = inttoptr i64 %.sroa.27.2127 to ptr - invoke fastcc void @"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E"(i64 %.sroa.14.2131, ptr %255) #83 - to label %.thread unwind label %209 +248: ; preds = %219 + %249 = inttoptr i64 %.sroa.27.292 to ptr + invoke fastcc void @"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E"(i64 %.sroa.14.296, ptr %249) #83 + to label %.thread unwind label %203 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll b/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll index c9711961035..5e04c180501 100644 --- a/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll +++ b/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll @@ -169593,13 +169593,13 @@ define void @_ZN5typst9visualize5color5Color5oklab17ha39c4cec745e889eE(ptr noali 17: ; preds = %2 %18 = getelementptr inbounds nuw i8, ptr %14, i64 4 - %.sroa.040.0.copyload = load i32, ptr %18, align 4 - %.sroa.441.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 - %.sroa.441.0.copyload = load ptr, ptr %.sroa.441.0..sroa_idx, align 8 + %.sroa.042.0.copyload = load i32, ptr %18, align 4 + %.sroa.443.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 + %.sroa.443.0.copyload = load ptr, ptr %.sroa.443.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 16 %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..sroa_idx, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %14) - %.not = icmp eq i32 %.sroa.040.0.copyload, 8 + %.not = icmp eq i32 %.sroa.042.0.copyload, 8 br i1 %.not, label %27, label %26 19: ; preds = %2 @@ -169615,9 +169615,9 @@ define void @_ZN5typst9visualize5color5Color5oklab17ha39c4cec745e889eE(ptr noali br label %112 26: ; preds = %17 - store i32 %.sroa.040.0.copyload, ptr %13, align 4 + store i32 %.sroa.042.0.copyload, ptr %13, align 4 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 4 - store ptr %.sroa.441.0.copyload, ptr %.sroa.3.0..sroa_idx, align 4 + store ptr %.sroa.443.0.copyload, ptr %.sroa.3.0..sroa_idx, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 12 store i64 %.sroa.5.0.copyload, ptr %.sroa.4.0..sroa_idx, align 4 call void @_ZN5typst9visualize5color5Color8to_oklab17hebe9a90cf2d29a10E(ptr noalias noundef nonnull sret({ i32, [4 x i32] }) align 4 captures(none) dereferenceable(20) %15, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(20) %13) @@ -169651,7 +169651,7 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread: ; preds %37 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 0, ptr %37, align 8, !noalias !36868 invoke void @"_ZN4ecow3vec15EcoVec$LT$T$GT$19extend_from_trusted17ha5ea5bea0f0d760aE.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %9, i64 noundef 1, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(64) %10) - to label %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread82 unwind label %38, !noalias !36867 + to label %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84 unwind label %38, !noalias !36867 38: ; preds = %36 %39 = landingpad { ptr, i32 } @@ -169669,7 +169669,7 @@ common.resume: ; preds = %84, %62, %38 %common.resume.op = phi { ptr, i32 } [ %39, %38 ], [ %63, %62 ], [ %85, %84 ] resume { ptr, i32 } %common.resume.op -_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread82: ; preds = %36 +_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84: ; preds = %36 %42 = load ptr, ptr %9, align 8, !noalias !36868, !nonnull !4, !noundef !4 %43 = load double, ptr %37, align 8, !noalias !36868, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !36868 @@ -169713,7 +169713,7 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 %61 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 0, ptr %61, align 8, !noalias !36879 invoke void @"_ZN4ecow3vec15EcoVec$LT$T$GT$19extend_from_trusted17ha5ea5bea0f0d760aE.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6, i64 noundef 1, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(64) %7) - to label %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i62" unwind label %62, !noalias !36878 + to label %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" unwind label %62, !noalias !36878 62: ; preds = %60 %63 = landingpad { ptr, i32 } @@ -169727,18 +169727,18 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #55, !noalias !36882 unreachable -"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i62": ; preds = %60 +"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64": ; preds = %60 %66 = load ptr, ptr %6, align 8, !noalias !36879, !nonnull !4, !noundef !4 %67 = load i64, ptr %61, align 8, !noalias !36879, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !36879 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !36872 br label %90 -68: ; preds = %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread82, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit - %69 = phi double [ %43, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread82 ], [ %46, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] - %.sroa.0.085 = phi ptr [ %42, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread82 ], [ %44, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] +68: ; preds = %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit + %69 = phi double [ %43, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84 ], [ %46, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] + %.sroa.0.087 = phi ptr [ %42, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84 ], [ %44, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.0.085, ptr %70, align 8 + store ptr %.sroa.0.087, ptr %70, align 8 %71 = getelementptr inbounds nuw i8, ptr %0, i64 16 store double %69, ptr %71, align 8 br label %112 @@ -169768,7 +169768,7 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 %83 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 0, ptr %83, align 8, !noalias !36890 invoke void @"_ZN4ecow3vec15EcoVec$LT$T$GT$19extend_from_trusted17ha5ea5bea0f0d760aE.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, i64 noundef 1, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(64) %4) - to label %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" unwind label %84, !noalias !36889 + to label %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66" unwind label %84, !noalias !36889 84: ; preds = %82 %85 = landingpad { ptr, i32 } @@ -169782,41 +169782,41 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #55, !noalias !36893 unreachable -"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64": ; preds = %82 +"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66": ; preds = %82 %88 = load ptr, ptr %3, align 8, !noalias !36890, !nonnull !4, !noundef !4 %89 = load i64, ptr %83, align 8, !noalias !36890, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !36890 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !36883 br label %99 -90: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i62", %49 - %.sroa.668.0.ph = phi i64 [ %57, %49 ], [ %67, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i62" ] - %.sroa.067.0.ph = phi ptr [ %51, %49 ], [ %66, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i62" ] +90: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64", %49 + %.sroa.670.0.ph = phi i64 [ %57, %49 ], [ %67, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" ] + %.sroa.069.0.ph = phi ptr [ %51, %49 ], [ %66, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" ] %91 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.067.0.ph, ptr %91, align 8 + store ptr %.sroa.069.0.ph, ptr %91, align 8 %92 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.668.0.ph, ptr %92, align 8 + store i64 %.sroa.670.0.ph, ptr %92, align 8 br label %112 93: ; preds = %80 call void @llvm.lifetime.start.p0(ptr nonnull %12) call void @_ZN5typst11foundations4args4Args3eat17hfb18ecea20e575e8E(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %12, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) %94 = load i64, ptr %12, align 8, !range !26, !noundef !4 - %trunc56 = trunc nuw i64 %94 to i1 + %trunc58 = trunc nuw i64 %94 to i1 %95 = getelementptr inbounds nuw i8, ptr %12, i64 8 %96 = load i64, ptr %95, align 8 %97 = getelementptr inbounds nuw i8, ptr %12, i64 16 %98 = load double, ptr %97, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %12) - br i1 %trunc56, label %108, label %102 + br i1 %trunc58, label %108, label %102 -99: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64", %72 - %.sroa.671.0.ph = phi i64 [ %79, %72 ], [ %89, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" ] - %.sroa.070.0.ph = phi ptr [ %73, %72 ], [ %88, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" ] +99: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66", %72 + %.sroa.673.0.ph = phi i64 [ %79, %72 ], [ %89, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66" ] + %.sroa.072.0.ph = phi ptr [ %73, %72 ], [ %88, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66" ] %100 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.070.0.ph, ptr %100, align 8 + store ptr %.sroa.072.0.ph, ptr %100, align 8 %101 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.671.0.ph, ptr %101, align 8 + store i64 %.sroa.673.0.ph, ptr %101, align 8 br label %112 102: ; preds = %93 @@ -169826,12 +169826,12 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 %106 = select i1 %103, float 1.000000e+00, float %105 %107 = getelementptr inbounds nuw i8, ptr %15, i64 4 store float %104, ptr %107, align 4 - %.sroa.038.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 8 - store i32 %56, ptr %.sroa.038.sroa.4.0..sroa_idx, align 4 - %.sroa.038.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 12 - store i32 %78, ptr %.sroa.038.sroa.5.0..sroa_idx, align 4 - %.sroa.439.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 16 - store float %106, ptr %.sroa.439.0..sroa_idx, align 4 + %.sroa.040.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 8 + store i32 %56, ptr %.sroa.040.sroa.4.0..sroa_idx, align 4 + %.sroa.040.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 12 + store i32 %78, ptr %.sroa.040.sroa.5.0..sroa_idx, align 4 + %.sroa.441.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 16 + store float %106, ptr %.sroa.441.0..sroa_idx, align 4 store i32 1, ptr %15, align 4 br label %47 @@ -169879,13 +169879,13 @@ define void @_ZN5typst9visualize5color5Color5oklch17h47e1b1df93a0df93E(ptr noali 17: ; preds = %2 %18 = getelementptr inbounds nuw i8, ptr %14, i64 4 - %.sroa.034.0.copyload = load i32, ptr %18, align 4 - %.sroa.435.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 - %.sroa.435.0.copyload = load ptr, ptr %.sroa.435.0..sroa_idx, align 8 + %.sroa.035.0.copyload = load i32, ptr %18, align 4 + %.sroa.436.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 + %.sroa.436.0.copyload = load ptr, ptr %.sroa.436.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 16 %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..sroa_idx, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %14) - %.not = icmp eq i32 %.sroa.034.0.copyload, 8 + %.not = icmp eq i32 %.sroa.035.0.copyload, 8 br i1 %.not, label %27, label %26 19: ; preds = %2 @@ -169901,9 +169901,9 @@ define void @_ZN5typst9visualize5color5Color5oklch17h47e1b1df93a0df93E(ptr noali br label %118 26: ; preds = %17 - store i32 %.sroa.034.0.copyload, ptr %13, align 4 + store i32 %.sroa.035.0.copyload, ptr %13, align 4 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 4 - store ptr %.sroa.435.0.copyload, ptr %.sroa.3.0..sroa_idx, align 4 + store ptr %.sroa.436.0.copyload, ptr %.sroa.3.0..sroa_idx, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 12 store i64 %.sroa.5.0.copyload, ptr %.sroa.4.0..sroa_idx, align 4 call void @_ZN5typst9visualize5color5Color8to_oklch17heafc265185d45ce3E(ptr noalias noundef nonnull sret({ i32, [4 x i32] }) align 4 captures(none) dereferenceable(20) %15, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(20) %13) @@ -169937,7 +169937,7 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread: ; preds %37 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 0, ptr %37, align 8, !noalias !36901 invoke void @"_ZN4ecow3vec15EcoVec$LT$T$GT$19extend_from_trusted17ha5ea5bea0f0d760aE.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %9, i64 noundef 1, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(64) %10) - to label %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread78 unwind label %38, !noalias !36900 + to label %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79 unwind label %38, !noalias !36900 38: ; preds = %36 %39 = landingpad { ptr, i32 } @@ -169955,7 +169955,7 @@ common.resume: ; preds = %83, %62, %38 %common.resume.op = phi { ptr, i32 } [ %39, %38 ], [ %63, %62 ], [ %84, %83 ] resume { ptr, i32 } %common.resume.op -_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread78: ; preds = %36 +_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79: ; preds = %36 %42 = load ptr, ptr %9, align 8, !noalias !36901, !nonnull !4, !noundef !4 %43 = load double, ptr %37, align 8, !noalias !36901, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !36901 @@ -169999,7 +169999,7 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 %61 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 0, ptr %61, align 8, !noalias !36912 invoke void @"_ZN4ecow3vec15EcoVec$LT$T$GT$19extend_from_trusted17ha5ea5bea0f0d760aE.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6, i64 noundef 1, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(64) %7) - to label %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i53" unwind label %62, !noalias !36911 + to label %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54" unwind label %62, !noalias !36911 62: ; preds = %60 %63 = landingpad { ptr, i32 } @@ -170013,18 +170013,18 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #55, !noalias !36915 unreachable -"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i53": ; preds = %60 +"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54": ; preds = %60 %66 = load ptr, ptr %6, align 8, !noalias !36912, !nonnull !4, !noundef !4 %67 = load i64, ptr %61, align 8, !noalias !36912, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !36912 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !36905 br label %92 -68: ; preds = %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread78, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit - %69 = phi double [ %43, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread78 ], [ %46, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] - %.sroa.0.081 = phi ptr [ %42, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread78 ], [ %44, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] +68: ; preds = %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit + %69 = phi double [ %43, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79 ], [ %46, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] + %.sroa.0.082 = phi ptr [ %42, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79 ], [ %44, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.0.081, ptr %70, align 8 + store ptr %.sroa.0.082, ptr %70, align 8 %71 = getelementptr inbounds nuw i8, ptr %0, i64 16 store double %69, ptr %71, align 8 br label %118 @@ -170033,13 +170033,13 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !36916 call void @_ZN5typst11foundations4args4Args3eat17haf9f8c328f5f41c6E.llvm.3683678558897460461(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull align 8 dereferenceable(24) %1), !noalias !36921 %73 = load i64, ptr %5, align 8, !range !26, !noalias !36916, !noundef !4 - %trunc.i54 = trunc nuw i64 %73 to i1 + %trunc.i55 = trunc nuw i64 %73 to i1 %74 = getelementptr inbounds nuw i8, ptr %5, i64 8 %75 = load i64, ptr %74, align 8, !noalias !36916 %76 = getelementptr inbounds nuw i8, ptr %5, i64 16 %77 = load i64, ptr %76, align 8, !noalias !36916 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !36916 - br i1 %trunc.i54, label %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit, label %78 + br i1 %trunc.i55, label %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit, label %78 78: ; preds = %72 %79 = icmp eq i64 %75, 0 @@ -170057,7 +170057,7 @@ _ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread: ; preds %82 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 0, ptr %82, align 8, !noalias !36923 invoke void @"_ZN4ecow3vec15EcoVec$LT$T$GT$19extend_from_trusted17ha5ea5bea0f0d760aE.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, i64 noundef 1, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(64) %4) - to label %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread92 unwind label %83, !noalias !36922 + to label %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93 unwind label %83, !noalias !36922 83: ; preds = %81 %84 = landingpad { ptr, i32 } @@ -170071,7 +170071,7 @@ _ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread: ; preds call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #55, !noalias !36926 unreachable -_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread92: ; preds = %81 +_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93: ; preds = %81 %87 = load ptr, ptr %3, align 8, !noalias !36923, !nonnull !4, !noundef !4 %88 = load double, ptr %82, align 8, !noalias !36923, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !36923 @@ -170084,13 +170084,13 @@ _ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit: ; preds = %72 %91 = bitcast i64 %77 to double br i1 %90, label %95, label %102 -92: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i53", %49 - %.sroa.659.0.ph = phi i64 [ %57, %49 ], [ %67, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i53" ] - %.sroa.058.0.ph = phi ptr [ %51, %49 ], [ %66, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i53" ] +92: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54", %49 + %.sroa.660.0.ph = phi i64 [ %57, %49 ], [ %67, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54" ] + %.sroa.059.0.ph = phi ptr [ %51, %49 ], [ %66, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54" ] %93 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.058.0.ph, ptr %93, align 8 + store ptr %.sroa.059.0.ph, ptr %93, align 8 %94 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.659.0.ph, ptr %94, align 8 + store i64 %.sroa.660.0.ph, ptr %94, align 8 br label %118 95: ; preds = %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit @@ -170098,19 +170098,19 @@ _ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit: ; preds = %72 call void @llvm.lifetime.start.p0(ptr nonnull %12) call void @_ZN5typst11foundations4args4Args3eat17hfb18ecea20e575e8E(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %12, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) %97 = load i64, ptr %12, align 8, !range !26, !noundef !4 - %trunc47 = trunc nuw i64 %97 to i1 + %trunc48 = trunc nuw i64 %97 to i1 %98 = getelementptr inbounds nuw i8, ptr %12, i64 8 %99 = load i64, ptr %98, align 8 %100 = getelementptr inbounds nuw i8, ptr %12, i64 16 %101 = load double, ptr %100, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %12) - br i1 %trunc47, label %114, label %106 + br i1 %trunc48, label %114, label %106 -102: ; preds = %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread92, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit - %103 = phi double [ %88, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread92 ], [ %91, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit ] - %.sroa.061.095 = phi ptr [ %87, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread92 ], [ %89, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit ] +102: ; preds = %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit + %103 = phi double [ %88, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93 ], [ %91, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit ] + %.sroa.062.096 = phi ptr [ %87, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93 ], [ %89, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit ] %104 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.061.095, ptr %104, align 8 + store ptr %.sroa.062.096, ptr %104, align 8 %105 = getelementptr inbounds nuw i8, ptr %0, i64 16 store double %103, ptr %105, align 8 br label %118 @@ -170124,12 +170124,12 @@ _ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit: ; preds = %72 %112 = select i1 %107, float 1.000000e+00, float %111 %113 = getelementptr inbounds nuw i8, ptr %15, i64 4 store float %108, ptr %113, align 4 - %.sroa.4.0..sroa_idx65 = getelementptr inbounds nuw i8, ptr %15, i64 8 - store float %56, ptr %.sroa.4.0..sroa_idx65, align 4 - %.sroa.5.0..sroa_idx66 = getelementptr inbounds nuw i8, ptr %15, i64 12 - store float %110, ptr %.sroa.5.0..sroa_idx66, align 4 - %.sroa.668.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 16 - store float %112, ptr %.sroa.668.0..sroa_idx, align 4 + %.sroa.4.0..sroa_idx66 = getelementptr inbounds nuw i8, ptr %15, i64 8 + store float %56, ptr %.sroa.4.0..sroa_idx66, align 4 + %.sroa.5.0..sroa_idx67 = getelementptr inbounds nuw i8, ptr %15, i64 12 + store float %110, ptr %.sroa.5.0..sroa_idx67, align 4 + %.sroa.669.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 16 + store float %112, ptr %.sroa.669.0..sroa_idx, align 4 store i32 2, ptr %15, align 4 br label %47 diff --git a/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll b/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll index 5c7fa282dee..121f03c168f 100644 --- a/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll +++ b/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll @@ -6920,7 +6920,7 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT br i1 %.not.not.not34, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %2 - %.sroa.10.0.lcssa = phi i64 [ %1, %2 ], [ %40, %.lr.ph ] + %.sroa.10.0.lcssa = phi i64 [ %1, %2 ], [ %41, %.lr.ph ] %.0.in.lcssa = phi i64 [ %.0.in32, %2 ], [ %.0.in, %.lr.ph ] %.0.lcssa = phi i64 [ %.033, %2 ], [ %.0, %.lr.ph ] %10 = add i64 %4, -2 @@ -6939,69 +6939,69 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %.sroa.17, i64 12, i1 false) %17 = icmp ult i64 %.sroa.10.1, %4 tail call void @llvm.assume(i1 %17) - %.sroa.026.0.copyload.i = load i32, ptr %16, align 4, !noalias !1355 + %.sroa.024.0.copyload.i = load i32, ptr %16, align 4, !noalias !1355 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 4 %.sroa.4.0.copyload.i = load i32, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !1355 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 8 - %.sroa.5.0.copyload.i = load i32, ptr %.sroa.5.0..sroa_idx.i, align 4, !noalias !1355 - %18 = icmp ugt i64 %.sroa.10.1, %1 - br i1 %18, label %.lr.ph.i, label %.loopexit + %18 = load i32, ptr %.sroa.5.0..sroa_idx.i, align 4, !noalias !1355 + %19 = icmp ugt i64 %.sroa.10.1, %1 + br i1 %19, label %.lr.ph.i, label %.loopexit .lr.ph.i: ; preds = %15 - %19 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i, i32 2147483647) - br label %20 + %20 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i, i32 2147483647) + br label %21 -20: ; preds = %27, %.lr.ph.i - %.sroa.9.027.i = phi i64 [ %.sroa.10.1, %.lr.ph.i ], [ %22, %27 ] - %21 = add i64 %.sroa.9.027.i, -1 - %22 = lshr i64 %21, 1 - %23 = icmp ult i64 %22, %4 - tail call void @llvm.assume(i1 %23) - %24 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %6, i64 %22 - %25 = getelementptr i8, ptr %24, i64 4 - %.val10.i = load i32, ptr %25, align 4, !alias.scope !1358, !noalias !1363, !noundef !4 - %26 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i, i32 2147483647) - %switch.i.not.i = icmp ugt i32 %26, %19 - br i1 %switch.i.not.i, label %27, label %.loopexit +21: ; preds = %28, %.lr.ph.i + %.sroa.9.025.i = phi i64 [ %.sroa.10.1, %.lr.ph.i ], [ %23, %28 ] + %22 = add i64 %.sroa.9.025.i, -1 + %23 = lshr i64 %22, 1 + %24 = icmp ult i64 %23, %4 + tail call void @llvm.assume(i1 %24) + %25 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %6, i64 %23 + %26 = getelementptr i8, ptr %25, i64 4 + %.val10.i = load i32, ptr %26, align 4, !alias.scope !1358, !noalias !1363, !noundef !4 + %27 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i, i32 2147483647) + %switch.i.not.i = icmp ugt i32 %27, %20 + br i1 %switch.i.not.i, label %28, label %.loopexit -27: ; preds = %20 - %28 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.9.027.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %28, ptr noundef nonnull align 4 dereferenceable(12) %24, i64 12, i1 false), !noalias !1355 - %29 = icmp ugt i64 %22, %1 - br i1 %29, label %20, label %.loopexit - -.loopexit: ; preds = %27, %20, %15 - %.sroa.9.0.lcssa.i = phi i64 [ %.sroa.10.1, %15 ], [ %22, %27 ], [ %.sroa.9.027.i, %20 ] - %30 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.9.0.lcssa.i - store i32 %.sroa.026.0.copyload.i, ptr %30, align 4, !noalias !1355 - %.sroa.19.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %30, i64 4 +28: ; preds = %21 + %29 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.9.025.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 4 dereferenceable(12) %25, i64 12, i1 false), !noalias !1355 + %30 = icmp ugt i64 %23, %1 + br i1 %30, label %21, label %.loopexit + +.loopexit: ; preds = %28, %21, %15 + %.sroa.9.0.lcssa.i = phi i64 [ %.sroa.10.1, %15 ], [ %23, %28 ], [ %.sroa.9.025.i, %21 ] + %31 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.9.0.lcssa.i + store i32 %.sroa.024.0.copyload.i, ptr %31, align 4, !noalias !1355 + %.sroa.19.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %31, i64 4 store i32 %.sroa.4.0.copyload.i, ptr %.sroa.19.24..sroa_idx.i, align 4, !noalias !1355 - %.sroa.20.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %30, i64 8 - store i32 %.sroa.5.0.copyload.i, ptr %.sroa.20.24..sroa_idx.i, align 4, !noalias !1355 + %.sroa.20.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %31, i64 8 + store i32 %18, ptr %.sroa.20.24..sroa_idx.i, align 4, !noalias !1355 ret void .lr.ph: ; preds = %2, %.lr.ph %.037 = phi i64 [ %.0, %.lr.ph ], [ %.033, %2 ] %.0.in36 = phi i64 [ %.0.in, %.lr.ph ], [ %.0.in32, %2 ] - %.sroa.10.035 = phi i64 [ %40, %.lr.ph ], [ %1, %2 ] - %31 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.037 - %32 = add nuw i64 %.0.in36, 2 - %33 = icmp ult i64 %32, %4 - tail call void @llvm.assume(i1 %33) - %34 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %32 - %35 = getelementptr i8, ptr %31, i64 4 - %.val = load i32, ptr %35, align 4, !alias.scope !1366, !noalias !1371, !noundef !4 - %36 = getelementptr i8, ptr %34, i64 4 - %.val24 = load i32, ptr %36, align 4, !alias.scope !1371, !noalias !1366, !noundef !4 - %37 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24, i32 2147483647) - %38 = tail call i32 @llvm.uadd.sat.i32(i32 %.val, i32 2147483647) - %switch.i = icmp ule i32 %37, %38 - %39 = zext i1 %switch.i to i64 - %40 = add nuw i64 %.037, %39 - %41 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %40 - %42 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.10.035 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %42, ptr noundef nonnull align 4 dereferenceable(12) %41, i64 12, i1 false) - %.0.in = shl i64 %40, 1 + %.sroa.10.035 = phi i64 [ %41, %.lr.ph ], [ %1, %2 ] + %32 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.037 + %33 = add nuw i64 %.0.in36, 2 + %34 = icmp ult i64 %33, %4 + tail call void @llvm.assume(i1 %34) + %35 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %33 + %36 = getelementptr i8, ptr %32, i64 4 + %.val = load i32, ptr %36, align 4, !alias.scope !1366, !noalias !1371, !noundef !4 + %37 = getelementptr i8, ptr %35, i64 4 + %.val24 = load i32, ptr %37, align 4, !alias.scope !1371, !noalias !1366, !noundef !4 + %38 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24, i32 2147483647) + %39 = tail call i32 @llvm.uadd.sat.i32(i32 %.val, i32 2147483647) + %switch.i = icmp ule i32 %38, %39 + %40 = zext i1 %switch.i to i64 + %41 = add nuw i64 %.037, %40 + %42 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %41 + %43 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.10.035 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %43, ptr noundef nonnull align 4 dereferenceable(12) %42, i64 12, i1 false) + %.0.in = shl i64 %41, 1 %.0 = or disjoint i64 %.0.in, 1 %.not.not.not = icmp ult i64 %.0.in, %9 br i1 %.not.not.not, label %.lr.ph, label %._crit_edge @@ -7232,7 +7232,7 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT "_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit.thread": ; preds = %2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit" %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i8 2, ptr %14, align 4 - br label %54 + br label %55 15: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit" %.sroa.6.0..sroa_idx4 = getelementptr inbounds nuw i8, ptr %12, i64 9 @@ -7265,7 +7265,7 @@ _ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.e br i1 %.not.not.not34.i.not.i, label %._crit_edge.i.i, label %.lr.ph.i5.i ._crit_edge.i.i: ; preds = %.lr.ph.i5.i, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i - %.sroa.10.0.lcssa.i.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ], [ %50, %.lr.ph.i5.i ] + %.sroa.10.0.lcssa.i.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ], [ %51, %.lr.ph.i5.i ] %.0.in.lcssa.i.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ], [ %.0.in.i.i, %.lr.ph.i5.i ] %.0.lcssa.i.i = phi i64 [ 1, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ], [ %.0.i.i, %.lr.ph.i5.i ] %23 = add i64 %5, -3 @@ -7284,79 +7284,79 @@ _ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.e call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 8 dereferenceable(12) %.sroa.17.i.i, i64 12, i1 false), !noalias !1418 %30 = icmp ult i64 %.sroa.10.1.i.i, %7 tail call void @llvm.assume(i1 %30) - %.sroa.026.0.copyload.i.i.i = load i32, ptr %29, align 4, !noalias !1421 + %.sroa.024.0.copyload.i.i.i = load i32, ptr %29, align 4, !noalias !1421 %.sroa.4.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %29, i64 4 %.sroa.4.0.copyload.i.i.i = load i32, ptr %.sroa.4.0..sroa_idx.i.i.i, align 4, !noalias !1421 %.sroa.5.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %29, i64 8 - %.sroa.5.0.copyload.i.i.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i.i, align 4, !noalias !1421 + %31 = load i32, ptr %.sroa.5.0..sroa_idx.i.i.i, align 4, !noalias !1421 %.not.i = icmp eq i64 %.sroa.10.1.i.i, 0 br i1 %.not.i, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i", label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %28 - %31 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i.i.i, i32 2147483647) - br label %32 - -32: ; preds = %39, %.lr.ph.i.i.i - %.sroa.9.027.i.i.i = phi i64 [ %.sroa.10.1.i.i, %.lr.ph.i.i.i ], [ %34, %39 ] - %33 = add i64 %.sroa.9.027.i.i.i, -1 - %34 = lshr i64 %33, 1 - %35 = icmp ult i64 %34, %7 - tail call void @llvm.assume(i1 %35) - %36 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %11, i64 %34 - %37 = getelementptr i8, ptr %36, i64 4 - %.val10.i.i.i = load i32, ptr %37, align 4, !alias.scope !1424, !noalias !1429, !noundef !4 - %38 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i.i.i, i32 2147483647) - %switch.i.not.i.i.i = icmp ugt i32 %38, %31 - br i1 %switch.i.not.i.i.i, label %39, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i" + %32 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i.i.i, i32 2147483647) + br label %33 -39: ; preds = %32 - %40 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.9.027.i.i.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %40, ptr noundef nonnull align 4 dereferenceable(12) %36, i64 12, i1 false), !noalias !1421 - %.not6.i = icmp eq i64 %34, 0 - br i1 %.not6.i, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i", label %32 +33: ; preds = %40, %.lr.ph.i.i.i + %.sroa.9.025.i.i.i = phi i64 [ %.sroa.10.1.i.i, %.lr.ph.i.i.i ], [ %35, %40 ] + %34 = add i64 %.sroa.9.025.i.i.i, -1 + %35 = lshr i64 %34, 1 + %36 = icmp ult i64 %35, %7 + tail call void @llvm.assume(i1 %36) + %37 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %11, i64 %35 + %38 = getelementptr i8, ptr %37, i64 4 + %.val10.i.i.i = load i32, ptr %38, align 4, !alias.scope !1424, !noalias !1429, !noundef !4 + %39 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i.i.i, i32 2147483647) + %switch.i.not.i.i.i = icmp ugt i32 %39, %32 + br i1 %switch.i.not.i.i.i, label %40, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i" + +40: ; preds = %33 + %41 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.9.025.i.i.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %41, ptr noundef nonnull align 4 dereferenceable(12) %37, i64 12, i1 false), !noalias !1421 + %.not6.i = icmp eq i64 %35, 0 + br i1 %.not6.i, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i", label %33 .lr.ph.i5.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i, %.lr.ph.i5.i %.037.i.i = phi i64 [ %.0.i.i, %.lr.ph.i5.i ], [ 1, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ] %.0.in36.i.i = phi i64 [ %.0.in.i.i, %.lr.ph.i5.i ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ] - %.sroa.10.035.i.i = phi i64 [ %50, %.lr.ph.i5.i ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ] - %41 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.037.i.i - %42 = add nuw i64 %.0.in36.i.i, 2 - %43 = icmp ult i64 %42, %7 - tail call void @llvm.assume(i1 %43) - %44 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %42 - %45 = getelementptr i8, ptr %41, i64 4 - %.val.i.i = load i32, ptr %45, align 4, !alias.scope !1432, !noalias !1437, !noundef !4 - %46 = getelementptr i8, ptr %44, i64 4 - %.val24.i.i = load i32, ptr %46, align 4, !alias.scope !1440, !noalias !1441, !noundef !4 - %47 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24.i.i, i32 2147483647) - %48 = tail call i32 @llvm.uadd.sat.i32(i32 %.val.i.i, i32 2147483647) - %switch.i.i.i = icmp ule i32 %47, %48 - %49 = zext i1 %switch.i.i.i to i64 - %50 = add nuw i64 %.037.i.i, %49 - %51 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %50 - %52 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.10.035.i.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %52, ptr noundef nonnull align 4 dereferenceable(12) %51, i64 12, i1 false), !noalias !1418 - %.0.in.i.i = shl i64 %50, 1 + %.sroa.10.035.i.i = phi i64 [ %51, %.lr.ph.i5.i ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ] + %42 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.037.i.i + %43 = add nuw i64 %.0.in36.i.i, 2 + %44 = icmp ult i64 %43, %7 + tail call void @llvm.assume(i1 %44) + %45 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %43 + %46 = getelementptr i8, ptr %42, i64 4 + %.val.i.i = load i32, ptr %46, align 4, !alias.scope !1432, !noalias !1437, !noundef !4 + %47 = getelementptr i8, ptr %45, i64 4 + %.val24.i.i = load i32, ptr %47, align 4, !alias.scope !1440, !noalias !1441, !noundef !4 + %48 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24.i.i, i32 2147483647) + %49 = tail call i32 @llvm.uadd.sat.i32(i32 %.val.i.i, i32 2147483647) + %switch.i.i.i = icmp ule i32 %48, %49 + %50 = zext i1 %switch.i.i.i to i64 + %51 = add nuw i64 %.037.i.i, %50 + %52 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %51 + %53 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.10.035.i.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %53, ptr noundef nonnull align 4 dereferenceable(12) %52, i64 12, i1 false), !noalias !1418 + %.0.in.i.i = shl i64 %51, 1 %.0.i.i = or disjoint i64 %.0.in.i.i, 1 %.not.not.not.i.i = icmp ult i64 %.0.in.i.i, %22 br i1 %.not.not.not.i.i, label %.lr.ph.i5.i, label %._crit_edge.i.i -"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i": ; preds = %39, %32, %28 - %.sroa.9.0.lcssa.i.i.i = phi i64 [ 0, %28 ], [ 0, %39 ], [ %.sroa.9.027.i.i.i, %32 ] - %53 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.9.0.lcssa.i.i.i - store i32 %.sroa.026.0.copyload.i.i.i, ptr %53, align 4, !noalias !1421 - %.sroa.19.24..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %53, i64 4 +"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i": ; preds = %40, %33, %28 + %.sroa.9.0.lcssa.i.i.i = phi i64 [ 0, %28 ], [ 0, %40 ], [ %.sroa.9.025.i.i.i, %33 ] + %54 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.9.0.lcssa.i.i.i + store i32 %.sroa.024.0.copyload.i.i.i, ptr %54, align 4, !noalias !1421 + %.sroa.19.24..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %54, i64 4 store i32 %.sroa.4.0.copyload.i.i.i, ptr %.sroa.19.24..sroa_idx.i.i.i, align 4, !noalias !1421 - %.sroa.20.24..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %53, i64 8 - store i32 %.sroa.5.0.copyload.i.i.i, ptr %.sroa.20.24..sroa_idx.i.i.i, align 4, !noalias !1421 + %.sroa.20.24..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %54, i64 8 + store i32 %31, ptr %.sroa.20.24..sroa_idx.i.i.i, align 4, !noalias !1421 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.17.i.i) br label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$3pop28_$u7b$$u7b$closure$u7d$$u7d$17hf1bf564457dce586E.llvm.1710812290736639100.exit" "_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$3pop28_$u7b$$u7b$closure$u7d$$u7d$17hf1bf564457dce586E.llvm.1710812290736639100.exit": ; preds = %15, %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i" call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, i64 12, i1 false) - br label %54 + br label %55 -54: ; preds = %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$3pop28_$u7b$$u7b$closure$u7d$$u7d$17hf1bf564457dce586E.llvm.1710812290736639100.exit", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit.thread" +55: ; preds = %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$3pop28_$u7b$$u7b$closure$u7d$$u7d$17hf1bf564457dce586E.llvm.1710812290736639100.exit", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit.thread" ret void } @@ -7430,7 +7430,7 @@ _ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.e br i1 %.not.not.not34.i.not, label %._crit_edge.i, label %.lr.ph.i5 ._crit_edge.i: ; preds = %.lr.ph.i5, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit - %.sroa.10.0.lcssa.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ], [ %44, %.lr.ph.i5 ] + %.sroa.10.0.lcssa.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ], [ %45, %.lr.ph.i5 ] %.0.in.lcssa.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ], [ %.0.in.i, %.lr.ph.i5 ] %.0.lcssa.i = phi i64 [ 1, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ], [ %.0.i, %.lr.ph.i5 ] %17 = add i64 %5, -2 @@ -7449,71 +7449,71 @@ _ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.e call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %23, ptr noundef nonnull align 8 dereferenceable(12) %.sroa.17.i, i64 12, i1 false), !noalias !1442 %24 = icmp ult i64 %.sroa.10.1.i, %5 tail call void @llvm.assume(i1 %24) - %.sroa.026.0.copyload.i.i = load i32, ptr %23, align 4, !noalias !1445 + %.sroa.024.0.copyload.i.i = load i32, ptr %23, align 4, !noalias !1445 %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %23, i64 4 %.sroa.4.0.copyload.i.i = load i32, ptr %.sroa.4.0..sroa_idx.i.i, align 4, !noalias !1445 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %23, i64 8 - %.sroa.5.0.copyload.i.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i, align 4, !noalias !1445 + %25 = load i32, ptr %.sroa.5.0..sroa_idx.i.i, align 4, !noalias !1445 %.not = icmp eq i64 %.sroa.10.1.i, 0 br i1 %.not, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit", label %.lr.ph.i.i .lr.ph.i.i: ; preds = %22 - %25 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i.i, i32 2147483647) - br label %26 + %26 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i.i, i32 2147483647) + br label %27 -26: ; preds = %33, %.lr.ph.i.i - %.sroa.9.027.i.i = phi i64 [ %.sroa.10.1.i, %.lr.ph.i.i ], [ %28, %33 ] - %27 = add i64 %.sroa.9.027.i.i, -1 - %28 = lshr i64 %27, 1 - %29 = icmp ult i64 %28, %5 - tail call void @llvm.assume(i1 %29) - %30 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %10, i64 %28 - %31 = getelementptr i8, ptr %30, i64 4 - %.val10.i.i = load i32, ptr %31, align 4, !alias.scope !1448, !noalias !1453, !noundef !4 - %32 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i.i, i32 2147483647) - %switch.i.not.i.i = icmp ugt i32 %32, %25 - br i1 %switch.i.not.i.i, label %33, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit" - -33: ; preds = %26 - %34 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.9.027.i.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %34, ptr noundef nonnull align 4 dereferenceable(12) %30, i64 12, i1 false), !noalias !1445 - %.not6 = icmp eq i64 %28, 0 - br i1 %.not6, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit", label %26 +27: ; preds = %34, %.lr.ph.i.i + %.sroa.9.025.i.i = phi i64 [ %.sroa.10.1.i, %.lr.ph.i.i ], [ %29, %34 ] + %28 = add i64 %.sroa.9.025.i.i, -1 + %29 = lshr i64 %28, 1 + %30 = icmp ult i64 %29, %5 + tail call void @llvm.assume(i1 %30) + %31 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %10, i64 %29 + %32 = getelementptr i8, ptr %31, i64 4 + %.val10.i.i = load i32, ptr %32, align 4, !alias.scope !1448, !noalias !1453, !noundef !4 + %33 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i.i, i32 2147483647) + %switch.i.not.i.i = icmp ugt i32 %33, %26 + br i1 %switch.i.not.i.i, label %34, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit" + +34: ; preds = %27 + %35 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.9.025.i.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %35, ptr noundef nonnull align 4 dereferenceable(12) %31, i64 12, i1 false), !noalias !1445 + %.not6 = icmp eq i64 %29, 0 + br i1 %.not6, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit", label %27 .lr.ph.i5: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit, %.lr.ph.i5 %.037.i = phi i64 [ %.0.i, %.lr.ph.i5 ], [ 1, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ] %.0.in36.i = phi i64 [ %.0.in.i, %.lr.ph.i5 ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ] - %.sroa.10.035.i = phi i64 [ %44, %.lr.ph.i5 ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ] - %35 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.037.i - %36 = add nuw i64 %.0.in36.i, 2 - %37 = icmp ult i64 %36, %5 - tail call void @llvm.assume(i1 %37) - %38 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %36 - %39 = getelementptr i8, ptr %35, i64 4 - %.val.i = load i32, ptr %39, align 4, !alias.scope !1456, !noalias !1461, !noundef !4 - %40 = getelementptr i8, ptr %38, i64 4 - %.val24.i = load i32, ptr %40, align 4, !alias.scope !1464, !noalias !1465, !noundef !4 - %41 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24.i, i32 2147483647) - %42 = tail call i32 @llvm.uadd.sat.i32(i32 %.val.i, i32 2147483647) - %switch.i.i = icmp ule i32 %41, %42 - %43 = zext i1 %switch.i.i to i64 - %44 = add nuw i64 %.037.i, %43 - %45 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %44 - %46 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.10.035.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %46, ptr noundef nonnull align 4 dereferenceable(12) %45, i64 12, i1 false), !noalias !1442 - %.0.in.i = shl i64 %44, 1 + %.sroa.10.035.i = phi i64 [ %45, %.lr.ph.i5 ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ] + %36 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.037.i + %37 = add nuw i64 %.0.in36.i, 2 + %38 = icmp ult i64 %37, %5 + tail call void @llvm.assume(i1 %38) + %39 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %37 + %40 = getelementptr i8, ptr %36, i64 4 + %.val.i = load i32, ptr %40, align 4, !alias.scope !1456, !noalias !1461, !noundef !4 + %41 = getelementptr i8, ptr %39, i64 4 + %.val24.i = load i32, ptr %41, align 4, !alias.scope !1464, !noalias !1465, !noundef !4 + %42 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24.i, i32 2147483647) + %43 = tail call i32 @llvm.uadd.sat.i32(i32 %.val.i, i32 2147483647) + %switch.i.i = icmp ule i32 %42, %43 + %44 = zext i1 %switch.i.i to i64 + %45 = add nuw i64 %.037.i, %44 + %46 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %45 + %47 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.10.035.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %47, ptr noundef nonnull align 4 dereferenceable(12) %46, i64 12, i1 false), !noalias !1442 + %.0.in.i = shl i64 %45, 1 %.0.i = or disjoint i64 %.0.in.i, 1 %.not.not.not.i = icmp ult i64 %.0.in.i, %16 br i1 %.not.not.not.i, label %.lr.ph.i5, label %._crit_edge.i -"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit": ; preds = %26, %33, %22 - %.sroa.9.0.lcssa.i.i = phi i64 [ 0, %22 ], [ %.sroa.9.027.i.i, %26 ], [ 0, %33 ] - %47 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.9.0.lcssa.i.i - store i32 %.sroa.026.0.copyload.i.i, ptr %47, align 4, !noalias !1445 - %.sroa.19.24..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %47, i64 4 +"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit": ; preds = %27, %34, %22 + %.sroa.9.0.lcssa.i.i = phi i64 [ 0, %22 ], [ %.sroa.9.025.i.i, %27 ], [ 0, %34 ] + %48 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.9.0.lcssa.i.i + store i32 %.sroa.024.0.copyload.i.i, ptr %48, align 4, !noalias !1445 + %.sroa.19.24..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %48, i64 4 store i32 %.sroa.4.0.copyload.i.i, ptr %.sroa.19.24..sroa_idx.i.i, align 4, !noalias !1445 - %.sroa.20.24..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %47, i64 8 - store i32 %.sroa.5.0.copyload.i.i, ptr %.sroa.20.24..sroa_idx.i.i, align 4, !noalias !1445 + %.sroa.20.24..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %48, i64 8 + store i32 %25, ptr %.sroa.20.24..sroa_idx.i.i, align 4, !noalias !1445 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.17.i) br label %7 } @@ -7635,45 +7635,45 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT %15 = icmp ult i64 %4, %13 tail call void @llvm.assume(i1 %15) %16 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %4 - %.sroa.026.0.copyload.i = load i32, ptr %16, align 4, !noalias !1487 + %.sroa.024.0.copyload.i = load i32, ptr %16, align 4, !noalias !1487 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 4 %.sroa.4.0.copyload.i = load i32, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !1487 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 8 - %.sroa.5.0.copyload.i = load i32, ptr %.sroa.5.0..sroa_idx.i, align 4, !noalias !1487 + %17 = load i32, ptr %.sroa.5.0..sroa_idx.i, align 4, !noalias !1487 %.not = icmp eq i64 %4, 0 br i1 %.not, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit", label %.lr.ph.i .lr.ph.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" - %17 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i, i32 2147483647) - br label %18 + %18 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i, i32 2147483647) + br label %19 -18: ; preds = %25, %.lr.ph.i - %.sroa.9.027.i = phi i64 [ %4, %.lr.ph.i ], [ %20, %25 ] - %19 = add i64 %.sroa.9.027.i, -1 - %20 = lshr i64 %19, 1 - %21 = icmp ult i64 %20, %13 - tail call void @llvm.assume(i1 %21) - %22 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %14, i64 %20 - %23 = getelementptr i8, ptr %22, i64 4 - %.val10.i = load i32, ptr %23, align 4, !alias.scope !1490, !noalias !1495, !noundef !4 - %24 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i, i32 2147483647) - %switch.i.not.i = icmp ugt i32 %24, %17 - br i1 %switch.i.not.i, label %25, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit" - -25: ; preds = %18 - %26 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %.sroa.9.027.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(12) %22, i64 12, i1 false), !noalias !1487 - %.not1 = icmp eq i64 %20, 0 - br i1 %.not1, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit", label %18 - -"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit": ; preds = %18, %25, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" - %.sroa.9.0.lcssa.i = phi i64 [ 0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" ], [ 0, %25 ], [ %.sroa.9.027.i, %18 ] - %27 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %.sroa.9.0.lcssa.i - store i32 %.sroa.026.0.copyload.i, ptr %27, align 4, !noalias !1487 - %.sroa.19.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %27, i64 4 +19: ; preds = %26, %.lr.ph.i + %.sroa.9.025.i = phi i64 [ %4, %.lr.ph.i ], [ %21, %26 ] + %20 = add i64 %.sroa.9.025.i, -1 + %21 = lshr i64 %20, 1 + %22 = icmp ult i64 %21, %13 + tail call void @llvm.assume(i1 %22) + %23 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %14, i64 %21 + %24 = getelementptr i8, ptr %23, i64 4 + %.val10.i = load i32, ptr %24, align 4, !alias.scope !1490, !noalias !1495, !noundef !4 + %25 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i, i32 2147483647) + %switch.i.not.i = icmp ugt i32 %25, %18 + br i1 %switch.i.not.i, label %26, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit" + +26: ; preds = %19 + %27 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %.sroa.9.025.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %27, ptr noundef nonnull align 4 dereferenceable(12) %23, i64 12, i1 false), !noalias !1487 + %.not1 = icmp eq i64 %21, 0 + br i1 %.not1, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit", label %19 + +"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit": ; preds = %19, %26, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" + %.sroa.9.0.lcssa.i = phi i64 [ 0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" ], [ 0, %26 ], [ %.sroa.9.025.i, %19 ] + %28 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %.sroa.9.0.lcssa.i + store i32 %.sroa.024.0.copyload.i, ptr %28, align 4, !noalias !1487 + %.sroa.19.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %28, i64 4 store i32 %.sroa.4.0.copyload.i, ptr %.sroa.19.24..sroa_idx.i, align 4, !noalias !1487 - %.sroa.20.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %27, i64 8 - store i32 %.sroa.5.0.copyload.i, ptr %.sroa.20.24..sroa_idx.i, align 4, !noalias !1487 + %.sroa.20.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %28, i64 8 + store i32 %17, ptr %.sroa.20.24..sroa_idx.i, align 4, !noalias !1487 ret void } @@ -7758,46 +7758,46 @@ define hidden noundef range(i64 0, -1) i64 @"_ZN5alloc11collections11binary_heap %8 = icmp ult i64 %2, %7 tail call void @llvm.assume(i1 %8) %9 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %2 - %.sroa.026.0.copyload = load i32, ptr %9, align 4 + %.sroa.024.0.copyload = load i32, ptr %9, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 4 %.sroa.4.0.copyload = load i32, ptr %.sroa.4.0..sroa_idx, align 4 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 - %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4 - %10 = icmp ugt i64 %2, %1 - br i1 %10, label %.lr.ph, label %._crit_edge + %10 = load i32, ptr %.sroa.5.0..sroa_idx, align 4 + %11 = icmp ugt i64 %2, %1 + br i1 %11, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %3 - %11 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload, i32 2147483647) - br label %13 + %12 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload, i32 2147483647) + br label %14 -._crit_edge: ; preds = %20, %13, %3 - %.sroa.9.0.lcssa = phi i64 [ %2, %3 ], [ %.sroa.9.027, %13 ], [ %15, %20 ] - %12 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %.sroa.9.0.lcssa - store i32 %.sroa.026.0.copyload, ptr %12, align 4 - %.sroa.19.24..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 4 +._crit_edge: ; preds = %21, %14, %3 + %.sroa.9.0.lcssa = phi i64 [ %2, %3 ], [ %.sroa.9.025, %14 ], [ %16, %21 ] + %13 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %.sroa.9.0.lcssa + store i32 %.sroa.024.0.copyload, ptr %13, align 4 + %.sroa.19.24..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 4 store i32 %.sroa.4.0.copyload, ptr %.sroa.19.24..sroa_idx, align 4 - %.sroa.20.24..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 8 - store i32 %.sroa.5.0.copyload, ptr %.sroa.20.24..sroa_idx, align 4 + %.sroa.20.24..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 8 + store i32 %10, ptr %.sroa.20.24..sroa_idx, align 4 ret i64 %.sroa.9.0.lcssa -13: ; preds = %.lr.ph, %20 - %.sroa.9.027 = phi i64 [ %2, %.lr.ph ], [ %15, %20 ] - %14 = add i64 %.sroa.9.027, -1 - %15 = lshr i64 %14, 1 - %16 = icmp ult i64 %15, %7 - tail call void @llvm.assume(i1 %16) - %17 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %5, i64 %15 - %18 = getelementptr i8, ptr %17, i64 4 - %.val10 = load i32, ptr %18, align 4, !alias.scope !1371, !noalias !1366, !noundef !4 - %19 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10, i32 2147483647) - %switch.i.not = icmp ugt i32 %19, %11 - br i1 %switch.i.not, label %20, label %._crit_edge - -20: ; preds = %13 - %21 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %.sroa.9.027 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %21, ptr noundef nonnull align 4 dereferenceable(12) %17, i64 12, i1 false) - %22 = icmp ugt i64 %15, %1 - br i1 %22, label %13, label %._crit_edge +14: ; preds = %.lr.ph, %21 + %.sroa.9.025 = phi i64 [ %2, %.lr.ph ], [ %16, %21 ] + %15 = add i64 %.sroa.9.025, -1 + %16 = lshr i64 %15, 1 + %17 = icmp ult i64 %16, %7 + tail call void @llvm.assume(i1 %17) + %18 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %5, i64 %16 + %19 = getelementptr i8, ptr %18, i64 4 + %.val10 = load i32, ptr %19, align 4, !alias.scope !1371, !noalias !1366, !noundef !4 + %20 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10, i32 2147483647) + %switch.i.not = icmp ugt i32 %20, %12 + br i1 %switch.i.not, label %21, label %._crit_edge + +21: ; preds = %14 + %22 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %.sroa.9.025 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %22, ptr noundef nonnull align 4 dereferenceable(12) %18, i64 12, i1 false) + %23 = icmp ugt i64 %16, %1 + br i1 %23, label %14, label %._crit_edge } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable From 92858bfb29266a51994174604f1e804f5a9e9f4e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 01:43:36 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/assimp/optimized/zip.ll | 244 +++---- bench/box2d/optimized/world.ll | 42 +- bench/ceres/optimized/block_sparse_matrix.ll | 28 +- bench/ceres/optimized/cgnr_solver.ll | 4 +- bench/cmake/optimized/cmComputeLinkDepends.ll | 616 ++++++++-------- bench/duckdb/optimized/fastcover.ll | 44 +- bench/duckdb/optimized/miniz.ll | 220 +++--- bench/faiss/optimized/Clustering.ll | 398 +++++------ bench/g2o/optimized/edge_project_xyz.ll | 46 +- bench/g2o/optimized/optimizable_graph.ll | 40 +- .../optimization_algorithm_dogleg.ll | 248 +++---- bench/g2o/optimized/slam2d_linear.ll | 108 +-- bench/g2o/optimized/solver_dense.ll | 32 +- bench/hdf5/optimized/sio_perf.ll | 64 +- bench/libigl/optimized/eigs.ll | 136 ++-- bench/llvm/optimized/ASTReader.ll | 26 +- bench/llvm/optimized/MsgPackDocument.ll | 298 ++++---- bench/meshlab/optimized/edit_align.ll | 28 +- bench/meshlab/optimized/miniz.ll | 60 +- bench/meshlab/optimized/shell.ll | 268 +++---- bench/nori/optimized/accel.ll | 284 ++++---- bench/ockam-rs/optimized/1411u8drt798uxi8.ll | 6 +- bench/open3d/optimized/VoxelGrid.ll | 396 +++++------ bench/opencv/optimized/gfluidbackend.ll | 50 +- bench/openvdb/optimized/Prune.ll | 576 +++++++-------- bench/php/optimized/zip.ll | 36 +- bench/proj/optimized/adams.ll | 192 ++--- bench/proj/optimized/airocean.ll | 300 ++++---- bench/proj/optimized/datum_set.ll | 350 ++++----- bench/proj/optimized/geod_set.ll | 306 ++++---- bench/proj/optimized/helmert.ll | 60 +- bench/proj/optimized/horner.ll | 46 +- bench/proj/optimized/info.ll | 240 +++---- bench/proj/optimized/param.ll | 88 +-- bench/proj/optimized/tmerc.ll | 60 +- bench/quickjs/optimized/qjsc.ll | 80 +-- bench/quickjs/optimized/quickjs-libc.ll | 132 ++-- bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll | 14 +- bench/typst-rs/optimized/2i78fvbm4wocuesi.ll | 662 +++++++++--------- bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll | 120 ++-- .../wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll | 392 +++++------ 41 files changed, 3670 insertions(+), 3670 deletions(-) diff --git a/bench/assimp/optimized/zip.ll b/bench/assimp/optimized/zip.ll index b5419e0ea7f..2858c5ddefd 100644 --- a/bench/assimp/optimized/zip.ll +++ b/bench/assimp/optimized/zip.ll @@ -12251,8 +12251,8 @@ mz_zip_set_error.exit271: ; preds = %132 143: ; preds = %132 %144 = call i32 @llvm.umax.i32(i32 %78, i32 %86) - %.not428 = icmp eq i32 %144, 0 - br i1 %.not428, label %154, label %145 + %.not430 = icmp eq i32 %144, 0 + br i1 %.not430, label %154, label %145 145: ; preds = %143 %146 = zext nneg i32 %144 to i64 @@ -12267,7 +12267,7 @@ mz_zip_set_error.exit271: ; preds = %132 mz_zip_set_error.exit269: ; preds = %145 %153 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 16, ptr %153, align 4 - br label %.thread397 + br label %.thread399 154: ; preds = %145, %143 %.sroa.0.1.ph = phi ptr [ %151, %145 ], [ null, %143 ] @@ -12284,7 +12284,7 @@ mz_zip_set_error.exit269: ; preds = %145 mz_zip_set_error.exit267: ; preds = %155 %159 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 20, ptr %159, align 4 - br label %.thread397 + br label %.thread399 160: ; preds = %155 %bcmp = call i32 @bcmp(ptr nonnull %129, ptr %.sroa.0.1.ph, i64 %128) @@ -12294,17 +12294,17 @@ mz_zip_set_error.exit267: ; preds = %155 mz_zip_set_error.exit265: ; preds = %160 %161 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 30, ptr %161, align 4 - br label %.thread397 + br label %.thread399 162: ; preds = %160, %154 %.not233 = icmp eq i32 %86, 0 - br i1 %.not233, label %.thread420, label %163 + br i1 %.not233, label %.thread422, label %163 163: ; preds = %162 %164 = icmp eq i64 %99, 4294967295 %165 = icmp eq i64 %112, 4294967295 %or.cond8 = select i1 %164, i1 true, i1 %165 - br i1 %or.cond8, label %166, label %.thread420 + br i1 %or.cond8, label %166, label %.thread422 166: ; preds = %163 %167 = load ptr, ptr %19, align 8 @@ -12316,7 +12316,7 @@ mz_zip_set_error.exit265: ; preds = %160 mz_zip_set_error.exit263: ; preds = %166 %170 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 20, ptr %170, align 4 - br label %.thread397 + br label %.thread399 .preheader: ; preds = %166, %209 %.0209 = phi ptr [ %211, %209 ], [ %.sroa.0.1.ph, %166 ] @@ -12327,7 +12327,7 @@ mz_zip_set_error.exit263: ; preds = %166 mz_zip_set_error.exit261: ; preds = %.preheader %172 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 9, ptr %172, align 4 - br label %.thread397 + br label %.thread399 173: ; preds = %.preheader %174 = getelementptr inbounds nuw i8, ptr %.0209, i64 2 @@ -12346,7 +12346,7 @@ mz_zip_set_error.exit261: ; preds = %.preheader mz_zip_set_error.exit259: ; preds = %173 %185 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 9, ptr %185, align 4 - br label %.thread397 + br label %.thread399 186: ; preds = %173 %187 = load i16, ptr %.0209, align 1 @@ -12360,7 +12360,7 @@ mz_zip_set_error.exit259: ; preds = %173 mz_zip_set_error.exit257: ; preds = %189 %191 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 9, ptr %191, align 4 - br label %.thread397 + br label %.thread399 192: ; preds = %189 %193 = getelementptr inbounds nuw i8, ptr %.0209, i64 4 @@ -12379,16 +12379,16 @@ mz_zip_set_error.exit257: ; preds = %189 %206 = zext i32 %205 to i64 %207 = shl nuw i64 %206, 32 %208 = or disjoint i64 %207, %203 - br label %.thread420 + br label %.thread422 209: ; preds = %186 %210 = zext nneg i32 %183 to i64 %211 = getelementptr inbounds nuw i8, ptr %.0209, i64 %210 %212 = sub i32 %.0207, %183 %.not235 = icmp eq i32 %212, 0 - br i1 %.not235, label %.thread420, label %.preheader + br i1 %.not235, label %.thread422, label %.preheader -.thread420: ; preds = %209, %192, %163, %162 +.thread422: ; preds = %209, %192, %163, %162 %.0198 = phi i64 [ %112, %163 ], [ %112, %162 ], [ %200, %192 ], [ %112, %209 ] %.0193 = phi i64 [ %99, %163 ], [ %99, %162 ], [ %208, %192 ], [ %99, %209 ] %213 = phi i1 [ false, %163 ], [ false, %162 ], [ true, %192 ], [ false, %209 ] @@ -12400,7 +12400,7 @@ mz_zip_set_error.exit257: ; preds = %189 %or.cond12 = select i1 %or.cond10, i1 true, i1 %217 br i1 %or.cond12, label %331, label %218 -218: ; preds = %.thread420 +218: ; preds = %.thread422 call void @llvm.lifetime.start.p0(ptr nonnull %8) %219 = getelementptr inbounds nuw i8, ptr %11, i64 100 %220 = load i32, ptr %219, align 4 @@ -12411,7 +12411,7 @@ mz_zip_set_error.exit257: ; preds = %189 %225 = select i1 %222, i64 24, i64 16 %226 = call i64 %223(ptr noundef %224, i64 noundef %139, ptr noundef nonnull %8, i64 noundef %225) #36 %.not236 = icmp eq i64 %226, %225 - br i1 %.not236, label %227, label %.thread426 + br i1 %.not236, label %227, label %.thread428 227: ; preds = %218 %228 = load i32, ptr %8, align 16 @@ -12452,49 +12452,49 @@ mz_zip_set_error.exit257: ; preds = %189 %.sroa.gep.sroa.gep360.val = load i8, ptr %.sroa.gep.sroa.gep360, align 8 %253 = select i1 %229, i8 %.sroa.gep.sroa.gep360.val, i8 %.sroa.gep.val %254 = zext i8 %253 to i64 - %.sroa.gep458 = getelementptr inbounds nuw i8, ptr %8, i64 9 - %.sroa.gep458.val = load i8, ptr %.sroa.gep458, align 1 - %.sroa.gep.sroa.gep369.val511 = load i8, ptr %.sroa.gep.sroa.gep369, align 1 - %255 = select i1 %229, i8 %.sroa.gep458.val, i8 %.sroa.gep.sroa.gep369.val511 + %.sroa.gep460 = getelementptr inbounds nuw i8, ptr %8, i64 9 + %.sroa.gep460.val = load i8, ptr %.sroa.gep460, align 1 + %.sroa.gep.sroa.gep369.val513 = load i8, ptr %.sroa.gep.sroa.gep369, align 1 + %255 = select i1 %229, i8 %.sroa.gep460.val, i8 %.sroa.gep.sroa.gep369.val513 %256 = zext i8 %255 to i64 %257 = shl nuw nsw i64 %256, 8 %258 = or disjoint i64 %257, %254 - %.sroa.gep460 = getelementptr inbounds nuw i8, ptr %8, i64 10 - %.sroa.gep460.val = load i8, ptr %.sroa.gep460, align 2 - %.sroa.gep.sroa.gep366.val512 = load i8, ptr %.sroa.gep.sroa.gep366, align 2 - %259 = select i1 %229, i8 %.sroa.gep460.val, i8 %.sroa.gep.sroa.gep366.val512 + %.sroa.gep462 = getelementptr inbounds nuw i8, ptr %8, i64 10 + %.sroa.gep462.val = load i8, ptr %.sroa.gep462, align 2 + %.sroa.gep.sroa.gep366.val514 = load i8, ptr %.sroa.gep.sroa.gep366, align 2 + %259 = select i1 %229, i8 %.sroa.gep462.val, i8 %.sroa.gep.sroa.gep366.val514 %260 = zext i8 %259 to i64 %261 = shl nuw nsw i64 %260, 16 %262 = or disjoint i64 %258, %261 - %.sroa.gep462 = getelementptr inbounds nuw i8, ptr %8, i64 11 - %.sroa.gep462.val = load i8, ptr %.sroa.gep462, align 1 - %.sroa.gep.sroa.gep363.val513 = load i8, ptr %.sroa.gep.sroa.gep363, align 1 - %263 = select i1 %229, i8 %.sroa.gep462.val, i8 %.sroa.gep.sroa.gep363.val513 + %.sroa.gep464 = getelementptr inbounds nuw i8, ptr %8, i64 11 + %.sroa.gep464.val = load i8, ptr %.sroa.gep464, align 1 + %.sroa.gep.sroa.gep363.val515 = load i8, ptr %.sroa.gep.sroa.gep363, align 1 + %263 = select i1 %229, i8 %.sroa.gep464.val, i8 %.sroa.gep.sroa.gep363.val515 %264 = zext i8 %263 to i64 %265 = shl nuw nsw i64 %264, 24 %266 = or disjoint i64 %262, %265 - %.sroa.gep464 = getelementptr inbounds nuw i8, ptr %8, i64 12 - %.sroa.gep464.val = load i8, ptr %.sroa.gep464, align 4 - %.sroa.gep.sroa.gep360.val514 = load i8, ptr %.sroa.gep.sroa.gep360, align 8 - %267 = select i1 %229, i8 %.sroa.gep464.val, i8 %.sroa.gep.sroa.gep360.val514 + %.sroa.gep466 = getelementptr inbounds nuw i8, ptr %8, i64 12 + %.sroa.gep466.val = load i8, ptr %.sroa.gep466, align 4 + %.sroa.gep.sroa.gep360.val516 = load i8, ptr %.sroa.gep.sroa.gep360, align 8 + %267 = select i1 %229, i8 %.sroa.gep466.val, i8 %.sroa.gep.sroa.gep360.val516 %268 = zext i8 %267 to i64 - %.sroa.gep466 = getelementptr inbounds nuw i8, ptr %8, i64 13 - %.sroa.gep466.val = load i8, ptr %.sroa.gep466, align 1 - %.sroa.gep458.val515 = load i8, ptr %.sroa.gep458, align 1 - %269 = select i1 %229, i8 %.sroa.gep466.val, i8 %.sroa.gep458.val515 + %.sroa.gep468 = getelementptr inbounds nuw i8, ptr %8, i64 13 + %.sroa.gep468.val = load i8, ptr %.sroa.gep468, align 1 + %.sroa.gep460.val517 = load i8, ptr %.sroa.gep460, align 1 + %269 = select i1 %229, i8 %.sroa.gep468.val, i8 %.sroa.gep460.val517 %270 = zext i8 %269 to i64 br i1 %or.cond14, label %271, label %314 271: ; preds = %227 - %.sroa.gep468 = getelementptr inbounds nuw i8, ptr %8, i64 14 - %.sroa.gep468.val = load i8, ptr %.sroa.gep468, align 2 - %.sroa.gep460.val516 = load i8, ptr %.sroa.gep460, align 2 - %272 = select i1 %229, i8 %.sroa.gep468.val, i8 %.sroa.gep460.val516 + %.sroa.gep470 = getelementptr inbounds nuw i8, ptr %8, i64 14 + %.sroa.gep470.val = load i8, ptr %.sroa.gep470, align 2 + %.sroa.gep462.val518 = load i8, ptr %.sroa.gep462, align 2 + %272 = select i1 %229, i8 %.sroa.gep470.val, i8 %.sroa.gep462.val518 %273 = zext i8 %272 to i64 - %.sroa.gep470 = getelementptr inbounds nuw i8, ptr %8, i64 15 - %.sroa.gep470.val = load i8, ptr %.sroa.gep470, align 1 - %.sroa.gep462.val517 = load i8, ptr %.sroa.gep462, align 1 - %274 = select i1 %229, i8 %.sroa.gep470.val, i8 %.sroa.gep462.val517 + %.sroa.gep472 = getelementptr inbounds nuw i8, ptr %8, i64 15 + %.sroa.gep472.val = load i8, ptr %.sroa.gep472, align 1 + %.sroa.gep464.val519 = load i8, ptr %.sroa.gep464, align 1 + %274 = select i1 %229, i8 %.sroa.gep472.val, i8 %.sroa.gep464.val519 %275 = zext i8 %274 to i64 %276 = shl nuw i64 %275, 56 %277 = shl nuw nsw i64 %273, 48 @@ -12504,48 +12504,48 @@ mz_zip_set_error.exit257: ; preds = %189 %281 = or disjoint i64 %280, %277 %282 = or disjoint i64 %281, %276 %283 = or disjoint i64 %282, %266 - %.sroa.gep472 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %.sroa.gep472.val = load i8, ptr %.sroa.gep472, align 16 - %.sroa.gep464.val518 = load i8, ptr %.sroa.gep464, align 4 - %284 = select i1 %229, i8 %.sroa.gep472.val, i8 %.sroa.gep464.val518 + %.sroa.gep474 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %.sroa.gep474.val = load i8, ptr %.sroa.gep474, align 16 + %.sroa.gep466.val520 = load i8, ptr %.sroa.gep466, align 4 + %284 = select i1 %229, i8 %.sroa.gep474.val, i8 %.sroa.gep466.val520 %285 = zext i8 %284 to i64 - %.sroa.gep474 = getelementptr inbounds nuw i8, ptr %8, i64 17 - %.sroa.gep474.val = load i8, ptr %.sroa.gep474, align 1 - %.sroa.gep466.val519 = load i8, ptr %.sroa.gep466, align 1 - %286 = select i1 %229, i8 %.sroa.gep474.val, i8 %.sroa.gep466.val519 + %.sroa.gep476 = getelementptr inbounds nuw i8, ptr %8, i64 17 + %.sroa.gep476.val = load i8, ptr %.sroa.gep476, align 1 + %.sroa.gep468.val521 = load i8, ptr %.sroa.gep468, align 1 + %286 = select i1 %229, i8 %.sroa.gep476.val, i8 %.sroa.gep468.val521 %287 = zext i8 %286 to i64 %288 = shl nuw nsw i64 %287, 8 - %.sroa.gep476 = getelementptr inbounds nuw i8, ptr %8, i64 18 - %.sroa.gep476.val = load i8, ptr %.sroa.gep476, align 2 - %.sroa.gep468.val520 = load i8, ptr %.sroa.gep468, align 2 - %289 = select i1 %229, i8 %.sroa.gep476.val, i8 %.sroa.gep468.val520 + %.sroa.gep478 = getelementptr inbounds nuw i8, ptr %8, i64 18 + %.sroa.gep478.val = load i8, ptr %.sroa.gep478, align 2 + %.sroa.gep470.val522 = load i8, ptr %.sroa.gep470, align 2 + %289 = select i1 %229, i8 %.sroa.gep478.val, i8 %.sroa.gep470.val522 %290 = zext i8 %289 to i64 %291 = shl nuw nsw i64 %290, 16 - %.sroa.gep478 = getelementptr inbounds nuw i8, ptr %8, i64 19 - %.sroa.gep478.val = load i8, ptr %.sroa.gep478, align 1 - %.sroa.gep470.val521 = load i8, ptr %.sroa.gep470, align 1 - %292 = select i1 %229, i8 %.sroa.gep478.val, i8 %.sroa.gep470.val521 + %.sroa.gep480 = getelementptr inbounds nuw i8, ptr %8, i64 19 + %.sroa.gep480.val = load i8, ptr %.sroa.gep480, align 1 + %.sroa.gep472.val523 = load i8, ptr %.sroa.gep472, align 1 + %292 = select i1 %229, i8 %.sroa.gep480.val, i8 %.sroa.gep472.val523 %293 = zext i8 %292 to i64 %294 = shl nuw nsw i64 %293, 24 - %.sroa.gep480 = getelementptr inbounds nuw i8, ptr %8, i64 20 - %.sroa.gep480.val = load i8, ptr %.sroa.gep480, align 4 - %.sroa.gep472.val522 = load i8, ptr %.sroa.gep472, align 16 - %295 = select i1 %229, i8 %.sroa.gep480.val, i8 %.sroa.gep472.val522 + %.sroa.gep482 = getelementptr inbounds nuw i8, ptr %8, i64 20 + %.sroa.gep482.val = load i8, ptr %.sroa.gep482, align 4 + %.sroa.gep474.val524 = load i8, ptr %.sroa.gep474, align 16 + %295 = select i1 %229, i8 %.sroa.gep482.val, i8 %.sroa.gep474.val524 %296 = zext i8 %295 to i64 - %.sroa.gep482 = getelementptr inbounds nuw i8, ptr %8, i64 21 - %.sroa.gep482.val = load i8, ptr %.sroa.gep482, align 1 - %.sroa.gep474.val523 = load i8, ptr %.sroa.gep474, align 1 - %297 = select i1 %229, i8 %.sroa.gep482.val, i8 %.sroa.gep474.val523 + %.sroa.gep484 = getelementptr inbounds nuw i8, ptr %8, i64 21 + %.sroa.gep484.val = load i8, ptr %.sroa.gep484, align 1 + %.sroa.gep476.val525 = load i8, ptr %.sroa.gep476, align 1 + %297 = select i1 %229, i8 %.sroa.gep484.val, i8 %.sroa.gep476.val525 %298 = zext i8 %297 to i64 - %.sroa.gep484 = getelementptr inbounds nuw i8, ptr %8, i64 22 - %.sroa.gep484.val = load i8, ptr %.sroa.gep484, align 2 - %.sroa.gep476.val524 = load i8, ptr %.sroa.gep476, align 2 - %299 = select i1 %229, i8 %.sroa.gep484.val, i8 %.sroa.gep476.val524 + %.sroa.gep486 = getelementptr inbounds nuw i8, ptr %8, i64 22 + %.sroa.gep486.val = load i8, ptr %.sroa.gep486, align 2 + %.sroa.gep478.val526 = load i8, ptr %.sroa.gep478, align 2 + %299 = select i1 %229, i8 %.sroa.gep486.val, i8 %.sroa.gep478.val526 %300 = zext i8 %299 to i64 - %.sroa.gep486 = getelementptr inbounds nuw i8, ptr %8, i64 23 - %.sroa.gep486.val = load i8, ptr %.sroa.gep486, align 1 - %.sroa.gep478.val525 = load i8, ptr %.sroa.gep478, align 1 - %301 = select i1 %229, i8 %.sroa.gep486.val, i8 %.sroa.gep478.val525 + %.sroa.gep488 = getelementptr inbounds nuw i8, ptr %8, i64 23 + %.sroa.gep488.val = load i8, ptr %.sroa.gep488, align 1 + %.sroa.gep480.val527 = load i8, ptr %.sroa.gep480, align 1 + %301 = select i1 %229, i8 %.sroa.gep488.val, i8 %.sroa.gep480.val527 %302 = zext i8 %301 to i64 %303 = shl nuw i64 %302, 56 %304 = shl nuw nsw i64 %300, 48 @@ -12563,17 +12563,17 @@ mz_zip_set_error.exit257: ; preds = %189 314: ; preds = %227 %315 = shl nuw nsw i64 %270, 8 - %.sroa.gep454 = getelementptr inbounds nuw i8, ptr %8, i64 14 - %.sroa.gep454.val = load i8, ptr %.sroa.gep454, align 2 - %.sroa.gep446.val509 = load i8, ptr %.sroa.gep460, align 2 - %316 = select i1 %229, i8 %.sroa.gep454.val, i8 %.sroa.gep446.val509 + %.sroa.gep456 = getelementptr inbounds nuw i8, ptr %8, i64 14 + %.sroa.gep456.val = load i8, ptr %.sroa.gep456, align 2 + %.sroa.gep448.val511 = load i8, ptr %.sroa.gep462, align 2 + %316 = select i1 %229, i8 %.sroa.gep456.val, i8 %.sroa.gep448.val511 %317 = zext i8 %316 to i64 %318 = shl nuw nsw i64 %317, 16 %319 = or disjoint i64 %315, %318 - %.sroa.gep456 = getelementptr inbounds nuw i8, ptr %8, i64 15 - %.sroa.gep456.val = load i8, ptr %.sroa.gep456, align 1 - %.sroa.gep448.val510 = load i8, ptr %.sroa.gep462, align 1 - %320 = select i1 %229, i8 %.sroa.gep456.val, i8 %.sroa.gep448.val510 + %.sroa.gep458 = getelementptr inbounds nuw i8, ptr %8, i64 15 + %.sroa.gep458.val = load i8, ptr %.sroa.gep458, align 1 + %.sroa.gep450.val512 = load i8, ptr %.sroa.gep464, align 1 + %320 = select i1 %229, i8 %.sroa.gep458.val, i8 %.sroa.gep450.val512 %321 = zext i8 %320 to i64 %322 = shl nuw nsw i64 %321, 24 %323 = or disjoint i64 %319, %322 @@ -12591,20 +12591,20 @@ mz_zip_set_error.exit257: ; preds = %189 %or.cond245 = select i1 %.not237, i1 %.not238, i1 false %.not239 = icmp eq i64 %.0190, %326 %or.cond246 = select i1 %or.cond245, i1 %.not239, i1 false - br i1 %or.cond246, label %330, label %.thread426 + br i1 %or.cond246, label %330, label %.thread428 -.thread426: ; preds = %325, %218 +.thread428: ; preds = %325, %218 %.sink = phi i32 [ 20, %218 ], [ 30, %325 ] %329 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 %.sink, ptr %329, align 4 call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %.thread397 + br label %.thread399 330: ; preds = %325 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %335 -331: ; preds = %.thread420 +331: ; preds = %.thread422 %332 = getelementptr inbounds nuw i8, ptr %4, i64 24 %333 = load i32, ptr %332, align 8 %.not240 = icmp eq i32 %125, %333 @@ -12617,7 +12617,7 @@ mz_zip_set_error.exit257: ; preds = %189 mz_zip_set_error.exit251: ; preds = %331 %334 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 30, ptr %334, align 4 - br label %.thread397 + br label %.thread399 335: ; preds = %330, %331 %336 = phi i32 [ %250, %330 ], [ %125, %331 ] @@ -12644,15 +12644,15 @@ mz_zip_set_error.exit: ; preds = %344 store i32 30, ptr %346, align 4 br label %mz_zip_set_error.exit287 -.thread397: ; preds = %mz_zip_set_error.exit257, %mz_zip_set_error.exit259, %mz_zip_set_error.exit261, %.thread426, %mz_zip_set_error.exit263, %mz_zip_set_error.exit251, %mz_zip_set_error.exit265, %mz_zip_set_error.exit267, %mz_zip_set_error.exit269 - %.sroa.0.1394 = phi ptr [ %.sroa.0.1.ph, %mz_zip_set_error.exit251 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit265 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit267 ], [ null, %mz_zip_set_error.exit269 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit263 ], [ %.sroa.0.1.ph, %.thread426 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit261 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit259 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit257 ] +.thread399: ; preds = %mz_zip_set_error.exit257, %mz_zip_set_error.exit259, %mz_zip_set_error.exit261, %.thread428, %mz_zip_set_error.exit263, %mz_zip_set_error.exit251, %mz_zip_set_error.exit265, %mz_zip_set_error.exit267, %mz_zip_set_error.exit269 + %.sroa.0.1396 = phi ptr [ %.sroa.0.1.ph, %mz_zip_set_error.exit251 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit265 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit267 ], [ null, %mz_zip_set_error.exit269 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit263 ], [ %.sroa.0.1.ph, %.thread426 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit261 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit259 ], [ %.sroa.0.1.ph, %mz_zip_set_error.exit257 ] %347 = load ptr, ptr %16, align 8 %348 = getelementptr inbounds nuw i8, ptr %0, i64 64 %349 = load ptr, ptr %348, align 8 - call void %347(ptr noundef %349, ptr noundef %.sroa.0.1394) #36 + call void %347(ptr noundef %349, ptr noundef %.sroa.0.1396) #36 br label %mz_zip_set_error.exit287 -mz_zip_set_error.exit287: ; preds = %21, %3, %335, %344, %342, %39, %mz_zip_get_cdh.exit, %.thread397, %mz_zip_set_error.exit, %mz_zip_set_error.exit271, %mz_zip_set_error.exit273, %mz_zip_set_error.exit275, %mz_zip_set_error.exit277, %mz_zip_set_error.exit279, %mz_zip_set_error.exit281, %mz_zip_set_error.exit283, %mz_zip_set_error.exit285 +mz_zip_set_error.exit287: ; preds = %21, %3, %335, %344, %342, %39, %mz_zip_get_cdh.exit, %.thread399, %mz_zip_set_error.exit, %mz_zip_set_error.exit271, %mz_zip_set_error.exit273, %mz_zip_set_error.exit275, %mz_zip_set_error.exit277, %mz_zip_set_error.exit279, %mz_zip_set_error.exit281, %mz_zip_set_error.exit283, %mz_zip_set_error.exit285 %.0 = phi i32 [ 0, %mz_zip_set_error.exit285 ], [ 0, %mz_zip_set_error.exit283 ], [ 0, %mz_zip_set_error.exit281 ], [ 0, %mz_zip_set_error.exit277 ], [ 0, %mz_zip_set_error.exit275 ], [ 0, %mz_zip_set_error.exit273 ], [ 0, %mz_zip_set_error.exit271 ], [ 0, %.thread397 ], [ 0, %mz_zip_set_error.exit ], [ 0, %mz_zip_set_error.exit279 ], [ 0, %mz_zip_get_cdh.exit ], [ 1, %39 ], [ 0, %342 ], [ 1, %344 ], [ 1, %335 ], [ 0, %3 ], [ 0, %21 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) @@ -17450,7 +17450,7 @@ mz_zip_array_resize.exit459: ; preds = %143 %155 = add i64 %114, %154 %156 = call i64 %152(ptr noundef %153, i64 noundef %155, ptr noundef nonnull %149, i64 noundef %144) #36 %.not353 = icmp eq i64 %156, %144 - br i1 %.not353, label %.preheader653, label %mz_zip_set_error.exit418 + br i1 %.not353, label %.preheader661, label %mz_zip_set_error.exit418 mz_zip_set_error.exit418: ; preds = %mz_zip_array_resize.exit459 %157 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -17461,13 +17461,13 @@ mz_zip_set_error.exit418: ; preds = %mz_zip_array_resize store i32 20, ptr %160, align 4 br label %mz_zip_set_error.exit438 -.preheader653: ; preds = %mz_zip_array_resize.exit459, %191 +.preheader661: ; preds = %mz_zip_array_resize.exit459, %191 %.0330 = phi i32 [ %194, %191 ], [ %130, %mz_zip_array_resize.exit459 ] %.0328 = phi ptr [ %193, %191 ], [ %149, %mz_zip_array_resize.exit459 ] %161 = icmp ult i32 %.0330, 4 br i1 %161, label %mz_zip_set_error.exit416, label %166 -mz_zip_set_error.exit416: ; preds = %.preheader653 +mz_zip_set_error.exit416: ; preds = %.preheader661 %162 = getelementptr inbounds nuw i8, ptr %0, i64 48 %163 = load ptr, ptr %162, align 8 %164 = load ptr, ptr %147, align 8 @@ -17476,7 +17476,7 @@ mz_zip_set_error.exit416: ; preds = %.preheader653 store i32 9, ptr %165, align 4 br label %mz_zip_set_error.exit438 -166: ; preds = %.preheader653 +166: ; preds = %.preheader661 %167 = getelementptr inbounds nuw i8, ptr %.0328, i64 2 %168 = load i8, ptr %167, align 1 %169 = zext i8 %168 to i64 @@ -17522,7 +17522,7 @@ mz_zip_set_error.exit412: ; preds = %185 %193 = getelementptr inbounds nuw i8, ptr %.0328, i64 %192 %194 = sub i32 %.0330, %176 %.not354 = icmp eq i32 %194, 0 - br i1 %.not354, label %.loopexit, label %.preheader653 + br i1 %.not354, label %.loopexit, label %.preheader661 .loopexit: ; preds = %191, %185 %195 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -17587,8 +17587,8 @@ mz_zip_set_error.exit408: ; preds = %211 .preheader: ; preds = %220 %229 = add i64 %213, 30 - %.not358664 = icmp eq i64 %135, 0 - br i1 %.not358664, label %252, label %.lr.ph + %.not358672 = icmp eq i64 %135, 0 + br i1 %.not358672, label %252, label %.lr.ph mz_zip_set_error.exit406: ; preds = %220 %230 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -17596,13 +17596,13 @@ mz_zip_set_error.exit406: ; preds = %220 br label %mz_zip_set_error.exit438 .lr.ph: ; preds = %.preheader, %247 - %.0313667 = phi i64 [ %250, %247 ], [ %135, %.preheader ] - %.0314666 = phi i64 [ %248, %247 ], [ %114, %.preheader ] - %.0315665 = phi i64 [ %249, %247 ], [ %229, %.preheader ] - %231 = call i64 @llvm.umin.i64(i64 %.0313667, i64 65536) + %.0313675 = phi i64 [ %250, %247 ], [ %135, %.preheader ] + %.0314674 = phi i64 [ %248, %247 ], [ %114, %.preheader ] + %.0315673 = phi i64 [ %249, %247 ], [ %229, %.preheader ] + %231 = call i64 @llvm.umin.i64(i64 %.0313675, i64 65536) %232 = load ptr, ptr %16, align 8 %233 = load ptr, ptr %106, align 8 - %234 = call i64 %232(ptr noundef %233, i64 noundef %.0314666, ptr noundef %227, i64 noundef %231) #36 + %234 = call i64 %232(ptr noundef %233, i64 noundef %.0314674, ptr noundef %227, i64 noundef %231) #36 %.not373 = icmp eq i64 %234, %231 br i1 %.not373, label %239, label %mz_zip_set_error.exit404 @@ -17618,7 +17618,7 @@ mz_zip_set_error.exit404: ; preds = %.lr.ph 239: ; preds = %.lr.ph %240 = load ptr, ptr %214, align 8 %241 = load ptr, ptr %216, align 8 - %242 = call i64 %240(ptr noundef %241, i64 noundef %.0315665, ptr noundef %227, i64 noundef %231) #36 + %242 = call i64 %240(ptr noundef %241, i64 noundef %.0315673, ptr noundef %227, i64 noundef %231) #36 %.not374 = icmp eq i64 %242, %231 br i1 %.not374, label %247, label %mz_zip_set_error.exit402 @@ -17632,9 +17632,9 @@ mz_zip_set_error.exit402: ; preds = %239 br label %mz_zip_set_error.exit438 247: ; preds = %239 - %248 = add i64 %231, %.0314666 - %249 = add i64 %231, %.0315665 - %250 = sub i64 %.0313667, %231 + %248 = add i64 %231, %.0314674 + %249 = add i64 %231, %.0315673 + %250 = sub i64 %.0313675, %231 %.not358 = icmp eq i64 %250, 0 br i1 %.not358, label %._crit_edge, label %.lr.ph @@ -17681,7 +17681,7 @@ mz_zip_set_error.exit400: ; preds = %263 %270 = load i32, ptr %227, align 1 %271 = icmp eq i32 %270, 134695760 %272 = select i1 %271, i32 24, i32 20 - br label %.thread611 + br label %.thread619 273: ; preds = %256 %274 = call i64 %261(ptr noundef %262, i64 noundef %.0314.lcssa, ptr noundef %227, i64 noundef 16) #36 @@ -17758,11 +17758,11 @@ mz_zip_set_error.exit400: ; preds = %263 store i8 %309, ptr %322, align 1 %323 = getelementptr inbounds nuw i8, ptr %227, i64 20 store i32 0, ptr %323, align 1 - br label %.thread611 + br label %.thread619 324: ; preds = %275 %325 = select i1 %277, i32 16, i32 12 - br label %.thread611 + br label %.thread619 326: ; preds = %273 %327 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -17773,17 +17773,17 @@ mz_zip_set_error.exit400: ; preds = %263 store i32 20, ptr %330, align 4 br label %mz_zip_set_error.exit438 -.thread611: ; preds = %324, %281, %269 - %storemerge652 = phi i32 [ %272, %269 ], [ %325, %324 ], [ 24, %281 ] - store i32 %storemerge652, ptr %4, align 4 +.thread619: ; preds = %324, %281, %269 + %storemerge660 = phi i32 [ %272, %269 ], [ %325, %324 ], [ 24, %281 ] + store i32 %storemerge660, ptr %4, align 4 %331 = load ptr, ptr %214, align 8 %332 = load ptr, ptr %216, align 8 - %333 = zext nneg i32 %storemerge652 to i64 + %333 = zext nneg i32 %storemerge660 to i64 %334 = call i64 %331(ptr noundef %332, i64 noundef %.0315.lcssa, ptr noundef nonnull %227, i64 noundef %333) #36 %.not363 = icmp eq i64 %334, %333 br i1 %.not363, label %339, label %mz_zip_set_error.exit396 -mz_zip_set_error.exit396: ; preds = %.thread611 +mz_zip_set_error.exit396: ; preds = %.thread619 %335 = getelementptr inbounds nuw i8, ptr %0, i64 48 %336 = load ptr, ptr %335, align 8 %337 = load ptr, ptr %223, align 8 @@ -17792,7 +17792,7 @@ mz_zip_set_error.exit396: ; preds = %.thread611 store i32 19, ptr %338, align 4 br label %mz_zip_set_error.exit438 -339: ; preds = %.thread611 +339: ; preds = %.thread619 %340 = add i64 %.0315.lcssa, %333 br label %341 @@ -17819,8 +17819,8 @@ mz_zip_set_error.exit396: ; preds = %.thread611 %352 = getelementptr inbounds nuw i8, ptr %7, i64 40 %.20..20..20..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 20 store i64 -1, ptr %.20..20..20..sroa_idx, align 4 - %.42..42..42..sroa_idx745 = getelementptr inbounds nuw i8, ptr %6, i64 42 - store i32 -1, ptr %.42..42..42..sroa_idx745, align 2 + %.42..42..42..sroa_idx753 = getelementptr inbounds nuw i8, ptr %6, i64 42 + store i32 -1, ptr %.42..42..42..sroa_idx753, align 2 %.val501 = load i64, ptr %352, align 8 %353 = call fastcc i32 @mz_zip_writer_update_zip64_extension_block(ptr noundef %8, ptr noundef %0, ptr noundef %350, i32 noundef %69, i64 %134, i64 %.val501, i64 %213) %.not367 = icmp eq i32 %353, 0 @@ -17957,7 +17957,7 @@ mz_zip_set_error.exit392: ; preds = %400, %409 %425 = getelementptr inbounds nuw i8, ptr %421, i64 %424 %426 = mul i64 %360, %423 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %425, ptr align 1 %413, i64 %426, i1 false) - %.pre684 = load i64, ptr %72, align 8 + %.pre692 = load i64, ptr %72, align 8 br label %442 mz_zip_array_push_back.exit474: ; preds = %417 @@ -17994,7 +17994,7 @@ mz_zip_set_error.exit390: ; preds = %431, %440 br label %477 442: ; preds = %420, %419 - %443 = phi i64 [ %.pre684, %420 ], [ %414, %419 ] + %443 = phi i64 [ %.pre692, %420 ], [ %414, %419 ] %444 = zext nneg i32 %69 to i64 %445 = getelementptr inbounds nuw i8, ptr %350, i64 %444 %446 = zext nneg i32 %61 to i64 diff --git a/bench/box2d/optimized/world.ll b/bench/box2d/optimized/world.ll index af8dda46fdd..89c3a7e2b9a 100644 --- a/bench/box2d/optimized/world.ll +++ b/bench/box2d/optimized/world.ll @@ -617,8 +617,8 @@ b2SolverSetArray_Push.exit: ; preds = %16, %42 %49 = sext i32 %47 to i64 %50 = getelementptr inbounds %struct.b2SolverSet, ptr %48, i64 %49 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %50, i8 0, i64 80, i1 false) - %.sroa.4.0..sroa_idx212 = getelementptr inbounds nuw i8, ptr %50, i64 80 - store i32 %37, ptr %.sroa.4.0..sroa_idx212, align 8, !tbaa !86 + %.sroa.4.0..sroa_idx210 = getelementptr inbounds nuw i8, ptr %50, i64 80 + store i32 %37, ptr %.sroa.4.0..sroa_idx210, align 8, !tbaa !86 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %50, i64 84 store i32 0, ptr %.sroa.5.0..sroa_idx, align 4 %51 = load i32, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 @@ -645,10 +645,10 @@ b2SolverSetArray_Push.exit180: ; preds = %b2SolverSetArray_Pu %64 = sext i32 %62 to i64 %65 = getelementptr inbounds %struct.b2SolverSet, ptr %63, i64 %64 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %65, i8 0, i64 80, i1 false) - %.sroa.4214.0..sroa_idx = getelementptr inbounds nuw i8, ptr %65, i64 80 - store i32 %53, ptr %.sroa.4214.0..sroa_idx, align 8, !tbaa !86 - %.sroa.5215.0..sroa_idx = getelementptr inbounds nuw i8, ptr %65, i64 84 - store i32 0, ptr %.sroa.5215.0..sroa_idx, align 4 + %.sroa.4212.0..sroa_idx = getelementptr inbounds nuw i8, ptr %65, i64 80 + store i32 %53, ptr %.sroa.4212.0..sroa_idx, align 8, !tbaa !86 + %.sroa.5213.0..sroa_idx = getelementptr inbounds nuw i8, ptr %65, i64 84 + store i32 0, ptr %.sroa.5213.0..sroa_idx, align 4 %66 = load i32, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 %67 = add nsw i32 %66, 1 store i32 %67, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 @@ -673,10 +673,10 @@ b2SolverSetArray_Push.exit182: ; preds = %b2SolverSetArray_Pu %79 = sext i32 %77 to i64 %80 = getelementptr inbounds %struct.b2SolverSet, ptr %78, i64 %79 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %80, i8 0, i64 80, i1 false) - %.sroa.4217.0..sroa_idx = getelementptr inbounds nuw i8, ptr %80, i64 80 - store i32 %68, ptr %.sroa.4217.0..sroa_idx, align 8, !tbaa !86 - %.sroa.5218.0..sroa_idx = getelementptr inbounds nuw i8, ptr %80, i64 84 - store i32 0, ptr %.sroa.5218.0..sroa_idx, align 4 + %.sroa.4215.0..sroa_idx = getelementptr inbounds nuw i8, ptr %80, i64 80 + store i32 %68, ptr %.sroa.4215.0..sroa_idx, align 8, !tbaa !86 + %.sroa.5216.0..sroa_idx = getelementptr inbounds nuw i8, ptr %80, i64 84 + store i32 0, ptr %.sroa.5216.0..sroa_idx, align 4 %81 = load i32, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 %82 = add nsw i32 %81, 1 store i32 %82, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !92 @@ -841,9 +841,9 @@ b2SolverSetArray_Push.exit182: ; preds = %b2SolverSetArray_Pu %163 = getelementptr inbounds nuw i8, ptr %0, i64 48 %164 = load ptr, ptr %163, align 8, !tbaa !131 %165 = icmp eq ptr %164, null - %.sink228 = select i1 %165, ptr @b2DefaultRestitutionCallback, ptr %164 + %.sink226 = select i1 %165, ptr @b2DefaultRestitutionCallback, ptr %164 %166 = getelementptr inbounds nuw i8, ptr %19, i64 1584 - store ptr %.sink228, ptr %166, align 16, !tbaa !132 + store ptr %.sink226, ptr %166, align 16, !tbaa !132 %167 = getelementptr inbounds nuw i8, ptr %0, i64 56 %168 = load i8, ptr %167, align 8, !tbaa !133, !range !77, !noundef !78 %169 = getelementptr inbounds nuw i8, ptr %19, i64 1782 @@ -927,11 +927,11 @@ b2TaskContextArray_Create.exit: ; preds = %196, %189 %210 = call ptr @b2GrowAlloc(ptr noundef %205, i32 noundef %208, i32 noundef %209) #22 store ptr %210, ptr %202, align 8, !tbaa !34 store i32 %.pre, ptr %207, align 4, !tbaa !31 - %.pre229 = load i32, ptr %203, align 8, !tbaa !145 + %.pre227 = load i32, ptr %203, align 8, !tbaa !145 br label %b2TaskContextArray_Resize.exit b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_Create.exit, %206 - %211 = phi i32 [ %.pre, %b2TaskContextArray_Create.exit ], [ %.pre229, %206 ] + %211 = phi i32 [ %.pre, %b2TaskContextArray_Create.exit ], [ %.pre227, %206 ] store i32 %.pre, ptr %.sroa.421.0..sroa_idx, align 16, !tbaa !151 %212 = getelementptr inbounds nuw i8, ptr %19, i64 1320 %213 = call { ptr, i64 } @b2SensorTaskContextArray_Create(i32 noundef %211) #22 @@ -977,9 +977,9 @@ b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_ br label %.thread .lr.ph: ; preds = %b2TaskContextArray_Resize.exit, %.lr.ph - %indvars.iv225 = phi i64 [ %indvars.iv.next226, %.lr.ph ], [ 0, %b2TaskContextArray_Resize.exit ] + %indvars.iv223 = phi i64 [ %indvars.iv.next224, %.lr.ph ], [ 0, %b2TaskContextArray_Resize.exit ] %236 = load ptr, ptr %202, align 8, !tbaa !155 - %237 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %236, i64 %indvars.iv225 + %237 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %236, i64 %indvars.iv223 %238 = call { ptr, i64 } @b2CreateBitSet(i32 noundef 1024) #22 %239 = extractvalue { ptr, i64 } %238, 0 %240 = extractvalue { ptr, i64 } %238, 1 @@ -987,7 +987,7 @@ b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_ %.sroa.412.0..sroa_idx = getelementptr inbounds nuw i8, ptr %237, i64 8 store i64 %240, ptr %.sroa.412.0..sroa_idx, align 8 %241 = load ptr, ptr %202, align 8, !tbaa !155 - %242 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %241, i64 %indvars.iv225 + %242 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %241, i64 %indvars.iv223 %243 = getelementptr inbounds nuw i8, ptr %242, i64 16 %244 = call { ptr, i64 } @b2CreateBitSet(i32 noundef 256) #22 %245 = extractvalue { ptr, i64 } %244, 0 @@ -996,7 +996,7 @@ b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_ %.sroa.410.0..sroa_idx = getelementptr inbounds nuw i8, ptr %242, i64 24 store i64 %246, ptr %.sroa.410.0..sroa_idx, align 8 %247 = load ptr, ptr %202, align 8, !tbaa !155 - %248 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %247, i64 %indvars.iv225 + %248 = getelementptr inbounds nuw %struct.b2TaskContext, ptr %247, i64 %indvars.iv223 %249 = getelementptr inbounds nuw i8, ptr %248, i64 32 %250 = call { ptr, i64 } @b2CreateBitSet(i32 noundef 256) #22 %251 = extractvalue { ptr, i64 } %250, 0 @@ -1005,17 +1005,17 @@ b2TaskContextArray_Resize.exit: ; preds = %b2TaskContextArray_ %.sroa.48.0..sroa_idx = getelementptr inbounds nuw i8, ptr %248, i64 40 store i64 %252, ptr %.sroa.48.0..sroa_idx, align 8 %253 = load ptr, ptr %212, align 8, !tbaa !156 - %254 = getelementptr inbounds nuw %struct.b2SensorTaskContext, ptr %253, i64 %indvars.iv225 + %254 = getelementptr inbounds nuw %struct.b2SensorTaskContext, ptr %253, i64 %indvars.iv223 %255 = call { ptr, i64 } @b2CreateBitSet(i32 noundef 128) #22 %256 = extractvalue { ptr, i64 } %255, 0 %257 = extractvalue { ptr, i64 } %255, 1 store ptr %256, ptr %254, align 8, !tbaa !154 %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %254, i64 8 store i64 %257, ptr %.sroa.46.0..sroa_idx, align 8 - %indvars.iv.next226 = add nuw nsw i64 %indvars.iv225, 1 + %indvars.iv.next224 = add nuw nsw i64 %indvars.iv223, 1 %258 = load i32, ptr %203, align 8, !tbaa !145 %259 = sext i32 %258 to i64 - %260 = icmp slt i64 %indvars.iv.next226, %259 + %260 = icmp slt i64 %indvars.iv.next224, %259 br i1 %260, label %.lr.ph, label %._crit_edge, !llvm.loop !157 .thread: ; preds = %15, %._crit_edge diff --git a/bench/ceres/optimized/block_sparse_matrix.ll b/bench/ceres/optimized/block_sparse_matrix.ll index 0cb4f70ada8..e39f561c449 100644 --- a/bench/ceres/optimized/block_sparse_matrix.ll +++ b/bench/ceres/optimized/block_sparse_matrix.ll @@ -3873,17 +3873,17 @@ _ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideIL %37 = getelementptr inbounds nuw i8, ptr %35, i64 32 %38 = load ptr, ptr %37, align 8, !tbaa !30 %39 = load ptr, ptr %36, align 8, !tbaa !33 - %.not78 = icmp eq ptr %38, %39 - br i1 %.not78, label %._crit_edge77, label %.lr.ph76 + %.not77 = icmp eq ptr %38, %39 + br i1 %.not77, label %._crit_edge76, label %.lr.ph75 -.lr.ph76: ; preds = %_ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7setZeroEv.exit +.lr.ph75: ; preds = %_ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7setZeroEv.exit %40 = getelementptr inbounds nuw i8, ptr %0, i64 32 br label %41 -._crit_edge77: ; preds = %._crit_edge, %_ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7setZeroEv.exit +._crit_edge76: ; preds = %._crit_edge, %_ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7setZeroEv.exit ret void -41: ; preds = %.lr.ph76, %._crit_edge +41: ; preds = %.lr.ph75, %._crit_edge %42 = phi ptr [ %35, %.lr.ph76 ], [ %56, %._crit_edge ] %indvars.iv = phi i64 [ 0, %.lr.ph76 ], [ %indvars.iv.next, %._crit_edge ] %43 = phi ptr [ %39, %.lr.ph76 ], [ %60, %._crit_edge ] @@ -3892,8 +3892,8 @@ _ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideIL %46 = load ptr, ptr %45, align 8, !tbaa !44 %47 = getelementptr inbounds nuw i8, ptr %44, i64 16 %48 = load ptr, ptr %47, align 8, !tbaa !44 - %.not6473 = icmp eq ptr %46, %48 - br i1 %.not6473, label %._crit_edge, label %.lr.ph + %.not6372 = icmp eq ptr %46, %48 + br i1 %.not6372, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %41 %49 = load i32, ptr %44, align 8, !tbaa !37 @@ -3921,11 +3921,11 @@ _ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideIL %63 = sub i64 %61, %62 %64 = sdiv exact i64 %63, 40 %65 = icmp ugt i64 %64, %indvars.iv.next - br i1 %65, label %41, label %._crit_edge77, !llvm.loop !174 + br i1 %65, label %41, label %._crit_edge76, !llvm.loop !174 66: ; preds = %.lr.ph, %_ZN5Eigen8internal21dense_assignment_loopINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS3_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS5_INS6_IdLin1ELin1ELi1ELin1ELin1EEELi0ES9_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EEELi3ELi0EE3runERSS_.exit - %.sroa.034.074 = phi ptr [ %46, %.lr.ph ], [ %180, %_ZN5Eigen8internal21dense_assignment_loopINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS3_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS5_INS6_IdLin1ELin1ELi1ELin1ELin1EEELi0ES9_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EEELi3ELi0EE3runERSS_.exit ] - %67 = load i32, ptr %.sroa.034.074, align 4, !tbaa !47 + %.sroa.034.073 = phi ptr [ %46, %.lr.ph ], [ %180, %_ZN5Eigen8internal21dense_assignment_loopINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS3_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS5_INS6_IdLin1ELin1ELi1ELin1ELin1EEELi0ES9_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EEELi3ELi0EE3runERSS_.exit ] + %67 = load i32, ptr %.sroa.034.073, align 4, !tbaa !47 %68 = load ptr, ptr %34, align 8, !tbaa !25 %69 = sext i32 %67 to i64 %70 = load ptr, ptr %68, align 8, !tbaa !66 @@ -3934,7 +3934,7 @@ _ZN5Eigen9DenseBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideIL %73 = getelementptr inbounds nuw i8, ptr %71, i64 4 %74 = load i32, ptr %73, align 4, !tbaa !97 %75 = load ptr, ptr %40, align 8, !tbaa !60 - %76 = getelementptr inbounds nuw i8, ptr %.sroa.034.074, i64 4 + %76 = getelementptr inbounds nuw i8, ptr %.sroa.034.073, i64 4 %77 = load i32, ptr %76, align 4, !tbaa !82 %78 = sext i32 %77 to i64 %79 = getelementptr inbounds double, ptr %75, i64 %78 @@ -4152,9 +4152,9 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_9Transpose br i1 %179, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !179 _ZN5Eigen8internal21dense_assignment_loopINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS3_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS5_INS6_IdLin1ELin1ELi1ELin1ELin1EEELi0ES9_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EEELi3ELi0EE3runERSS_.exit: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS2_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS4_INS5_IdLin1ELin1ELi1ELin1ELin1EEELi0ES8_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EE11assignCoeffEl.exit.i21.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS2_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS4_INS5_IdLin1ELin1ELi1ELin1ELin1EEELi0ES8_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i33.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_9TransposeINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEEENS2_INS_16PartialReduxExprIKNS_12CwiseUnaryOpINS0_14scalar_abs2_opIdEEKNS4_INS5_IdLin1ELin1ELi1ELin1ELin1EEELi0ES8_EEEENS0_10member_sumIddEELi0EEEEENS0_13add_assign_opIddEELi0EE11assignCoeffEl.exit.us.i35.i, %._crit_edge.i - %180 = getelementptr inbounds nuw i8, ptr %.sroa.034.074, i64 8 - %.not64 = icmp eq ptr %180, %48 - br i1 %.not64, label %._crit_edge.loopexit, label %66 + %180 = getelementptr inbounds nuw i8, ptr %.sroa.034.073, i64 8 + %.not63 = icmp eq ptr %180, %48 + br i1 %.not63, label %._crit_edge.loopexit, label %66 } ; Function Attrs: mustprogress uwtable diff --git a/bench/ceres/optimized/cgnr_solver.ll b/bench/ceres/optimized/cgnr_solver.ll index b3ad0810451..77b35a70279 100644 --- a/bench/ceres/optimized/cgnr_solver.ll +++ b/bench/ceres/optimized/cgnr_solver.ll @@ -3562,8 +3562,8 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred store i64 %40, ptr %6, align 8, !alias.scope !255 %41 = getelementptr inbounds nuw i8, ptr %6, i64 16 store ptr %37, ptr %41, align 8 - %.sroa.415.8..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 24 - store i64 %38, ptr %.sroa.415.8..sroa_idx, align 8 + %.sroa.416.8..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 24 + store i64 %38, ptr %.sroa.416.8..sroa_idx, align 8 %42 = getelementptr inbounds nuw i8, ptr %6, i64 48 store i64 %39, ptr %42, align 8, !alias.scope !255 %43 = getelementptr inbounds nuw i8, ptr %2, i64 8 diff --git a/bench/cmake/optimized/cmComputeLinkDepends.ll b/bench/cmake/optimized/cmComputeLinkDepends.ll index ed6e4eaa040..b78ffca38f7 100644 --- a/bench/cmake/optimized/cmComputeLinkDepends.ll +++ b/bench/cmake/optimized/cmComputeLinkDepends.ll @@ -8523,7 +8523,7 @@ define dso_local void @_ZN20cmComputeLinkDepends20CleanConstraintGraphEv(ptr nou ret void .lr.ph: ; preds = %1, %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit - %.sroa.019.025 = phi ptr [ %136, %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit ], [ %3, %1 ] + %.sroa.019.025 = phi ptr [ %135, %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit ], [ %3, %1 ] %6 = load ptr, ptr %.sroa.019.025, align 8, !tbaa !681 %7 = getelementptr inbounds nuw i8, ptr %.sroa.019.025, i64 8 %8 = load ptr, ptr %7, align 8, !tbaa !681 @@ -8540,7 +8540,7 @@ define dso_local void @_ZN20cmComputeLinkDepends20CleanConstraintGraphEv(ptr nou %16 = xor i64 %15, 126 tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEElNS0_5__ops15_Iter_less_iterEEvT_SA_T0_T1_(ptr %6, ptr %8, i64 noundef %16) %17 = icmp sgt i64 %12, 512 - br i1 %17, label %18, label %80 + br i1 %17, label %18, label %79 18: ; preds = %9 %19 = getelementptr inbounds nuw i8, ptr %6, i64 512 @@ -8549,253 +8549,253 @@ define dso_local void @_ZN20cmComputeLinkDepends20CleanConstraintGraphEv(ptr nou br i1 %.not4.i.i.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %18, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit - %.sroa.0.05.i.i.i.i = phi ptr [ %79, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit ], [ %19, %18 ] + %.sroa.0.05.i.i.i.i = phi ptr [ %78, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit ], [ %19, %18 ] %.sroa.08.0.copyload.i = load i64, ptr %.sroa.0.05.i.i.i.i, align 8 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 8 - %20 = load i16, ptr %.sroa.5.0..sroa_idx.i, align 8 - %21 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 16 - %22 = load ptr, ptr %21, align 8, !tbaa !644 - %23 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 24 - %24 = load ptr, ptr %23, align 8, !tbaa !364 + %.sroa.5.0.copyload.i = load i16, ptr %.sroa.5.0..sroa_idx.i, align 8 + %20 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 16 + %21 = load ptr, ptr %20, align 8, !tbaa !644 + %22 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 24 + %23 = load ptr, ptr %22, align 8, !tbaa !364 %.sroa.0.016.i = getelementptr inbounds i8, ptr %.sroa.0.05.i.i.i.i, i64 -32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %21, i8 0, i64 16, i1 false) - %25 = load i64, ptr %.sroa.0.016.i, align 8, !tbaa !650 - %26 = icmp ult i64 %.sroa.08.0.copyload.i, %25 - br i1 %26, label %.lr.ph.i, label %._crit_edge.thread.i + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %20, i8 0, i64 16, i1 false) + %24 = load i64, ptr %.sroa.0.016.i, align 8, !tbaa !650 + %25 = icmp ult i64 %.sroa.08.0.copyload.i, %24 + br i1 %25, label %.lr.ph.i, label %._crit_edge.thread.i ._crit_edge.thread.i: ; preds = %.lr.ph.i.i.i.i - store ptr %22, ptr %21, align 8, !tbaa !683 - store ptr %24, ptr %23, align 8, !tbaa !364 + store ptr %21, ptr %20, align 8, !tbaa !683 + store ptr %23, ptr %22, align 8, !tbaa !364 br label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit .lr.ph.i: ; preds = %.lr.ph.i.i.i.i, %_ZN11cmGraphEdgeaSEOS_.exit.i %.sroa.0.018.i = phi ptr [ %.sroa.0.0.i, %_ZN11cmGraphEdgeaSEOS_.exit.i ], [ %.sroa.0.016.i, %.lr.ph.i.i.i.i ] %.sroa.013.017.i = phi ptr [ %.sroa.0.018.i, %_ZN11cmGraphEdgeaSEOS_.exit.i ], [ %.sroa.0.05.i.i.i.i, %.lr.ph.i.i.i.i ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.013.017.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.018.i, i64 10, i1 false) - %27 = getelementptr inbounds nuw i8, ptr %.sroa.013.017.i, i64 16 - %28 = getelementptr inbounds i8, ptr %.sroa.013.017.i, i64 -16 - %29 = load ptr, ptr %28, align 8, !tbaa !644 - %30 = getelementptr inbounds i8, ptr %.sroa.013.017.i, i64 -8 - %31 = load ptr, ptr %30, align 8, !tbaa !364 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %28, i8 0, i64 16, i1 false) - store ptr %29, ptr %27, align 8, !tbaa !683 - %32 = getelementptr inbounds nuw i8, ptr %.sroa.013.017.i, i64 24 - %33 = load ptr, ptr %32, align 8, !tbaa !364 - store ptr %31, ptr %32, align 8, !tbaa !364 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %33, null - br i1 %.not.i.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit.i, label %34 - -34: ; preds = %.lr.ph.i - %35 = getelementptr inbounds nuw i8, ptr %33, i64 8 - %36 = load atomic i64, ptr %35 acquire, align 8 - %37 = icmp eq i64 %36, 4294967297 - %38 = trunc i64 %36 to i32 - br i1 %37, label %39, label %47 - -39: ; preds = %34 - store i32 0, ptr %35, align 8, !tbaa !365 - %40 = getelementptr inbounds nuw i8, ptr %33, i64 12 - store i32 0, ptr %40, align 4, !tbaa !368 - %41 = load ptr, ptr %33, align 8, !tbaa !369 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 16 - %43 = load ptr, ptr %42, align 8 - tail call void %43(ptr noundef nonnull align 8 dereferenceable(16) %33) #30 - %44 = load ptr, ptr %33, align 8, !tbaa !369 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 24 - %46 = load ptr, ptr %45, align 8 - tail call void %46(ptr noundef nonnull align 8 dereferenceable(16) %33) #30 + %26 = getelementptr inbounds nuw i8, ptr %.sroa.013.017.i, i64 16 + %27 = getelementptr inbounds i8, ptr %.sroa.013.017.i, i64 -16 + %28 = load ptr, ptr %27, align 8, !tbaa !644 + %29 = getelementptr inbounds i8, ptr %.sroa.013.017.i, i64 -8 + %30 = load ptr, ptr %29, align 8, !tbaa !364 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %27, i8 0, i64 16, i1 false) + store ptr %28, ptr %26, align 8, !tbaa !683 + %31 = getelementptr inbounds nuw i8, ptr %.sroa.013.017.i, i64 24 + %32 = load ptr, ptr %31, align 8, !tbaa !364 + store ptr %30, ptr %31, align 8, !tbaa !364 + %.not.i.i.i.i.i.i.i.i = icmp eq ptr %32, null + br i1 %.not.i.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit.i, label %33 + +33: ; preds = %.lr.ph.i + %34 = getelementptr inbounds nuw i8, ptr %32, i64 8 + %35 = load atomic i64, ptr %34 acquire, align 8 + %36 = icmp eq i64 %35, 4294967297 + %37 = trunc i64 %35 to i32 + br i1 %36, label %38, label %46 + +38: ; preds = %33 + store i32 0, ptr %34, align 8, !tbaa !365 + %39 = getelementptr inbounds nuw i8, ptr %32, i64 12 + store i32 0, ptr %39, align 4, !tbaa !368 + %40 = load ptr, ptr %32, align 8, !tbaa !369 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 16 + %42 = load ptr, ptr %41, align 8 + tail call void %43(ptr noundef nonnull align 8 dereferenceable(16) %32) #30 + %43 = load ptr, ptr %32, align 8, !tbaa !369 + %44 = getelementptr inbounds nuw i8, ptr %43, i64 24 + %45 = load ptr, ptr %44, align 8 + tail call void %46(ptr noundef nonnull align 8 dereferenceable(16) %32) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit.i -47: ; preds = %34 - %48 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i.i14 = icmp eq i8 %48, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i14, label %51, label %49 +46: ; preds = %33 + %47 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i.i14 = icmp eq i8 %47, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i14, label %50, label %48 -49: ; preds = %47 - %50 = add nsw i32 %38, -1 - store i32 %50, ptr %35, align 4, !tbaa !371 +48: ; preds = %46 + %49 = add nsw i32 %37, -1 + store i32 %49, ptr %34, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i -51: ; preds = %47 - %52 = atomicrmw volatile add ptr %35, i32 -1 acq_rel, align 4 +50: ; preds = %46 + %51 = atomicrmw volatile add ptr %34, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i: ; preds = %51, %49 - %.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %38, %49 ], [ %52, %51 ] - %53 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i, 1 - br i1 %53, label %54, label %_ZN11cmGraphEdgeaSEOS_.exit.i, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i: ; preds = %50, %48 + %.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %37, %48 ], [ %51, %50 ] + %52 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i, 1 + br i1 %52, label %53, label %_ZN11cmGraphEdgeaSEOS_.exit.i, !prof !372 -54: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i - tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %33) #30 +53: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i + tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %32) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit.i -_ZN11cmGraphEdgeaSEOS_.exit.i: ; preds = %54, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i, %39, %.lr.ph.i +_ZN11cmGraphEdgeaSEOS_.exit.i: ; preds = %53, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i, %38, %.lr.ph.i %.sroa.0.0.i = getelementptr inbounds i8, ptr %.sroa.0.018.i, i64 -32 - %55 = load i64, ptr %.sroa.0.0.i, align 8, !tbaa !650 - %56 = icmp ult i64 %.sroa.08.0.copyload.i, %55 - br i1 %56, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !684 + %54 = load i64, ptr %.sroa.0.0.i, align 8, !tbaa !650 + %55 = icmp ult i64 %.sroa.08.0.copyload.i, %54 + br i1 %55, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !684 ._crit_edge.i: ; preds = %_ZN11cmGraphEdgeaSEOS_.exit.i %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i, i64 24 %.pre.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !364 store i64 %.sroa.08.0.copyload.i, ptr %.sroa.0.018.i, align 8 %.sroa.5.0..sroa_idx10.i = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i, i64 8 - store i16 %20, ptr %.sroa.5.0..sroa_idx10.i, align 8 - %57 = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i, i64 16 - store ptr %22, ptr %57, align 8, !tbaa !683 - store ptr %24, ptr %.phi.trans.insert.i, align 8, !tbaa !364 + store i16 %.sroa.5.0.copyload.i, ptr %.sroa.5.0..sroa_idx10.i, align 8 + %56 = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i, i64 16 + store ptr %21, ptr %56, align 8, !tbaa !683 + store ptr %23, ptr %.phi.trans.insert.i, align 8, !tbaa !364 %.not.i.i.i.i.i.i.i1.i = icmp eq ptr %.pre.i, null - br i1 %.not.i.i.i.i.i.i.i1.i, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, label %58 - -58: ; preds = %._crit_edge.i - %59 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 8 - %60 = load atomic i64, ptr %59 acquire, align 8 - %61 = icmp eq i64 %60, 4294967297 - %62 = trunc i64 %60 to i32 - br i1 %61, label %63, label %71 - -63: ; preds = %58 - store i32 0, ptr %59, align 8, !tbaa !365 - %64 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 12 - store i32 0, ptr %64, align 4, !tbaa !368 - %65 = load ptr, ptr %.pre.i, align 8, !tbaa !369 - %66 = getelementptr inbounds nuw i8, ptr %65, i64 16 - %67 = load ptr, ptr %66, align 8 + br i1 %.not.i.i.i.i.i.i.i1.i, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, label %57 + +57: ; preds = %._crit_edge.i + %58 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 8 + %59 = load atomic i64, ptr %58 acquire, align 8 + %60 = icmp eq i64 %59, 4294967297 + %61 = trunc i64 %59 to i32 + br i1 %60, label %62, label %70 + +62: ; preds = %57 + store i32 0, ptr %58, align 8, !tbaa !365 + %63 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 12 + store i32 0, ptr %63, align 4, !tbaa !368 + %64 = load ptr, ptr %.pre.i, align 8, !tbaa !369 + %65 = getelementptr inbounds nuw i8, ptr %64, i64 16 + %66 = load ptr, ptr %65, align 8 tail call void %67(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i) #30 - %68 = load ptr, ptr %.pre.i, align 8, !tbaa !369 - %69 = getelementptr inbounds nuw i8, ptr %68, i64 24 - %70 = load ptr, ptr %69, align 8 + %67 = load ptr, ptr %.pre.i, align 8, !tbaa !369 + %68 = getelementptr inbounds nuw i8, ptr %67, i64 24 + %69 = load ptr, ptr %68, align 8 tail call void %70(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i) #30 br label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit -71: ; preds = %58 - %72 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i2.i = icmp eq i8 %72, 0 - br i1 %.not.i.i.i.i.i.i.i.i2.i, label %75, label %73 +70: ; preds = %57 + %71 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i2.i = icmp eq i8 %71, 0 + br i1 %.not.i.i.i.i.i.i.i.i2.i, label %74, label %72 -73: ; preds = %71 - %74 = add nsw i32 %62, -1 - store i32 %74, ptr %59, align 4, !tbaa !371 +72: ; preds = %70 + %73 = add nsw i32 %61, -1 + store i32 %73, ptr %58, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i -75: ; preds = %71 - %76 = atomicrmw volatile add ptr %59, i32 -1 acq_rel, align 4 +74: ; preds = %70 + %75 = atomicrmw volatile add ptr %58, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i: ; preds = %75, %73 - %.0.i.i.i.i.i.i.i.i.i4.i = phi i32 [ %62, %73 ], [ %76, %75 ] - %77 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i4.i, 1 - br i1 %77, label %78, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i: ; preds = %74, %72 + %.0.i.i.i.i.i.i.i.i.i4.i = phi i32 [ %61, %73 ], [ %75, %75 ] + %76 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i4.i, 1 + br i1 %76, label %77, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, !prof !372 -78: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i +77: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i) #30 br label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit -_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit: ; preds = %._crit_edge.thread.i, %._crit_edge.i, %63, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i, %78 - %79 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 32 - %.not.i.i.i.i = icmp eq ptr %79, %8 +_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit: ; preds = %._crit_edge.thread.i, %._crit_edge.i, %62, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3.i, %77 + %78 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i.i.i, i64 32 + %.not.i.i.i.i = icmp eq ptr %78, %8 br i1 %.not.i.i.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, label %.lr.ph.i.i.i.i, !llvm.loop !685 -80: ; preds = %9 +79: ; preds = %9 tail call void @_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops15_Iter_less_iterEEvT_SA_T0_(ptr %6, ptr %8) br label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit -_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, %.lr.ph, %18, %80 - %81 = load ptr, ptr %.sroa.019.025, align 8, !tbaa !681 - %82 = load ptr, ptr %7, align 8, !tbaa !681 - %83 = icmp eq ptr %81, %82 - br i1 %83, label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit, label %.preheader.i.i.i - -.preheader.i.i.i: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, %85 - %.sroa.09.0.i.i.i = phi ptr [ %84, %85 ], [ %81, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ] - %84 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i.i.i, i64 32 - %.not.i.i.i = icmp eq ptr %84, %82 - br i1 %.not.i.i.i, label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit, label %85 - -85: ; preds = %.preheader.i.i.i - %86 = load i64, ptr %.sroa.09.0.i.i.i, align 8, !tbaa !650 - %87 = load i64, ptr %84, align 8, !tbaa !650 - %88 = icmp eq i64 %86, %87 - br i1 %88, label %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i, label %.preheader.i.i.i, !llvm.loop !686 - -_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i: ; preds = %85 - %89 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i.i.i, i64 64 - %.not18.i.i = icmp eq ptr %89, %82 +_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit, %.lr.ph, %18, %79 + %80 = load ptr, ptr %.sroa.019.025, align 8, !tbaa !681 + %81 = load ptr, ptr %7, align 8, !tbaa !681 + %82 = icmp eq ptr %80, %81 + br i1 %82, label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit, label %.preheader.i.i.i + +.preheader.i.i.i: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, %84 + %.sroa.09.0.i.i.i = phi ptr [ %83, %85 ], [ %80, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ] + %83 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i.i.i, i64 32 + %.not.i.i.i = icmp eq ptr %83, %81 + br i1 %.not.i.i.i, label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit, label %84 + +84: ; preds = %.preheader.i.i.i + %85 = load i64, ptr %.sroa.09.0.i.i.i, align 8, !tbaa !650 + %86 = load i64, ptr %83, align 8, !tbaa !650 + %87 = icmp eq i64 %85, %86 + br i1 %87, label %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i, label %.preheader.i.i.i, !llvm.loop !686 + +_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i: ; preds = %84 + %88 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i.i.i, i64 64 + %.not18.i.i = icmp eq ptr %88, %81 br i1 %.not18.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i, %_ZN11cmGraphEdgeaSEOS_.exit.i.i - %90 = phi ptr [ %124, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %89, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] + %89 = phi ptr [ %123, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %88, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] %.sroa.0.020.i.i = phi ptr [ %.sroa.0.1.i.i, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %.sroa.09.0.i.i.i, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] - %.sroa.011.019.i.i = phi ptr [ %90, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %84, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] - %91 = load i64, ptr %.sroa.0.020.i.i, align 8, !tbaa !650 - %92 = load i64, ptr %90, align 8, !tbaa !650 - %93 = icmp eq i64 %91, %92 - br i1 %93, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, label %94 - -94: ; preds = %.lr.ph.i.i - %95 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 32 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(32) %90, i64 10, i1 false) - %96 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 48 - %97 = getelementptr inbounds nuw i8, ptr %.sroa.011.019.i.i, i64 48 - %98 = load ptr, ptr %97, align 8, !tbaa !644 - %99 = getelementptr inbounds nuw i8, ptr %.sroa.011.019.i.i, i64 56 - %100 = load ptr, ptr %99, align 8, !tbaa !364 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %97, i8 0, i64 16, i1 false) - store ptr %98, ptr %96, align 8, !tbaa !683 - %101 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 56 - %102 = load ptr, ptr %101, align 8, !tbaa !364 - store ptr %100, ptr %101, align 8, !tbaa !364 - %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %102, null - br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, label %103 - -103: ; preds = %94 - %104 = getelementptr inbounds nuw i8, ptr %102, i64 8 - %105 = load atomic i64, ptr %104 acquire, align 8 - %106 = icmp eq i64 %105, 4294967297 - %107 = trunc i64 %105 to i32 - br i1 %106, label %108, label %116 - -108: ; preds = %103 - store i32 0, ptr %104, align 8, !tbaa !365 - %109 = getelementptr inbounds nuw i8, ptr %102, i64 12 - store i32 0, ptr %109, align 4, !tbaa !368 - %110 = load ptr, ptr %102, align 8, !tbaa !369 - %111 = getelementptr inbounds nuw i8, ptr %110, i64 16 - %112 = load ptr, ptr %111, align 8 - tail call void %112(ptr noundef nonnull align 8 dereferenceable(16) %102) #30 - %113 = load ptr, ptr %102, align 8, !tbaa !369 - %114 = getelementptr inbounds nuw i8, ptr %113, i64 24 - %115 = load ptr, ptr %114, align 8 - tail call void %115(ptr noundef nonnull align 8 dereferenceable(16) %102) #30 + %.sroa.011.019.i.i = phi ptr [ %89, %_ZN11cmGraphEdgeaSEOS_.exit.i.i ], [ %83, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ] + %90 = load i64, ptr %.sroa.0.020.i.i, align 8, !tbaa !650 + %91 = load i64, ptr %89, align 8, !tbaa !650 + %92 = icmp eq i64 %90, %91 + br i1 %92, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, label %93 + +93: ; preds = %.lr.ph.i.i + %94 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 32 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(32) %89, i64 10, i1 false) + %95 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 48 + %96 = getelementptr inbounds nuw i8, ptr %.sroa.011.019.i.i, i64 48 + %97 = load ptr, ptr %96, align 8, !tbaa !644 + %98 = getelementptr inbounds nuw i8, ptr %.sroa.011.019.i.i, i64 56 + %99 = load ptr, ptr %98, align 8, !tbaa !364 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %96, i8 0, i64 16, i1 false) + store ptr %97, ptr %95, align 8, !tbaa !683 + %100 = getelementptr inbounds nuw i8, ptr %.sroa.0.020.i.i, i64 56 + %101 = load ptr, ptr %100, align 8, !tbaa !364 + store ptr %99, ptr %100, align 8, !tbaa !364 + %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %101, null + br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, label %102 + +102: ; preds = %93 + %103 = getelementptr inbounds nuw i8, ptr %101, i64 8 + %104 = load atomic i64, ptr %103 acquire, align 8 + %105 = icmp eq i64 %104, 4294967297 + %106 = trunc i64 %104 to i32 + br i1 %105, label %107, label %115 + +107: ; preds = %102 + store i32 0, ptr %103, align 8, !tbaa !365 + %108 = getelementptr inbounds nuw i8, ptr %101, i64 12 + store i32 0, ptr %108, align 4, !tbaa !368 + %109 = load ptr, ptr %101, align 8, !tbaa !369 + %110 = getelementptr inbounds nuw i8, ptr %109, i64 16 + %111 = load ptr, ptr %110, align 8 + tail call void %112(ptr noundef nonnull align 8 dereferenceable(16) %101) #30 + %112 = load ptr, ptr %101, align 8, !tbaa !369 + %113 = getelementptr inbounds nuw i8, ptr %112, i64 24 + %114 = load ptr, ptr %113, align 8 + tail call void %115(ptr noundef nonnull align 8 dereferenceable(16) %101) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit.i.i -116: ; preds = %103 - %117 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %117, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %120, label %118 +115: ; preds = %102 + %116 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %116, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %119, label %117 -118: ; preds = %116 - %119 = add nsw i32 %107, -1 - store i32 %119, ptr %104, align 4, !tbaa !371 +117: ; preds = %115 + %118 = add nsw i32 %106, -1 + store i32 %118, ptr %103, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i -120: ; preds = %116 - %121 = atomicrmw volatile add ptr %104, i32 -1 acq_rel, align 4 +119: ; preds = %115 + %120 = atomicrmw volatile add ptr %103, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i: ; preds = %120, %118 - %.0.i.i.i.i.i.i.i.i.i.i.i = phi i32 [ %107, %118 ], [ %121, %120 ] - %122 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i.i, 1 - br i1 %122, label %123, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i: ; preds = %119, %117 + %.0.i.i.i.i.i.i.i.i.i.i.i = phi i32 [ %106, %118 ], [ %120, %120 ] + %121 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i.i, 1 + br i1 %121, label %122, label %_ZN11cmGraphEdgeaSEOS_.exit.i.i, !prof !372 -123: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i - tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %102) #30 +122: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i + tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %101) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit.i.i -_ZN11cmGraphEdgeaSEOS_.exit.i.i: ; preds = %123, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i, %108, %94, %.lr.ph.i.i - %.sroa.0.1.i.i = phi ptr [ %.sroa.0.020.i.i, %.lr.ph.i.i ], [ %95, %94 ], [ %95, %108 ], [ %95, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i ], [ %95, %123 ] - %124 = getelementptr inbounds nuw i8, ptr %90, i64 32 - %.not.i.i13 = icmp eq ptr %124, %82 +_ZN11cmGraphEdgeaSEOS_.exit.i.i: ; preds = %122, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i, %107, %93, %.lr.ph.i.i + %.sroa.0.1.i.i = phi ptr [ %.sroa.0.020.i.i, %.lr.ph.i.i ], [ %94, %94 ], [ %94, %108 ], [ %94, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i.i ], [ %94, %123 ] + %123 = getelementptr inbounds nuw i8, ptr %89, i64 32 + %.not.i.i13 = icmp eq ptr %123, %81 br i1 %.not.i.i13, label %._crit_edge.i.i.loopexit, label %.lr.ph.i.i, !llvm.loop !687 ._crit_edge.i.i.loopexit: ; preds = %_ZN11cmGraphEdgeaSEOS_.exit.i.i @@ -8804,26 +8804,26 @@ _ZN11cmGraphEdgeaSEOS_.exit.i.i: ; preds = %123, %_ZN9__gnu_cxx br label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %._crit_edge.i.i.loopexit, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i - %.pre28 = phi ptr [ %81, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.pre28.pre, %._crit_edge.i.i.loopexit ] - %.pre = phi ptr [ %82, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.pre.pre, %._crit_edge.i.i.loopexit ] + %.pre28 = phi ptr [ %80, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.pre28.pre, %._crit_edge.i.i.loopexit ] + %.pre = phi ptr [ %81, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.pre.pre, %._crit_edge.i.i.loopexit ] %.sroa.0.0.lcssa.i.i = phi ptr [ %.sroa.09.0.i.i.i, %_ZSt15__adjacent_findIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops19_Iter_equal_to_iterEET_SA_SA_T0_.exit.i.i ], [ %.sroa.0.1.i.i, %._crit_edge.i.i.loopexit ] - %125 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa.i.i, i64 32 + %124 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa.i.i, i64 32 br label %_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit _ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEET_S8_S8_.exit: ; preds = %.preheader.i.i.i, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit, %._crit_edge.i.i - %126 = phi ptr [ %.pre28, %._crit_edge.i.i ], [ %81, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %81, %.preheader.i.i.i ] - %127 = phi ptr [ %.pre, %._crit_edge.i.i ], [ %81, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %82, %.preheader.i.i.i ] - %.sroa.05.0.i.i = phi ptr [ %125, %._crit_edge.i.i ], [ %81, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %82, %.preheader.i.i.i ] - %128 = ptrtoint ptr %.sroa.05.0.i.i to i64 - %129 = ptrtoint ptr %126 to i64 - %130 = sub i64 %128, %129 - %131 = getelementptr inbounds i8, ptr %126, i64 %130 - %132 = ptrtoint ptr %127 to i64 - %133 = sub i64 %132, %129 - %134 = getelementptr inbounds i8, ptr %126, i64 %133 - %135 = tail call ptr @_ZNSt6vectorI11cmGraphEdgeSaIS0_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS0_S2_EES6_(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.019.025, ptr %131, ptr %134) - %136 = getelementptr inbounds nuw i8, ptr %.sroa.019.025, i64 24 - %.not = icmp eq ptr %136, %5 + %125 = phi ptr [ %.pre28, %._crit_edge.i.i ], [ %80, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %80, %.preheader.i.i.i ] + %126 = phi ptr [ %.pre, %._crit_edge.i.i ], [ %80, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %81, %.preheader.i.i.i ] + %.sroa.05.0.i.i = phi ptr [ %124, %._crit_edge.i.i ], [ %80, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_.exit ], [ %81, %.preheader.i.i.i ] + %127 = ptrtoint ptr %.sroa.05.0.i.i to i64 + %128 = ptrtoint ptr %125 to i64 + %129 = sub i64 %127, %128 + %130 = getelementptr inbounds i8, ptr %125, i64 %129 + %131 = ptrtoint ptr %126 to i64 + %132 = sub i64 %131, %128 + %133 = getelementptr inbounds i8, ptr %125, i64 %132 + %134 = tail call ptr @_ZNSt6vectorI11cmGraphEdgeSaIS0_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS0_S2_EES6_(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.019.025, ptr %130, ptr %133) + %135 = getelementptr inbounds nuw i8, ptr %.sroa.019.025, i64 24 + %.not = icmp eq ptr %135, %5 br i1 %.not, label %._crit_edge, label %.lr.ph } @@ -36360,151 +36360,151 @@ _ZN11cmGraphEdgeD2Ev.exit: ; preds = %74, %_ZN9__gnu_cxx2 define linkonce_odr dso_local void @_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP11cmGraphEdgeSt6vectorIS2_SaIS2_EEEENS0_5__ops14_Val_less_iterEEvT_T0_(ptr %0) local_unnamed_addr #6 comdat personality ptr @__gxx_personality_v0 { %.sroa.08.0.copyload = load i64, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - %2 = load i16, ptr %.sroa.5.0..sroa_idx, align 8 - %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %4 = load ptr, ptr %3, align 8, !tbaa !644 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %6 = load ptr, ptr %5, align 8, !tbaa !364 + %.sroa.5.0.copyload = load i16, ptr %.sroa.5.0..sroa_idx, align 8 + %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %3 = load ptr, ptr %2, align 8, !tbaa !644 + %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %5 = load ptr, ptr %4, align 8, !tbaa !364 %.sroa.0.016 = getelementptr inbounds i8, ptr %0, i64 -32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false) - %7 = load i64, ptr %.sroa.0.016, align 8, !tbaa !650 - %8 = icmp ult i64 %.sroa.08.0.copyload, %7 - br i1 %8, label %.lr.ph, label %._crit_edge.thread + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false) + %6 = load i64, ptr %.sroa.0.016, align 8, !tbaa !650 + %7 = icmp ult i64 %.sroa.08.0.copyload, %6 + br i1 %7, label %.lr.ph, label %._crit_edge.thread ._crit_edge.thread: ; preds = %1 %.sroa.5.0..sroa_idx1021 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i16 %2, ptr %.sroa.5.0..sroa_idx1021, align 8 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %4, ptr %9, align 8, !tbaa !683 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %6, ptr %10, align 8, !tbaa !364 + store i16 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx1021, align 8 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %3, ptr %8, align 8, !tbaa !683 + %9 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %5, ptr %9, align 8, !tbaa !364 br label %_ZN11cmGraphEdgeD2Ev.exit .lr.ph: ; preds = %1, %_ZN11cmGraphEdgeaSEOS_.exit %.sroa.0.018 = phi ptr [ %.sroa.0.0, %_ZN11cmGraphEdgeaSEOS_.exit ], [ %.sroa.0.016, %1 ] %.sroa.013.017 = phi ptr [ %.sroa.0.018, %_ZN11cmGraphEdgeaSEOS_.exit ], [ %0, %1 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.013.017, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.018, i64 10, i1 false) - %11 = getelementptr inbounds nuw i8, ptr %.sroa.013.017, i64 16 - %12 = getelementptr inbounds i8, ptr %.sroa.013.017, i64 -16 - %13 = load ptr, ptr %12, align 8, !tbaa !644 - %14 = getelementptr inbounds i8, ptr %.sroa.013.017, i64 -8 - %15 = load ptr, ptr %14, align 8, !tbaa !364 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %12, i8 0, i64 16, i1 false) - store ptr %13, ptr %11, align 8, !tbaa !683 - %16 = getelementptr inbounds nuw i8, ptr %.sroa.013.017, i64 24 - %17 = load ptr, ptr %16, align 8, !tbaa !364 - store ptr %15, ptr %16, align 8, !tbaa !364 - %.not.i.i.i.i.i.i.i = icmp eq ptr %17, null - br i1 %.not.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit, label %18 - -18: ; preds = %.lr.ph - %19 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %20 = load atomic i64, ptr %19 acquire, align 8 - %21 = icmp eq i64 %20, 4294967297 - %22 = trunc i64 %20 to i32 - br i1 %21, label %23, label %31 - -23: ; preds = %18 - store i32 0, ptr %19, align 8, !tbaa !365 - %24 = getelementptr inbounds nuw i8, ptr %17, i64 12 - store i32 0, ptr %24, align 4, !tbaa !368 - %25 = load ptr, ptr %17, align 8, !tbaa !369 - %26 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %27 = load ptr, ptr %26, align 8 - tail call void %27(ptr noundef nonnull align 8 dereferenceable(16) %17) #30 - %28 = load ptr, ptr %17, align 8, !tbaa !369 - %29 = getelementptr inbounds nuw i8, ptr %28, i64 24 - %30 = load ptr, ptr %29, align 8 - tail call void %30(ptr noundef nonnull align 8 dereferenceable(16) %17) #30 + %10 = getelementptr inbounds nuw i8, ptr %.sroa.013.017, i64 16 + %11 = getelementptr inbounds i8, ptr %.sroa.013.017, i64 -16 + %12 = load ptr, ptr %11, align 8, !tbaa !644 + %13 = getelementptr inbounds i8, ptr %.sroa.013.017, i64 -8 + %14 = load ptr, ptr %13, align 8, !tbaa !364 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, i8 0, i64 16, i1 false) + store ptr %12, ptr %10, align 8, !tbaa !683 + %15 = getelementptr inbounds nuw i8, ptr %.sroa.013.017, i64 24 + %16 = load ptr, ptr %15, align 8, !tbaa !364 + store ptr %14, ptr %15, align 8, !tbaa !364 + %.not.i.i.i.i.i.i.i = icmp eq ptr %16, null + br i1 %.not.i.i.i.i.i.i.i, label %_ZN11cmGraphEdgeaSEOS_.exit, label %17 + +17: ; preds = %.lr.ph + %18 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %19 = load atomic i64, ptr %18 acquire, align 8 + %20 = icmp eq i64 %19, 4294967297 + %21 = trunc i64 %19 to i32 + br i1 %20, label %22, label %30 + +22: ; preds = %17 + store i32 0, ptr %18, align 8, !tbaa !365 + %23 = getelementptr inbounds nuw i8, ptr %16, i64 12 + store i32 0, ptr %23, align 4, !tbaa !368 + %24 = load ptr, ptr %16, align 8, !tbaa !369 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 16 + %26 = load ptr, ptr %25, align 8 + tail call void %27(ptr noundef nonnull align 8 dereferenceable(16) %16) #30 + %27 = load ptr, ptr %16, align 8, !tbaa !369 + %28 = getelementptr inbounds nuw i8, ptr %27, i64 24 + %29 = load ptr, ptr %28, align 8 + tail call void %30(ptr noundef nonnull align 8 dereferenceable(16) %16) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit -31: ; preds = %18 - %32 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i = icmp eq i8 %32, 0 - br i1 %.not.i.i.i.i.i.i.i.i, label %35, label %33 +30: ; preds = %17 + %31 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i = icmp eq i8 %31, 0 + br i1 %.not.i.i.i.i.i.i.i.i, label %34, label %32 -33: ; preds = %31 - %34 = add nsw i32 %22, -1 - store i32 %34, ptr %19, align 4, !tbaa !371 +32: ; preds = %30 + %33 = add nsw i32 %21, -1 + store i32 %33, ptr %18, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i -35: ; preds = %31 - %36 = atomicrmw volatile add ptr %19, i32 -1 acq_rel, align 4 +34: ; preds = %30 + %35 = atomicrmw volatile add ptr %18, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i: ; preds = %35, %33 - %.0.i.i.i.i.i.i.i.i.i = phi i32 [ %22, %33 ], [ %36, %35 ] - %37 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i, 1 - br i1 %37, label %38, label %_ZN11cmGraphEdgeaSEOS_.exit, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i: ; preds = %34, %32 + %.0.i.i.i.i.i.i.i.i.i = phi i32 [ %21, %32 ], [ %35, %34 ] + %36 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i, 1 + br i1 %36, label %37, label %_ZN11cmGraphEdgeaSEOS_.exit, !prof !372 -38: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i - tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %17) #30 +37: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i + tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #30 br label %_ZN11cmGraphEdgeaSEOS_.exit -_ZN11cmGraphEdgeaSEOS_.exit: ; preds = %.lr.ph, %23, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i, %38 +_ZN11cmGraphEdgeaSEOS_.exit: ; preds = %.lr.ph, %22, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i, %37 %.sroa.0.0 = getelementptr inbounds i8, ptr %.sroa.0.018, i64 -32 - %39 = load i64, ptr %.sroa.0.0, align 8, !tbaa !650 - %40 = icmp ult i64 %.sroa.08.0.copyload, %39 - br i1 %40, label %.lr.ph, label %._crit_edge, !llvm.loop !684 + %38 = load i64, ptr %.sroa.0.0, align 8, !tbaa !650 + %39 = icmp ult i64 %.sroa.08.0.copyload, %38 + br i1 %39, label %.lr.ph, label %._crit_edge, !llvm.loop !684 ._crit_edge: ; preds = %_ZN11cmGraphEdgeaSEOS_.exit %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 24 %.pre = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !364 store i64 %.sroa.08.0.copyload, ptr %.sroa.0.018, align 8 %.sroa.5.0..sroa_idx10 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 8 - store i16 %2, ptr %.sroa.5.0..sroa_idx10, align 8 - %41 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 16 - store ptr %4, ptr %41, align 8, !tbaa !683 - %42 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 24 - store ptr %6, ptr %42, align 8, !tbaa !364 + store i16 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx10, align 8 + %40 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 16 + store ptr %3, ptr %40, align 8, !tbaa !683 + %41 = getelementptr inbounds nuw i8, ptr %.sroa.0.018, i64 24 + store ptr %5, ptr %41, align 8, !tbaa !364 %.not.i.i.i.i.i.i.i1 = icmp eq ptr %.pre, null - br i1 %.not.i.i.i.i.i.i.i1, label %_ZN11cmGraphEdgeD2Ev.exit, label %43 - -43: ; preds = %._crit_edge - %44 = getelementptr inbounds nuw i8, ptr %.pre, i64 8 - %45 = load atomic i64, ptr %44 acquire, align 8 - %46 = icmp eq i64 %45, 4294967297 - %47 = trunc i64 %45 to i32 - br i1 %46, label %48, label %56 - -48: ; preds = %43 - store i32 0, ptr %44, align 8, !tbaa !365 - %49 = getelementptr inbounds nuw i8, ptr %.pre, i64 12 - store i32 0, ptr %49, align 4, !tbaa !368 - %50 = load ptr, ptr %.pre, align 8, !tbaa !369 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 16 - %52 = load ptr, ptr %51, align 8 + br i1 %.not.i.i.i.i.i.i.i1, label %_ZN11cmGraphEdgeD2Ev.exit, label %42 + +42: ; preds = %._crit_edge + %43 = getelementptr inbounds nuw i8, ptr %.pre, i64 8 + %44 = load atomic i64, ptr %43 acquire, align 8 + %45 = icmp eq i64 %44, 4294967297 + %46 = trunc i64 %44 to i32 + br i1 %45, label %47, label %55 + +47: ; preds = %42 + store i32 0, ptr %43, align 8, !tbaa !365 + %48 = getelementptr inbounds nuw i8, ptr %.pre, i64 12 + store i32 0, ptr %48, align 4, !tbaa !368 + %49 = load ptr, ptr %.pre, align 8, !tbaa !369 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 16 + %51 = load ptr, ptr %50, align 8 tail call void %52(ptr noundef nonnull align 8 dereferenceable(16) %.pre) #30 - %53 = load ptr, ptr %.pre, align 8, !tbaa !369 - %54 = getelementptr inbounds nuw i8, ptr %53, i64 24 - %55 = load ptr, ptr %54, align 8 + %52 = load ptr, ptr %.pre, align 8, !tbaa !369 + %53 = getelementptr inbounds nuw i8, ptr %52, i64 24 + %54 = load ptr, ptr %53, align 8 tail call void %55(ptr noundef nonnull align 8 dereferenceable(16) %.pre) #30 br label %_ZN11cmGraphEdgeD2Ev.exit -56: ; preds = %43 - %57 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 - %.not.i.i.i.i.i.i.i.i2 = icmp eq i8 %57, 0 - br i1 %.not.i.i.i.i.i.i.i.i2, label %60, label %58 +55: ; preds = %42 + %56 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !343 + %.not.i.i.i.i.i.i.i.i2 = icmp eq i8 %56, 0 + br i1 %.not.i.i.i.i.i.i.i.i2, label %59, label %57 -58: ; preds = %56 - %59 = add nsw i32 %47, -1 - store i32 %59, ptr %44, align 4, !tbaa !371 +57: ; preds = %55 + %58 = add nsw i32 %46, -1 + store i32 %58, ptr %43, align 4, !tbaa !371 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3 -60: ; preds = %56 - %61 = atomicrmw volatile add ptr %44, i32 -1 acq_rel, align 4 +59: ; preds = %55 + %60 = atomicrmw volatile add ptr %43, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3 -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3: ; preds = %60, %58 - %.0.i.i.i.i.i.i.i.i.i4 = phi i32 [ %47, %58 ], [ %61, %60 ] - %62 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i4, 1 - br i1 %62, label %63, label %_ZN11cmGraphEdgeD2Ev.exit, !prof !372 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3: ; preds = %59, %57 + %.0.i.i.i.i.i.i.i.i.i4 = phi i32 [ %46, %58 ], [ %60, %59 ] + %61 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i4, 1 + br i1 %61, label %62, label %_ZN11cmGraphEdgeD2Ev.exit, !prof !372 -63: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3 +62: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3 tail call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %.pre) #30 br label %_ZN11cmGraphEdgeD2Ev.exit -_ZN11cmGraphEdgeD2Ev.exit: ; preds = %._crit_edge.thread, %63, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3, %48, %._crit_edge +_ZN11cmGraphEdgeD2Ev.exit: ; preds = %._crit_edge.thread, %62, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i3, %47, %._crit_edge ret void } diff --git a/bench/duckdb/optimized/fastcover.ll b/bench/duckdb/optimized/fastcover.ll index 325c6bdc2ff..caf5018b31d 100644 --- a/bench/duckdb/optimized/fastcover.ll +++ b/bench/duckdb/optimized/fastcover.ll @@ -61,39 +61,39 @@ define noundef i64 @_ZN11duckdb_zstd31ZDICT_trainFromBuffer_fastCoverEPvmPKvPKmj %16 = getelementptr inbounds nuw i8, ptr %5, i64 32 %17 = load i32, ptr %16, align 8, !tbaa !12 %18 = tail call i32 @llvm.umax.i32(i32 %17, i32 1) - %.sroa.049.0.copyload = load i32, ptr %5, align 8, !tbaa !10 - %.sroa.250.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 4 - %.sroa.250.0.copyload = load i32, ptr %.sroa.250.0..sroa_idx, align 4, !tbaa !10 - %.sroa.451.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 12 - %.sroa.451.0.copyload = load i32, ptr %.sroa.451.0..sroa_idx, align 4, !tbaa !10 - %.sroa.552.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 16 - %.sroa.552.0.copyload = load i32, ptr %.sroa.552.0..sroa_idx, align 8, !tbaa !10 - %.sroa.956.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 36 - %.sroa.956.0.copyload = load i32, ptr %.sroa.956.0..sroa_idx, align 4, !tbaa !10 + %.sroa.048.0.copyload = load i32, ptr %5, align 8, !tbaa !10 + %.sroa.249.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 4 + %.sroa.249.0.copyload = load i32, ptr %.sroa.249.0..sroa_idx, align 4, !tbaa !10 + %.sroa.450.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 12 + %.sroa.450.0.copyload = load i32, ptr %.sroa.450.0..sroa_idx, align 4, !tbaa !10 + %.sroa.551.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 16 + %.sroa.551.0.copyload = load i32, ptr %.sroa.551.0..sroa_idx, align 8, !tbaa !10 + %.sroa.955.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 36 + %.sroa.955.0.copyload = load i32, ptr %.sroa.955.0..sroa_idx, align 4, !tbaa !10 %19 = getelementptr inbounds nuw i8, ptr %5, i64 44 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.16.sroa.4, ptr noundef nonnull align 4 dereferenceable(12) %19, i64 12, i1 false) - %20 = icmp eq i32 %.sroa.250.0.copyload, 0 - %21 = icmp eq i32 %.sroa.049.0.copyload, 0 + %20 = icmp eq i32 %.sroa.249.0.copyload, 0 + %21 = icmp eq i32 %.sroa.048.0.copyload, 0 %or.cond.i = select i1 %20, i1 true, i1 %21 br i1 %or.cond.i, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread, label %22 22: ; preds = %6 - switch i32 %.sroa.250.0.copyload, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread [ + switch i32 %.sroa.249.0.copyload, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread [ i32 8, label %23 i32 6, label %23 ] 23: ; preds = %22, %22 - %24 = zext i32 %.sroa.049.0.copyload to i64 + %24 = zext i32 %.sroa.048.0.copyload to i64 %25 = icmp ult i64 %1, %24 - %26 = icmp ugt i32 %.sroa.250.0.copyload, %.sroa.049.0.copyload + %26 = icmp ugt i32 %.sroa.249.0.copyload, %.sroa.048.0.copyload %or.cond20.i = or i1 %26, %25 %27 = add i32 %15, -32 %or.cond7.i = icmp ult i32 %27, -31 %or.cond21.i = or i1 %or.cond7.i, %or.cond20.i %or.cond12.i = icmp ugt i32 %17, 10 - %or.cond59 = select i1 %or.cond21.i, i1 true, i1 %or.cond12.i - br i1 %or.cond59, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread, label %34 + %or.cond58 = select i1 %or.cond21.i, i1 true, i1 %or.cond12.i + br i1 %or.cond58, label %_ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread, label %34 _ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit.thread: ; preds = %23, %22, %6 %28 = icmp sgt i32 %11, 0 @@ -140,7 +140,7 @@ _ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit. %53 = zext nneg i32 %18 to i64 %54 = getelementptr inbounds nuw %"struct.duckdb_zstd::FASTCOVER_accel_t", ptr @_ZN11duckdb_zstdL32FASTCOVER_defaultAccelParametersE, i64 %53 %.sroa.011.0.copyload = load i64, ptr %54, align 8 - %55 = call fastcc noundef i64 @_ZN11duckdb_zstdL18FASTCOVER_ctx_initEPNS_15FASTCOVER_ctx_tEPKvPKmjjdjNS_17FASTCOVER_accel_tE(ptr noundef %7, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %.sroa.250.0.copyload, double noundef 1.000000e+00, i32 noundef %15, i64 %.sroa.011.0.copyload) + %55 = call fastcc noundef i64 @_ZN11duckdb_zstdL18FASTCOVER_ctx_initEPNS_15FASTCOVER_ctx_tEPKvPKmjjdjNS_17FASTCOVER_accel_tE(ptr noundef %7, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %.sroa.249.0.copyload, double noundef 1.000000e+00, i32 noundef %15, i64 %.sroa.011.0.copyload) %56 = icmp ult i64 %55, -119 br i1 %56, label %.critedge, label %57 @@ -178,17 +178,17 @@ _ZN11duckdb_zstdL25FASTCOVER_checkParametersENS_20ZDICT_cover_params_tEmjj.exit. %78 = tail call noalias ptr @calloc(i64 noundef %77, i64 noundef 2) #14 %79 = getelementptr inbounds nuw i8, ptr %7, i64 56 %80 = load ptr, ptr %79, align 8, !tbaa !23 - store i32 %.sroa.049.0.copyload, ptr %8, align 8, !tbaa !10 + store i32 %.sroa.048.0.copyload, ptr %8, align 8, !tbaa !10 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 4 - store i32 %.sroa.250.0.copyload, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !10 + store i32 %.sroa.249.0.copyload, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !10 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 8 - store i32 %.sroa.451.0.copyload, ptr %.sroa.9.0..sroa_idx, align 8, !tbaa !10 + store i32 %.sroa.450.0.copyload, ptr %.sroa.9.0..sroa_idx, align 8, !tbaa !10 %.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 12 - store i32 %.sroa.552.0.copyload, ptr %.sroa.11.0..sroa_idx, align 4, !tbaa !10 + store i32 %.sroa.551.0.copyload, ptr %.sroa.11.0..sroa_idx, align 4, !tbaa !10 %.sroa.12.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 16 store double 1.000000e+00, ptr %.sroa.12.0..sroa_idx, align 8, !tbaa !24 %.sroa.14.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 24 - store i32 %.sroa.956.0.copyload, ptr %.sroa.14.0..sroa_idx, align 8, !tbaa !10 + store i32 %.sroa.955.0.copyload, ptr %.sroa.14.0..sroa_idx, align 8, !tbaa !10 %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 28 store i32 0, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !10 %.sroa.16.sroa.4.0..sroa.16.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 32 diff --git a/bench/duckdb/optimized/miniz.ll b/bench/duckdb/optimized/miniz.ll index 0035480c2c1..d53b121f6e7 100644 --- a/bench/duckdb/optimized/miniz.ll +++ b/bench/duckdb/optimized/miniz.ll @@ -11182,8 +11182,8 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi 143: ; preds = %132 %144 = call i32 @llvm.umax.i32(i32 %78, i32 %86) - %.not439 = icmp eq i32 %144, 0 - br i1 %.not439, label %154, label %145 + %.not441 = icmp eq i32 %144, 0 + br i1 %.not441, label %154, label %145 145: ; preds = %143 %146 = zext nneg i32 %144 to i64 @@ -11229,22 +11229,22 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi 162: ; preds = %160, %154 %.not237 = icmp eq i32 %86, 0 - br i1 %.not237, label %.thread423, label %163 + br i1 %.not237, label %.thread425, label %163 163: ; preds = %162 %164 = icmp eq i64 %99, 4294967295 %165 = icmp eq i64 %112, 4294967295 %or.cond8 = select i1 %164, i1 true, i1 %165 - br i1 %or.cond8, label %166, label %.thread423 + br i1 %or.cond8, label %166, label %.thread425 166: ; preds = %163 %167 = load ptr, ptr %19, align 8, !tbaa !215 %168 = load ptr, ptr %63, align 8, !tbaa !226 %169 = call noundef i64 %167(ptr noundef %168, i64 noundef %134, ptr noundef %.sroa.0.1.ph, i64 noundef %135) %.not238 = icmp eq i64 %169, %135 - br i1 %.not238, label %.preheader, label %.thread428 + br i1 %.not238, label %.preheader, label %.thread430 -.thread428: ; preds = %166 +.thread430: ; preds = %166 %170 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 20, ptr %170, align 4, !tbaa !211 br label %348 @@ -11305,21 +11305,21 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %205 = zext i32 %204 to i64 %206 = shl nuw i64 %205, 32 %207 = or disjoint i64 %206, %202 - br label %.thread423 + br label %.thread425 208: ; preds = %186 %209 = zext nneg i32 %183 to i64 %210 = getelementptr inbounds nuw i8, ptr %.0213, i64 %209 %211 = sub i32 %.0211, %183 %.not239 = icmp eq i32 %211, 0 - br i1 %.not239, label %.thread423, label %.preheader, !llvm.loop !280 + br i1 %.not239, label %.thread425, label %.preheader, !llvm.loop !280 212: ; preds = %189 %213 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 9, ptr %213, align 4, !tbaa !211 br label %348 -.thread423: ; preds = %208, %191, %163, %162 +.thread425: ; preds = %208, %191, %163, %162 %.0202 = phi i64 [ %112, %163 ], [ %112, %162 ], [ %199, %191 ], [ %112, %208 ] %.0197 = phi i64 [ %99, %163 ], [ %99, %162 ], [ %207, %191 ], [ %99, %208 ] %214 = phi i1 [ false, %163 ], [ false, %162 ], [ true, %191 ], [ false, %208 ] @@ -11331,7 +11331,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %or.cond12 = select i1 %or.cond10, i1 true, i1 %218 br i1 %or.cond12, label %332, label %219 -219: ; preds = %.thread423 +219: ; preds = %.thread425 call void @llvm.lifetime.start.p0(ptr nonnull %8) %220 = getelementptr inbounds nuw i8, ptr %11, i64 100 %221 = load i32, ptr %220, align 4, !tbaa !222 @@ -11342,7 +11342,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %226 = select i1 %223, i64 24, i64 16 %227 = call noundef i64 %224(ptr noundef %225, i64 noundef %139, ptr noundef nonnull %8, i64 noundef %226) %.not240 = icmp eq i64 %227, %226 - br i1 %.not240, label %228, label %.thread437 + br i1 %.not240, label %228, label %.thread439 228: ; preds = %219 %229 = load i32, ptr %8, align 16 @@ -11383,49 +11383,49 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %.sroa.gep.sroa.gep364.val = load i8, ptr %.sroa.gep.sroa.gep364, align 8 %254 = select i1 %230, i8 %.sroa.gep.sroa.gep364.val, i8 %.sroa.gep.val %255 = zext i8 %254 to i64 - %.sroa.gep469 = getelementptr inbounds nuw i8, ptr %8, i64 9 - %.sroa.gep469.val = load i8, ptr %.sroa.gep469, align 1 - %.sroa.gep.sroa.gep373.val522 = load i8, ptr %.sroa.gep.sroa.gep373, align 1 - %256 = select i1 %230, i8 %.sroa.gep469.val, i8 %.sroa.gep.sroa.gep373.val522 + %.sroa.gep471 = getelementptr inbounds nuw i8, ptr %8, i64 9 + %.sroa.gep471.val = load i8, ptr %.sroa.gep471, align 1 + %.sroa.gep.sroa.gep373.val524 = load i8, ptr %.sroa.gep.sroa.gep373, align 1 + %256 = select i1 %230, i8 %.sroa.gep471.val, i8 %.sroa.gep.sroa.gep373.val524 %257 = zext i8 %256 to i64 %258 = shl nuw nsw i64 %257, 8 %259 = or disjoint i64 %258, %255 - %.sroa.gep471 = getelementptr inbounds nuw i8, ptr %8, i64 10 - %.sroa.gep471.val = load i8, ptr %.sroa.gep471, align 2 - %.sroa.gep.sroa.gep370.val523 = load i8, ptr %.sroa.gep.sroa.gep370, align 2 - %260 = select i1 %230, i8 %.sroa.gep471.val, i8 %.sroa.gep.sroa.gep370.val523 + %.sroa.gep473 = getelementptr inbounds nuw i8, ptr %8, i64 10 + %.sroa.gep473.val = load i8, ptr %.sroa.gep473, align 2 + %.sroa.gep.sroa.gep370.val525 = load i8, ptr %.sroa.gep.sroa.gep370, align 2 + %260 = select i1 %230, i8 %.sroa.gep473.val, i8 %.sroa.gep.sroa.gep370.val525 %261 = zext i8 %260 to i64 %262 = shl nuw nsw i64 %261, 16 %263 = or disjoint i64 %259, %262 - %.sroa.gep473 = getelementptr inbounds nuw i8, ptr %8, i64 11 - %.sroa.gep473.val = load i8, ptr %.sroa.gep473, align 1 - %.sroa.gep.sroa.gep367.val524 = load i8, ptr %.sroa.gep.sroa.gep367, align 1 - %264 = select i1 %230, i8 %.sroa.gep473.val, i8 %.sroa.gep.sroa.gep367.val524 + %.sroa.gep475 = getelementptr inbounds nuw i8, ptr %8, i64 11 + %.sroa.gep475.val = load i8, ptr %.sroa.gep475, align 1 + %.sroa.gep.sroa.gep367.val526 = load i8, ptr %.sroa.gep.sroa.gep367, align 1 + %264 = select i1 %230, i8 %.sroa.gep475.val, i8 %.sroa.gep.sroa.gep367.val526 %265 = zext i8 %264 to i64 %266 = shl nuw nsw i64 %265, 24 %267 = or disjoint i64 %263, %266 - %.sroa.gep475 = getelementptr inbounds nuw i8, ptr %8, i64 12 - %.sroa.gep475.val = load i8, ptr %.sroa.gep475, align 4 - %.sroa.gep.sroa.gep364.val525 = load i8, ptr %.sroa.gep.sroa.gep364, align 8 - %268 = select i1 %230, i8 %.sroa.gep475.val, i8 %.sroa.gep.sroa.gep364.val525 + %.sroa.gep477 = getelementptr inbounds nuw i8, ptr %8, i64 12 + %.sroa.gep477.val = load i8, ptr %.sroa.gep477, align 4 + %.sroa.gep.sroa.gep364.val527 = load i8, ptr %.sroa.gep.sroa.gep364, align 8 + %268 = select i1 %230, i8 %.sroa.gep477.val, i8 %.sroa.gep.sroa.gep364.val527 %269 = zext i8 %268 to i64 - %.sroa.gep477 = getelementptr inbounds nuw i8, ptr %8, i64 13 - %.sroa.gep477.val = load i8, ptr %.sroa.gep477, align 1 - %.sroa.gep469.val526 = load i8, ptr %.sroa.gep469, align 1 - %270 = select i1 %230, i8 %.sroa.gep477.val, i8 %.sroa.gep469.val526 + %.sroa.gep479 = getelementptr inbounds nuw i8, ptr %8, i64 13 + %.sroa.gep479.val = load i8, ptr %.sroa.gep479, align 1 + %.sroa.gep471.val528 = load i8, ptr %.sroa.gep471, align 1 + %270 = select i1 %230, i8 %.sroa.gep479.val, i8 %.sroa.gep471.val528 %271 = zext i8 %270 to i64 br i1 %or.cond14, label %272, label %315 272: ; preds = %228 - %.sroa.gep479 = getelementptr inbounds nuw i8, ptr %8, i64 14 - %.sroa.gep479.val = load i8, ptr %.sroa.gep479, align 2 - %.sroa.gep471.val527 = load i8, ptr %.sroa.gep471, align 2 - %273 = select i1 %230, i8 %.sroa.gep479.val, i8 %.sroa.gep471.val527 + %.sroa.gep481 = getelementptr inbounds nuw i8, ptr %8, i64 14 + %.sroa.gep481.val = load i8, ptr %.sroa.gep481, align 2 + %.sroa.gep473.val529 = load i8, ptr %.sroa.gep473, align 2 + %273 = select i1 %230, i8 %.sroa.gep481.val, i8 %.sroa.gep473.val529 %274 = zext i8 %273 to i64 - %.sroa.gep481 = getelementptr inbounds nuw i8, ptr %8, i64 15 - %.sroa.gep481.val = load i8, ptr %.sroa.gep481, align 1 - %.sroa.gep473.val528 = load i8, ptr %.sroa.gep473, align 1 - %275 = select i1 %230, i8 %.sroa.gep481.val, i8 %.sroa.gep473.val528 + %.sroa.gep483 = getelementptr inbounds nuw i8, ptr %8, i64 15 + %.sroa.gep483.val = load i8, ptr %.sroa.gep483, align 1 + %.sroa.gep475.val530 = load i8, ptr %.sroa.gep475, align 1 + %275 = select i1 %230, i8 %.sroa.gep483.val, i8 %.sroa.gep475.val530 %276 = zext i8 %275 to i64 %277 = shl nuw i64 %276, 56 %278 = shl nuw nsw i64 %274, 48 @@ -11435,48 +11435,48 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %282 = or disjoint i64 %281, %278 %283 = or disjoint i64 %282, %277 %284 = or disjoint i64 %283, %267 - %.sroa.gep483 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %.sroa.gep483.val = load i8, ptr %.sroa.gep483, align 16 - %.sroa.gep475.val529 = load i8, ptr %.sroa.gep475, align 4 - %285 = select i1 %230, i8 %.sroa.gep483.val, i8 %.sroa.gep475.val529 + %.sroa.gep485 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %.sroa.gep485.val = load i8, ptr %.sroa.gep485, align 16 + %.sroa.gep477.val531 = load i8, ptr %.sroa.gep477, align 4 + %285 = select i1 %230, i8 %.sroa.gep485.val, i8 %.sroa.gep477.val531 %286 = zext i8 %285 to i64 - %.sroa.gep485 = getelementptr inbounds nuw i8, ptr %8, i64 17 - %.sroa.gep485.val = load i8, ptr %.sroa.gep485, align 1 - %.sroa.gep477.val530 = load i8, ptr %.sroa.gep477, align 1 - %287 = select i1 %230, i8 %.sroa.gep485.val, i8 %.sroa.gep477.val530 + %.sroa.gep487 = getelementptr inbounds nuw i8, ptr %8, i64 17 + %.sroa.gep487.val = load i8, ptr %.sroa.gep487, align 1 + %.sroa.gep479.val532 = load i8, ptr %.sroa.gep479, align 1 + %287 = select i1 %230, i8 %.sroa.gep487.val, i8 %.sroa.gep479.val532 %288 = zext i8 %287 to i64 %289 = shl nuw nsw i64 %288, 8 - %.sroa.gep487 = getelementptr inbounds nuw i8, ptr %8, i64 18 - %.sroa.gep487.val = load i8, ptr %.sroa.gep487, align 2 - %.sroa.gep479.val531 = load i8, ptr %.sroa.gep479, align 2 - %290 = select i1 %230, i8 %.sroa.gep487.val, i8 %.sroa.gep479.val531 + %.sroa.gep489 = getelementptr inbounds nuw i8, ptr %8, i64 18 + %.sroa.gep489.val = load i8, ptr %.sroa.gep489, align 2 + %.sroa.gep481.val533 = load i8, ptr %.sroa.gep481, align 2 + %290 = select i1 %230, i8 %.sroa.gep489.val, i8 %.sroa.gep481.val533 %291 = zext i8 %290 to i64 %292 = shl nuw nsw i64 %291, 16 - %.sroa.gep489 = getelementptr inbounds nuw i8, ptr %8, i64 19 - %.sroa.gep489.val = load i8, ptr %.sroa.gep489, align 1 - %.sroa.gep481.val532 = load i8, ptr %.sroa.gep481, align 1 - %293 = select i1 %230, i8 %.sroa.gep489.val, i8 %.sroa.gep481.val532 + %.sroa.gep491 = getelementptr inbounds nuw i8, ptr %8, i64 19 + %.sroa.gep491.val = load i8, ptr %.sroa.gep491, align 1 + %.sroa.gep483.val534 = load i8, ptr %.sroa.gep483, align 1 + %293 = select i1 %230, i8 %.sroa.gep491.val, i8 %.sroa.gep483.val534 %294 = zext i8 %293 to i64 %295 = shl nuw nsw i64 %294, 24 - %.sroa.gep491 = getelementptr inbounds nuw i8, ptr %8, i64 20 - %.sroa.gep491.val = load i8, ptr %.sroa.gep491, align 4 - %.sroa.gep483.val533 = load i8, ptr %.sroa.gep483, align 16 - %296 = select i1 %230, i8 %.sroa.gep491.val, i8 %.sroa.gep483.val533 + %.sroa.gep493 = getelementptr inbounds nuw i8, ptr %8, i64 20 + %.sroa.gep493.val = load i8, ptr %.sroa.gep493, align 4 + %.sroa.gep485.val535 = load i8, ptr %.sroa.gep485, align 16 + %296 = select i1 %230, i8 %.sroa.gep493.val, i8 %.sroa.gep485.val535 %297 = zext i8 %296 to i64 - %.sroa.gep493 = getelementptr inbounds nuw i8, ptr %8, i64 21 - %.sroa.gep493.val = load i8, ptr %.sroa.gep493, align 1 - %.sroa.gep485.val534 = load i8, ptr %.sroa.gep485, align 1 - %298 = select i1 %230, i8 %.sroa.gep493.val, i8 %.sroa.gep485.val534 + %.sroa.gep495 = getelementptr inbounds nuw i8, ptr %8, i64 21 + %.sroa.gep495.val = load i8, ptr %.sroa.gep495, align 1 + %.sroa.gep487.val536 = load i8, ptr %.sroa.gep487, align 1 + %298 = select i1 %230, i8 %.sroa.gep495.val, i8 %.sroa.gep487.val536 %299 = zext i8 %298 to i64 - %.sroa.gep495 = getelementptr inbounds nuw i8, ptr %8, i64 22 - %.sroa.gep495.val = load i8, ptr %.sroa.gep495, align 2 - %.sroa.gep487.val535 = load i8, ptr %.sroa.gep487, align 2 - %300 = select i1 %230, i8 %.sroa.gep495.val, i8 %.sroa.gep487.val535 + %.sroa.gep497 = getelementptr inbounds nuw i8, ptr %8, i64 22 + %.sroa.gep497.val = load i8, ptr %.sroa.gep497, align 2 + %.sroa.gep489.val537 = load i8, ptr %.sroa.gep489, align 2 + %300 = select i1 %230, i8 %.sroa.gep497.val, i8 %.sroa.gep489.val537 %301 = zext i8 %300 to i64 - %.sroa.gep497 = getelementptr inbounds nuw i8, ptr %8, i64 23 - %.sroa.gep497.val = load i8, ptr %.sroa.gep497, align 1 - %.sroa.gep489.val536 = load i8, ptr %.sroa.gep489, align 1 - %302 = select i1 %230, i8 %.sroa.gep497.val, i8 %.sroa.gep489.val536 + %.sroa.gep499 = getelementptr inbounds nuw i8, ptr %8, i64 23 + %.sroa.gep499.val = load i8, ptr %.sroa.gep499, align 1 + %.sroa.gep491.val538 = load i8, ptr %.sroa.gep491, align 1 + %302 = select i1 %230, i8 %.sroa.gep499.val, i8 %.sroa.gep491.val538 %303 = zext i8 %302 to i64 %304 = shl nuw i64 %303, 56 %305 = shl nuw nsw i64 %301, 48 @@ -11494,17 +11494,17 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi 315: ; preds = %228 %316 = shl nuw nsw i64 %271, 8 - %.sroa.gep465 = getelementptr inbounds nuw i8, ptr %8, i64 14 - %.sroa.gep465.val = load i8, ptr %.sroa.gep465, align 2 - %.sroa.gep457.val520 = load i8, ptr %.sroa.gep471, align 2 - %317 = select i1 %230, i8 %.sroa.gep465.val, i8 %.sroa.gep457.val520 + %.sroa.gep467 = getelementptr inbounds nuw i8, ptr %8, i64 14 + %.sroa.gep467.val = load i8, ptr %.sroa.gep467, align 2 + %.sroa.gep459.val522 = load i8, ptr %.sroa.gep473, align 2 + %317 = select i1 %230, i8 %.sroa.gep467.val, i8 %.sroa.gep459.val522 %318 = zext i8 %317 to i64 %319 = shl nuw nsw i64 %318, 16 %320 = or disjoint i64 %316, %319 - %.sroa.gep467 = getelementptr inbounds nuw i8, ptr %8, i64 15 - %.sroa.gep467.val = load i8, ptr %.sroa.gep467, align 1 - %.sroa.gep459.val521 = load i8, ptr %.sroa.gep473, align 1 - %321 = select i1 %230, i8 %.sroa.gep467.val, i8 %.sroa.gep459.val521 + %.sroa.gep469 = getelementptr inbounds nuw i8, ptr %8, i64 15 + %.sroa.gep469.val = load i8, ptr %.sroa.gep469, align 1 + %.sroa.gep461.val523 = load i8, ptr %.sroa.gep475, align 1 + %321 = select i1 %230, i8 %.sroa.gep469.val, i8 %.sroa.gep461.val523 %322 = zext i8 %321 to i64 %323 = shl nuw nsw i64 %322, 24 %324 = or disjoint i64 %320, %323 @@ -11522,9 +11522,9 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %or.cond249 = select i1 %.not241, i1 %.not242, i1 false %.not243 = icmp eq i64 %.0190, %327 %or.cond250 = select i1 %or.cond249, i1 %.not243, i1 false - br i1 %or.cond250, label %331, label %.thread437 + br i1 %or.cond250, label %331, label %.thread439 -.thread437: ; preds = %326, %219 +.thread439: ; preds = %326, %219 %.sink = phi i32 [ 20, %219 ], [ 30, %326 ] %330 = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 %.sink, ptr %330, align 4, !tbaa !211 @@ -11535,7 +11535,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %336 -332: ; preds = %.thread423 +332: ; preds = %.thread425 %333 = getelementptr inbounds nuw i8, ptr %4, i64 24 %334 = load i32, ptr %333, align 8, !tbaa !251 %.not244 = icmp eq i32 %125, %334 @@ -11575,7 +11575,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 30, ptr %347, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit291 -348: ; preds = %.thread437, %212, %.thread428, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit255, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit269, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit271 +348: ; preds = %.thread439, %212, %.thread430, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit255, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit269, %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit271 %349 = load ptr, ptr %16, align 8, !tbaa !209 %350 = getelementptr inbounds nuw i8, ptr %0, i64 64 %351 = load ptr, ptr %350, align 8, !tbaa !212 @@ -14599,7 +14599,7 @@ _ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayE %155 = add i64 %114, %154 %156 = call noundef i64 %152(ptr noundef %153, i64 noundef %155, ptr noundef nonnull %149, i64 noundef %144) %.not344 = icmp eq i64 %156, %144 - br i1 %.not344, label %.preheader641, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit409 + br i1 %.not344, label %.preheader649, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit409 _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit409: ; preds = %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450 %157 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -14610,13 +14610,13 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 20, ptr %160, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 -.preheader641: ; preds = %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450, %191 +.preheader649: ; preds = %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450, %191 %.0321 = phi i32 [ %194, %191 ], [ %130, %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450 ] %.0319 = phi ptr [ %193, %191 ], [ %149, %_ZN12duckdb_minizL19mz_zip_array_resizeEPNS_14mz_zip_archiveEPNS_12mz_zip_arrayEmj.exit450 ] %161 = icmp ult i32 %.0321, 4 br i1 %161, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit407, label %166 -_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit407: ; preds = %.preheader641 +_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit407: ; preds = %.preheader649 %162 = getelementptr inbounds nuw i8, ptr %0, i64 48 %163 = load ptr, ptr %162, align 8, !tbaa !209 %164 = load ptr, ptr %147, align 8, !tbaa !212 @@ -14625,7 +14625,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 9, ptr %165, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 -166: ; preds = %.preheader641 +166: ; preds = %.preheader649 %167 = getelementptr inbounds nuw i8, ptr %.0319, i64 2 %168 = load i8, ptr %167, align 1, !tbaa !3 %169 = zext i8 %168 to i64 @@ -14671,7 +14671,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %193 = getelementptr inbounds nuw i8, ptr %.0319, i64 %192 %194 = sub i32 %.0321, %176 %.not345 = icmp eq i32 %194, 0 - br i1 %.not345, label %.loopexit, label %.preheader641, !llvm.loop !303 + br i1 %.not345, label %.loopexit, label %.preheader649, !llvm.loop !303 .loopexit: ; preds = %191, %185 %195 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -14736,8 +14736,8 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi .preheader: ; preds = %220 %229 = add i64 %213, 30 - %.not349652 = icmp eq i64 %135, 0 - br i1 %.not349652, label %252, label %.lr.ph + %.not349660 = icmp eq i64 %135, 0 + br i1 %.not349660, label %252, label %.lr.ph _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit397: ; preds = %220 %230 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -14745,13 +14745,13 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 .lr.ph: ; preds = %.preheader, %247 - %.0304655 = phi i64 [ %250, %247 ], [ %135, %.preheader ] - %.0305654 = phi i64 [ %248, %247 ], [ %114, %.preheader ] - %.0306653 = phi i64 [ %249, %247 ], [ %229, %.preheader ] - %231 = call i64 @llvm.umin.i64(i64 %.0304655, i64 65536) + %.0304663 = phi i64 [ %250, %247 ], [ %135, %.preheader ] + %.0305662 = phi i64 [ %248, %247 ], [ %114, %.preheader ] + %.0306661 = phi i64 [ %249, %247 ], [ %229, %.preheader ] + %231 = call i64 @llvm.umin.i64(i64 %.0304663, i64 65536) %232 = load ptr, ptr %16, align 8, !tbaa !215 %233 = load ptr, ptr %106, align 8, !tbaa !226 - %234 = call noundef i64 %232(ptr noundef %233, i64 noundef %.0305654, ptr noundef %227, i64 noundef %231) + %234 = call noundef i64 %232(ptr noundef %233, i64 noundef %.0305662, ptr noundef %227, i64 noundef %231) %.not364 = icmp eq i64 %234, %231 br i1 %.not364, label %239, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit395 @@ -14767,7 +14767,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi 239: ; preds = %.lr.ph %240 = load ptr, ptr %214, align 8, !tbaa !292 %241 = load ptr, ptr %216, align 8, !tbaa !226 - %242 = call noundef i64 %240(ptr noundef %241, i64 noundef %.0306653, ptr noundef %227, i64 noundef %231) + %242 = call noundef i64 %240(ptr noundef %241, i64 noundef %.0306661, ptr noundef %227, i64 noundef %231) %.not365 = icmp eq i64 %242, %231 br i1 %.not365, label %247, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit393 @@ -14781,9 +14781,9 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 247: ; preds = %239 - %248 = add i64 %231, %.0305654 - %249 = add i64 %231, %.0306653 - %250 = sub i64 %.0304655, %231 + %248 = add i64 %231, %.0305662 + %249 = add i64 %231, %.0306661 + %250 = sub i64 %.0304663, %231 %.not349 = icmp eq i64 %250, 0 br i1 %.not349, label %._crit_edge, label %.lr.ph, !llvm.loop !304 @@ -14830,7 +14830,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %270 = load i32, ptr %227, align 1 %271 = icmp eq i32 %270, 134695760 %272 = select i1 %271, i32 24, i32 20 - br label %.thread599 + br label %.thread607 273: ; preds = %256 %274 = call noundef i64 %261(ptr noundef %262, i64 noundef %.0305.lcssa, ptr noundef %227, i64 noundef 16) @@ -14871,11 +14871,11 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 %291, ptr %295, align 1 %296 = getelementptr inbounds nuw i8, ptr %227, i64 20 store i32 0, ptr %296, align 1 - br label %.thread599 + br label %.thread607 297: ; preds = %275 %298 = select i1 %277, i32 16, i32 12 - br label %.thread599 + br label %.thread607 299: ; preds = %273 %300 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -14886,17 +14886,17 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 20, ptr %303, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 -.thread599: ; preds = %297, %281, %269 - %storemerge640 = phi i32 [ %272, %269 ], [ %298, %297 ], [ 24, %281 ] - store i32 %storemerge640, ptr %4, align 4, !tbaa !10 +.thread607: ; preds = %297, %281, %269 + %storemerge648 = phi i32 [ %272, %269 ], [ %298, %297 ], [ 24, %281 ] + store i32 %storemerge648, ptr %4, align 4, !tbaa !10 %304 = load ptr, ptr %214, align 8, !tbaa !292 %305 = load ptr, ptr %216, align 8, !tbaa !226 - %306 = zext nneg i32 %storemerge640 to i64 + %306 = zext nneg i32 %storemerge648 to i64 %307 = call noundef i64 %304(ptr noundef %305, i64 noundef %.0306.lcssa, ptr noundef nonnull %227, i64 noundef %306) %.not354 = icmp eq i64 %307, %306 br i1 %.not354, label %312, label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit387 -_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit387: ; preds = %.thread599 +_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit387: ; preds = %.thread607 %308 = getelementptr inbounds nuw i8, ptr %0, i64 48 %309 = load ptr, ptr %308, align 8, !tbaa !209 %310 = load ptr, ptr %223, align 8, !tbaa !212 @@ -14905,7 +14905,7 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi store i32 19, ptr %311, align 4, !tbaa !211 br label %_ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exit429 -312: ; preds = %.thread599 +312: ; preds = %.thread607 %313 = add i64 %.0306.lcssa, %306 br label %314 @@ -14932,8 +14932,8 @@ _ZN12duckdb_minizL16mz_zip_set_errorEPNS_14mz_zip_archiveENS_12mz_zip_errorE.exi %325 = getelementptr inbounds nuw i8, ptr %7, i64 40 %.20..20..20..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 20 store i64 -1, ptr %.20..20..20..sroa_idx, align 4 - %.42..42..42..sroa_idx731 = getelementptr inbounds nuw i8, ptr %6, i64 42 - store i32 -1, ptr %.42..42..42..sroa_idx731, align 2 + %.42..42..42..sroa_idx739 = getelementptr inbounds nuw i8, ptr %6, i64 42 + store i32 -1, ptr %.42..42..42..sroa_idx739, align 2 %.val489 = load i64, ptr %325, align 8 %326 = call fastcc noundef i32 @_ZN12duckdb_minizL42mz_zip_writer_update_zip64_extension_blockEPNS_12mz_zip_arrayEPNS_14mz_zip_archiveEPKhjPmS6_S6_Pj(ptr noundef %8, ptr noundef %0, ptr noundef %323, i32 noundef %69, i64 %134, i64 %.val489, i64 %213) %.not358 = icmp eq i32 %326, 0 diff --git a/bench/faiss/optimized/Clustering.ll b/bench/faiss/optimized/Clustering.ll index 47ac8f61667..857bd7a2d49 100644 --- a/bench/faiss/optimized/Clustering.ll +++ b/bench/faiss/optimized/Clustering.ll @@ -455,9 +455,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %46, % 51: ; preds = %6 %.not204 = icmp eq ptr %3, null - br i1 %.not204, label %._crit_edge784, label %52 + br i1 %.not204, label %._crit_edge783, label %52 -._crit_edge784: ; preds = %51 +._crit_edge783: ; preds = %51 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 56 %.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !29 br label %83 @@ -527,7 +527,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit248: ; preds = %78 call void @llvm.lifetime.end.p0(ptr nonnull %20) br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379 -83: ; preds = %._crit_edge784, %52 +83: ; preds = %._crit_edge783, %52 %84 = phi i64 [ %.pre, %._crit_edge784 ], [ %55, %52 ] %85 = getelementptr inbounds nuw i8, ptr %4, i64 8 %86 = load i32, ptr %85, align 8, !tbaa !58 @@ -598,22 +598,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit252: ; preds = %10 %117 = load i8, ptr %116, align 8, !range !43 %118 = trunc nuw i8 %117 to i1 %or.cond239 = select i1 %.not204, i1 %118, i1 false - br i1 %or.cond239, label %.preheader497, label %.loopexit498 + br i1 %or.cond239, label %.preheader496, label %.loopexit497 -.preheader497: ; preds = %114 +.preheader496: ; preds = %114 %119 = load i64, ptr %88, align 8, !tbaa !29 %120 = mul i64 %119, %1 - %.not667 = icmp eq i64 %120, 0 - br i1 %.not667, label %.loopexit498.thread, label %.lr.ph + %.not666 = icmp eq i64 %120, 0 + br i1 %.not666, label %.loopexit497.thread, label %.lr.ph 121: ; preds = %.lr.ph - %122 = add nuw i64 %.0181643, 1 + %122 = add nuw i64 %.0181642, 1 %exitcond.not = icmp eq i64 %122, %120 - br i1 %exitcond.not, label %.loopexit498, label %.lr.ph, !llvm.loop !61 + br i1 %exitcond.not, label %.loopexit497, label %.lr.ph, !llvm.loop !61 -.lr.ph: ; preds = %.preheader497, %121 - %.0181643 = phi i64 [ %122, %121 ], [ 0, %.preheader497 ] - %123 = getelementptr inbounds nuw float, ptr %2, i64 %.0181643 +.lr.ph: ; preds = %.preheader496, %121 + %.0181642 = phi i64 [ %122, %121 ], [ 0, %.preheader497 ] + %123 = getelementptr inbounds nuw float, ptr %2, i64 %.0181642 %124 = load float, ptr %123, align 4, !tbaa !47 %125 = tail call float @llvm.fabs.f32(float %124) %126 = fcmp ueq float %125, 0x7FF0000000000000 @@ -671,22 +671,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit256: ; preds = %14 call void @llvm.lifetime.end.p0(ptr nonnull %22) br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379 -.loopexit498: ; preds = %121, %114 - br i1 %.not204, label %.loopexit498.thread, label %147 +.loopexit497: ; preds = %121, %114 + br i1 %.not204, label %.loopexit497.thread, label %147 -147: ; preds = %.loopexit498 +147: ; preds = %.loopexit497 %148 = load ptr, ptr %3, align 8, !tbaa !4 %149 = getelementptr inbounds nuw i8, ptr %148, i64 136 %150 = load ptr, ptr %149, align 8 %151 = invoke noundef i64 %150(ptr noundef nonnull align 8 dereferenceable(36) %3) to label %154 unwind label %166 -.loopexit498.thread: ; preds = %.preheader497, %.loopexit498 +.loopexit497.thread: ; preds = %.preheader496, %.loopexit497 %152 = load i64, ptr %88, align 8, !tbaa !29 %153 = shl i64 %152, 2 br label %154 -154: ; preds = %147, %.loopexit498.thread +154: ; preds = %147, %.loopexit497.thread %155 = phi i64 [ %153, %.loopexit498.thread ], [ %151, %147 ] %156 = load i64, ptr %28, align 8, !tbaa !37 %157 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -708,8 +708,8 @@ _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit: ; preds = %15 br label %177 166: ; preds = %199, %263, %212, %147 - %.sroa.0444.0 = phi ptr [ %.sroa.0444.1, %212 ], [ %.sroa.0444.1, %199 ], [ %.sroa.0444.1, %263 ], [ null, %147 ] - %.sroa.0447.0 = phi ptr [ %.sroa.0447.1, %212 ], [ %.sroa.0447.1, %199 ], [ %.sroa.0447.1, %263 ], [ null, %147 ] + %.sroa.0443.0 = phi ptr [ %.sroa.0443.1, %212 ], [ %.sroa.0443.1, %199 ], [ %.sroa.0443.1, %263 ], [ null, %147 ] + %.sroa.0446.0 = phi ptr [ %.sroa.0446.1, %212 ], [ %.sroa.0446.1, %199 ], [ %.sroa.0446.1, %263 ], [ null, %147 ] %167 = landingpad { ptr, i32 } cleanup br label %948 @@ -728,8 +728,8 @@ _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit: ; preds = %15 br label %177 177: ; preds = %168, %174, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit - %.sroa.0444.1 = phi ptr [ %165, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %174 ], [ null, %168 ] - %.sroa.0447.1 = phi ptr [ %164, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %174 ], [ null, %168 ] + %.sroa.0443.1 = phi ptr [ %165, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %174 ], [ null, %168 ] + %.sroa.0446.1 = phi ptr [ %164, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %174 ], [ null, %168 ] %.0182 = phi ptr [ %164, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ %2, %174 ], [ %2, %168 ] %.0144 = phi ptr [ %165, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ %5, %174 ], [ %5, %168 ] %.0 = phi i64 [ %163, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ %1, %174 ], [ %1, %168 ] @@ -745,11 +745,11 @@ _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit: ; preds = %15 184: ; preds = %183 %185 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10, i64 noundef %.0) - %.pre794 = load i64, ptr %28, align 8, !tbaa !37 + %.pre793 = load i64, ptr %28, align 8, !tbaa !37 br label %186 186: ; preds = %184, %183 - %187 = phi i64 [ %.pre794, %184 ], [ %.0, %183 ] + %187 = phi i64 [ %.pre793, %184 ], [ %.0, %183 ] %188 = getelementptr inbounds nuw i8, ptr %0, i64 72 %189 = load i64, ptr %88, align 8, !tbaa !29 %190 = mul i64 %187, %189 @@ -1035,11 +1035,11 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit265: ; preds = %31 %330 = trunc nuw i8 %329 to i1 %331 = select i1 %330, ptr @.str.16, ptr @.str.17 %332 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.15, i64 noundef %297, ptr noundef nonnull %331) - %.pre785 = load i8, ptr %180, align 8, !tbaa !66, !range !43 + %.pre784 = load i8, ptr %180, align 8, !tbaa !66, !range !43 br label %333 333: ; preds = %327, %323 - %334 = phi i8 [ %.pre785, %327 ], [ %324, %323 ] + %334 = phi i8 [ %.pre784, %327 ], [ %324, %323 ] %335 = trunc nuw i8 %334 to i1 br i1 %335, label %336, label %344 @@ -1121,16 +1121,16 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ %369 = getelementptr inbounds nuw i8, ptr %0, i64 12 %370 = load i32, ptr %369, align 4, !tbaa !22 %371 = icmp sgt i32 %370, 0 - br i1 %371, label %.lr.ph662, label %._crit_edge663.thread + br i1 %371, label %.lr.ph661, label %._crit_edge662.thread -.lr.ph662: ; preds = %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit +.lr.ph661: ; preds = %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit %.not.i.i.i.i271 = icmp eq i64 %.0, 0 %372 = add nsw i64 %.0, -1 %373 = icmp eq i64 %372, 0 %.idx.i.i.i.i.i.i.i272 = shl nuw nsw i64 %372, 2 %374 = add i64 %354, 1 - %sext668 = shl i64 %297, 32 - %375 = ashr exact i64 %sext668, 32 + %sext667 = shl i64 %297, 32 + %375 = ashr exact i64 %sext667, 32 %376 = getelementptr inbounds nuw i8, ptr %0, i64 17 %377 = getelementptr inbounds nuw i8, ptr %0, i64 18 %378 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -1150,22 +1150,22 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ %.not.i331 = icmp eq ptr %384, %25 %390 = getelementptr inbounds nuw i8, ptr %25, i64 16 %391 = getelementptr inbounds nuw i8, ptr %25, i64 8 - br i1 %271, label %.lr.ph662.split.us, label %.lr.ph662.split + br i1 %271, label %.lr.ph661.split.us, label %.lr.ph661.split -.lr.ph662.split.us: ; preds = %.lr.ph662 +.lr.ph661.split.us: ; preds = %.lr.ph661 %392 = load i8, ptr %180, align 8, !tbaa !66, !range !43, !noundef !44 %393 = trunc nuw i8 %392 to i1 %394 = icmp ne i32 %370, 1 %or.cond240.us = and i1 %394, %393 br i1 %or.cond240.us, label %395, label %397 -395: ; preds = %.lr.ph662.split.us +395: ; preds = %.lr.ph661.split.us %396 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.19, i32 noundef 0, i32 noundef %370) - %.pre793 = load i64, ptr %88, align 8, !tbaa !29 + %.pre792 = load i64, ptr %88, align 8, !tbaa !29 br label %397 -397: ; preds = %395, %.lr.ph662.split.us - %398 = phi i64 [ %.pre793, %395 ], [ %355, %.lr.ph662.split.us ] +397: ; preds = %395, %.lr.ph661.split.us + %398 = phi i64 [ %.pre792, %395 ], [ %355, %.lr.ph662.split.us ] %399 = load i64, ptr %28, align 8, !tbaa !37 %400 = mul i64 %399, %398 %401 = load ptr, ptr %288, align 8, !tbaa !46 @@ -1179,16 +1179,16 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ 408: ; preds = %397 %409 = icmp ult i64 %400, %406 - br i1 %409, label %410, label %.split666.us + br i1 %409, label %410, label %.split665.us 410: ; preds = %408 %411 = getelementptr inbounds nuw float, ptr %402, i64 %400 %.not.i.i268.us = icmp eq ptr %401, %411 - br i1 %.not.i.i268.us, label %.split666.us, label %412 + br i1 %.not.i.i268.us, label %.split665.us, label %412 412: ; preds = %410 store ptr %411, ptr %288, align 8, !tbaa !46 - br label %.split666.us + br label %.split665.us 413: ; preds = %397 %414 = sub nuw i64 %400, %406 @@ -1200,30 +1200,30 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -._crit_edge663: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit +._crit_edge662: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit %416 = icmp sgt i32 %887, 1 - br i1 %416, label %894, label %._crit_edge663.thread + br i1 %416, label %894, label %._crit_edge662.thread 417: ; preds = %362, %361 %418 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit363 -.lr.ph662.split: ; preds = %.lr.ph662, %_ZNSt6vectorIiSaIiEED2Ev.exit +.lr.ph661.split: ; preds = %.lr.ph661, %_ZNSt6vectorIiSaIiEED2Ev.exit %.pre26.i = phi ptr [ %881, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ null, %.lr.ph662 ] %419 = phi ptr [ %882, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ null, %.lr.ph662 ] - %indvars.iv781 = phi i64 [ %indvars.iv.next782, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0, %.lr.ph662 ] + %indvars.iv780 = phi i64 [ %indvars.iv.next781, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0, %.lr.ph662 ] %420 = phi i32 [ %887, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ %370, %.lr.ph662 ] - %.0179660 = phi double [ %.1180.lcssa, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0.000000e+00, %.lr.ph662 ] - %.0183659 = phi float [ %.1184, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ %286, %.lr.ph662 ] + %.0179659 = phi double [ %.1180.lcssa, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ 0.000000e+00, %.lr.ph662 ] + %.0183658 = phi float [ %.1184, %_ZNSt6vectorIiSaIiEED2Ev.exit ], [ %286, %.lr.ph662 ] %421 = load i8, ptr %180, align 8, !tbaa !66, !range !43, !noundef !44 %422 = trunc nuw i8 %421 to i1 %423 = icmp sgt i32 %420, 1 %or.cond240 = and i1 %423, %422 br i1 %or.cond240, label %424, label %428 -424: ; preds = %.lr.ph662.split - %425 = trunc nuw nsw i64 %indvars.iv781 to i32 +424: ; preds = %.lr.ph661.split + %425 = trunc nuw nsw i64 %indvars.iv780 to i32 %426 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.19, i32 noundef %425, i32 noundef %420) br label %428 @@ -1232,7 +1232,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -428: ; preds = %424, %.lr.ph662.split +428: ; preds = %424, %.lr.ph661.split %429 = load i64, ptr %88, align 8, !tbaa !29 %430 = load i64, ptr %28, align 8, !tbaa !37 %431 = mul i64 %430, %429 @@ -1266,16 +1266,16 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPfmfET_ _ZNSt6vectorIfSaIfEE6resizeEm.exit270: ; preds = %445, %443, %441, %439 br i1 %.not.i.i.i.i271, label %_ZNSt6vectorIiSaIiEEC2EmRKS0_.exit, label %446 -.split666.us: ; preds = %413, %412, %410, %408 +.split665.us: ; preds = %413, %412, %410, %408 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.26) #26 - to label %.noexc274 unwind label %.loopexit.split-lp488 + to label %.noexc274 unwind label %.loopexit.split-lp487 -.noexc274: ; preds = %.split666.us +.noexc274: ; preds = %.split665.us unreachable 446: ; preds = %_ZNSt6vectorIfSaIfEE6resizeEm.exit270 %447 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %277) #25 - to label %.noexc275 unwind label %.loopexit487 + to label %.noexc275 unwind label %.loopexit486 .noexc275: ; preds = %446 %448 = getelementptr inbounds nuw i32, ptr %447, i64 %.0 @@ -1290,7 +1290,7 @@ _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc275 _ZNSt6vectorIiSaIiEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i, %.noexc275, %_ZNSt6vectorIfSaIfEE6resizeEm.exit270 %.sroa.0405.1 = phi ptr [ %447, %.noexc275 ], [ %447, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIfSaIfEE6resizeEm.exit270 ] %.sroa.12.1 = phi ptr [ %448, %.noexc275 ], [ %448, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIfSaIfEE6resizeEm.exit270 ] - %450 = mul nuw nsw i64 %indvars.iv781, 15486557 + %450 = mul nuw nsw i64 %indvars.iv780, 15486557 %451 = add i64 %374, %450 invoke void @_ZN5faiss9rand_permEPiml(ptr noundef %.sroa.0405.1, i64 noundef %.0, i64 noundef %451) to label %452 unwind label %456 @@ -1301,15 +1301,15 @@ _ZNSt6vectorIiSaIiEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPimiET_ br i1 %.not204, label %455, label %469 455: ; preds = %452 - br i1 %454, label %.lr.ph647, label %.loopexit485 + br i1 %454, label %.lr.ph646, label %.loopexit484 -.loopexit487: ; preds = %446 - %lpad.loopexit489 = landingpad { ptr, i32 } +.loopexit486: ; preds = %446 + %lpad.loopexit488 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -.loopexit.split-lp488: ; preds = %.split666.us - %lpad.loopexit.split-lp490 = landingpad { ptr, i32 } +.loopexit.split-lp487: ; preds = %.split665.us + %lpad.loopexit.split-lp489 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 @@ -1318,27 +1318,27 @@ _ZNSt6vectorIiSaIiEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPimiET_ cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.lr.ph647: ; preds = %455, %.lr.ph647 - %indvars.iv774 = phi i64 [ %indvars.iv.next775, %.lr.ph647 ], [ %375, %455 ] +.lr.ph646: ; preds = %455, %.lr.ph646 + %indvars.iv773 = phi i64 [ %indvars.iv.next774, %.lr.ph647 ], [ %375, %455 ] %458 = load i64, ptr %88, align 8, !tbaa !29 - %459 = mul i64 %458, %indvars.iv774 + %459 = mul i64 %458, %indvars.iv773 %460 = load ptr, ptr %287, align 8, !tbaa !13 %461 = getelementptr inbounds nuw float, ptr %460, i64 %459 - %462 = getelementptr inbounds nuw i32, ptr %.sroa.0405.1, i64 %indvars.iv774 + %462 = getelementptr inbounds nuw i32, ptr %.sroa.0405.1, i64 %indvars.iv773 %463 = load i32, ptr %462, align 4, !tbaa !39 %464 = sext i32 %463 to i64 %465 = mul i64 %155, %464 %466 = getelementptr inbounds nuw i8, ptr %.0182, i64 %465 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %461, ptr align 1 %466, i64 %155, i1 false) - %indvars.iv.next775 = add nuw nsw i64 %indvars.iv774, 1 + %indvars.iv.next774 = add nuw nsw i64 %indvars.iv773, 1 %467 = load i64, ptr %28, align 8, !tbaa !37 - %468 = icmp ugt i64 %467, %indvars.iv.next775 - br i1 %468, label %.lr.ph647, label %.loopexit485, !llvm.loop !72 + %468 = icmp ugt i64 %467, %indvars.iv.next774 + br i1 %468, label %.lr.ph646, label %.loopexit484, !llvm.loop !72 469: ; preds = %452 - br i1 %454, label %.lr.ph645, label %.loopexit485 + br i1 %454, label %.lr.ph644, label %.loopexit484 -.lr.ph645: ; preds = %469, %482 +.lr.ph644: ; preds = %469, %482 %indvars.iv = phi i64 [ %indvars.iv.next, %482 ], [ %375, %469 ] %470 = getelementptr inbounds nuw i32, ptr %.sroa.0405.1, i64 %indvars.iv %471 = load i32, ptr %470, align 4, !tbaa !39 @@ -1355,30 +1355,30 @@ _ZNSt6vectorIiSaIiEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPimiET_ invoke void %481(ptr noundef nonnull align 8 dereferenceable(36) %3, i64 noundef 1, ptr noundef %474, ptr noundef nonnull %478) to label %482 unwind label %_ZNSt6vectorIfSaIfEED2Ev.exit326.thread -482: ; preds = %.lr.ph645 +482: ; preds = %.lr.ph644 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %483 = load i64, ptr %28, align 8, !tbaa !37 %484 = icmp ugt i64 %483, %indvars.iv.next - br i1 %484, label %.lr.ph645, label %.loopexit485, !llvm.loop !73 + br i1 %484, label %.lr.ph644, label %.loopexit484, !llvm.loop !73 -_ZNSt6vectorIfSaIfEED2Ev.exit326.thread: ; preds = %.lr.ph645 +_ZNSt6vectorIfSaIfEED2Ev.exit326.thread: ; preds = %.lr.ph644 %485 = landingpad { ptr, i32 } cleanup br label %890 -.loopexit485: ; preds = %482, %.lr.ph647, %469, %455 +.loopexit484: ; preds = %482, %.lr.ph646, %469, %455 %486 = phi i64 [ %453, %469 ], [ %453, %455 ], [ %467, %.lr.ph647 ], [ %483, %482 ] %487 = load i8, ptr %376, align 1, !tbaa !42, !range !43, !noundef !44 %488 = trunc nuw i8 %487 to i1 br i1 %488, label %489, label %.noexc277 -489: ; preds = %.loopexit485 +489: ; preds = %.loopexit484 %490 = load i64, ptr %88, align 8, !tbaa !29 %491 = load ptr, ptr %287, align 8, !tbaa !13 invoke void @_ZN5faiss14fvec_renorm_L2EmmPf(i64 noundef %490, i64 noundef %486, ptr noundef %491) to label %.noexc277 unwind label %456 -.noexc277: ; preds = %489, %.loopexit485 +.noexc277: ; preds = %489, %.loopexit484 %492 = load i8, ptr %377, align 2, !tbaa !45, !range !43, !noundef !44 %493 = trunc nuw i8 %492 to i1 br i1 %493, label %.preheader.i, label %_ZN5faiss10Clustering22post_process_centroidsEv.exit @@ -1421,50 +1421,50 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre 509: ; preds = %505, %_ZN5faiss10Clustering22post_process_centroidsEv.exit %510 = load i8, ptr %379, align 1, !tbaa !75, !range !43, !noundef !44 %511 = trunc nuw i8 %510 to i1 - %.pre788 = load i64, ptr %28, align 8, !tbaa !37 - %.pre790 = load ptr, ptr %287, align 8, !tbaa !13 + %.pre787 = load i64, ptr %28, align 8, !tbaa !37 + %.pre789 = load ptr, ptr %287, align 8, !tbaa !13 br i1 %511, label %516, label %512 512: ; preds = %509 %513 = load ptr, ptr %4, align 8, !tbaa !4 %514 = getelementptr inbounds nuw i8, ptr %513, i64 16 %515 = load ptr, ptr %514, align 8 - invoke void %515(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %.pre788, ptr noundef %.pre790) + invoke void %515(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %.pre787, ptr noundef %.pre789) to label %._crit_edge786 unwind label %456 -._crit_edge786: ; preds = %512 - %.pre787 = load i64, ptr %28, align 8, !tbaa !37 - %.pre789 = load ptr, ptr %287, align 8, !tbaa !13 +._crit_edge785: ; preds = %512 + %.pre786 = load i64, ptr %28, align 8, !tbaa !37 + %.pre788 = load ptr, ptr %287, align 8, !tbaa !13 br label %516 -516: ; preds = %._crit_edge786, %509 - %517 = phi ptr [ %.pre789, %._crit_edge786 ], [ %.pre790, %509 ] - %518 = phi i64 [ %.pre787, %._crit_edge786 ], [ %.pre788, %509 ] +516: ; preds = %._crit_edge785, %509 + %517 = phi ptr [ %.pre788, %._crit_edge786 ], [ %.pre789, %509 ] + %518 = phi i64 [ %.pre786, %._crit_edge786 ], [ %.pre787, %509 ] %519 = load ptr, ptr %4, align 8, !tbaa !4 %520 = getelementptr inbounds nuw i8, ptr %519, i64 24 %521 = load ptr, ptr %520, align 8 invoke void %521(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %518, ptr noundef %517) to label %.preheader475 unwind label %456 -.preheader475: ; preds = %516 +.preheader474: ; preds = %516 %522 = load i32, ptr %157, align 8, !tbaa !17 %523 = icmp sgt i32 %522, 0 - br i1 %523, label %.lr.ph655, label %._crit_edge656 + br i1 %523, label %.lr.ph654, label %._crit_edge655 -._crit_edge656: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit, %.preheader475 - %.1180.lcssa = phi double [ %.0179660, %.preheader475 ], [ %565, %_ZNSt6vectorIfSaIfEED2Ev.exit ] +._crit_edge655: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit, %.preheader474 + %.1180.lcssa = phi double [ %.0179659, %.preheader475 ], [ %565, %_ZNSt6vectorIfSaIfEED2Ev.exit ] %.0174.lcssa = phi float [ 0.000000e+00, %.preheader475 ], [ %.1175.lcssa, %_ZNSt6vectorIfSaIfEED2Ev.exit ] %524 = load i8, ptr %180, align 8, !tbaa !66, !range !43, !noundef !44 %525 = trunc nuw i8 %524 to i1 br i1 %525, label %791, label %792 -.lr.ph655: ; preds = %.preheader475, %_ZNSt6vectorIfSaIfEED2Ev.exit - %.0173654 = phi i32 [ %785, %_ZNSt6vectorIfSaIfEED2Ev.exit ], [ 0, %.preheader475 ] - %.1180653 = phi double [ %565, %_ZNSt6vectorIfSaIfEED2Ev.exit ], [ %.0179660, %.preheader475 ] +.lr.ph654: ; preds = %.preheader474, %_ZNSt6vectorIfSaIfEED2Ev.exit + %.0173653 = phi i32 [ %785, %_ZNSt6vectorIfSaIfEED2Ev.exit ], [ 0, %.preheader475 ] + %.1180652 = phi double [ %565, %_ZNSt6vectorIfSaIfEED2Ev.exit ], [ %.0179659, %.preheader475 ] %526 = invoke noundef double @_ZN5faiss12getmillisecsEv() to label %527 unwind label %532 -527: ; preds = %.lr.ph655 +527: ; preds = %.lr.ph654 br i1 %.not204, label %528, label %534 528: ; preds = %527 @@ -1474,7 +1474,7 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre invoke void %531(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %.0, ptr noundef %.0182, i64 noundef 1, ptr noundef nonnull %279, ptr noundef nonnull %274, ptr noundef null) to label %.loopexit474 unwind label %532 -532: ; preds = %561, %.loopexit474, %528, %.lr.ph655 +532: ; preds = %561, %.loopexit473, %528, %.lr.ph654 %533 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 @@ -1487,24 +1487,24 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre to label %.preheader unwind label %539 .preheader: ; preds = %534 - br i1 %.not.i.i.i.i271, label %.loopexit474, label %.lr.ph649.preheader + br i1 %.not.i.i.i.i271, label %.loopexit473, label %.lr.ph648.preheader -.lr.ph649.preheader: ; preds = %.preheader - %.pre791 = load i64, ptr %356, align 8, !tbaa !26 - br label %.lr.ph649 +.lr.ph648.preheader: ; preds = %.preheader + %.pre790 = load i64, ptr %356, align 8, !tbaa !26 + br label %.lr.ph648 539: ; preds = %534 %540 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.lr.ph649: ; preds = %.lr.ph649.preheader, %555 - %541 = phi i64 [ %556, %555 ], [ %.pre791, %.lr.ph649.preheader ] - %.0147648 = phi i64 [ %557, %555 ], [ 0, %.lr.ph649.preheader ] - %542 = add i64 %541, %.0147648 +.lr.ph648: ; preds = %.lr.ph648.preheader, %555 + %541 = phi i64 [ %556, %555 ], [ %.pre790, %.lr.ph649.preheader ] + %.0147647 = phi i64 [ %557, %555 ], [ 0, %.lr.ph649.preheader ] + %542 = add i64 %541, %.0147647 %spec.select = call i64 @llvm.umin.i64(i64 %542, i64 %.0) - %543 = sub nsw i64 %spec.select, %.0147648 - %544 = mul i64 %.0147648, %538 + %543 = sub nsw i64 %spec.select, %.0147647 + %544 = mul i64 %.0147647, %538 %545 = getelementptr inbounds nuw i8, ptr %.0182, i64 %544 %546 = load ptr, ptr %3, align 8, !tbaa !4 %547 = getelementptr inbounds nuw i8, ptr %546, i64 152 @@ -1512,9 +1512,9 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre invoke void %548(ptr noundef nonnull align 8 dereferenceable(36) %3, i64 noundef %543, ptr noundef %545, ptr noundef %.sroa.0416.0) to label %549 unwind label %559 -549: ; preds = %.lr.ph649 - %550 = getelementptr inbounds nuw float, ptr %279, i64 %.0147648 - %551 = getelementptr inbounds nuw i64, ptr %274, i64 %.0147648 +549: ; preds = %.lr.ph648 + %550 = getelementptr inbounds nuw float, ptr %279, i64 %.0147647 + %551 = getelementptr inbounds nuw i64, ptr %274, i64 %.0147647 %552 = load ptr, ptr %4, align 8, !tbaa !4 %553 = getelementptr inbounds nuw i8, ptr %552, i64 40 %554 = load ptr, ptr %553, align 8 @@ -1523,29 +1523,29 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre 555: ; preds = %549 %556 = load i64, ptr %356, align 8, !tbaa !26 - %557 = add i64 %556, %.0147648 + %557 = add i64 %556, %.0147647 %558 = icmp ult i64 %557, %.0 - br i1 %558, label %.lr.ph649, label %.loopexit474, !llvm.loop !76 + br i1 %558, label %.lr.ph648, label %.loopexit473, !llvm.loop !76 -559: ; preds = %549, %.lr.ph649 +559: ; preds = %549, %.lr.ph648 %560 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.loopexit474: ; preds = %555, %.preheader, %528 +.loopexit473: ; preds = %555, %.preheader, %528 invoke void @_ZN5faiss17InterruptCallback5checkEv() to label %561 unwind label %532 -561: ; preds = %.loopexit474 +561: ; preds = %.loopexit473 %562 = invoke noundef double @_ZN5faiss12getmillisecsEv() to label %563 unwind label %532 563: ; preds = %561 %564 = fsub double %562, %526 - %565 = fadd double %.1180653, %564 - br i1 %380, label %.lr.ph652, label %._crit_edge + %565 = fadd double %.1180652, %564 + br i1 %380, label %.lr.ph651, label %._crit_edge -._crit_edge: ; preds = %.lr.ph652, %563 +._crit_edge: ; preds = %.lr.ph651, %563 %.1175.lcssa = phi float [ 0.000000e+00, %563 ], [ %578, %.lr.ph652 ] %566 = load i64, ptr %28, align 8, !tbaa !37 %567 = icmp ugt i64 %566, 2305843009213693951 @@ -1553,7 +1553,7 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit: ; preds = %.lr.ph.i, %.pre 568: ; preds = %._crit_edge invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.26) #26 - to label %.noexc284 unwind label %.loopexit.split-lp477 + to label %.noexc284 unwind label %.loopexit.split-lp476 .noexc284: ; preds = %568 unreachable @@ -1565,7 +1565,7 @@ _ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i278: ; preds = %._crit_edge 569: ; preds = %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i278 %570 = shl nuw nsw i64 %566, 2 %571 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %570) #25 - to label %.noexc285 unwind label %.loopexit476 + to label %.noexc285 unwind label %.loopexit475 .noexc285: ; preds = %569 %572 = getelementptr inbounds nuw float, ptr %571, i64 %566 @@ -1580,15 +1580,15 @@ _ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i280: ; preds = %.noexc285 call void @llvm.memset.p0.i64(ptr align 4 %575, i8 0, i64 %.idx.i.i.i.i.i.i.i281, i1 false), !tbaa !47 br label %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286 -.lr.ph652: ; preds = %563, %.lr.ph652 - %indvars.iv777 = phi i64 [ %indvars.iv.next778, %.lr.ph652 ], [ 0, %563 ] - %.1175650 = phi float [ %578, %.lr.ph652 ], [ 0.000000e+00, %563 ] - %576 = getelementptr inbounds nuw float, ptr %279, i64 %indvars.iv777 +.lr.ph651: ; preds = %563, %.lr.ph651 + %indvars.iv776 = phi i64 [ %indvars.iv.next777, %.lr.ph652 ], [ 0, %563 ] + %.1175649 = phi float [ %578, %.lr.ph652 ], [ 0.000000e+00, %563 ] + %576 = getelementptr inbounds nuw float, ptr %279, i64 %indvars.iv776 %577 = load float, ptr %576, align 4, !tbaa !47 - %578 = fadd float %.1175650, %577 - %indvars.iv.next778 = add nuw nsw i64 %indvars.iv777, 1 - %exitcond780.not = icmp eq i64 %indvars.iv.next778, %.0 - br i1 %exitcond780.not, label %._crit_edge, label %.lr.ph652, !llvm.loop !77 + %578 = fadd float %.1175649, %577 + %indvars.iv.next777 = add nuw nsw i64 %indvars.iv776, 1 + %exitcond779.not = icmp eq i64 %indvars.iv.next777, %.0 + br i1 %exitcond779.not, label %._crit_edge, label %.lr.ph651, !llvm.loop !77 _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i280, %.noexc285, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i278 %.sroa.0395.2 = phi ptr [ %571, %.noexc285 ], [ %571, %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i280 ], [ null, %_ZNSt6vectorIfSaIfEE17_S_check_init_lenEmRKS0_.exit.i278 ] @@ -1662,7 +1662,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_ .noexc293: ; preds = %594 %.not.i289 = icmp eq i64 %597, %581 - br i1 %.not.i289, label %.loopexit469, label %.lr.ph70.i + br i1 %.not.i289, label %.loopexit468, label %.lr.ph70.i .lr.ph70.i: ; preds = %.noexc293 %602 = sub i64 %.0, %599 @@ -1711,7 +1711,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_ %.1.us.i = phi i32 [ %648, %._crit_edge66.us.i ], [ %.05867.us.i, %.lr.ph70.split.us.i ] %625 = add nuw i64 %.05768.us.i, 1 %exitcond76.not.i = icmp eq i64 %625, %599 - br i1 %exitcond76.not.i, label %.loopexit469, label %.lr.ph70.split.us.i, !llvm.loop !83 + br i1 %exitcond76.not.i, label %.loopexit468, label %.lr.ph70.split.us.i, !llvm.loop !83 626: ; preds = %626, %.lr.ph65.us.i %.063.us.i = phi i64 [ 0, %.lr.ph65.us.i ], [ %635, %626 ] @@ -1810,15 +1810,15 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_ %.1.i = phi i32 [ %675, %._crit_edge.i ], [ %.05867.i, %.lr.ph70.split.i ] %677 = add nuw i64 %.05768.i, 1 %exitcond77.not.i = icmp eq i64 %677, %599 - br i1 %exitcond77.not.i, label %.loopexit469, label %.lr.ph70.split.i, !llvm.loop !83 + br i1 %exitcond77.not.i, label %.loopexit468, label %.lr.ph70.split.i, !llvm.loop !83 -.loopexit469: ; preds = %624, %676, %.noexc293 +.loopexit468: ; preds = %624, %676, %.noexc293 %.058.lcssa.i = phi i32 [ 0, %.noexc293 ], [ %.1.i, %676 ], [ %.1.us.i, %624 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) %678 = invoke noundef double @_ZN5faiss12getmillisecsEv() - to label %679 unwind label %.loopexit480 + to label %679 unwind label %.loopexit479 -679: ; preds = %.loopexit469 +679: ; preds = %.loopexit468 %680 = fsub double %678, %345 %681 = fdiv double %680, 1.000000e+03 %682 = fdiv double %565, 1.000000e+03 @@ -1830,7 +1830,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit286: ; preds = %_ZSt6fill_nIPfmfET_ .noexc.i.invoke: ; preds = %714, %679 %686 = phi ptr [ @.str.26, %679 ], [ @.str.25, %714 ] invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull %686) #26 - to label %.noexc.i.cont unwind label %.loopexit.split-lp481 + to label %.noexc.i.cont unwind label %.loopexit.split-lp480 .noexc.i.cont: ; preds = %.noexc.i.invoke unreachable @@ -1843,7 +1843,7 @@ _ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i.i: ; preds = %679 %687 = shl i64 %683, 2 %688 = and i64 %687, 8589934588 %689 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %688) #25 - to label %.noexc305 unwind label %.loopexit480 + to label %.noexc305 unwind label %.loopexit479 .noexc305: ; preds = %.noexc24.i call void @llvm.memset.p0.i64(ptr nonnull align 4 %689, i8 0, i64 %688, i1 false), !tbaa !39 @@ -1948,7 +1948,7 @@ _ZNKSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE12_M_check_lenEmPKc.exit call void @llvm.assume(i1 %.not.i.i.i309) %725 = mul nuw nsw i64 %724, 40 %726 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %725) #25 - to label %.noexc314 unwind label %.loopexit480 + to label %.noexc314 unwind label %.loopexit479 .noexc314: ; preds = %_ZNKSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE12_M_check_lenEmPKc.exit.i.i307 %727 = getelementptr inbounds i8, ptr %726, i64 %718 @@ -1991,17 +1991,17 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit315: 735: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit315 %736 = fpext float %.1175.lcssa to double - %737 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20, i32 noundef %.0173654, double noundef %681, double noundef %682, double noundef %736, double noundef %709, i32 noundef %.058.lcssa.i) + %737 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20, i32 noundef %.0173653, double noundef %681, double noundef %682, double noundef %736, double noundef %709, i32 noundef %.058.lcssa.i) %738 = load ptr, ptr @stdout, align 8, !tbaa !64 %739 = call i32 @fflush(ptr noundef %738) br label %742 -.loopexit476: ; preds = %569 - %lpad.loopexit478 = landingpad { ptr, i32 } +.loopexit475: ; preds = %569 + %lpad.loopexit477 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.loopexit.split-lp477: ; preds = %568 +.loopexit.split-lp476: ; preds = %568 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 @@ -2017,32 +2017,32 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit315: br label %.loopexit.split-lp.thread .loopexit.split-lp.loopexit: ; preds = %.lr.ph.us.i - %lpad.loopexit464 = landingpad { ptr, i32 } + %lpad.loopexit463 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.thread .loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.preheader.i291 - %lpad.loopexit467 = landingpad { ptr, i32 } + %lpad.loopexit466 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.thread .loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.preheader.us.i - %lpad.loopexit470 = landingpad { ptr, i32 } + %lpad.loopexit469 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.thread .loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %594 - %lpad.loopexit.split-lp471 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp470 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit480: ; preds = %.loopexit469, %_ZN5faiss10Clustering22post_process_centroidsEv.exit323, %767, %773, %779, %.noexc24.i, %_ZNKSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE12_M_check_lenEmPKc.exit.i.i307, %745 - %lpad.loopexit482 = landingpad { ptr, i32 } +.loopexit479: ; preds = %.loopexit468, %_ZN5faiss10Clustering22post_process_centroidsEv.exit323, %767, %773, %779, %.noexc24.i, %_ZNKSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE12_M_check_lenEmPKc.exit.i.i307, %745 + %lpad.loopexit481 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp481: ; preds = %.noexc.i.invoke - %lpad.loopexit.split-lp483 = landingpad { ptr, i32 } +.loopexit.split-lp480: ; preds = %.noexc.i.invoke + %lpad.loopexit.split-lp482 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -2056,7 +2056,7 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit315: %747 = load i64, ptr %28, align 8, !tbaa !37 %748 = load ptr, ptr %287, align 8, !tbaa !13 invoke void @_ZN5faiss14fvec_renorm_L2EmmPf(i64 noundef %746, i64 noundef %747, ptr noundef %748) - to label %.noexc322 unwind label %.loopexit480 + to label %.noexc322 unwind label %.loopexit479 .noexc322: ; preds = %745, %742 %749 = load i8, ptr %377, align 2, !tbaa !45, !range !43, !noundef !44 @@ -2091,7 +2091,7 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit323: ; preds = %.lr.ph.i319, %762 = getelementptr inbounds nuw i8, ptr %761, i64 64 %763 = load ptr, ptr %762, align 8 invoke void %763(ptr noundef nonnull align 8 dereferenceable(36) %4) - to label %764 unwind label %.loopexit480 + to label %764 unwind label %.loopexit479 764: ; preds = %_ZN5faiss10Clustering22post_process_centroidsEv.exit323 %765 = load i8, ptr %387, align 1, !tbaa !87, !range !43, !noundef !44 @@ -2105,7 +2105,7 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit323: ; preds = %.lr.ph.i319, %771 = getelementptr inbounds nuw i8, ptr %770, i64 16 %772 = load ptr, ptr %771, align 8 invoke void %772(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %768, ptr noundef %769) - to label %773 unwind label %.loopexit480 + to label %773 unwind label %.loopexit479 773: ; preds = %767, %764 %774 = load i64, ptr %28, align 8, !tbaa !37 @@ -2114,11 +2114,11 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit323: ; preds = %.lr.ph.i319, %777 = getelementptr inbounds nuw i8, ptr %776, i64 24 %778 = load ptr, ptr %777, align 8 invoke void %778(ptr noundef nonnull align 8 dereferenceable(36) %4, i64 noundef %774, ptr noundef %775) - to label %779 unwind label %.loopexit480 + to label %779 unwind label %.loopexit479 779: ; preds = %773 invoke void @_ZN5faiss17InterruptCallback5checkEv() - to label %780 unwind label %.loopexit480 + to label %780 unwind label %.loopexit479 780: ; preds = %779 %.not.i.i.i324 = icmp eq ptr %.sroa.0395.2, null @@ -2132,46 +2132,46 @@ _ZN5faiss10Clustering22post_process_centroidsEv.exit323: ; preds = %.lr.ph.i319, br label %_ZNSt6vectorIfSaIfEED2Ev.exit _ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %780, %781 - %785 = add nuw nsw i32 %.0173654, 1 + %785 = add nuw nsw i32 %.0173653, 1 %786 = load i32, ptr %157, align 8, !tbaa !17 %787 = icmp slt i32 %785, %786 - br i1 %787, label %.lr.ph655, label %._crit_edge656, !llvm.loop !88 + br i1 %787, label %.lr.ph654, label %._crit_edge655, !llvm.loop !88 -.loopexit.split-lp: ; preds = %.loopexit480, %.loopexit.split-lp481, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %740 - %.pn214.pn = phi { ptr, i32 } [ %741, %740 ], [ %lpad.loopexit.split-lp471, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ], [ %lpad.loopexit482, %.loopexit480 ], [ %lpad.loopexit.split-lp483, %.loopexit.split-lp481 ] +.loopexit.split-lp: ; preds = %.loopexit479, %.loopexit.split-lp480, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %740 + %.pn214.pn = phi { ptr, i32 } [ %741, %740 ], [ %lpad.loopexit.split-lp470, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ], [ %lpad.loopexit482, %.loopexit480 ], [ %lpad.loopexit.split-lp483, %.loopexit.split-lp481 ] %.not.i.i.i325 = icmp eq ptr %.sroa.0395.2, null br i1 %.not.i.i.i325, label %_ZNSt6vectorIfSaIfEED2Ev.exit326, label %.loopexit.split-lp.thread .loopexit.split-lp.thread: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit, %.loopexit.split-lp - %.pn214.pn894 = phi { ptr, i32 } [ %.pn214.pn, %.loopexit.split-lp ], [ %lpad.loopexit470, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit467, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit464, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit, %.loopexit ] + %.pn214.pn893 = phi { ptr, i32 } [ %.pn214.pn, %.loopexit.split-lp ], [ %lpad.loopexit469, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit466, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit463, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit, %.loopexit ] %788 = ptrtoint ptr %.sroa.11399.2 to i64 %789 = ptrtoint ptr %.sroa.0395.2 to i64 %790 = sub i64 %788, %789 call void @_ZdlPvm(ptr noundef nonnull %.sroa.0395.2, i64 noundef %790) #24 br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -791: ; preds = %._crit_edge656 +791: ; preds = %._crit_edge655 %putchar = call i32 @putchar(i32 10) br label %792 -.loopexit492: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i, %_ZNSt12_Vector_baseIN5faiss24ClusteringIterationStatsESaIS1_EE11_M_allocateEm.exit.i.i - %lpad.loopexit494 = landingpad { ptr, i32 } +.loopexit491: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i, %_ZNSt12_Vector_baseIN5faiss24ClusteringIterationStatsESaIS1_EE11_M_allocateEm.exit.i.i + %lpad.loopexit493 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -.loopexit.split-lp493: ; preds = %.invoke - %lpad.loopexit.split-lp495 = landingpad { ptr, i32 } +.loopexit.split-lp492: ; preds = %.invoke + %lpad.loopexit.split-lp494 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIfSaIfEED2Ev.exit326 -792: ; preds = %791, %._crit_edge656 +792: ; preds = %791, %._crit_edge655 %793 = load i32, ptr %369, align 4, !tbaa !22 %794 = icmp sgt i32 %793, 1 br i1 %794, label %795, label %880 795: ; preds = %792 - %796 = fcmp olt float %.0174.lcssa, %.0183659 - %797 = fcmp ogt float %.0174.lcssa, %.0183659 + %796 = fcmp olt float %.0174.lcssa, %.0183658 + %797 = fcmp ogt float %.0174.lcssa, %.0183658 %or.cond244 = select i1 %285, i1 %797, i1 %796 br i1 %or.cond244, label %798, label %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit @@ -2206,14 +2206,14 @@ _ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %780, %781 .invoke: ; preds = %851, %814 invoke void @_ZSt28__throw_bad_array_new_lengthv() #26 - to label %.cont unwind label %.loopexit.split-lp493 + to label %.cont unwind label %.loopexit.split-lp492 .cont: ; preds = %.invoke unreachable _ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i: ; preds = %814 %816 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %808) #25 - to label %.noexc330 unwind label %.loopexit492 + to label %.noexc330 unwind label %.loopexit491 .noexc330: ; preds = %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i.i %.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %804, %805 @@ -2273,11 +2273,11 @@ _ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i: ; preds = %826, %825 %832 = ptrtoint ptr %829 to i64 %833 = sub i64 %831, %832 call void @llvm.memmove.p0.p0.i64(ptr align 4 %.pre26.i, ptr align 4 %829, i64 %833, i1 false) - %.pre792 = load ptr, ptr %26, align 8, !tbaa !13 + %.pre791 = load ptr, ptr %26, align 8, !tbaa !13 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit.i _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEENS1_IPfS6_EEET0_T_SB_SA_.exit.i: ; preds = %830, %_ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i, %824, %823, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i - %834 = phi ptr [ %.pre792, %830 ], [ %809, %_ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i ], [ %809, %824 ], [ %809, %823 ], [ %816, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i ] + %834 = phi ptr [ %.pre791, %830 ], [ %809, %_ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i ], [ %809, %824 ], [ %809, %823 ], [ %816, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i ] %835 = phi ptr [ %419, %830 ], [ %419, %_ZSt4copyIPfS0_ET0_T_S2_S1_.exit.i ], [ %419, %824 ], [ %419, %823 ], [ %819, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i ] %836 = getelementptr inbounds nuw i8, ptr %834, i64 %808 store ptr %836, ptr %389, align 8, !tbaa !46 @@ -2309,7 +2309,7 @@ _ZNSt6vectorIfSaIfEEaSERKS1_.exit: ; preds = %_ZSt4copyIN9__gnu_c _ZNSt12_Vector_baseIN5faiss24ClusteringIterationStatsESaIS1_EE11_M_allocateEm.exit.i.i: ; preds = %851 %854 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %844) #25 - to label %.noexc347 unwind label %.loopexit492 + to label %.noexc347 unwind label %.loopexit491 .noexc347: ; preds = %_ZNSt12_Vector_baseIN5faiss24ClusteringIterationStatsESaIS1_EE11_M_allocateEm.exit.i.i %.not.i.i.i.i.i.i.i.i.i.i344 = icmp eq ptr %840, %841 @@ -2381,17 +2381,17 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6 _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit: ; preds = %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit, %795 %875 = phi ptr [ %.pre26.i, %795 ], [ %837, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit ], [ %837, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] %876 = phi ptr [ %419, %795 ], [ %838, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit ], [ %838, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] - %.2185 = phi float [ %.0183659, %795 ], [ %.0174.lcssa, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit ], [ %.0174.lcssa, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] + %.2185 = phi float [ %.0183658, %795 ], [ %.0174.lcssa, %_ZNSt6vectorIfSaIfEEaSERKS1_.exit ], [ %.0174.lcssa, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN5faiss24ClusteringIterationStatsESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] %877 = load ptr, ptr %4, align 8, !tbaa !4 %878 = getelementptr inbounds nuw i8, ptr %877, i64 64 %879 = load ptr, ptr %878, align 8 invoke void %879(ptr noundef nonnull align 8 dereferenceable(36) %4) - to label %880 unwind label %.loopexit492 + to label %880 unwind label %.loopexit491 880: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit, %792 %881 = phi ptr [ %875, %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit ], [ %.pre26.i, %792 ] %882 = phi ptr [ %876, %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit ], [ %419, %792 ] - %.1184 = phi float [ %.2185, %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit ], [ %.0183659, %792 ] + %.1184 = phi float [ %.2185, %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit ], [ %.0183658, %792 ] %.not.i.i.i348 = icmp eq ptr %.sroa.0405.1, null br i1 %.not.i.i.i348, label %_ZNSt6vectorIiSaIiEED2Ev.exit, label %883 @@ -2403,26 +2403,26 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EEaSERKS3_.exit: ; preds = br label %_ZNSt6vectorIiSaIiEED2Ev.exit _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %880, %883 - %indvars.iv.next782 = add nuw nsw i64 %indvars.iv781, 1 + %indvars.iv.next781 = add nuw nsw i64 %indvars.iv780, 1 %887 = load i32, ptr %369, align 4, !tbaa !22 %888 = sext i32 %887 to i64 - %889 = icmp slt i64 %indvars.iv.next782, %888 - br i1 %889, label %.lr.ph662.split, label %._crit_edge663, !llvm.loop !90 + %889 = icmp slt i64 %indvars.iv.next781, %888 + br i1 %889, label %.lr.ph661.split, label %._crit_edge662, !llvm.loop !90 -_ZNSt6vectorIfSaIfEED2Ev.exit326: ; preds = %.loopexit492, %.loopexit.split-lp493, %.loopexit476, %.loopexit.split-lp477, %.loopexit.split-lp, %.loopexit.split-lp.thread, %539, %559, %532, %456 - %.pn222 = phi { ptr, i32 } [ %457, %456 ], [ %533, %532 ], [ %560, %559 ], [ %540, %539 ], [ %.pn214.pn, %.loopexit.split-lp ], [ %.pn214.pn894, %.loopexit.split-lp.thread ], [ %lpad.loopexit478, %.loopexit476 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp477 ], [ %lpad.loopexit494, %.loopexit492 ], [ %lpad.loopexit.split-lp495, %.loopexit.split-lp493 ] +_ZNSt6vectorIfSaIfEED2Ev.exit326: ; preds = %.loopexit491, %.loopexit.split-lp492, %.loopexit475, %.loopexit.split-lp476, %.loopexit.split-lp, %.loopexit.split-lp.thread, %539, %559, %532, %456 + %.pn222 = phi { ptr, i32 } [ %457, %456 ], [ %533, %532 ], [ %560, %559 ], [ %540, %539 ], [ %.pn214.pn, %.loopexit.split-lp ], [ %.pn214.pn893, %.loopexit.split-lp.thread ], [ %lpad.loopexit477, %.loopexit476 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp477 ], [ %lpad.loopexit494, %.loopexit492 ], [ %lpad.loopexit.split-lp495, %.loopexit.split-lp493 ] %.not.i.i.i349 = icmp eq ptr %.sroa.0405.1, null br i1 %.not.i.i.i349, label %_ZNSt6vectorIiSaIiEED2Ev.exit350, label %890 890: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit326.thread, %_ZNSt6vectorIfSaIfEED2Ev.exit326 - %.pn222452 = phi { ptr, i32 } [ %485, %_ZNSt6vectorIfSaIfEED2Ev.exit326.thread ], [ %.pn222, %_ZNSt6vectorIfSaIfEED2Ev.exit326 ] + %.pn222451 = phi { ptr, i32 } [ %485, %_ZNSt6vectorIfSaIfEED2Ev.exit326.thread ], [ %.pn222, %_ZNSt6vectorIfSaIfEED2Ev.exit326 ] %891 = ptrtoint ptr %.sroa.12.1 to i64 %892 = ptrtoint ptr %.sroa.0405.1 to i64 %893 = sub i64 %891, %892 call void @_ZdlPvm(ptr noundef nonnull %.sroa.0405.1, i64 noundef %893) #24 br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -894: ; preds = %._crit_edge663 +894: ; preds = %._crit_edge662 %895 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIfSaIfEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %287, ptr noundef nonnull align 8 dereferenceable(24) %26) to label %896 unwind label %909 @@ -2452,18 +2452,18 @@ _ZNSt6vectorIfSaIfEED2Ev.exit326: ; preds = %.loopexit492, %.loo cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit350 -._crit_edge663.thread: ; preds = %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit, %903, %._crit_edge663 +._crit_edge662.thread: ; preds = %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit, %903, %._crit_edge662 %.not.i.i.i351 = icmp eq ptr %.sroa.0416.0, null br i1 %.not.i.i.i351, label %_ZNSt6vectorIfSaIfEED2Ev.exit352, label %911 -911: ; preds = %._crit_edge663.thread +911: ; preds = %._crit_edge662.thread %912 = ptrtoint ptr %.sroa.11421.0 to i64 %913 = ptrtoint ptr %.sroa.0416.0 to i64 %914 = sub i64 %912, %913 call void @_ZdlPvm(ptr noundef nonnull %.sroa.0416.0, i64 noundef %914) #24 br label %_ZNSt6vectorIfSaIfEED2Ev.exit352 -_ZNSt6vectorIfSaIfEED2Ev.exit352: ; preds = %._crit_edge663.thread, %911 +_ZNSt6vectorIfSaIfEED2Ev.exit352: ; preds = %._crit_edge662.thread, %911 %915 = load ptr, ptr %26, align 8, !tbaa !13 %.not.i.i.i353 = icmp eq ptr %915, null br i1 %.not.i.i.i353, label %_ZNSt6vectorIfSaIfEED2Ev.exit354, label %916 @@ -2499,26 +2499,26 @@ _ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt6vectorI br label %929 929: ; preds = %248, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit - %.not.i358 = icmp eq ptr %.sroa.0444.1, null + %.not.i358 = icmp eq ptr %.sroa.0443.1, null br i1 %.not.i358, label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360, label %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i359 _ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i359: ; preds = %929 - call void @_ZdaPv(ptr noundef nonnull %.sroa.0444.1) #24 + call void @_ZdaPv(ptr noundef nonnull %.sroa.0443.1) #24 br label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360 _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360: ; preds = %929, %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i359 - %.not.i361 = icmp eq ptr %.sroa.0447.1, null + %.not.i361 = icmp eq ptr %.sroa.0446.1, null br i1 %.not.i361, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, label %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i _ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i: ; preds = %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360 - call void @_ZdaPv(ptr noundef nonnull %.sroa.0447.1) #24 + call void @_ZdaPv(ptr noundef nonnull %.sroa.0446.1) #24 br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit360, %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i ret void -_ZNSt6vectorIiSaIiEED2Ev.exit350: ; preds = %.loopexit487, %.loopexit.split-lp488, %.split, %.split.us, %_ZNSt6vectorIfSaIfEED2Ev.exit326, %890, %909 - %.pn222.pn.pn.pn = phi { ptr, i32 } [ %910, %909 ], [ %.pn222, %_ZNSt6vectorIfSaIfEED2Ev.exit326 ], [ %.pn222452, %890 ], [ %427, %.split ], [ %415, %.split.us ], [ %lpad.loopexit489, %.loopexit487 ], [ %lpad.loopexit.split-lp490, %.loopexit.split-lp488 ] +_ZNSt6vectorIiSaIiEED2Ev.exit350: ; preds = %.loopexit486, %.loopexit.split-lp487, %.split, %.split.us, %_ZNSt6vectorIfSaIfEED2Ev.exit326, %890, %909 + %.pn222.pn.pn.pn = phi { ptr, i32 } [ %910, %909 ], [ %.pn222, %_ZNSt6vectorIfSaIfEED2Ev.exit326 ], [ %.pn222451, %890 ], [ %427, %.split ], [ %415, %.split.us ], [ %lpad.loopexit488, %.loopexit487 ], [ %lpad.loopexit.split-lp489, %.loopexit.split-lp488 ] %.not.i.i.i362 = icmp eq ptr %.sroa.0416.0, null br i1 %.not.i.i.i362, label %_ZNSt6vectorIfSaIfEED2Ev.exit363, label %930 @@ -2570,22 +2570,22 @@ _ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373: ; preds = %_ZNSt10uni br label %948 948: ; preds = %310, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373, %254, %166 - %.sroa.0444.2 = phi ptr [ %.sroa.0444.1, %254 ], [ %.sroa.0444.0, %166 ], [ %.sroa.0444.1, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %.sroa.0444.1, %310 ] - %.sroa.0447.2 = phi ptr [ %.sroa.0447.1, %254 ], [ %.sroa.0447.0, %166 ], [ %.sroa.0447.1, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %.sroa.0447.1, %310 ] + %.sroa.0443.2 = phi ptr [ %.sroa.0443.1, %254 ], [ %.sroa.0443.0, %166 ], [ %.sroa.0443.1, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %.sroa.0443.1, %310 ] + %.sroa.0446.2 = phi ptr [ %.sroa.0446.1, %254 ], [ %.sroa.0446.0, %166 ], [ %.sroa.0446.1, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %.sroa.0446.1, %310 ] %.pn233 = phi { ptr, i32 } [ %255, %254 ], [ %167, %166 ], [ %.pn222.pn.pn.pn.pn.pn.pn.pn.pn, %_ZNSt10unique_ptrIA_lSt14default_deleteIS0_EED2Ev.exit373 ], [ %311, %310 ] - %.not.i374 = icmp eq ptr %.sroa.0444.2, null + %.not.i374 = icmp eq ptr %.sroa.0443.2, null br i1 %.not.i374, label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376, label %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i375 _ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i375: ; preds = %948 - call void @_ZdaPv(ptr noundef nonnull %.sroa.0444.2) #24 + call void @_ZdaPv(ptr noundef nonnull %.sroa.0443.2) #24 br label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376 _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376: ; preds = %948, %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i375 - %.not.i377 = icmp eq ptr %.sroa.0447.2, null + %.not.i377 = icmp eq ptr %.sroa.0446.2, null br i1 %.not.i377, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379, label %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i378 _ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i378: ; preds = %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376 - call void @_ZdaPv(ptr noundef nonnull %.sroa.0447.2) #24 + call void @_ZdaPv(ptr noundef nonnull %.sroa.0446.2) #24 br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379 _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit379: ; preds = %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i378, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit376, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit256, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit252, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit248, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit @@ -3684,7 +3684,7 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit: ; preds = %3 18: ; preds = %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit, %3 %19 = phi i64 [ %.pre, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ %7, %3 ] - %.sroa.029.0 = phi ptr [ %17, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ null, %3 ] + %.sroa.028.0 = phi ptr [ %17, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ null, %3 ] %.012 = phi ptr [ %17, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ %2, %3 ] %.0 = phi i64 [ %16, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit ], [ %1, %3 ] %20 = getelementptr inbounds nuw i8, ptr %0, i64 72 @@ -3704,8 +3704,8 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit: ; preds = %3 to label %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge unwind label %68 ._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge: ; preds = %29 - %.pre36 = load i64, ptr %6, align 8, !tbaa !37 - %.pre37 = load ptr, ptr %20, align 8, !tbaa !13 + %.pre35 = load i64, ptr %6, align 8, !tbaa !37 + %.pre36 = load ptr, ptr %20, align 8, !tbaa !13 br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit 31: ; preds = %18 @@ -3722,8 +3722,8 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EE5resetIPhvEEvT_.exit: ; preds = %3 br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit _ZNSt6vectorIfSaIfEE6resizeEm.exit: ; preds = %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge, %35, %33, %31 - %36 = phi ptr [ %.pre37, %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge ], [ %23, %35 ], [ %23, %33 ], [ %23, %31 ] - %37 = phi i64 [ %.pre36, %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge ], [ %19, %35 ], [ %19, %33 ], [ %19, %31 ] + %36 = phi ptr [ %.pre36, %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge ], [ %23, %35 ], [ %23, %33 ], [ %23, %31 ] + %37 = phi i64 [ %.pre35, %._ZNSt6vectorIfSaIfEE6resizeEm.exit_crit_edge ], [ %19, %35 ], [ %19, %33 ], [ %19, %31 ] %38 = invoke noundef double @_ZN5faiss8kmeans1dEPKfmmPf(ptr noundef %.012, i64 noundef %.0, i64 noundef %37, ptr noundef %36) to label %39 unwind label %70 @@ -3806,11 +3806,11 @@ _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE17_M_realloc_insertIJRKS1 br label %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit _ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i, %45 - %.not.i20 = icmp eq ptr %.sroa.029.0, null + %.not.i20 = icmp eq ptr %.sroa.028.0, null br i1 %.not.i20, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, label %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i _ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit - tail call void @_ZdaPv(ptr noundef nonnull %.sroa.029.0) #24 + tail call void @_ZdaPv(ptr noundef nonnull %.sroa.028.0) #24 br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt6vectorIN5faiss24ClusteringIterationStatsESaIS1_EE9push_backERKS1_.exit, %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i @@ -3833,11 +3833,11 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt6vectorI 74: ; preds = %70, %72, %68 %.pn.pn = phi { ptr, i32 } [ %69, %68 ], [ %73, %72 ], [ %71, %70 ] - %.not.i21 = icmp eq ptr %.sroa.029.0, null + %.not.i21 = icmp eq ptr %.sroa.028.0, null br i1 %.not.i21, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit23, label %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i22 _ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i22: ; preds = %74 - tail call void @_ZdaPv(ptr noundef nonnull %.sroa.029.0) #24 + tail call void @_ZdaPv(ptr noundef nonnull %.sroa.028.0) #24 br label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit23 _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit23: ; preds = %74, %_ZNKSt14default_deleteIA_hEclIhEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i22 diff --git a/bench/g2o/optimized/edge_project_xyz.ll b/bench/g2o/optimized/edge_project_xyz.ll index 460e0620461..ce9d8929e00 100644 --- a/bench/g2o/optimized/edge_project_xyz.ll +++ b/bench/g2o/optimized/edge_project_xyz.ll @@ -729,25 +729,25 @@ define void @_ZN3g2o17EdgeSE3ProjectXYZ14linearizeOplusEv(ptr noundef nonnull re %117 = fmul <2 x double> %98, %116 %118 = fadd <2 x double> %117, %114 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.2.i.i.i.i.i.i.i.i.i.i) - %119 = load ptr, ptr %82, align 8, !tbaa !161 - store <2 x double> %101, ptr %119, align 16, !tbaa !115 - %120 = getelementptr i8, ptr %119, i64 16 - store <2 x double> %109, ptr %120, align 16, !tbaa !115 - %121 = getelementptr i8, ptr %119, i64 32 - store <2 x double> %118, ptr %121, align 16, !tbaa !115 - %122 = fmul double %.sroa.037.0.vec.extract, %.sroa.037.8.vec.extract - %123 = fdiv double %122, %40 - %124 = load double, ptr %41, align 8, !tbaa !51 - %125 = fmul double %123, %124 - %126 = getelementptr inbounds nuw i8, ptr %0, i64 320 - %127 = load ptr, ptr %126, align 16, !tbaa !162 - %128 = load ptr, ptr %127, align 8, !tbaa !163 - store double %125, ptr %128, align 8, !tbaa !111 - %foldExtExtBinop = fmul <2 x double> %38, %38 - %129 = extractelement <2 x double> %foldExtExtBinop, i64 0 + %126 = load ptr, ptr %82, align 8, !tbaa !161 + store <2 x double> %101, ptr %126, align 16, !tbaa !115 + %127 = getelementptr i8, ptr %126, i64 16 + store <2 x double> %109, ptr %127, align 16, !tbaa !115 + %128 = getelementptr i8, ptr %126, i64 32 + store <2 x double> %118, ptr %128, align 16, !tbaa !115 + %129 = fmul double %.sroa.037.0.vec.extract, %.sroa.037.8.vec.extract %130 = fdiv double %129, %40 - %131 = fadd double %130, 1.000000e+00 - %132 = fneg double %131 + %131 = load double, ptr %41, align 8, !tbaa !51 + %132 = fmul double %130, %131 + %133 = getelementptr inbounds nuw i8, ptr %0, i64 320 + %134 = load ptr, ptr %133, align 16, !tbaa !162 + %135 = load ptr, ptr %134, align 8, !tbaa !163 + store double %132, ptr %135, align 8, !tbaa !111 + %foldExtExtBinop = fmul <2 x double> %38, %38 + %136 = extractelement <2 x double> %foldExtExtBinop, i64 0 + %137 = fdiv double %136, %40 + %138 = fadd double %137, 1.000000e+00 + %139 = fneg double %138 %133 = load double, ptr %41, align 8, !tbaa !51 %134 = fmul double %133, %132 %135 = getelementptr i8, ptr %128, i64 16 @@ -759,21 +759,21 @@ define void @_ZN3g2o17EdgeSE3ProjectXYZ14linearizeOplusEv(ptr noundef nonnull re store double %138, ptr %139, align 8, !tbaa !111 %140 = load double, ptr %41, align 8, !tbaa !51 %141 = fmul double %56, %140 - %142 = getelementptr i8, ptr %128, i64 48 + %142 = getelementptr i8, ptr %135, i64 48 store double %141, ptr %142, align 8, !tbaa !111 - %143 = getelementptr i8, ptr %128, i64 64 + %143 = getelementptr i8, ptr %135, i64 64 store double 0.000000e+00, ptr %143, align 8, !tbaa !111 %144 = fdiv double %.sroa.037.0.vec.extract, %40 %145 = load double, ptr %41, align 8, !tbaa !51 %146 = fmul double %144, %145 - %147 = getelementptr i8, ptr %128, i64 80 + %147 = getelementptr i8, ptr %135, i64 80 store double %146, ptr %147, align 8, !tbaa !111 %148 = fmul double %.sroa.037.8.vec.extract, %.sroa.037.8.vec.extract %149 = fdiv double %148, %40 %150 = fadd double %149, 1.000000e+00 %151 = load double, ptr %49, align 16, !tbaa !95 %152 = fmul double %150, %151 - %153 = getelementptr i8, ptr %128, i64 8 + %153 = getelementptr i8, ptr %135, i64 8 store double %152, ptr %153, align 8, !tbaa !111 %154 = fmul double %.sroa.037.8.vec.extract, %44 %155 = fdiv double %154, %40 @@ -789,7 +789,7 @@ define void @_ZN3g2o17EdgeSE3ProjectXYZ14linearizeOplusEv(ptr noundef nonnull re store double 0.000000e+00, ptr %162, align 8, !tbaa !111 %163 = load double, ptr %49, align 16, !tbaa !95 %164 = fmul double %56, %163 - %165 = getelementptr i8, ptr %128, i64 72 + %165 = getelementptr i8, ptr %135, i64 72 store double %164, ptr %165, align 8, !tbaa !111 %166 = fdiv double %.sroa.037.8.vec.extract, %40 %167 = load double, ptr %49, align 16, !tbaa !95 diff --git a/bench/g2o/optimized/optimizable_graph.ll b/bench/g2o/optimized/optimizable_graph.ll index b9b8020ffff..90e54e38e9c 100644 --- a/bench/g2o/optimized/optimizable_graph.ll +++ b/bench/g2o/optimized/optimizable_graph.ll @@ -16016,38 +16016,38 @@ _ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit25: ; preds = %32, % define linkonce_odr void @_ZN5Eigen8internal32triangular_matrix_vector_productIlLi6EdLb0EdLb0ELi1ELi0EE3runEllPKdlS4_lPdlRS3_(i64 noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i64 noundef %5, ptr noundef %6, i64 noundef %7, ptr noundef nonnull align 8 dereferenceable(8) %8) local_unnamed_addr #36 comdat align 2 personality ptr @__gxx_personality_v0 { %10 = alloca %"class.Eigen::internal::const_blas_data_mapper.698", align 8 %11 = alloca %"class.Eigen::internal::const_blas_data_mapper.698", align 8 - %.sroa.speculated132 = tail call i64 @llvm.smin.i64(i64 %1, i64 %0) - %12 = icmp sgt i64 %.sroa.speculated132, 0 - br i1 %12, label %.lr.ph143, label %._crit_edge144 + %.sroa.speculated133 = tail call i64 @llvm.smin.i64(i64 %1, i64 %0) + %12 = icmp sgt i64 %.sroa.speculated133, 0 + br i1 %12, label %.lr.ph146, label %._crit_edge147 -.lr.ph143: ; preds = %9 +.lr.ph146: ; preds = %9 %13 = getelementptr inbounds nuw i8, ptr %10, i64 8 %14 = getelementptr inbounds nuw i8, ptr %11, i64 8 br label %15 -._crit_edge144: ; preds = %104, %9 +._crit_edge147: ; preds = %104, %9 ret void -15: ; preds = %.lr.ph143, %104 - %indvars.iv = phi i64 [ %.sroa.speculated132, %.lr.ph143 ], [ %indvars.iv.next, %104 ] - %.0141 = phi i64 [ 0, %.lr.ph143 ], [ %105, %104 ] +15: ; preds = %.lr.ph146, %104 + %indvars.iv = phi i64 [ %.sroa.speculated133, %.lr.ph143 ], [ %indvars.iv.next, %104 ] + %.0144 = phi i64 [ 0, %.lr.ph143 ], [ %105, %104 ] %16 = call i64 @llvm.smax.i64(i64 %indvars.iv, i64 1) %17 = call i64 @llvm.umin.i64(i64 %16, i64 8) - %18 = sub nsw i64 %.sroa.speculated132, %.0141 + %18 = sub nsw i64 %.sroa.speculated133, %.0144 %.sroa.speculated = call i64 @llvm.smin.i64(i64 %18, i64 8) %19 = icmp sgt i64 %18, 0 br i1 %19, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %88, %15 - %20 = add i64 %.sroa.speculated, %.0141 + %20 = add i64 %.sroa.speculated, %.0144 %21 = sub i64 %1, %20 %22 = icmp sgt i64 %21, 0 br i1 %22, label %96, label %104 .lr.ph: ; preds = %15, %88 - %.052140 = phi i64 [ %95, %88 ], [ 0, %15 ] - %23 = add nuw nsw i64 %.052140, %.0141 - %24 = xor i64 %.052140, -1 + %.052142 = phi i64 [ %95, %88 ], [ 0, %15 ] + %23 = add nuw nsw i64 %.052142, %.0144 + %24 = xor i64 %.052142, -1 %25 = add nsw i64 %.sroa.speculated, %24 %26 = icmp sgt i64 %25, 0 br i1 %26, label %27, label %.lr.ph._crit_edge @@ -16065,7 +16065,7 @@ define linkonce_odr void @_ZN5Eigen8internal32triangular_matrix_vector_productIl %33 = getelementptr inbounds nuw double, ptr %4, i64 %28 %34 = and i64 %25, 9223372036854775804 %35 = and i64 %25, 9223372036854775806 - %.off.i.i.i = sub nsw i64 %.sroa.speculated, %.052140 + %.off.i.i.i = sub nsw i64 %.sroa.speculated, %.052142 %.not.i.i.i = icmp ult i64 %.off.i.i.i, 3 br i1 %.not.i.i.i, label %80, label %36 @@ -16168,13 +16168,13 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_ %93 = load double, ptr %92, align 8, !tbaa !233 %94 = call double @llvm.fmuladd.f64(double %89, double %91, double %93) store double %94, ptr %92, align 8, !tbaa !233 - %95 = add nuw nsw i64 %.052140, 1 + %95 = add nuw nsw i64 %.052142, 1 %exitcond.not = icmp eq i64 %95, %17 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !645 96: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(ptr nonnull %10) - %97 = mul nsw i64 %.0141, %3 + %97 = mul nsw i64 %.0144, %3 %98 = getelementptr double, ptr %2, i64 %20 %99 = getelementptr double, ptr %98, i64 %97 store ptr %99, ptr %10, align 8, !tbaa !561 @@ -16183,7 +16183,7 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_ %100 = getelementptr inbounds double, ptr %4, i64 %20 store ptr %100, ptr %11, align 8, !tbaa !561 store i64 %5, ptr %14, align 8, !tbaa !563 - %101 = mul nsw i64 %.0141, %7 + %101 = mul nsw i64 %.0144, %7 %102 = getelementptr inbounds double, ptr %6, i64 %101 %103 = load double, ptr %8, align 8, !tbaa !233 call void @_ZN5Eigen8internal29general_matrix_vector_productIldNS0_22const_blas_data_mapperIdlLi1EEELi1ELb0EdS3_Lb0ELi1EE3runEllRKS3_S6_Pdld(i64 noundef %.sroa.speculated, i64 noundef %21, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull %102, i64 noundef %7, double noundef %103) @@ -16192,10 +16192,10 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_ br label %104 104: ; preds = %96, %._crit_edge - %105 = add nuw nsw i64 %.0141, 8 - %106 = icmp slt i64 %105, %.sroa.speculated132 + %105 = add nuw nsw i64 %.0144, 8 + %106 = icmp slt i64 %105, %.sroa.speculated133 %indvars.iv.next = add i64 %indvars.iv, -8 - br i1 %106, label %15, label %._crit_edge144, !llvm.loop !646 + br i1 %106, label %15, label %._crit_edge147, !llvm.loop !646 } ; Function Attrs: mustprogress noinline uwtable diff --git a/bench/g2o/optimized/optimization_algorithm_dogleg.ll b/bench/g2o/optimized/optimization_algorithm_dogleg.ll index 5ff9d4062e6..9f4865fd389 100644 --- a/bench/g2o/optimized/optimization_algorithm_dogleg.ll +++ b/bench/g2o/optimized/optimization_algorithm_dogleg.ll @@ -707,11 +707,11 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i.i: ; preds = %22 store ptr %.sink.i.i, ptr %13, align 8, !tbaa !61 %.pre = load ptr, ptr %4, align 8, !tbaa !74 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre, i64 32 - %.pre414 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !75 + %.pre416 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !75 br label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit: ; preds = %12, %.sink.split.i.i - %31 = phi i64 [ %16, %12 ], [ %.pre414, %.sink.split.i.i ] + %31 = phi i64 [ %16, %12 ], [ %.pre416, %.sink.split.i.i ] store i64 %16, ptr %17, align 8, !tbaa !77 %32 = getelementptr inbounds nuw i8, ptr %0, i64 128 %33 = getelementptr inbounds nuw i8, ptr %0, i64 136 @@ -750,13 +750,13 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i.i74: ; preds = %38 .sink.split.i.i72: ; preds = %_ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i.i74, %35 %.sink.i.i73 = phi ptr [ %43, %_ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i.i74 ], [ null, %35 ] store ptr %.sink.i.i73, ptr %32, align 8, !tbaa !61 - %.pre415 = load ptr, ptr %4, align 8, !tbaa !74 - %.phi.trans.insert416 = getelementptr inbounds nuw i8, ptr %.pre415, i64 32 - %.pre417 = load i64, ptr %.phi.trans.insert416, align 8, !tbaa !75 + %.pre417 = load ptr, ptr %4, align 8, !tbaa !74 + %.phi.trans.insert418 = getelementptr inbounds nuw i8, ptr %.pre417, i64 32 + %.pre419 = load i64, ptr %.phi.trans.insert418, align 8, !tbaa !75 br label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit75 _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit75: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %.sink.split.i.i72 - %47 = phi i64 [ %31, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit ], [ %.pre417, %.sink.split.i.i72 ] + %47 = phi i64 [ %31, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit ], [ %.pre419, %.sink.split.i.i72 ] store i64 %31, ptr %33, align 8, !tbaa !77 %48 = getelementptr inbounds nuw i8, ptr %0, i64 144 %49 = getelementptr inbounds nuw i8, ptr %0, i64 152 @@ -860,19 +860,19 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit80 %103 = getelementptr inbounds nuw i8, ptr %0, i64 152 %104 = load i64, ptr %103, align 8, !tbaa !77 %105 = icmp slt i64 %104, 1 - %.pre418 = load ptr, ptr %102, align 8, !tbaa !61 + %.pre420 = load ptr, ptr %102, align 8, !tbaa !61 br i1 %105, label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit, label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i: ; preds = %96 %.idx.i.i.i.i.i.i.i.i.i.i.i = shl nuw nsw i64 %104, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %.pre418, i8 0, i64 %.idx.i.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !17 + tail call void @llvm.memset.p0.i64(ptr align 8 %.pre420, i8 0, i64 %.idx.i.i.i.i.i.i.i.i.i.i.i, i1 false), !tbaa !17 br label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; preds = %96, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i %106 = load ptr, ptr %5, align 8, !tbaa !8 %107 = getelementptr inbounds nuw i8, ptr %106, i64 128 %108 = load ptr, ptr %107, align 8 - tail call void %108(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef %.pre418, ptr noundef %99) + tail call void %108(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef %.pre420, ptr noundef %99) %109 = icmp eq i64 %101, 0 br i1 %109, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE3dotINS_3MapIKS2_Li0ENS_6StrideILi0ELi0EEEEEEENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit, label %110 @@ -936,7 +936,7 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %foldExtExtBinop = fadd <2 x double> %.072.i.i.i.i, %shift %142 = extractelement <2 x double> %foldExtExtBinop, i64 0 %143 = icmp slt i64 %114, %101 - br i1 %143, label %.lr.ph85.i.i.i.i, label %.loopexit511 + br i1 %143, label %.lr.ph85.i.i.i.i, label %.loopexit513 .lr.ph85.i.i.i.i: ; preds = %141, %.lr.ph85.i.i.i.i %.05283.i.i.i.i = phi i64 [ %148, %.lr.ph85.i.i.i.i ], [ %114, %141 ] @@ -947,9 +947,9 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %147 = fadd double %.182.i.i.i.i, %146 %148 = add nsw i64 %.05283.i.i.i.i, 1 %exitcond.not.i.i.i.i = icmp eq i64 %148, %101 - br i1 %exitcond.not.i.i.i.i, label %.loopexit511, label %.lr.ph85.i.i.i.i, !llvm.loop !86 + br i1 %exitcond.not.i.i.i.i, label %.loopexit513, label %.lr.ph85.i.i.i.i, !llvm.loop !86 -.loopexit511: ; preds = %.lr.ph85.i.i.i.i, %141 +.loopexit513: ; preds = %.lr.ph85.i.i.i.i, %141 %.0.i.i.ph.ph = phi double [ %142, %141 ], [ %147, %.lr.ph85.i.i.i.i ] %149 = load ptr, ptr %102, align 8, !tbaa !61 %150 = load <2 x double>, ptr %149, align 1, !tbaa !16 @@ -958,7 +958,7 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %153 = icmp sgt i64 %101, 3 br i1 %153, label %154, label %184 -154: ; preds = %.loopexit511 +154: ; preds = %.loopexit513 %155 = getelementptr inbounds nuw i8, ptr %149, i64 16 %156 = load <2 x double>, ptr %155, align 1, !tbaa !16 %157 = getelementptr inbounds nuw i8, ptr %99, i64 16 @@ -1005,11 +1005,11 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %183 = fadd <2 x double> %161, %182 br label %184 -184: ; preds = %177, %._crit_edge.i.i.i.i.i, %.loopexit511 +184: ; preds = %177, %._crit_edge.i.i.i.i.i, %.loopexit513 %.072.i.i.i.i.i = phi <2 x double> [ %152, %.loopexit511 ], [ %183, %177 ], [ %161, %._crit_edge.i.i.i.i.i ] - %shift599 = shufflevector <2 x double> %.072.i.i.i.i.i, <2 x double> poison, <2 x i32> - %foldExtExtBinop600 = fadd <2 x double> %.072.i.i.i.i.i, %shift599 - %185 = extractelement <2 x double> %foldExtExtBinop600, i64 0 + %shift601 = shufflevector <2 x double> %.072.i.i.i.i.i, <2 x double> poison, <2 x i32> + %foldExtExtBinop602 = fadd <2 x double> %.072.i.i.i.i.i, %shift601 + %185 = extractelement <2 x double> %foldExtExtBinop602, i64 0 %186 = icmp slt i64 %114, %101 br i1 %186, label %.lr.ph85.i.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE3dotINS_3MapIKS2_Li0ENS_6StrideILi0ELi0EEEEEEENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit @@ -1035,9 +1035,9 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred br label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE3dotINS_3MapIKS2_Li0ENS_6StrideILi0ELi0EEEEEEENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE3dotINS_3MapIKS2_Li0ENS_6StrideILi0ELi0EEEEEEENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit: ; preds = %.lr.ph85.i.i.i.i.i, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit, %184, %194 - %.0.i.i332 = phi double [ %196, %194 ], [ %.0.i.i.ph.ph, %184 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit ], [ %.0.i.i.ph.ph, %.lr.ph85.i.i.i.i.i ] + %.0.i.i334 = phi double [ %196, %194 ], [ %.0.i.i.ph.ph, %184 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit ], [ %.0.i.i.ph.ph, %.lr.ph85.i.i.i.i.i ] %.0.i.i.i = phi double [ %199, %194 ], [ %185, %184 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit ], [ %192, %.lr.ph85.i.i.i.i.i ] - %200 = fdiv double %.0.i.i332, %.0.i.i.i + %200 = fdiv double %.0.i.i334, %.0.i.i.i %201 = getelementptr inbounds nuw i8, ptr %0, i64 112 %.sroa.3.8.vec.insert.i.i.i.i.i.i.i = insertelement <2 x double> poison, double %200, i64 0 %202 = getelementptr inbounds nuw i8, ptr %0, i64 120 @@ -1150,9 +1150,9 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal17sca 257: ; preds = %252, %._crit_edge.i.i.i.i.i89, %231 %.072.i.i.i.i.i83 = phi <2 x double> [ %233, %231 ], [ %256, %252 ], [ %240, %._crit_edge.i.i.i.i.i89 ] - %shift602 = shufflevector <2 x double> %.072.i.i.i.i.i83, <2 x double> poison, <2 x i32> - %foldExtExtBinop603 = fadd <2 x double> %.072.i.i.i.i.i83, %shift602 - %258 = extractelement <2 x double> %foldExtExtBinop603, i64 0 + %shift604 = shufflevector <2 x double> %.072.i.i.i.i.i83, <2 x double> poison, <2 x i32> + %foldExtExtBinop605 = fadd <2 x double> %.072.i.i.i.i.i83, %shift604 + %258 = extractelement <2 x double> %foldExtExtBinop605, i64 0 %259 = icmp slt i64 %230, %223 br i1 %259, label %.lr.ph85.i.i.i.i.i85, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit @@ -1188,7 +1188,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br label %278 278: ; preds = %859, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit - %279 = phi i32 [ 0, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit ], [ %.pre430, %859 ] + %279 = phi i32 [ 0, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit ], [ %.pre432, %859 ] %.059 = phi i1 [ false, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit ], [ true, %859 ] %.056 = phi double [ -1.000000e+00, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit ], [ %.157, %859 ] %280 = add nsw i32 %279, 1 @@ -1196,19 +1196,19 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br i1 %.059, label %._crit_edge, label %.preheader.preheader ._crit_edge: ; preds = %278 - %.pre421 = load ptr, ptr %4, align 8, !tbaa !74 - %.phi.trans.insert422 = getelementptr inbounds nuw i8, ptr %.pre421, i64 16 - %.pre423 = load ptr, ptr %.phi.trans.insert422, align 8, !tbaa !93 - %.phi.trans.insert424 = getelementptr inbounds nuw i8, ptr %.pre421, i64 32 - %.pre425 = load i64, ptr %.phi.trans.insert424, align 8, !tbaa !75 + %.pre423 = load ptr, ptr %4, align 8, !tbaa !74 + %.phi.trans.insert424 = getelementptr inbounds nuw i8, ptr %.pre423, i64 16 + %.pre425 = load ptr, ptr %.phi.trans.insert424, align 8, !tbaa !93 + %.phi.trans.insert426 = getelementptr inbounds nuw i8, ptr %.pre423, i64 32 + %.pre427 = load i64, ptr %.phi.trans.insert426, align 8, !tbaa !75 br label %371 .preheader.preheader: ; preds = %278 - %.pre419 = load i8, ptr %269, align 4, !tbaa !58, !range !94 - %281 = trunc nuw i8 %.pre419 to i1 - br i1 %281, label %288, label %.critedge595 + %.pre421 = load i8, ptr %269, align 4, !tbaa !58, !range !94 + %281 = trunc nuw i8 %.pre421 to i1 + br i1 %281, label %288, label %.critedge597 -.critedge595: ; preds = %321, %.preheader.preheader +.critedge597: ; preds = %321, %.preheader.preheader %282 = load ptr, ptr %4, align 8, !tbaa !74 %283 = load double, ptr %270, align 8, !tbaa !60 %284 = load ptr, ptr %282, align 8, !tbaa !8 @@ -1217,7 +1217,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %287 = tail call noundef zeroext i1 %286(ptr noundef nonnull align 8 dereferenceable(64) %282, double noundef %283, i1 noundef zeroext true) br label %288 -288: ; preds = %.critedge595, %.preheader.preheader +288: ; preds = %.critedge597, %.preheader.preheader %289 = load ptr, ptr %4, align 8, !tbaa !74 %290 = load ptr, ptr %289, align 8, !tbaa !8 %291 = getelementptr inbounds nuw i8, ptr %290, i64 48 @@ -1233,8 +1233,8 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %299 = getelementptr inbounds nuw i8, ptr %298, i64 72 %300 = load ptr, ptr %299, align 8 tail call void %300(ptr noundef nonnull align 8 dereferenceable(64) %297) - %.pre420 = load i8, ptr %269, align 4, !tbaa !58, !range !94 - %301 = trunc nuw i8 %.pre420 to i1 + %.pre422 = load i8, ptr %269, align 4, !tbaa !58, !range !94 + %301 = trunc nuw i8 %.pre422 to i1 br label %302 302: ; preds = %296, %288 @@ -1245,9 +1245,9 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br i1 %304, label %321, label %306 306: ; preds = %302 - br i1 %293, label %.thread503, label %314 + br i1 %293, label %.thread505, label %314 -.thread503: ; preds = %306 +.thread505: ; preds = %306 %307 = load double, ptr %270, align 8, !tbaa !60 %308 = load ptr, ptr %271, align 8, !tbaa !55 %309 = getelementptr inbounds nuw i8, ptr %308, i64 40 @@ -1255,9 +1255,9 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %311 = fmul double %310, 5.000000e-01 %312 = fdiv double %307, %311 %313 = fcmp ogt double %312, 0x3D719799812DEA11 - %.sroa.speculated313 = select i1 %313, double %312, double 0x3D719799812DEA11 - store double %.sroa.speculated313, ptr %270, align 8, !tbaa !60 - br label %.loopexit510 + %.sroa.speculated315 = select i1 %313, double %312, double 0x3D719799812DEA11 + store double %.sroa.speculated315, ptr %270, align 8, !tbaa !60 + br label %.loopexit512 314: ; preds = %306 %315 = load ptr, ptr %271, align 8, !tbaa !55 @@ -1270,9 +1270,9 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br i1 %320, label %370, label %321 321: ; preds = %314, %302 - br i1 %293, label %.loopexit510, label %.critedge595, !llvm.loop !96 + br i1 %293, label %.loopexit512, label %.critedge597, !llvm.loop !96 -.loopexit510: ; preds = %321, %.thread503 +.loopexit512: ; preds = %321, %.thread505 %322 = load ptr, ptr %4, align 8, !tbaa !74 %323 = getelementptr inbounds nuw i8, ptr %322, i64 16 %324 = load ptr, ptr %323, align 8, !tbaa !93 @@ -1281,7 +1281,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %327 = icmp eq i64 %326, 0 br i1 %327, label %.thread, label %328 -328: ; preds = %.loopexit510 +328: ; preds = %.loopexit512 %329 = sdiv i64 %326, 4 %330 = shl nsw i64 %329, 2 %331 = sdiv i64 %326, 2 @@ -1337,9 +1337,9 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred 359: ; preds = %354, %._crit_edge.i.i.i.i.i107, %333 %.072.i.i.i.i.i100 = phi <2 x double> [ %335, %333 ], [ %358, %354 ], [ %342, %._crit_edge.i.i.i.i.i107 ] - %shift605 = shufflevector <2 x double> %.072.i.i.i.i.i100, <2 x double> poison, <2 x i32> - %foldExtExtBinop606 = fadd <2 x double> %.072.i.i.i.i.i100, %shift605 - %360 = extractelement <2 x double> %foldExtExtBinop606, i64 0 + %shift607 = shufflevector <2 x double> %.072.i.i.i.i.i100, <2 x double> poison, <2 x i32> + %foldExtExtBinop608 = fadd <2 x double> %.072.i.i.i.i.i100, %shift607 + %360 = extractelement <2 x double> %foldExtExtBinop608, i64 0 %361 = icmp slt i64 %332, %326 br i1 %361, label %.lr.ph85.i.i.i.i.i103, label %.thread @@ -1359,7 +1359,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred %369 = fmul double %368, %368 br label %.thread -.thread: ; preds = %.lr.ph85.i.i.i.i.i103, %367, %359, %.loopexit510 +.thread: ; preds = %.lr.ph85.i.i.i.i.i103, %367, %359, %.loopexit512 %.0.i.i.i101 = phi double [ 0.000000e+00, %.loopexit510 ], [ %369, %367 ], [ %360, %359 ], [ %365, %.lr.ph85.i.i.i.i.i103 ] %.scalar.i102 = tail call noundef double @llvm.sqrt.f64(double %.0.i.i.i101) br label %371 @@ -1369,8 +1369,8 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit: ; pred br label %.critedge70 371: ; preds = %._crit_edge, %.thread - %372 = phi i64 [ %.pre425, %._crit_edge ], [ %326, %.thread ] - %373 = phi ptr [ %.pre423, %._crit_edge ], [ %324, %.thread ] + %372 = phi i64 [ %.pre427, %._crit_edge ], [ %326, %.thread ] + %373 = phi ptr [ %.pre425, %._crit_edge ], [ %324, %.thread ] %.157 = phi double [ %.056, %._crit_edge ], [ %.scalar.i102, %.thread ] %374 = load double, ptr %272, align 8, !tbaa !56 %375 = fcmp olt double %.157, %374 @@ -1530,8 +1530,8 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca br i1 %447, label %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge, label %448 _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit - %.pre426 = load i64, ptr %202, align 8, !tbaa !77 - %.pre428.pre.pre = load ptr, ptr %201, align 8, !tbaa !61 + %.pre428 = load i64, ptr %202, align 8, !tbaa !77 + %.pre430.pre.pre = load ptr, ptr %201, align 8, !tbaa !61 br label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread 448: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit @@ -1602,11 +1602,11 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca 491: ; preds = %484, %._crit_edge.i.i.i.i.i153, %455 %.072.i.i.i.i.i147 = phi <2 x double> [ %458, %455 ], [ %490, %484 ], [ %468, %._crit_edge.i.i.i.i.i153 ] - %shift608 = shufflevector <2 x double> %.072.i.i.i.i.i147, <2 x double> poison, <2 x i32> - %foldExtExtBinop609 = fadd <2 x double> %.072.i.i.i.i.i147, %shift608 - %492 = extractelement <2 x double> %foldExtExtBinop609, i64 0 + %shift610 = shufflevector <2 x double> %.072.i.i.i.i.i147, <2 x double> poison, <2 x i32> + %foldExtExtBinop611 = fadd <2 x double> %.072.i.i.i.i.i147, %shift610 + %492 = extractelement <2 x double> %foldExtExtBinop611, i64 0 %493 = icmp slt i64 %454, %446 - br i1 %493, label %.lr.ph85.i.i.i.i.i149, label %.loopexit509 + br i1 %493, label %.lr.ph85.i.i.i.i.i149, label %.loopexit511 .lr.ph85.i.i.i.i.i149: ; preds = %491, %.lr.ph85.i.i.i.i.i149 %.05283.i.i.i.i.i150 = phi i64 [ %500, %.lr.ph85.i.i.i.i.i149 ], [ %454, %491 ] @@ -1619,16 +1619,16 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca %499 = fadd double %.182.i.i.i.i.i151, %498 %500 = add nsw i64 %.05283.i.i.i.i.i150, 1 %exitcond.not.i.i.i.i.i152 = icmp eq i64 %500, %446 - br i1 %exitcond.not.i.i.i.i.i152, label %.loopexit509, label %.lr.ph85.i.i.i.i.i149, !llvm.loop !104 + br i1 %exitcond.not.i.i.i.i.i152, label %.loopexit511, label %.lr.ph85.i.i.i.i.i149, !llvm.loop !104 -.loopexit509: ; preds = %.lr.ph85.i.i.i.i.i149, %491 +.loopexit511: ; preds = %.lr.ph85.i.i.i.i.i149, %491 %.0.i.i.i148.ph.ph = phi double [ %492, %491 ], [ %499, %.lr.ph85.i.i.i.i.i149 ] %501 = load <2 x double>, ptr %450, align 16, !tbaa !16 %502 = fmul <2 x double> %501, %501 %503 = icmp sgt i64 %446, 3 br i1 %503, label %504, label %526 -504: ; preds = %.loopexit509 +504: ; preds = %.loopexit511 %505 = getelementptr inbounds nuw i8, ptr %450, i64 16 %506 = load <2 x double>, ptr %505, align 16, !tbaa !16 %507 = fmul <2 x double> %506, %506 @@ -1667,11 +1667,11 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca %525 = fadd <2 x double> %509, %524 br label %526 -526: ; preds = %521, %._crit_edge.i.i.i.i170, %.loopexit509 +526: ; preds = %521, %._crit_edge.i.i.i.i170, %.loopexit511 %.072.i.i.i.i164 = phi <2 x double> [ %502, %.loopexit509 ], [ %525, %521 ], [ %509, %._crit_edge.i.i.i.i170 ] - %shift611 = shufflevector <2 x double> %.072.i.i.i.i164, <2 x double> poison, <2 x i32> - %foldExtExtBinop612 = fadd <2 x double> %.072.i.i.i.i164, %shift611 - %527 = extractelement <2 x double> %foldExtExtBinop612, i64 0 + %shift613 = shufflevector <2 x double> %.072.i.i.i.i164, <2 x double> poison, <2 x i32> + %foldExtExtBinop614 = fadd <2 x double> %.072.i.i.i.i164, %shift613 + %527 = extractelement <2 x double> %foldExtExtBinop614, i64 0 %528 = icmp slt i64 %454, %446 br i1 %528, label %.lr.ph85.i.i.i.i166, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit @@ -1694,18 +1694,18 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20sca br label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit: ; preds = %.lr.ph85.i.i.i.i166, %526, %534 - %.0.i.i.i148.ph505 = phi double [ %537, %534 ], [ %.0.i.i.i148.ph.ph, %526 ], [ %.0.i.i.i148.ph.ph, %.lr.ph85.i.i.i.i166 ] + %.0.i.i.i148.ph507 = phi double [ %537, %534 ], [ %.0.i.i.i148.ph.ph, %526 ], [ %.0.i.i.i148.ph.ph, %.lr.ph85.i.i.i.i166 ] %539 = phi double [ %535, %534 ], [ %460, %526 ], [ %460, %.lr.ph85.i.i.i.i166 ] %.0.i.i165 = phi double [ %538, %534 ], [ %527, %526 ], [ %532, %.lr.ph85.i.i.i.i166 ] - %540 = fcmp ugt double %.0.i.i.i148.ph505, 0.000000e+00 - %.pre427 = load i64, ptr %202, align 8, !tbaa !77 + %540 = fcmp ugt double %.0.i.i.i148.ph507, 0.000000e+00 + %.pre429 = load i64, ptr %202, align 8, !tbaa !77 br i1 %540, label %593, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - %.pre428.pre = phi ptr [ %449, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ %.pre428.pre.pre, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] - %541 = phi i64 [ %.pre427, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ %.pre426, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] - %.0.i.i165340 = phi double [ %.0.i.i165, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ 0.000000e+00, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] - %.0.i.i.i148336339 = phi double [ %.0.i.i.i148.ph505, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ 0.000000e+00, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] + %.pre430.pre = phi ptr [ %449, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ %.pre430.pre.pre, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] + %541 = phi i64 [ %.pre429, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ %.pre428, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] + %.0.i.i165342 = phi double [ %.0.i.i165, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ 0.000000e+00, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] + %.0.i.i.i148338341 = phi double [ %.0.i.i.i148.ph507, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ 0.000000e+00, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEES8_EEEERS1_RKNS_9DenseBaseIT_EE.exit._ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread_crit_edge ] %542 = load double, ptr %272, align 8, !tbaa !56 %543 = icmp eq i64 %541, 0 br i1 %543, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196, label %544 @@ -1720,13 +1720,13 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit br i1 %.not.i.i.i.i180, label %583, label %549 549: ; preds = %544 - %550 = load <2 x double>, ptr %.pre428.pre, align 16, !tbaa !16 + %550 = load <2 x double>, ptr %.pre430.pre, align 16, !tbaa !16 %551 = fmul <2 x double> %550, %550 %552 = icmp sgt i64 %541, 3 br i1 %552, label %553, label %575 553: ; preds = %549 - %554 = getelementptr inbounds nuw i8, ptr %.pre428.pre, i64 16 + %554 = getelementptr inbounds nuw i8, ptr %.pre430.pre, i64 16 %555 = load <2 x double>, ptr %554, align 16, !tbaa !16 %556 = fmul <2 x double> %555, %555 %557 = icmp samesign ugt i64 %541, 7 @@ -1744,11 +1744,11 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %.054.in79.i.i.i.i192 = phi i64 [ %.05480.i.i.i.i191, %.lr.ph.i.i.i.i190 ], [ 0, %553 ] %.17378.i.i.i.i193 = phi <2 x double> [ %563, %.lr.ph.i.i.i.i190 ], [ %551, %553 ] %.07577.i.i.i.i194 = phi <2 x double> [ %568, %.lr.ph.i.i.i.i190 ], [ %556, %553 ] - %560 = getelementptr inbounds nuw double, ptr %.pre428.pre, i64 %.05480.i.i.i.i191 + %560 = getelementptr inbounds nuw double, ptr %.pre430.pre, i64 %.05480.i.i.i.i191 %561 = load <2 x double>, ptr %560, align 16, !tbaa !16 %562 = fmul <2 x double> %561, %561 %563 = fadd <2 x double> %.17378.i.i.i.i193, %562 - %564 = getelementptr inbounds nuw double, ptr %.pre428.pre, i64 %.054.in79.i.i.i.i192 + %564 = getelementptr inbounds nuw double, ptr %.pre430.pre, i64 %.054.in79.i.i.i.i192 %565 = getelementptr inbounds nuw i8, ptr %564, i64 48 %566 = load <2 x double>, ptr %565, align 16, !tbaa !16 %567 = fmul <2 x double> %566, %566 @@ -1758,7 +1758,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit br i1 %569, label %.lr.ph.i.i.i.i190, label %._crit_edge.i.i.i.i187, !llvm.loop !91 570: ; preds = %._crit_edge.i.i.i.i187 - %571 = getelementptr inbounds nuw double, ptr %.pre428.pre, i64 %546 + %571 = getelementptr inbounds nuw double, ptr %.pre430.pre, i64 %546 %572 = load <2 x double>, ptr %571, align 16, !tbaa !16 %573 = fmul <2 x double> %572, %572 %574 = fadd <2 x double> %558, %573 @@ -1766,16 +1766,16 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit 575: ; preds = %570, %._crit_edge.i.i.i.i187, %549 %.072.i.i.i.i181 = phi <2 x double> [ %551, %549 ], [ %574, %570 ], [ %558, %._crit_edge.i.i.i.i187 ] - %shift614 = shufflevector <2 x double> %.072.i.i.i.i181, <2 x double> poison, <2 x i32> - %foldExtExtBinop615 = fadd <2 x double> %.072.i.i.i.i181, %shift614 - %576 = extractelement <2 x double> %foldExtExtBinop615, i64 0 + %shift616 = shufflevector <2 x double> %.072.i.i.i.i181, <2 x double> poison, <2 x i32> + %foldExtExtBinop617 = fadd <2 x double> %.072.i.i.i.i181, %shift616 + %576 = extractelement <2 x double> %foldExtExtBinop617, i64 0 %577 = icmp slt i64 %548, %541 br i1 %577, label %.lr.ph85.i.i.i.i183, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 .lr.ph85.i.i.i.i183: ; preds = %575, %.lr.ph85.i.i.i.i183 %.05283.i.i.i.i184 = phi i64 [ %582, %.lr.ph85.i.i.i.i183 ], [ %548, %575 ] %.182.i.i.i.i185 = phi double [ %581, %.lr.ph85.i.i.i.i183 ], [ %576, %575 ] - %578 = getelementptr inbounds double, ptr %.pre428.pre, i64 %.05283.i.i.i.i184 + %578 = getelementptr inbounds double, ptr %.pre430.pre, i64 %.05283.i.i.i.i184 %579 = load double, ptr %578, align 8, !tbaa !17 %580 = fmul double %579, %579 %581 = fadd double %.182.i.i.i.i185, %580 @@ -1784,7 +1784,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit br i1 %exitcond.not.i.i.i.i186, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196, label %.lr.ph85.i.i.i.i183, !llvm.loop !92 583: ; preds = %544 - %584 = load double, ptr %.pre428.pre, align 8, !tbaa !17 + %584 = load double, ptr %.pre430.pre, align 8, !tbaa !17 %585 = fmul double %584, %584 br label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 @@ -1792,37 +1792,37 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %.0.i.i182 = phi double [ 0.000000e+00, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread ], [ %585, %583 ], [ %576, %575 ], [ %581, %.lr.ph85.i.i.i.i183 ] %586 = fneg double %.0.i.i182 %587 = tail call double @llvm.fmuladd.f64(double %542, double %542, double %586) - %588 = fmul double %.0.i.i165340, %587 - %589 = tail call double @llvm.fmuladd.f64(double %.0.i.i.i148336339, double %.0.i.i.i148336339, double %588) + %588 = fmul double %.0.i.i165342, %587 + %589 = tail call double @llvm.fmuladd.f64(double %.0.i.i.i148338341, double %.0.i.i.i148338341, double %588) %590 = tail call double @sqrt(double noundef %589) #25, !tbaa !52 - %591 = fsub double %590, %.0.i.i.i148336339 - %592 = fdiv double %591, %.0.i.i165340 + %591 = fsub double %590, %.0.i.i.i148338341 + %592 = fdiv double %591, %.0.i.i165342 br label %644 593: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - %594 = icmp eq i64 %.pre427, 0 + %594 = icmp eq i64 %.pre429, 0 br i1 %594, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214, label %595 595: ; preds = %593 - %596 = sdiv i64 %.pre427, 4 + %596 = sdiv i64 %.pre429, 4 %597 = shl nsw i64 %596, 2 - %598 = sdiv i64 %.pre427, 2 + %598 = sdiv i64 %.pre429, 2 %599 = shl nsw i64 %598, 1 - %.off.i.i.i.i197 = add i64 %.pre427, 1 + %.off.i.i.i.i197 = add i64 %.pre429, 1 %.not.i.i.i.i198 = icmp ult i64 %.off.i.i.i.i197, 3 br i1 %.not.i.i.i.i198, label %634, label %600 600: ; preds = %595 %601 = load <2 x double>, ptr %449, align 16, !tbaa !16 %602 = fmul <2 x double> %601, %601 - %603 = icmp sgt i64 %.pre427, 3 + %603 = icmp sgt i64 %.pre429, 3 br i1 %603, label %604, label %626 604: ; preds = %600 %605 = getelementptr inbounds nuw i8, ptr %449, i64 16 %606 = load <2 x double>, ptr %605, align 16, !tbaa !16 %607 = fmul <2 x double> %606, %606 - %608 = icmp samesign ugt i64 %.pre427, 7 + %608 = icmp samesign ugt i64 %.pre429, 7 br i1 %608, label %.lr.ph.i.i.i.i208, label %._crit_edge.i.i.i.i205 ._crit_edge.i.i.i.i205: ; preds = %.lr.ph.i.i.i.i208, %604 @@ -1859,10 +1859,10 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit 626: ; preds = %621, %._crit_edge.i.i.i.i205, %600 %.072.i.i.i.i199 = phi <2 x double> [ %602, %600 ], [ %625, %621 ], [ %609, %._crit_edge.i.i.i.i205 ] - %shift617 = shufflevector <2 x double> %.072.i.i.i.i199, <2 x double> poison, <2 x i32> - %foldExtExtBinop618 = fadd <2 x double> %.072.i.i.i.i199, %shift617 - %627 = extractelement <2 x double> %foldExtExtBinop618, i64 0 - %628 = icmp slt i64 %599, %.pre427 + %shift619 = shufflevector <2 x double> %.072.i.i.i.i199, <2 x double> poison, <2 x i32> + %foldExtExtBinop620 = fadd <2 x double> %.072.i.i.i.i199, %shift619 + %627 = extractelement <2 x double> %foldExtExtBinop620, i64 0 + %628 = icmp slt i64 %599, %.pre429 br i1 %628, label %.lr.ph85.i.i.i.i201, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 .lr.ph85.i.i.i.i201: ; preds = %626, %.lr.ph85.i.i.i.i201 @@ -1873,7 +1873,7 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %631 = fmul double %630, %630 %632 = fadd double %.182.i.i.i.i203, %631 %633 = add nsw i64 %.05283.i.i.i.i202, 1 - %exitcond.not.i.i.i.i204 = icmp eq i64 %633, %.pre427 + %exitcond.not.i.i.i.i204 = icmp eq i64 %633, %.pre429 br i1 %exitcond.not.i.i.i.i204, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214, label %.lr.ph85.i.i.i.i201, !llvm.loop !92 634: ; preds = %595 @@ -1886,15 +1886,15 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %637 = fneg double %.0.i.i200 %638 = tail call double @llvm.fmuladd.f64(double %636, double %636, double %637) %639 = fmul double %.0.i.i165, %638 - %640 = tail call double @llvm.fmuladd.f64(double %.0.i.i.i148.ph505, double %.0.i.i.i148.ph505, double %639) + %640 = tail call double @llvm.fmuladd.f64(double %.0.i.i.i148.ph507, double %.0.i.i.i148.ph507, double %639) %641 = tail call double @sqrt(double noundef %640) #25, !tbaa !52 - %642 = fadd double %.0.i.i.i148.ph505, %641 + %642 = fadd double %.0.i.i.i148.ph507, %641 %643 = fdiv double %638, %642 br label %644 644: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 - %645 = phi i64 [ %.pre427, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %541, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] - %646 = phi ptr [ %449, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %.pre428.pre, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] + %645 = phi i64 [ %.pre429, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %541, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] + %646 = phi ptr [ %449, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %.pre430.pre, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] %storemerge = phi double [ %643, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit214 ], [ %592, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit196 ] %.sroa.615.24.vec.insert.i.i.i.i.i.i.i = insertelement <2 x double> poison, double %storemerge, i64 0 %647 = load i64, ptr %274, align 8, !tbaa !77 @@ -1957,12 +1957,12 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_3MapIKS1_Li0ENS_6StrideILi0ELi0EE store i32 %.sink, ptr %275, align 8, !tbaa !57 %675 = load i64, ptr %103, align 8, !tbaa !77 %676 = icmp slt i64 %675, 1 - %.pre429 = load ptr, ptr %102, align 8, !tbaa !61 + %.pre431 = load ptr, ptr %102, align 8, !tbaa !61 br i1 %676, label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227, label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i225 _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i225: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit %.idx.i.i.i.i.i.i.i.i.i.i.i226 = shl nuw nsw i64 %675, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %.pre429, i8 0, i64 %.idx.i.i.i.i.i.i.i.i.i.i.i226, i1 false), !tbaa !17 + tail call void @llvm.memset.p0.i64(ptr align 8 %.pre431, i8 0, i64 %.idx.i.i.i.i.i.i.i.i.i.i.i226, i1 false), !tbaa !17 br label %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227 _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; preds = %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_3MapIKS1_Li0ENS_6StrideILi0ELi0EEEEEEERS1_RKNS_9DenseBaseIT_EE.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11setConstantERKd.exit.loopexit.i225 @@ -1970,7 +1970,7 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; p %678 = load ptr, ptr %5, align 8, !tbaa !8 %679 = getelementptr inbounds nuw i8, ptr %678, i64 128 %680 = load ptr, ptr %679, align 8 - tail call void %680(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef %.pre429, ptr noundef %677) + tail call void %680(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef %.pre431, ptr noundef %677) %681 = load i64, ptr %274, align 8, !tbaa !77 %682 = icmp eq i64 %681, 0 br i1 %682, label %_ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE3dotIS3_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit, label %683 @@ -2042,9 +2042,9 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; p 725: ; preds = %718, %._crit_edge.i.i.i.i.i236, %690 %.072.i.i.i.i.i230 = phi <2 x double> [ %693, %690 ], [ %724, %718 ], [ %702, %._crit_edge.i.i.i.i.i236 ] - %shift620 = shufflevector <2 x double> %.072.i.i.i.i.i230, <2 x double> poison, <2 x i32> - %foldExtExtBinop621 = fadd <2 x double> %.072.i.i.i.i.i230, %shift620 - %726 = extractelement <2 x double> %foldExtExtBinop621, i64 0 + %shift622 = shufflevector <2 x double> %.072.i.i.i.i.i230, <2 x double> poison, <2 x i32> + %foldExtExtBinop623 = fadd <2 x double> %.072.i.i.i.i.i230, %shift622 + %726 = extractelement <2 x double> %foldExtExtBinop623, i64 0 %727 = icmp slt i64 %689, %681 br i1 %727, label %.lr.ph85.i.i.i.i.i232, label %.loopexit @@ -2117,9 +2117,9 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; p 768: ; preds = %761, %._crit_edge.i.i.i.i.i254, %.loopexit %.072.i.i.i.i.i248 = phi <2 x double> [ %737, %.loopexit ], [ %767, %761 ], [ %745, %._crit_edge.i.i.i.i.i254 ] - %shift623 = shufflevector <2 x double> %.072.i.i.i.i.i248, <2 x double> poison, <2 x i32> - %foldExtExtBinop624 = fadd <2 x double> %.072.i.i.i.i.i248, %shift623 - %769 = extractelement <2 x double> %foldExtExtBinop624, i64 0 + %shift625 = shufflevector <2 x double> %.072.i.i.i.i.i248, <2 x double> poison, <2 x i32> + %foldExtExtBinop626 = fadd <2 x double> %.072.i.i.i.i.i248, %shift625 + %769 = extractelement <2 x double> %foldExtExtBinop626, i64 0 %770 = icmp slt i64 %689, %681 br i1 %770, label %.lr.ph85.i.i.i.i.i250, label %_ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE3dotIS3_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit @@ -2145,10 +2145,10 @@ _ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227: ; p br label %_ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE3dotIS3_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit _ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE3dotIS3_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENSB_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE.exit: ; preds = %.lr.ph85.i.i.i.i.i250, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227, %768, %778 - %.0.i.i.i231343 = phi double [ %781, %778 ], [ %.0.i.i.i231.ph.ph, %768 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227 ], [ %.0.i.i.i231.ph.ph, %.lr.ph85.i.i.i.i.i250 ] + %.0.i.i.i231345 = phi double [ %781, %778 ], [ %.0.i.i.i231.ph.ph, %768 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227 ], [ %.0.i.i.i231.ph.ph, %.lr.ph85.i.i.i.i.i250 ] %.0.i.i.i249 = phi double [ %783, %778 ], [ %769, %768 ], [ 0.000000e+00, %_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit227 ], [ %776, %.lr.ph85.i.i.i.i.i250 ] %784 = fmul double %.0.i.i.i249, 2.000000e+00 - %785 = fsub double %784, %.0.i.i.i231343 + %785 = fsub double %784, %.0.i.i.i231345 %786 = load ptr, ptr %76, align 8, !tbaa !78 %787 = load ptr, ptr %786, align 8, !tbaa !8 %788 = getelementptr inbounds nuw i8, ptr %787, i64 120 @@ -2169,8 +2169,8 @@ _ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6Stri %799 = fcmp ogt double %798, 0.000000e+00 %800 = load ptr, ptr %76, align 8, !tbaa !78 %801 = load ptr, ptr %800, align 8, !tbaa !8 - %.554 = select i1 %799, i64 136, i64 128 - %802 = getelementptr inbounds nuw i8, ptr %801, i64 %.554 + %.556 = select i1 %799, i64 136, i64 128 + %802 = getelementptr inbounds nuw i8, ptr %801, i64 %.556 %803 = load ptr, ptr %802, align 8 tail call void %803(ptr noundef nonnull align 8 dereferenceable(409) %800) %804 = fcmp ogt double %798, 7.500000e-01 @@ -2238,9 +2238,9 @@ _ZNK5Eigen10MatrixBaseINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6Stri 840: ; preds = %835, %._crit_edge.i.i.i.i.i272, %814 %.072.i.i.i.i.i265 = phi <2 x double> [ %816, %814 ], [ %839, %835 ], [ %823, %._crit_edge.i.i.i.i.i272 ] - %shift626 = shufflevector <2 x double> %.072.i.i.i.i.i265, <2 x double> poison, <2 x i32> - %foldExtExtBinop627 = fadd <2 x double> %.072.i.i.i.i.i265, %shift626 - %841 = extractelement <2 x double> %foldExtExtBinop627, i64 0 + %shift628 = shufflevector <2 x double> %.072.i.i.i.i.i265, <2 x double> poison, <2 x i32> + %foldExtExtBinop629 = fadd <2 x double> %.072.i.i.i.i.i265, %shift628 + %841 = extractelement <2 x double> %foldExtExtBinop629, i64 0 %842 = icmp slt i64 %813, %806 br i1 %842, label %.lr.ph85.i.i.i.i.i268, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281 @@ -2279,21 +2279,21 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281: ; p br label %.sink.split .sink.split: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281, %856 - %.sink553 = phi double [ %858, %856 ], [ %.sroa.speculated, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281 ] - store double %.sink553, ptr %272, align 8, !tbaa !56 + %.sink555 = phi double [ %858, %856 ], [ %.sroa.speculated, %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv.exit281 ] + store double %.sink555, ptr %272, align 8, !tbaa !56 br label %859 859: ; preds = %.sink.split, %854 - %.pre430 = load i32, ptr %268, align 8, !tbaa !52 - %.pre431 = load ptr, ptr %277, align 8, !tbaa !53 - %.phi.trans.insert432 = getelementptr inbounds nuw i8, ptr %.pre431, i64 40 - %.pre433 = load i32, ptr %.phi.trans.insert432, align 4, !tbaa !52 - %860 = icmp sge i32 %.pre430, %.pre433 - %or.cond597.not = select i1 %799, i1 true, i1 %860 - br i1 %or.cond597.not, label %.critedge, label %278, !llvm.loop !109 + %.pre432 = load i32, ptr %268, align 8, !tbaa !52 + %.pre433 = load ptr, ptr %277, align 8, !tbaa !53 + %.phi.trans.insert434 = getelementptr inbounds nuw i8, ptr %.pre433, i64 40 + %.pre435 = load i32, ptr %.phi.trans.insert434, align 4, !tbaa !52 + %860 = icmp sge i32 %.pre432, %.pre435 + %or.cond599.not = select i1 %799, i1 true, i1 %860 + br i1 %or.cond599.not, label %.critedge, label %278, !llvm.loop !109 .critedge: ; preds = %859 - %861 = icmp ne i32 %.pre430, %.pre433 + %861 = icmp ne i32 %.pre432, %.pre435 %or.cond4 = and i1 %799, %861 %. = select i1 %or.cond4, i32 1, i32 2 br label %.critedge70 diff --git a/bench/g2o/optimized/slam2d_linear.ll b/bench/g2o/optimized/slam2d_linear.ll index 8853d98928d..476e9c810ab 100644 --- a/bench/g2o/optimized/slam2d_linear.ll +++ b/bench/g2o/optimized/slam2d_linear.ll @@ -11185,7 +11185,7 @@ define linkonce_odr void @_ZNK5Eigen22SimplicialCholeskyBaseINS_13SimplicialLLTI .preheader83.i: ; preds = %12 %19 = icmp sgt i64 %.sroa.698.8.copyload, 0 - br i1 %19, label %.lr.ph.i, label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit + br i1 %19, label %.lr.ph.i, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit .lr.ph.i: ; preds = %.preheader83.i %20 = load ptr, ptr %8, align 8, !tbaa !194 @@ -11211,67 +11211,67 @@ define linkonce_odr void @_ZNK5Eigen22SimplicialCholeskyBaseINS_13SimplicialLLTI br i1 %25, label %.preheader.i.backedge, label %.critedge.i .preheader.i: ; preds = %.preheader.i.backedge, %.preheader.lr.ph.i - %.13787.i = phi i64 [ 0, %.preheader.lr.ph.i ], [ %.13787.i.be, %.preheader.i.backedge ] - %26 = getelementptr inbounds i8, ptr %calloc.i, i64 %.13787.i + %.13789.i = phi i64 [ 0, %.preheader.lr.ph.i ], [ %.13789.i.be, %.preheader.i.backedge ] + %26 = getelementptr inbounds i8, ptr %calloc.i, i64 %.13789.i %27 = load i8, ptr %26, align 1, !tbaa !401, !range !197, !noundef !198 %28 = trunc nuw i8 %27 to i1 br i1 %28, label %29, label %32 29: ; preds = %.preheader.i - %30 = add nsw i64 %.13787.i, 1 + %30 = add nsw i64 %.13789.i, 1 %31 = icmp slt i64 %30, %10 br i1 %31, label %.preheader.i.backedge, label %.critedge.i .preheader.i.backedge: ; preds = %29, %.loopexit.i - %.13787.i.be = phi i64 [ %30, %29 ], [ %34, %.loopexit.i ] + %.13789.i.be = phi i64 [ %30, %29 ], [ %34, %.loopexit.i ] br label %.preheader.i, !llvm.loop !402 32: ; preds = %.preheader.i - %33 = getelementptr inbounds i8, ptr %calloc.i, i64 %.13787.i - %34 = add nsw i64 %.13787.i, 1 + %33 = getelementptr inbounds i8, ptr %calloc.i, i64 %.13789.i + %34 = add nsw i64 %.13789.i, 1 store i8 1, ptr %33, align 1, !tbaa !401 - %.034.in.in88.i = getelementptr inbounds i32, ptr %24, i64 %.13787.i - %.034.in89.i = load i32, ptr %.034.in.in88.i, align 4, !tbaa !29 - %.03490.i = sext i32 %.034.in89.i to i64 - %.not4191.i = icmp eq i64 %.13787.i, %.03490.i - br i1 %.not4191.i, label %.loopexit.i, label %.lr.ph93.i - -.lr.ph93.i: ; preds = %32 - %35 = getelementptr inbounds double, ptr %13, i64 %.13787.i + %.034.in.in90.i = getelementptr inbounds i32, ptr %24, i64 %.13789.i + %.034.in91.i = load i32, ptr %.034.in.in90.i, align 4, !tbaa !29 + %.03492.i = sext i32 %.034.in91.i to i64 + %.not4193.i = icmp eq i64 %.13789.i, %.03492.i + br i1 %.not4193.i, label %.loopexit.i, label %.lr.ph97.i + +.lr.ph97.i: ; preds = %32 + %35 = getelementptr inbounds double, ptr %13, i64 %.13789.i %.pre.i = load double, ptr %35, align 8, !tbaa !173 br label %36 -36: ; preds = %36, %.lr.ph93.i +36: ; preds = %36, %.lr.ph97.i %37 = phi double [ %.pre.i, %.lr.ph93.i ], [ %39, %36 ] - %.03492.i = phi i64 [ %.03490.i, %.lr.ph93.i ], [ %.034.i, %36 ] - %38 = getelementptr inbounds double, ptr %13, i64 %.03492.i + %.03496.i = phi i64 [ %.03492.i, %.lr.ph93.i ], [ %.034.i, %36 ] + %38 = getelementptr inbounds double, ptr %13, i64 %.03496.i %39 = load double, ptr %38, align 8, !tbaa !173 store double %37, ptr %38, align 8, !tbaa !173 store double %39, ptr %35, align 8, !tbaa !173 - %40 = getelementptr inbounds i8, ptr %calloc.i, i64 %.03492.i + %40 = getelementptr inbounds i8, ptr %calloc.i, i64 %.03496.i store i8 1, ptr %40, align 1, !tbaa !401 - %.034.in.in.i = getelementptr inbounds i32, ptr %24, i64 %.03492.i + %.034.in.in.i = getelementptr inbounds i32, ptr %24, i64 %.03496.i %.034.in.i = load i32, ptr %.034.in.in.i, align 4, !tbaa !29 %.034.i = sext i32 %.034.in.i to i64 - %.not41.i = icmp eq i64 %.13787.i, %.034.i + %.not41.i = icmp eq i64 %.13789.i, %.034.i br i1 %.not41.i, label %.loopexit.i, label %36, !llvm.loop !403 .critedge.i: ; preds = %.loopexit.i, %29 tail call void @free(ptr noundef nonnull %calloc.i) #38 - br label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit + br label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit 41: ; preds = %41, %.lr.ph.i - %.086.i = phi i64 [ 0, %.lr.ph.i ], [ %48, %41 ] - %42 = getelementptr inbounds nuw double, ptr %.sroa.497.8.copyload, i64 %.086.i - %43 = getelementptr inbounds nuw i32, ptr %20, i64 %.086.i + %.088.i = phi i64 [ 0, %.lr.ph.i ], [ %48, %41 ] + %42 = getelementptr inbounds nuw double, ptr %.sroa.497.8.copyload, i64 %.088.i + %43 = getelementptr inbounds nuw i32, ptr %20, i64 %.088.i %44 = load i32, ptr %43, align 4, !tbaa !29 %45 = sext i32 %44 to i64 %46 = getelementptr inbounds double, ptr %13, i64 %45 %47 = load double, ptr %42, align 8, !tbaa !173 store double %47, ptr %46, align 8, !tbaa !173 - %48 = add nuw nsw i64 %.086.i, 1 + %48 = add nuw nsw i64 %.088.i, 1 %exitcond.not.i = icmp eq i64 %48, %.sroa.698.8.copyload - br i1 %exitcond.not.i, label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit, label %41, !llvm.loop !404 + br i1 %exitcond.not.i, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit, label %41, !llvm.loop !404 49: ; preds = %7 %50 = load ptr, ptr %2, align 8, !tbaa !164 @@ -11313,7 +11313,7 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens ._crit_edge.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i, %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEENS5_INS6_IKS8_Li0ESA_EEEENS0_9assign_opIddEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.i %69 = icmp slt i64 %62, %52 - br i1 %69, label %.lr.ph.i17.i.i.i.i.i.i.i, label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit + br i1 %69, label %.lr.ph.i17.i.i.i.i.i.i.i, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit .lr.ph.i17.i.i.i.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.i.i.i, %.lr.ph.i17.i.i.i.i.i.i.i %.05.i18.i.i.i.i.i.i.i = phi i64 [ %73, %.lr.ph.i17.i.i.i.i.i.i.i ], [ %62, %._crit_edge.i.i.i.i.i.i.i ] @@ -11323,7 +11323,7 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens store double %72, ptr %70, align 8, !tbaa !173 %73 = add nsw i64 %.05.i18.i.i.i.i.i.i.i, 1 %exitcond.not.i19.i.i.i.i.i.i.i = icmp eq i64 %73, %52 - br i1 %exitcond.not.i19.i.i.i.i.i.i.i, label %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit, label %.lr.ph.i17.i.i.i.i.i.i.i, !llvm.loop !405 + br i1 %exitcond.not.i19.i.i.i.i.i.i.i, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit, label %.lr.ph.i17.i.i.i.i.i.i.i, !llvm.loop !405 .lr.ph.i.i.i.i.i.i.i: ; preds = %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEENS5_INS6_IKS8_Li0ESA_EEEENS0_9assign_opIddEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i %.021.i.i.i.i.i.i.i = phi i64 [ %77, %.lr.ph.i.i.i.i.i.i.i ], [ %.0.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEENS5_INS6_IKS8_Li0ESA_EEEENS0_9assign_opIddEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.i ] @@ -11335,14 +11335,14 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens %78 = icmp slt i64 %77, %62 br i1 %78, label %.lr.ph.i.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i.i, !llvm.loop !406 -_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit: ; preds = %.lr.ph.i17.i.i.i.i.i.i.i, %41, %.critedge.i, %.preheader83.i, %._crit_edge.i.i.i.i.i.i.i +_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit: ; preds = %.lr.ph.i17.i.i.i.i.i.i.i, %41, %.critedge.i, %.preheader83.i, %._crit_edge.i.i.i.i.i.i.i %79 = getelementptr inbounds nuw i8, ptr %0, i64 16 %80 = getelementptr inbounds nuw i8, ptr %0, i64 48 %81 = load ptr, ptr %80, align 8, !tbaa !150 %82 = icmp eq ptr %81, null br i1 %82, label %83, label %92 -83: ; preds = %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit +83: ; preds = %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit %84 = getelementptr inbounds nuw i8, ptr %0, i64 40 %85 = load ptr, ptr %84, align 8, !tbaa !149 %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -11353,7 +11353,7 @@ _ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6Stride %91 = sub nsw i32 %89, %90 br label %_ZNK5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE8nonZerosEv.exit -92: ; preds = %_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEaSINS1_IKS3_Li0ES5_EEEERS6_RKNS_9DenseBaseIT_EE.exit +92: ; preds = %_ZN5Eigen8internal26permutation_matrix_productINS_3MapIKNS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runINS2_IS4_Li0ES7_EENS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS8_.exit %93 = getelementptr inbounds nuw i8, ptr %0, i64 24 %94 = load i64, ptr %93, align 8, !tbaa !143 %95 = icmp eq i64 %94, 0 @@ -11764,54 +11764,54 @@ _ZNK5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE8nonZerosEv.exit58.t br i1 %295, label %.preheader.i70.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runIS7_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS7_.exit .preheader.i70: ; preds = %.preheader.i70.backedge, %.preheader.lr.ph.i69 - %.13787.i72 = phi i64 [ 0, %.preheader.lr.ph.i69 ], [ %.13787.i72.be, %.preheader.i70.backedge ] - %296 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.13787.i72 + %.13789.i72 = phi i64 [ 0, %.preheader.lr.ph.i69 ], [ %.13789.i72.be, %.preheader.i70.backedge ] + %296 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.13789.i72 %297 = load i8, ptr %296, align 1, !tbaa !401, !range !197, !noundef !198 %298 = trunc nuw i8 %297 to i1 br i1 %298, label %299, label %302 299: ; preds = %.preheader.i70 - %300 = add nsw i64 %.13787.i72, 1 + %300 = add nsw i64 %.13789.i72, 1 %301 = icmp slt i64 %300, %289 br i1 %301, label %.preheader.i70.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runIS7_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS7_.exit .preheader.i70.backedge: ; preds = %299, %.loopexit.i84 - %.13787.i72.be = phi i64 [ %300, %299 ], [ %304, %.loopexit.i84 ] + %.13789.i72.be = phi i64 [ %300, %299 ], [ %304, %.loopexit.i84 ] br label %.preheader.i70, !llvm.loop !416 302: ; preds = %.preheader.i70 - %303 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.13787.i72 - %304 = add nsw i64 %.13787.i72, 1 + %303 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.13789.i72 + %304 = add nsw i64 %.13789.i72, 1 store i8 1, ptr %303, align 1, !tbaa !401 - %.034.in.in88.i73 = getelementptr inbounds i32, ptr %294, i64 %.13787.i72 - %.034.in89.i74 = load i32, ptr %.034.in.in88.i73, align 4, !tbaa !29 - %.03490.i75 = sext i32 %.034.in89.i74 to i64 - %.not4191.i76 = icmp eq i64 %.13787.i72, %.03490.i75 - br i1 %.not4191.i76, label %.loopexit.i84, label %.lr.ph93.i77 - -.lr.ph93.i77: ; preds = %302 - %305 = getelementptr inbounds double, ptr %.sroa.4.8.copyload, i64 %.13787.i72 + %.034.in.in90.i73 = getelementptr inbounds i32, ptr %294, i64 %.13789.i72 + %.034.in91.i74 = load i32, ptr %.034.in.in90.i73, align 4, !tbaa !29 + %.03492.i75 = sext i32 %.034.in91.i74 to i64 + %.not4193.i76 = icmp eq i64 %.13789.i72, %.03492.i75 + br i1 %.not4193.i76, label %.loopexit.i84, label %.lr.ph97.i77 + +.lr.ph97.i77: ; preds = %302 + %305 = getelementptr inbounds double, ptr %.sroa.4.8.copyload, i64 %.13789.i72 %.pre.i78 = load double, ptr %305, align 8, !tbaa !173 br label %306 -306: ; preds = %306, %.lr.ph93.i77 +306: ; preds = %306, %.lr.ph97.i77 %307 = phi double [ %.pre.i78, %.lr.ph93.i77 ], [ %309, %306 ] - %.03492.i79 = phi i64 [ %.03490.i75, %.lr.ph93.i77 ], [ %.034.i82, %306 ] - %308 = getelementptr inbounds double, ptr %.sroa.4.8.copyload, i64 %.03492.i79 + %.03496.i79 = phi i64 [ %.03492.i75, %.lr.ph93.i77 ], [ %.034.i82, %306 ] + %308 = getelementptr inbounds double, ptr %.sroa.4.8.copyload, i64 %.03496.i79 %309 = load double, ptr %308, align 8, !tbaa !173 store double %307, ptr %308, align 8, !tbaa !173 store double %309, ptr %305, align 8, !tbaa !173 - %310 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.03492.i79 + %310 = getelementptr inbounds i8, ptr %calloc.i68, i64 %.03496.i79 store i8 1, ptr %310, align 1, !tbaa !401 - %.034.in.in.i80 = getelementptr inbounds i32, ptr %294, i64 %.03492.i79 + %.034.in.in.i80 = getelementptr inbounds i32, ptr %294, i64 %.03496.i79 %.034.in.i81 = load i32, ptr %.034.in.in.i80, align 4, !tbaa !29 %.034.i82 = sext i32 %.034.in.i81 to i64 - %.not41.i83 = icmp eq i64 %.13787.i72, %.034.i82 + %.not41.i83 = icmp eq i64 %.13789.i72, %.034.i82 br i1 %.not41.i83, label %.loopexit.i84, label %306, !llvm.loop !417 _ZN5Eigen8internal26permutation_matrix_productINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runIS7_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS7_.exit: ; preds = %.loopexit.i84, %299, %286 - %.sroa.068.081103.i67 = phi ptr [ null, %286 ], [ %calloc.i68, %299 ], [ %calloc.i68, %.loopexit.i84 ] - call void @free(ptr noundef %.sroa.068.081103.i67) #38 + %.sroa.068.081110.i67 = phi ptr [ null, %286 ], [ %calloc.i68, %299 ], [ %calloc.i68, %.loopexit.i84 ] + call void @free(ptr noundef %.sroa.068.081110.i67) #38 br label %311 311: ; preds = %3, %_ZN5Eigen8internal26permutation_matrix_productINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELi1ELb0ENS_10DenseShapeEE3runIS7_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS7_.exit, %_ZNK5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE8nonZerosEv.exit58.thread diff --git a/bench/g2o/optimized/solver_dense.ll b/bench/g2o/optimized/solver_dense.ll index 23cf7f61821..07c8ff4052a 100644 --- a/bench/g2o/optimized/solver_dense.ll +++ b/bench/g2o/optimized/solver_dense.ll @@ -24916,15 +24916,15 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSIN br label %44 44: ; preds = %53, %.lr.ph.i.i.i.i.i.i.i.i - %.027.i.i.i.i.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i.i.i.i.i.i ], [ %54, %53 ] - %45 = getelementptr inbounds nuw i32, ptr %42, i64 %.027.i.i.i.i.i.i.i.i + %.029.i.i.i.i.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i.i.i.i.i.i ], [ %54, %53 ] + %45 = getelementptr inbounds nuw i32, ptr %42, i64 %.029.i.i.i.i.i.i.i.i %46 = load i32, ptr %45, align 4, !tbaa !29 %47 = sext i32 %46 to i64 - %.not.i.i.i.i.i.i.i.i = icmp eq i64 %.027.i.i.i.i.i.i.i.i, %47 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %.029.i.i.i.i.i.i.i.i, %47 br i1 %.not.i.i.i.i.i.i.i.i, label %53, label %48 48: ; preds = %44 - %49 = getelementptr inbounds nuw double, ptr %43, i64 %.027.i.i.i.i.i.i.i.i + %49 = getelementptr inbounds nuw double, ptr %43, i64 %.029.i.i.i.i.i.i.i.i %50 = getelementptr inbounds double, ptr %43, i64 %47 %51 = load double, ptr %49, align 8, !tbaa !362 %52 = load double, ptr %50, align 8, !tbaa !362 @@ -24933,7 +24933,7 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSIN br label %53 53: ; preds = %48, %44 - %54 = add nuw nsw i64 %.027.i.i.i.i.i.i.i.i, 1 + %54 = add nuw nsw i64 %.029.i.i.i.i.i.i.i.i, 1 %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %54, %7 br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSINS_7ProductINS_14TranspositionsILin1ELin1EiEENS0_IKS2_Li0ES4_EELi2EEEEERS5_RKNS_9DenseBaseIT_EE.exit, label %44, !llvm.loop !1224 @@ -24983,16 +24983,16 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSER br label %71 71: ; preds = %80, %.lr.ph.i.i.i.i.i.i.i.i21 - %.028.in.i.i.i.i.i.i.i.i = phi i64 [ %67, %.lr.ph.i.i.i.i.i.i.i.i21 ], [ %.028.i.i.i.i.i.i.i.i, %80 ] - %.028.i.i.i.i.i.i.i.i = add nsw i64 %.028.in.i.i.i.i.i.i.i.i, -1 - %72 = getelementptr inbounds i32, ptr %69, i64 %.028.i.i.i.i.i.i.i.i + %.030.in.i.i.i.i.i.i.i.i = phi i64 [ %67, %.lr.ph.i.i.i.i.i.i.i.i21 ], [ %.030.i.i.i.i.i.i.i.i, %80 ] + %.030.i.i.i.i.i.i.i.i = add nsw i64 %.030.in.i.i.i.i.i.i.i.i, -1 + %72 = getelementptr inbounds i32, ptr %69, i64 %.030.i.i.i.i.i.i.i.i %73 = load i32, ptr %72, align 4, !tbaa !29 %74 = sext i32 %73 to i64 - %.not.i.i.i.i.i.i.i.i22 = icmp eq i64 %.028.i.i.i.i.i.i.i.i, %74 + %.not.i.i.i.i.i.i.i.i22 = icmp eq i64 %.030.i.i.i.i.i.i.i.i, %74 br i1 %.not.i.i.i.i.i.i.i.i22, label %80, label %75 75: ; preds = %71 - %76 = getelementptr inbounds double, ptr %70, i64 %.028.i.i.i.i.i.i.i.i + %76 = getelementptr inbounds double, ptr %70, i64 %.030.i.i.i.i.i.i.i.i %77 = getelementptr inbounds double, ptr %70, i64 %74 %78 = load double, ptr %76, align 8, !tbaa !362 %79 = load double, ptr %77, align 8, !tbaa !362 @@ -25001,21 +25001,21 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSER br label %80 80: ; preds = %75, %71 - %81 = icmp samesign ugt i64 %.028.in.i.i.i.i.i.i.i.i, 1 + %81 = icmp samesign ugt i64 %.030.in.i.i.i.i.i.i.i.i, 1 br i1 %81, label %71, label %_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSINS_7ProductINS_9TransposeINS_18TranspositionsBaseINS_14TranspositionsILin1ELin1EiEEEEEES5_Li2EEEEERS5_RKNS_9DenseBaseIT_EE.exit, !llvm.loop !1225 _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSINS_7ProductINS_9TransposeINS_18TranspositionsBaseINS_14TranspositionsILin1ELin1EiEEEEEES5_Li2EEEEERS5_RKNS_9DenseBaseIT_EE.exit: ; preds = %80, %_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSERKS5_.exit.i.i.i.i.i.i.i.i ret void 82: ; preds = %.lr.ph, %93 - %.049 = phi i64 [ 0, %.lr.ph ], [ %94, %93 ] - %83 = mul nsw i64 %61, %.049 - %84 = getelementptr double, ptr %63, i64 %.049 + %.051 = phi i64 [ 0, %.lr.ph ], [ %94, %93 ] + %83 = mul nsw i64 %61, %.051 + %84 = getelementptr double, ptr %63, i64 %.051 %85 = getelementptr double, ptr %84, i64 %83 %86 = load double, ptr %85, align 8, !tbaa !362 %87 = tail call noundef double @llvm.fabs.f64(double %86) %88 = fcmp ogt double %87, 0x10000000000000 - %89 = getelementptr inbounds nuw double, ptr %64, i64 %.049 + %89 = getelementptr inbounds nuw double, ptr %64, i64 %.051 br i1 %88, label %90, label %93 90: ; preds = %82 @@ -25026,7 +25026,7 @@ _ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSIN 93: ; preds = %82, %90 %.sink = phi double [ %92, %90 ], [ 0.000000e+00, %82 ] store double %.sink, ptr %89, align 8, !tbaa !362 - %94 = add nuw nsw i64 %.049, 1 + %94 = add nuw nsw i64 %.051, 1 %exitcond.not = icmp eq i64 %94, %.sroa.speculated.i.i.i br i1 %exitcond.not, label %._crit_edge, label %82, !llvm.loop !1226 } diff --git a/bench/hdf5/optimized/sio_perf.ll b/bench/hdf5/optimized/sio_perf.ll index ec949f466e4..d390eed4a70 100644 --- a/bench/hdf5/optimized/sio_perf.ll +++ b/bench/hdf5/optimized/sio_perf.ll @@ -1501,32 +1501,32 @@ print_indent.exit: ; preds = %.lr.ph.i %31 = call double @io_time_get(ptr noundef %30, i32 noundef 8) #19 %32 = getelementptr inbounds nuw %struct.minmax, ptr %14, i64 %indvars.iv store double %31, ptr %32, align 8, !tbaa !78 - %.sroa.5117.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 8 - store double %31, ptr %.sroa.5117.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6118.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 16 - store double %31, ptr %.sroa.6118.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7119.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 24 - store i64 0, ptr %.sroa.7119.0..sroa_idx, align 8 + %.sroa.5116.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 8 + store double %31, ptr %.sroa.5116.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6117.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 16 + store double %31, ptr %.sroa.6117.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7118.0..sroa_idx = getelementptr inbounds nuw i8, ptr %32, i64 24 + store i64 0, ptr %.sroa.7118.0..sroa_idx, align 8 %33 = load ptr, ptr %26, align 8, !tbaa !75 %34 = call double @io_time_get(ptr noundef %33, i32 noundef 10) #19 %35 = getelementptr inbounds nuw %struct.minmax, ptr %15, i64 %indvars.iv store double %34, ptr %35, align 8, !tbaa !78 - %.sroa.5113.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 8 - store double %34, ptr %.sroa.5113.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6114.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 16 - store double %34, ptr %.sroa.6114.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7115.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 24 - store i64 0, ptr %.sroa.7115.0..sroa_idx, align 8 + %.sroa.5112.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 8 + store double %34, ptr %.sroa.5112.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6113.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 16 + store double %34, ptr %.sroa.6113.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7114.0..sroa_idx = getelementptr inbounds nuw i8, ptr %35, i64 24 + store i64 0, ptr %.sroa.7114.0..sroa_idx, align 8 %36 = load ptr, ptr %26, align 8, !tbaa !75 %37 = call double @io_time_get(ptr noundef %36, i32 noundef 12) #19 %38 = getelementptr inbounds nuw %struct.minmax, ptr %16, i64 %indvars.iv store double %37, ptr %38, align 8, !tbaa !78 - %.sroa.5109.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 8 - store double %37, ptr %.sroa.5109.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6110.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 16 - store double %37, ptr %.sroa.6110.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7111.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 24 - store i64 0, ptr %.sroa.7111.0..sroa_idx, align 8 + %.sroa.5108.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 8 + store double %37, ptr %.sroa.5108.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6109.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 16 + store double %37, ptr %.sroa.6109.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7110.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 24 + store i64 0, ptr %.sroa.7110.0..sroa_idx, align 8 br i1 %.not, label %39, label %52 39: ; preds = %27 @@ -1534,22 +1534,22 @@ print_indent.exit: ; preds = %.lr.ph.i %41 = call double @io_time_get(ptr noundef %40, i32 noundef 3) #19 %42 = getelementptr inbounds nuw %struct.minmax, ptr %.065, i64 %indvars.iv store double %41, ptr %42, align 8, !tbaa !78 - %.sroa.5105.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 8 - store double %41, ptr %.sroa.5105.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6106.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 16 - store double %41, ptr %.sroa.6106.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7107.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 24 - store i64 0, ptr %.sroa.7107.0..sroa_idx, align 8 + %.sroa.5104.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 8 + store double %41, ptr %.sroa.5104.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6105.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 16 + store double %41, ptr %.sroa.6105.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7106.0..sroa_idx = getelementptr inbounds nuw i8, ptr %42, i64 24 + store i64 0, ptr %.sroa.7106.0..sroa_idx, align 8 %43 = load ptr, ptr %26, align 8, !tbaa !75 %44 = call double @io_time_get(ptr noundef %43, i32 noundef 9) #19 %45 = getelementptr inbounds nuw %struct.minmax, ptr %.064, i64 %indvars.iv store double %44, ptr %45, align 8, !tbaa !78 - %.sroa.5101.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 8 - store double %44, ptr %.sroa.5101.0..sroa_idx, align 8, !tbaa !78 - %.sroa.6102.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 16 - store double %44, ptr %.sroa.6102.0..sroa_idx, align 8, !tbaa !78 - %.sroa.7103.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 24 - store i64 0, ptr %.sroa.7103.0..sroa_idx, align 8 + %.sroa.5100.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 8 + store double %44, ptr %.sroa.5100.0..sroa_idx, align 8, !tbaa !78 + %.sroa.6101.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 16 + store double %44, ptr %.sroa.6101.0..sroa_idx, align 8, !tbaa !78 + %.sroa.7102.0..sroa_idx = getelementptr inbounds nuw i8, ptr %45, i64 24 + store i64 0, ptr %.sroa.7102.0..sroa_idx, align 8 %46 = load ptr, ptr %26, align 8, !tbaa !75 %47 = call double @io_time_get(ptr noundef %46, i32 noundef 11) #19 %48 = getelementptr inbounds nuw %struct.minmax, ptr %.063, i64 %indvars.iv @@ -1721,8 +1721,8 @@ print_indent.exit89: ; preds = %.lr.ph.i87 br label %.critedge .critedge: ; preds = %78, %103 - %.sink128 = phi ptr [ %.064, %103 ], [ %14, %78 ] - %.sink127 = phi ptr [ %.063, %103 ], [ %15, %78 ] + %.sink127 = phi ptr [ %.064, %103 ], [ %14, %78 ] + %.sink126 = phi ptr [ %.063, %103 ], [ %15, %78 ] %.sink = phi ptr [ %.0, %103 ], [ %16, %78 ] call void @free(ptr noundef %.sink128) #19 call void @free(ptr noundef %.sink127) #19 diff --git a/bench/libigl/optimized/eigs.ll b/bench/libigl/optimized/eigs.ll index 46f657e6ebb..039780ec2b9 100644 --- a/bench/libigl/optimized/eigs.ll +++ b/bench/libigl/optimized/eigs.ll @@ -26279,13 +26279,13 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK5Eigen8SparseLUINS_12Spars %6 = getelementptr inbounds nuw i8, ptr %0, i64 272 %7 = load ptr, ptr %1, align 8, !tbaa !709, !noalias !786 %8 = load i64, ptr %5, align 8, !tbaa !104, !noalias !786 - %.fr126 = freeze i64 %8 + %.fr150 = freeze i64 %8 %9 = load ptr, ptr %2, align 8, !tbaa !463, !noalias !789 %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 %11 = load i64, ptr %10, align 8, !tbaa !104, !noalias !789 - %.fr125 = freeze i64 %11 - %12 = icmp eq i64 %.fr125, %.fr126 - %13 = icmp slt i64 %.fr126, 1 + %.fr149 = freeze i64 %11 + %12 = icmp eq i64 %.fr149, %.fr150 + %13 = icmp slt i64 %.fr150, 1 %14 = load ptr, ptr %6, align 8 %15 = getelementptr inbounds nuw i8, ptr %0, i64 280 %16 = load i64, ptr %15, align 8 @@ -26305,7 +26305,7 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK5Eigen8SparseLUINS_12Spars %22 = load double, ptr %17, align 8, !tbaa !4 store double %22, ptr %21, align 8, !tbaa !4 %23 = add nuw nsw i64 %.094.i.us, 1 - %exitcond.not.i.us = icmp eq i64 %23, %.fr126 + %exitcond.not.i.us = icmp eq i64 %23, %.fr150 br i1 %exitcond.not.i.us, label %.split96.us, label %.lr.ph.i.us, !llvm.loop !792 .split: ; preds = %3 @@ -26314,23 +26314,23 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK5Eigen8SparseLUINS_12Spars br i1 %24, label %.split.split.us.preheader, label %.split.split .split.split.us.preheader: ; preds = %.split - br i1 %25, label %33, label %.preheader91.i.us98 + br i1 %25, label %33, label %.preheader91.i.us110 -.preheader91.i.us98: ; preds = %.split.split.us.preheader - br i1 %13, label %.split96.us, label %.lr.ph.i.us99 +.preheader91.i.us110: ; preds = %.split.split.us.preheader + br i1 %13, label %.split96.us, label %.lr.ph.i.us111 -.lr.ph.i.us99: ; preds = %.preheader91.i.us98, %.lr.ph.i.us99 - %.094.i.us100 = phi i64 [ %32, %.lr.ph.i.us99 ], [ 0, %.preheader91.i.us98 ] - %26 = getelementptr inbounds nuw double, ptr %7, i64 %.094.i.us100 - %27 = getelementptr inbounds nuw i32, ptr %14, i64 %.094.i.us100 +.lr.ph.i.us111: ; preds = %.preheader91.i.us110, %.lr.ph.i.us111 + %.094.i.us112 = phi i64 [ %32, %.lr.ph.i.us99 ], [ 0, %.preheader91.i.us98 ] + %26 = getelementptr inbounds nuw double, ptr %7, i64 %.094.i.us112 + %27 = getelementptr inbounds nuw i32, ptr %14, i64 %.094.i.us112 %28 = load i32, ptr %27, align 4, !tbaa !107 %29 = sext i32 %28 to i64 %30 = getelementptr inbounds double, ptr %9, i64 %29 %31 = load double, ptr %26, align 8, !tbaa !4 store double %31, ptr %30, align 8, !tbaa !4 - %32 = add nuw nsw i64 %.094.i.us100, 1 - %exitcond.not.i.us101 = icmp eq i64 %32, %.fr126 - br i1 %exitcond.not.i.us101, label %.split96.us, label %.lr.ph.i.us99, !llvm.loop !792 + %32 = add nuw nsw i64 %.094.i.us112, 1 + %exitcond.not.i.us113 = icmp eq i64 %32, %.fr150 + br i1 %exitcond.not.i.us113, label %.split96.us, label %.lr.ph.i.us111, !llvm.loop !792 33: ; preds = %.split.split.us.preheader %calloc.i.us = tail call ptr @calloc(i64 1, i64 %.fr) @@ -26391,7 +26391,7 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK5Eigen8SparseLUINS_12Spars tail call void @free(ptr noundef %calloc.i.us) #36 br label %.split96.us -.split.split: ; preds = %.split +.split98.us: ; preds = %.split %or.cond = select i1 %13, i1 true, i1 %25 br i1 %or.cond, label %.split96.us, label %.preheader91.i.us106 @@ -26412,89 +26412,89 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK5Eigen8SparseLUINS_12Spars %58 = getelementptr inbounds nuw i8, ptr %0, i64 120 tail call void @_ZNK5Eigen8internal22MappedSuperNodalMatrixIdiE12solveInPlaceINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEvRNS_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %58, ptr noundef nonnull align 1 dereferenceable(1) %2) call void @llvm.lifetime.start.p0(ptr nonnull %4) - %59 = getelementptr inbounds nuw i8, ptr %0, i64 192 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 192 store ptr %58, ptr %4, align 8 - %60 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr %59, ptr %60, align 8 + %53 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr %52, ptr %53, align 8 call void @_ZNK5Eigen25SparseLUMatrixUReturnTypeINS_8internal22MappedSuperNodalMatrixIdiEENS_18MappedSparseMatrixIdLi0EiEEE12solveInPlaceINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEvRNS_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 1 dereferenceable(1) %2) call void @llvm.lifetime.end.p0(ptr nonnull %4) - %61 = getelementptr inbounds nuw i8, ptr %0, i64 256 - %62 = load ptr, ptr %2, align 8, !tbaa !463, !noalias !795 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 264 - %64 = load i64, ptr %63, align 8, !tbaa !105 - %65 = icmp sgt i64 %64, 0 - br i1 %65, label %.split120.us.split, label %.split122 - -.split120.us.split: ; preds = %.split96.us - %calloc.i24.us = call ptr @calloc(i64 1, i64 %64) - %66 = icmp eq ptr %calloc.i24.us, null - br i1 %66, label %.noexc.i.i31, label %.preheader.lr.ph.i25.us - -.preheader.lr.ph.i25.us: ; preds = %.split120.us.split - %67 = load ptr, ptr %61, align 8 + %54 = getelementptr inbounds nuw i8, ptr %0, i64 256 + %55 = load ptr, ptr %2, align 8, !tbaa !463, !noalias !795 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 264 + %57 = load i64, ptr %56, align 8, !tbaa !105 + %58 = icmp sgt i64 %57, 0 + br i1 %58, label %.split140.us.split, label %.split122 + +.split140.us.split: ; preds = %.split96.us + %calloc.i24.us = call ptr @calloc(i64 1, i64 %57) + %59 = icmp eq ptr %calloc.i24.us, null + br i1 %59, label %.noexc.i.i31, label %.preheader.lr.ph.i25.us + +.preheader.lr.ph.i25.us: ; preds = %.split140.us.split + %60 = load ptr, ptr %54, align 8 br label %.preheader.i26.us .preheader.i26.us: ; preds = %.preheader.i26.us.backedge, %.preheader.lr.ph.i25.us %.13896.i.us = phi i64 [ 0, %.preheader.lr.ph.i25.us ], [ %.13896.i.us.be, %.preheader.i26.us.backedge ] - %68 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.13896.i.us - %69 = load i8, ptr %68, align 1, !tbaa !90, !range !47, !noundef !48 - %70 = trunc nuw i8 %69 to i1 - br i1 %70, label %80, label %71 - -71: ; preds = %.preheader.i26.us - %72 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.13896.i.us - %73 = add nsw i64 %.13896.i.us, 1 - store i8 1, ptr %72, align 1, !tbaa !90 - %.034.in.in97.i.us = getelementptr inbounds i32, ptr %67, i64 %.13896.i.us + %61 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.13896.i.us + %62 = load i8, ptr %61, align 1, !tbaa !90, !range !47, !noundef !48 + %63 = trunc nuw i8 %62 to i1 + br i1 %63, label %73, label %64 + +64: ; preds = %.preheader.i26.us + %65 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.13896.i.us + %66 = add nsw i64 %.13896.i.us, 1 + store i8 1, ptr %65, align 1, !tbaa !90 + %.034.in.in97.i.us = getelementptr inbounds i32, ptr %60, i64 %.13896.i.us %.034.in98.i.us = load i32, ptr %.034.in.in97.i.us, align 4, !tbaa !107 %.03499.i.us = sext i32 %.034.in98.i.us to i64 %.not42100.i.us = icmp eq i64 %.13896.i.us, %.03499.i.us br i1 %.not42100.i.us, label %.loopexit.i30.us, label %.lr.ph103.i.us -.lr.ph103.i.us: ; preds = %71, %.lr.ph103.i.us +.lr.ph103.i.us: ; preds = %64, %.lr.ph103.i.us %.034102.i.us = phi i64 [ %.034.i29.us, %.lr.ph103.i.us ], [ %.03499.i.us, %71 ] %.035101.i.us = phi i64 [ %.034102.i.us, %.lr.ph103.i.us ], [ %.13896.i.us, %71 ] - %74 = getelementptr inbounds double, ptr %62, i64 %.034102.i.us - %75 = getelementptr inbounds double, ptr %62, i64 %.035101.i.us - %76 = load double, ptr %74, align 8, !tbaa !4 - %77 = load double, ptr %75, align 8, !tbaa !4 - store double %77, ptr %74, align 8, !tbaa !4 - store double %76, ptr %75, align 8, !tbaa !4 - %78 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.034102.i.us - store i8 1, ptr %78, align 1, !tbaa !90 - %.034.in.in.i27.us = getelementptr inbounds i32, ptr %67, i64 %.034102.i.us + %67 = getelementptr inbounds double, ptr %55, i64 %.034102.i.us + %68 = getelementptr inbounds double, ptr %55, i64 %.035101.i.us + %69 = load double, ptr %67, align 8, !tbaa !4 + %70 = load double, ptr %68, align 8, !tbaa !4 + store double %70, ptr %67, align 8, !tbaa !4 + store double %69, ptr %68, align 8, !tbaa !4 + %71 = getelementptr inbounds i8, ptr %calloc.i24.us, i64 %.034102.i.us + store i8 1, ptr %71, align 1, !tbaa !90 + %.034.in.in.i27.us = getelementptr inbounds i32, ptr %60, i64 %.034102.i.us %.034.in.i28.us = load i32, ptr %.034.in.in.i27.us, align 4, !tbaa !107 %.034.i29.us = sext i32 %.034.in.i28.us to i64 %.not42.i.us = icmp eq i64 %.13896.i.us, %.034.i29.us br i1 %.not42.i.us, label %.loopexit.i30.us, label %.lr.ph103.i.us, !llvm.loop !798 -.loopexit.i30.us: ; preds = %.lr.ph103.i.us, %71 - %79 = icmp slt i64 %73, %64 - br i1 %79, label %.preheader.i26.us.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us +.loopexit.i30.us: ; preds = %.lr.ph103.i.us, %64 + %72 = icmp slt i64 %66, %57 + br i1 %72, label %.preheader.i26.us.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us -80: ; preds = %.preheader.i26.us - %81 = add nsw i64 %.13896.i.us, 1 - %82 = icmp slt i64 %81, %64 - br i1 %82, label %.preheader.i26.us.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us +73: ; preds = %.preheader.i26.us + %74 = add nsw i64 %.13896.i.us, 1 + %75 = icmp slt i64 %74, %57 + br i1 %75, label %.preheader.i26.us.backedge, label %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us -.preheader.i26.us.backedge: ; preds = %80, %.loopexit.i30.us - %.13896.i.us.be = phi i64 [ %81, %80 ], [ %73, %.loopexit.i30.us ] +.preheader.i26.us.backedge: ; preds = %73, %.loopexit.i30.us + %.13896.i.us.be = phi i64 [ %74, %80 ], [ %66, %.loopexit.i30.us ] br label %.preheader.i26.us, !llvm.loop !799 -_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us: ; preds = %.loopexit.i30.us, %80 +_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us: ; preds = %.loopexit.i30.us, %73 call void @free(ptr noundef %calloc.i24.us) #36 br label %.split122 .noexc.i.i: ; preds = %33 - %83 = tail call ptr @__cxa_allocate_exception(i64 8) #36 - store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %83, align 8, !tbaa !76 - tail call void @__cxa_throw(ptr nonnull %83, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #37 + %76 = tail call ptr @__cxa_allocate_exception(i64 8) #36 + store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %76, align 8, !tbaa !76 + tail call void @__cxa_throw(ptr nonnull %76, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #37 unreachable -.split122: ; preds = %.split96.us, %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us +.lr.ph.i: ; preds = %.split96.us, %_ZN5Eigen8internal26permutation_matrix_productINS_5BlockINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEELin1ELi1ELb1EEELi1ELb1ENS_10DenseShapeEE3runIS9_NS_17PermutationMatrixILin1ELin1EiEEEEvRT_RKT0_RKS9_.exit.us ret i1 true -.noexc.i.i31: ; preds = %.split120.us.split +.noexc.i.i31: ; preds = %.split140.us.split %84 = call ptr @__cxa_allocate_exception(i64 8) #36 store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %84, align 8, !tbaa !76 call void @__cxa_throw(ptr nonnull %84, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #37 diff --git a/bench/llvm/optimized/ASTReader.ll b/bench/llvm/optimized/ASTReader.ll index 63b6f90cc31..8930b6a4f69 100644 --- a/bench/llvm/optimized/ASTReader.ll +++ b/bench/llvm/optimized/ASTReader.ll @@ -90819,8 +90819,8 @@ _ZNK4llvm13TinyPtrVectorIPvE5beginEv.exit.i: ; preds = %_ZNK4llvm13TinyPtrV %.not.i.i.i.i.i = icmp eq i64 %36, 0 %37 = and i64 %35, -8 %.not = icmp eq i64 %37, 0 - %or.cond154 = or i1 %.not.i.i.i.i.i, %.not - br i1 %or.cond154, label %_ZN4llvm11SmallVectorIN5clang12GlobalDeclIDELj4EEaSERKS3_.exitthread-pre-split, label %38 + %or.cond156 = or i1 %.not.i.i.i.i.i, %.not + br i1 %or.cond156, label %_ZN4llvm11SmallVectorIN5clang12GlobalDeclIDELj4EEaSERKS3_.exitthread-pre-split, label %38 38: ; preds = %_ZNK4llvm13TinyPtrVectorIPvE5beginEv.exit.i %39 = inttoptr i64 %37 to ptr @@ -90887,8 +90887,8 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapIN5clang13serialization18DeclarationNameKeyEN %77 = load i32, ptr %42, align 8, !tbaa !3636 %78 = zext i32 %77 to i64 %79 = getelementptr inbounds nuw %"struct.llvm::detail::DenseMapPair.3666", ptr %76, i64 %78 - %.not155 = icmp eq ptr %.sroa.0.1.i, %79 - br i1 %.not155, label %_ZN4llvm11SmallVectorIN5clang12GlobalDeclIDELj4EEaSERKS3_.exitthread-pre-split, label %80 + %.not157 = icmp eq ptr %.sroa.0.1.i, %79 + br i1 %.not157, label %_ZN4llvm11SmallVectorIN5clang12GlobalDeclIDELj4EEaSERKS3_.exitthread-pre-split, label %80 80: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapIN5clang13serialization18DeclarationNameKeyENS_11SmallVectorINS2_12GlobalDeclIDELj4EEENS_12DenseMapInfoIS4_vEENS_6detail12DenseMapPairIS4_S7_EEEES4_S7_S9_SC_E4findERKS4_.exit %81 = getelementptr inbounds nuw i8, ptr %.sroa.0.1.i, i64 16 @@ -91013,8 +91013,8 @@ _ZN5clang13serialization20MultiOnDiskHashTableINS0_6reader29ASTDeclContextNameLo %.0.i2228.i = phi ptr [ %.0.i222736.i, %_ZNK4llvm13TinyPtrVectorIPvE5beginEv.exit.i.i ], [ %1, %_ZN4llvm13TinyPtrVectorIPvE3endEv.exit.i ], [ %116, %_ZN4llvm13TinyPtrVectorIPvE3endEv.exit.thread.i ] %.not.i = phi i64 [ %126, %_ZNK4llvm13TinyPtrVectorIPvE5beginEv.exit.i.i ], [ 0, %_ZN4llvm13TinyPtrVectorIPvE3endEv.exit.i ], [ 0, %_ZN4llvm13TinyPtrVectorIPvE3endEv.exit.thread.i ] %spec.select.i = getelementptr inbounds nuw i8, ptr %.0.i2228.i, i64 %.not.i - %.not156182 = icmp eq ptr %spec.select.i, %.0.i1830.i - br i1 %.not156182, label %._crit_edge, label %.lr.ph + %.not158184 = icmp eq ptr %spec.select.i, %.0.i1830.i + br i1 %.not158184, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %_ZN5clang13serialization20MultiOnDiskHashTableINS0_6reader29ASTDeclContextNameLookupTraitEE6tablesEv.exit %127 = getelementptr inbounds nuw i8, ptr %7, i64 16 @@ -91024,8 +91024,8 @@ _ZN5clang13serialization20MultiOnDiskHashTableINS0_6reader29ASTDeclContextNameLo ._crit_edge.loopexit: ; preds = %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit %.pre = load ptr, ptr %109, align 8, !tbaa !3533 - %.pre208 = load i32, ptr %128, align 8, !tbaa !3539 - %130 = zext i32 %.pre208 to i64 + %.pre210 = load i32, ptr %128, align 8, !tbaa !3539 + %130 = zext i32 %.pre210 to i64 %131 = shl nuw nsw i64 %130, 3 br label %._crit_edge @@ -91038,8 +91038,8 @@ _ZN5clang13serialization20MultiOnDiskHashTableINS0_6reader29ASTDeclContextNameLo ret void 134: ; preds = %.lr.ph, %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit - %.sroa.0114.0183 = phi ptr [ %spec.select.i, %.lr.ph ], [ %503, %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit ] - %135 = load ptr, ptr %.sroa.0114.0183, align 8, !tbaa !1748 + %.sroa.0114.0185 = phi ptr [ %spec.select.i, %.lr.ph ], [ %503, %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit ] + %135 = load ptr, ptr %.sroa.0114.0185, align 8, !tbaa !1748 %136 = ptrtoint ptr %135 to i64 %137 = and i64 %136, -8 %138 = inttoptr i64 %137 to ptr @@ -91743,9 +91743,9 @@ _ZN5clang13serialization6reader33ASTDeclContextNameLookupTraitBase17data_type_bu br i1 %.not.i.i41, label %_ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit, label %276, !llvm.loop !1308 _ZN5clang13serialization6reader29ASTDeclContextNameLookupTrait12ReadDataIntoENS0_18DeclarationNameKeyEPKhjRNS1_33ASTDeclContextNameLookupTraitBase17data_type_builderE.exit: ; preds = %.critedge.i, %_ZN5clang13serialization6reader33ASTDeclContextNameLookupTraitBase17data_type_builder6insertENS_12GlobalDeclIDE.exit, %150, %134, %_ZN4llvm22OnDiskChainedHashTableIN5clang13serialization6reader29ASTDeclContextNameLookupTraitEE11find_hashedERKNS2_18DeclarationNameKeyEjPS4_.exit - %503 = getelementptr inbounds nuw i8, ptr %.sroa.0114.0183, i64 8 - %.not156 = icmp eq ptr %503, %.0.i1830.i - br i1 %.not156, label %._crit_edge.loopexit, label %134 + %503 = getelementptr inbounds nuw i8, ptr %.sroa.0114.0185, i64 8 + %.not158 = icmp eq ptr %503, %.0.i1830.i + br i1 %.not158, label %._crit_edge.loopexit, label %134 } declare noundef ptr @_ZNK5clang4Decl28getTopLevelOwningNamedModuleEv(ptr noundef nonnull align 8 dereferenceable(33)) local_unnamed_addr #4 diff --git a/bench/llvm/optimized/MsgPackDocument.ll b/bench/llvm/optimized/MsgPackDocument.ll index 185c74cd93f..19b091d2d2e 100644 --- a/bench/llvm/optimized/MsgPackDocument.ll +++ b/bench/llvm/optimized/MsgPackDocument.ll @@ -489,13 +489,13 @@ _ZNSt10unique_ptrISt3mapIN4llvm7msgpack7DocNodeES3_St4lessIS3_ESaISt4pairIKS3_S3 ; Function Attrs: mustprogress nofree norecurse nounwind willreturn memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable define dso_local ptr @_ZN4llvm7msgpack10MapDocNode4findENS_9StringRefE(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(24) %0, ptr %1, i64 %2) local_unnamed_addr #2 align 2 { - %.fr82 = freeze ptr %1 + %.fr83 = freeze ptr %1 %4 = load ptr, ptr %0, align 8, !tbaa !3 %5 = load ptr, ptr %4, align 8, !tbaa !9 %6 = getelementptr inbounds nuw i8, ptr %5, i64 176 %7 = ptrtoint ptr %.fr82 to i64 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %9 = load ptr, ptr %8, align 8, !tbaa !35 + %9 = load ptr, ptr %8, align 8, !tbaa !36 %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 %11 = load ptr, ptr %10, align 8, !tbaa !83 %12 = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -503,10 +503,10 @@ define dso_local ptr @_ZN4llvm7msgpack10MapDocNode4findENS_9StringRefE(ptr nound br i1 %.not10.i.i.i.i, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader _ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader: ; preds = %3 - %13 = getelementptr inbounds nuw i8, ptr %5, i64 184 - %14 = load i8, ptr %13, align 8, !tbaa !84 - %.fr80 = freeze i8 %14 - %15 = icmp eq i8 %.fr80, 10 + %15 = getelementptr inbounds nuw i8, ptr %5, i64 184 + %16 = load i8, ptr %15, align 8, !tbaa !84 + %.fr80 = freeze i8 %16 + %17 = icmp eq i8 %.fr80, 10 %16 = bitcast i64 %7 to double %.sroa.5.8.extract.trunc36 = trunc i64 %7 to i8 br i1 %15, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 @@ -520,197 +520,197 @@ _ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us: ; preds = %_ZNK4llvm7msgpack7D _ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader, %.thread %.012.i.i.i.i = phi ptr [ %.1.i.i.i.i, %.thread ], [ %11, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader ] - %.0811.i.i.i.i = phi ptr [ %50, %.thread ], [ %12, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader ] - %17 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 32 - %18 = load ptr, ptr %17, align 8, !tbaa !3 - %.not.i7 = icmp eq ptr %18, %6 - br i1 %.not.i7, label %20, label %19 - -19: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 - %.not.i20.i8 = icmp eq ptr %18, null - br i1 %.not.i20.i8, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 + %.0811.i.i.i.i = phi ptr [ %51, %.thread ], [ %12, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.preheader ] + %18 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 32 + %19 = load ptr, ptr %18, align 8, !tbaa !3 + %.not.i7 = icmp eq ptr %19, %6 + br i1 %.not.i7, label %21, label %20 20: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 - %21 = getelementptr inbounds nuw i8, ptr %18, i64 8 - %22 = load i8, ptr %21, align 8, !tbaa !84 - switch i8 %22, label %45 [ - i8 0, label %23 - i8 1, label %27 + %.not.i20.i8 = icmp eq ptr %19, null + br i1 %.not.i20.i8, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 + +21: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6 + %22 = getelementptr inbounds nuw i8, ptr %19, i64 8 + %23 = load i8, ptr %22, align 8, !tbaa !84 + switch i8 %23, label %45 [ + i8 0, label %24 + i8 1, label %28 i8 2, label %.thread - i8 3, label %31 - i8 4, label %35 - i8 5, label %39 - i8 6, label %39 + i8 3, label %32 + i8 4, label %36 + i8 5, label %40 + i8 6, label %40 ] -23: ; preds = %20 - %24 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %25 = load i64, ptr %24, align 8, !tbaa !35 - %.fr84 = freeze i64 %25 - %26 = icmp slt i64 %.fr84, %7 - br i1 %26, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread - -27: ; preds = %20 - %28 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %29 = load i64, ptr %28, align 8, !tbaa !35 - %.fr83 = freeze i64 %29 - %30 = icmp ult i64 %.fr83, %7 - br i1 %30, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread - -31: ; preds = %20 - %32 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %33 = load i8, ptr %32, align 8, !tbaa !35, !range !87, !noundef !88 - %34 = icmp ult i8 %33, %.sroa.5.8.extract.trunc36 - br i1 %34, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread - -35: ; preds = %20 - %36 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %37 = load double, ptr %36, align 8, !tbaa !35 - %.fr81 = freeze double %37 - %38 = fcmp olt double %.fr81, %16 - br i1 %38, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread - -39: ; preds = %20, %20 +24: ; preds = %21 + %25 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %26 = load i64, ptr %25, align 8, !tbaa !35 + %.fr84 = freeze i64 %26 + %27 = icmp slt i64 %.fr84, %7 + br i1 %27, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + +28: ; preds = %21 + %29 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %30 = load i64, ptr %29, align 8, !tbaa !35 + %.fr82 = freeze i64 %30 + %31 = icmp ult i64 %.fr82, %7 + br i1 %31, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + +32: ; preds = %21 + %33 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %34 = load i8, ptr %33, align 8, !tbaa !35, !range !87, !noundef !88 + %35 = icmp ult i8 %34, %.sroa.5.8.extract.trunc36 + br i1 %35, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + +36: ; preds = %21 + %37 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %38 = load double, ptr %37, align 8, !tbaa !35 + %.fr81 = freeze double %38 + %39 = fcmp olt double %.fr81, %16 + br i1 %39, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + +40: ; preds = %21, %21 %.sroa.22.0..sroa_idx.i12 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 48 %.sroa.22.0.copyload.i13 = load i64, ptr %.sroa.22.0..sroa_idx.i12, align 8, !tbaa !89 %.sroa.speculated.i.i.i16 = tail call i64 @llvm.umin.i64(i64 %2, i64 %.sroa.22.0.copyload.i13) - %40 = icmp eq i64 %.sroa.speculated.i.i.i16, 0 - br i1 %40, label %.thread.i.i.i26, label %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17 - -_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17: ; preds = %39 - %41 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 - %.sroa.01.0.copyload.i19 = load ptr, ptr %41, align 8, !tbaa !90 - %42 = tail call i32 @memcmp(ptr noundef %.sroa.01.0.copyload.i19, ptr noundef %.fr82, i64 noundef %.sroa.speculated.i.i.i16) #20 - %.fr.i.i.i20 = freeze i32 %42 + %41 = icmp eq i64 %.sroa.speculated.i.i.i16, 0 + br i1 %41, label %.thread.i.i.i26, label %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17 + +_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17: ; preds = %40 + %42 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 40 + %.sroa.01.0.copyload.i19 = load ptr, ptr %42, align 8, !tbaa !90 + %43 = tail call i32 @memcmp(ptr noundef %.sroa.01.0.copyload.i19, ptr noundef %.fr83, i64 noundef %.sroa.speculated.i.i.i16) #20 + %.fr.i.i.i20 = freeze i32 %43 %.not.not.i.i.i21 = icmp eq i32 %.fr.i.i.i20, 0 br i1 %.not.not.i.i.i21, label %.thread.i.i.i26, label %_ZN4llvmltENS_9StringRefES0_.exit.i24 -.thread.i.i.i26: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17, %39 - %43 = icmp ult i64 %.sroa.22.0.copyload.i13, %2 - br i1 %43, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread +.thread.i.i.i26: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17, %40 + %44 = icmp ult i64 %.sroa.22.0.copyload.i13, %2 + br i1 %44, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread _ZN4llvmltENS_9StringRefES0_.exit.i24: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i17 - %44 = icmp slt i32 %.fr.i.i.i20, 0 - br i1 %44, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread + %45 = icmp slt i32 %.fr.i.i.i20, 0 + br i1 %45, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread -45: ; preds = %20 +46: ; preds = %21 unreachable -_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27: ; preds = %19 - %46 = getelementptr inbounds nuw i8, ptr %18, i64 8 - %47 = load i8, ptr %46, align 8, !tbaa !84 - %.fr = freeze i8 %47 - %48 = icmp eq i8 %.fr, 10 - %49 = icmp ult i8 %.fr, %.fr80 - %spec.select.i10 = or i1 %48, %49 +_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27: ; preds = %20 + %47 = getelementptr inbounds nuw i8, ptr %19, i64 8 + %48 = load i8, ptr %47, align 8, !tbaa !84 + %.fr = freeze i8 %48 + %49 = icmp eq i8 %.fr, 10 + %50 = icmp ult i8 %.fr, %.fr80 + %spec.select.i10 = or i1 %49, %50 br i1 %spec.select.i10, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread, label %.thread -_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread: ; preds = %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27, %23, %27, %31, %35, %_ZN4llvmltENS_9StringRefES0_.exit.i24, %.thread.i.i.i26, %19 +_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread: ; preds = %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27, %24, %28, %32, %36, %_ZN4llvmltENS_9StringRefES0_.exit.i24, %.thread.i.i.i26, %20 br label %.thread -.thread: ; preds = %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27, %23, %27, %31, %35, %_ZN4llvmltENS_9StringRefES0_.exit.i24, %.thread.i.i.i26, %20, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread - %50 = phi ptr [ %.0811.i.i.i.i, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread ], [ %.012.i.i.i.i, %20 ], [ %.012.i.i.i.i, %.thread.i.i.i26 ], [ %.012.i.i.i.i, %_ZN4llvmltENS_9StringRefES0_.exit.i24 ], [ %.012.i.i.i.i, %35 ], [ %.012.i.i.i.i, %31 ], [ %.012.i.i.i.i, %27 ], [ %.012.i.i.i.i, %23 ], [ %.012.i.i.i.i, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 ] - %51 = phi i64 [ 24, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread ], [ 16, %20 ], [ 16, %.thread.i.i.i26 ], [ 16, %_ZN4llvmltENS_9StringRefES0_.exit.i24 ], [ 16, %35 ], [ 16, %31 ], [ 16, %27 ], [ 16, %23 ], [ 16, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 ] - %.1.in.i.i.i.i = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 %51 +.thread: ; preds = %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27, %24, %28, %32, %36, %_ZN4llvmltENS_9StringRefES0_.exit.i24, %.thread.i.i.i26, %21, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread + %51 = phi ptr [ %.0811.i.i.i.i, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread ], [ %.012.i.i.i.i, %20 ], [ %.012.i.i.i.i, %.thread.i.i.i26 ], [ %.012.i.i.i.i, %_ZN4llvmltENS_9StringRefES0_.exit.i24 ], [ %.012.i.i.i.i, %35 ], [ %.012.i.i.i.i, %31 ], [ %.012.i.i.i.i, %27 ], [ %.012.i.i.i.i, %23 ], [ %.012.i.i.i.i, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 ] + %52 = phi i64 [ 24, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27.thread41.thread ], [ 16, %20 ], [ 16, %.thread.i.i.i26 ], [ 16, %_ZN4llvmltENS_9StringRefES0_.exit.i24 ], [ 16, %35 ], [ 16, %31 ], [ 16, %27 ], [ 16, %23 ], [ 16, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit27 ] + %.1.in.i.i.i.i = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 %52 %.1.i.i.i.i = load ptr, ptr %.1.in.i.i.i.i, align 8, !tbaa !85 %.not.i.i.i.i = icmp eq ptr %.1.i.i.i.i, null br i1 %.not.i.i.i.i, label %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6, !llvm.loop !86 _ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i: ; preds = %.thread, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us - %.us-phi = phi ptr [ %.012.i.i.i.i.us, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us ], [ %50, %.thread ] - %52 = icmp eq ptr %.us-phi, %12 - br i1 %52, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %53 - -53: ; preds = %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i - %54 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 32 - %55 = load ptr, ptr %54, align 8, !tbaa !3 - %.not.i.i = icmp eq ptr %55, null + %.us-phi = phi ptr [ %.012.i.i.i.i.us, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i6.us ], [ %51, %.thread ] + %53 = icmp eq ptr %.us-phi, %12 + br i1 %53, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %54 + +54: ; preds = %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i + %55 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 32 + %56 = load ptr, ptr %55, align 8, !tbaa !3 + %.not.i.i = icmp eq ptr %56, null br i1 %.not.i.i, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i -_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i: ; preds = %53 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 8 - %57 = load i8, ptr %56, align 8, !tbaa !84 - %.fr87 = freeze i8 %57 - %58 = icmp eq i8 %.fr87, 10 - br i1 %58, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %59 +_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i: ; preds = %54 + %57 = getelementptr inbounds nuw i8, ptr %56, i64 8 + %58 = load i8, ptr %57, align 8, !tbaa !84 + %.fr87 = freeze i8 %58 + %59 = icmp eq i8 %.fr87, 10 + br i1 %59, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit, label %60 -59: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i - %.not.i = icmp eq ptr %6, %55 - br i1 %.not.i, label %60, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit +60: ; preds = %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i + %.not.i = icmp eq ptr %6, %56 + br i1 %.not.i, label %61, label %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit -60: ; preds = %59 +61: ; preds = %60 switch i8 %.fr80, label %83 [ - i8 0, label %61 - i8 1, label %65 + i8 0, label %62 + i8 1, label %66 i8 2, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - i8 3, label %69 - i8 4, label %73 - i8 5, label %77 - i8 6, label %77 + i8 3, label %70 + i8 4, label %74 + i8 5, label %78 + i8 6, label %78 ] -61: ; preds = %60 - %62 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %63 = load i64, ptr %62, align 8, !tbaa !35 - %.fr90 = freeze i64 %63 - %64 = icmp sgt i64 %.fr90, %7 - br i1 %64, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - -65: ; preds = %60 - %66 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %67 = load i64, ptr %66, align 8, !tbaa !35 - %.fr89 = freeze i64 %67 - %68 = icmp ugt i64 %.fr89, %7 - br i1 %68, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - -69: ; preds = %60 - %70 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %71 = load i8, ptr %70, align 8, !tbaa !35, !range !87, !noundef !88 - %72 = icmp ugt i8 %71, %.sroa.5.8.extract.trunc36 - br i1 %72, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - -73: ; preds = %60 - %74 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %75 = load double, ptr %74, align 8, !tbaa !35 - %.fr88 = freeze double %75 - %76 = fcmp ogt double %.fr88, %16 - br i1 %76, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit - -77: ; preds = %60, %60 +62: ; preds = %61 + %63 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %64 = load i64, ptr %63, align 8, !tbaa !35 + %.fr90 = freeze i64 %64 + %65 = icmp sgt i64 %.fr90, %7 + br i1 %65, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + +66: ; preds = %61 + %67 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %68 = load i64, ptr %67, align 8, !tbaa !35 + %.fr89 = freeze i64 %68 + %69 = icmp ugt i64 %.fr89, %7 + br i1 %69, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + +70: ; preds = %61 + %71 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %72 = load i8, ptr %71, align 8, !tbaa !35, !range !87, !noundef !88 + %73 = icmp ugt i8 %72, %.sroa.5.8.extract.trunc36 + br i1 %73, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + +74: ; preds = %61 + %75 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %76 = load double, ptr %75, align 8, !tbaa !35 + %.fr88 = freeze double %76 + %77 = fcmp ogt double %.fr88, %16 + br i1 %77, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + +78: ; preds = %61, %61 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.us-phi, i64 48 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8, !tbaa !89 %.sroa.speculated.i.i.i = tail call i64 @llvm.umin.i64(i64 %.sroa.2.0.copyload.i, i64 %2) - %78 = icmp eq i64 %.sroa.speculated.i.i.i, 0 - br i1 %78, label %.thread.i.i.i, label %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i - -_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i: ; preds = %77 - %79 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - %.sroa.0.0.copyload.i = load ptr, ptr %79, align 8, !tbaa !90 - %80 = tail call i32 @memcmp(ptr noundef %.fr82, ptr noundef %.sroa.0.0.copyload.i, i64 noundef %.sroa.speculated.i.i.i) #20 - %.fr.i.i.i = freeze i32 %80 + %79 = icmp eq i64 %.sroa.speculated.i.i.i, 0 + br i1 %79, label %.thread.i.i.i, label %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i + +_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i: ; preds = %78 + %80 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + %.sroa.0.0.copyload.i = load ptr, ptr %80, align 8, !tbaa !90 + %81 = tail call i32 @memcmp(ptr noundef %.fr83, ptr noundef %.sroa.0.0.copyload.i, i64 noundef %.sroa.speculated.i.i.i) #20 + %.fr.i.i.i = freeze i32 %81 %.not.not.i.i.i = icmp eq i32 %.fr.i.i.i, 0 br i1 %.not.not.i.i.i, label %.thread.i.i.i, label %_ZN4llvmltENS_9StringRefES0_.exit.i -.thread.i.i.i: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i, %77 - %81 = icmp ult i64 %2, %.sroa.2.0.copyload.i - br i1 %81, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit +.thread.i.i.i: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i, %78 + %82 = icmp ult i64 %2, %.sroa.2.0.copyload.i + br i1 %82, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit _ZN4llvmltENS_9StringRefES0_.exit.i: ; preds = %_ZN4llvm9StringRef13compareMemoryEPKcS2_m.exit.i.i.i - %82 = icmp slt i32 %.fr.i.i.i, 0 - br i1 %82, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit + %83 = icmp slt i32 %.fr.i.i.i, 0 + br i1 %83, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit -83: ; preds = %60 +84: ; preds = %61 unreachable -_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit: ; preds = %59 - %84 = icmp ult i8 %.fr80, %.fr87 - %spec.select.i = or i1 %15, %84 +_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit: ; preds = %60 + %85 = icmp ult i8 %.fr80, %.fr87 + %spec.select.i = or i1 %17, %85 br i1 %spec.select.i, label %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit -_ZN4llvmltENS_9StringRefES0_.exit.i.thread75: ; preds = %.thread.i.i.i, %_ZN4llvmltENS_9StringRefES0_.exit.i, %73, %69, %65, %61, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit +_ZN4llvmltENS_9StringRefES0_.exit.i.thread75: ; preds = %.thread.i.i.i, %_ZN4llvmltENS_9StringRefES0_.exit.i, %74, %70, %66, %62, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit br label %_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit -_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit: ; preds = %.thread.i.i.i, %53, %60, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i, %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit, %61, %65, %69, %73, %_ZN4llvmltENS_9StringRefES0_.exit.i, %3, %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i +_ZN4llvm7msgpack10MapDocNode4findENS0_7DocNodeE.exit: ; preds = %.thread.i.i.i, %54, %61, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i, %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit, %62, %66, %70, %74, %_ZN4llvmltENS_9StringRefES0_.exit.i, %3, %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i %.sroa.0.0.i.i.i = phi ptr [ %12, %_ZNSt8_Rb_treeIN4llvm7msgpack7DocNodeESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS4_.exit.i.i.i ], [ %12, %3 ], [ %12, %_ZN4llvmltENS_9StringRefES0_.exit.i.thread75 ], [ %.us-phi, %_ZN4llvm7msgpackltERKNS0_7DocNodeES3_.exit ], [ %.us-phi, %61 ], [ %.us-phi, %65 ], [ %.us-phi, %69 ], [ %.us-phi, %73 ], [ %.us-phi, %_ZN4llvmltENS_9StringRefES0_.exit.i ], [ %.us-phi, %_ZNK4llvm7msgpack7DocNode7isEmptyEv.exit.i ], [ %.us-phi, %60 ], [ %.us-phi, %53 ], [ %.us-phi, %.thread.i.i.i ] ret ptr %.sroa.0.0.i.i.i } diff --git a/bench/meshlab/optimized/edit_align.ll b/bench/meshlab/optimized/edit_align.ll index c5ae7dc544c..b2ce1c1e120 100644 --- a/bench/meshlab/optimized/edit_align.ll +++ b/bench/meshlab/optimized/edit_align.ll @@ -10821,28 +10821,28 @@ define linkonce_odr void @_ZN5Eigen8internal13trmv_selectorILi6ELi1EE3runINS_9Tr %31 = load ptr, ptr %2, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) - %.sroa.speculated137.i = tail call i64 @llvm.smin.i64(i64 %.sroa.251.0.copyload, i64 %.sroa.352.0.copyload) - %32 = icmp sgt i64 %.sroa.speculated137.i, 0 - br i1 %32, label %.lr.ph148.i, label %.loopexit + %.sroa.speculated136.i = tail call i64 @llvm.smin.i64(i64 %.sroa.251.0.copyload, i64 %.sroa.352.0.copyload) + %32 = icmp sgt i64 %.sroa.speculated136.i, 0 + br i1 %32, label %.lr.ph149.i, label %.loopexit -.lr.ph148.i: ; preds = %27 +.lr.ph149.i: ; preds = %27 %33 = getelementptr inbounds nuw i8, ptr %5, i64 8 %34 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %35 -35: ; preds = %.noexc, %.lr.ph148.i - %indvars.iv.i = phi i64 [ %.sroa.speculated137.i, %.lr.ph148.i ], [ %indvars.iv.next.i, %.noexc ] - %.0146.i = phi i64 [ 0, %.lr.ph148.i ], [ %116, %.noexc ] +35: ; preds = %.noexc, %.lr.ph149.i + %indvars.iv.i = phi i64 [ %.sroa.speculated136.i, %.lr.ph148.i ], [ %indvars.iv.next.i, %.noexc ] + %.0147.i = phi i64 [ 0, %.lr.ph148.i ], [ %116, %.noexc ] %36 = call i64 @llvm.smax.i64(i64 %indvars.iv.i, i64 1) %37 = call i64 @llvm.umin.i64(i64 %36, i64 8) - %38 = sub nsw i64 %.sroa.speculated137.i, %.0146.i + %38 = sub nsw i64 %.sroa.speculated136.i, %.0147.i %.sroa.speculated.i = call i64 @llvm.smin.i64(i64 %38, i64 8) %39 = icmp sgt i64 %38, 0 br i1 %39, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %35, %.lr.ph._crit_edge.i %.064145.i = phi i64 [ %107, %.lr.ph._crit_edge.i ], [ 0, %35 ] - %40 = add nuw nsw i64 %.064145.i, %.0146.i + %40 = add nuw nsw i64 %.064145.i, %.0147.i %41 = xor i64 %.064145.i, -1 %42 = add nsw i64 %.sroa.speculated.i, %41 %43 = icmp sgt i64 %42, 0 @@ -10966,27 +10966,27 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_ br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !303 ._crit_edge.i: ; preds = %.lr.ph._crit_edge.i, %35 - %108 = add i64 %.sroa.speculated.i, %.0146.i + %108 = add i64 %.sroa.speculated.i, %.0147.i %109 = sub i64 %.sroa.251.0.copyload, %108 %110 = icmp sgt i64 %109, 0 br i1 %110, label %111, label %.noexc 111: ; preds = %._crit_edge.i %112 = getelementptr double, ptr %.sroa.050.0.copyload, i64 %108 - %.idx54 = shl i64 %.0146.i, 5 + %.idx54 = shl i64 %.0147.i, 5 %113 = getelementptr i8, ptr %112, i64 %.idx54 store ptr %113, ptr %5, align 8 store i64 4, ptr %33, align 8 %114 = getelementptr inbounds double, ptr %29, i64 %108 store ptr %114, ptr %6, align 8 store i64 1, ptr %34, align 8 - %115 = getelementptr inbounds nuw double, ptr %31, i64 %.0146.i + %115 = getelementptr inbounds nuw double, ptr %31, i64 %.0147.i invoke void @_ZN5Eigen8internal29general_matrix_vector_productIldNS0_22const_blas_data_mapperIdlLi1EEELi1ELb0EdS3_Lb0ELi1EE3runEllRKS3_S6_Pdld(i64 noundef %.sroa.speculated.i, i64 noundef %109, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull %115, i64 noundef 1, double noundef %10) to label %.noexc unwind label %118 .noexc: ; preds = %111, %._crit_edge.i - %116 = add nuw nsw i64 %.0146.i, 8 - %117 = icmp slt i64 %116, %.sroa.speculated137.i + %116 = add nuw nsw i64 %.0147.i, 8 + %117 = icmp slt i64 %116, %.sroa.speculated136.i %indvars.iv.next.i = add i64 %indvars.iv.i, -8 br i1 %117, label %35, label %.loopexit, !llvm.loop !304 diff --git a/bench/meshlab/optimized/miniz.ll b/bench/meshlab/optimized/miniz.ll index 7aae0a86fa7..f13c90b49ee 100644 --- a/bench/meshlab/optimized/miniz.ll +++ b/bench/meshlab/optimized/miniz.ll @@ -11509,8 +11509,8 @@ define range(i32 0, 2) i32 @mz_zip_validate_file(ptr noundef captures(address_is 110: ; preds = %98 %111 = call i16 @llvm.umax.i16(i16 %79, i16 %81) - %.not318 = icmp eq i16 %111, 0 - br i1 %.not318, label %.critedge278, label %112 + %.not320 = icmp eq i16 %111, 0 + br i1 %.not320, label %.critedge278, label %112 112: ; preds = %110 %113 = zext i16 %111 to i64 @@ -11645,23 +11645,23 @@ define range(i32 0, 2) i32 @mz_zip_validate_file(ptr noundef captures(address_is %.sroa.gep.sroa.gep296.val = load i32, ptr %.sroa.gep.sroa.gep296, align 8 %180 = select i1 %176, i32 %.sroa.gep.sroa.gep296.val, i32 %.sroa.gep.val %181 = zext i32 %180 to i64 - %.sroa.gep333 = getelementptr inbounds nuw i8, ptr %8, i64 12 - %.sroa.gep333.val = load i32, ptr %.sroa.gep333, align 4 - %182 = select i1 %176, i32 %.sroa.gep333.val, i32 %.sroa.gep.sroa.gep296.val + %.sroa.gep335 = getelementptr inbounds nuw i8, ptr %8, i64 12 + %.sroa.gep335.val = load i32, ptr %.sroa.gep335, align 4 + %182 = select i1 %176, i32 %.sroa.gep335.val, i32 %.sroa.gep.sroa.gep296.val %183 = zext i32 %182 to i64 br i1 %or.cond14, label %184, label %193 184: ; preds = %174 %185 = shl nuw i64 %183, 32 %186 = or disjoint i64 %185, %181 - %.sroa.gep335 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %.sroa.gep335.val = load i32, ptr %.sroa.gep335, align 16 - %.sroa.gep333.val353 = load i32, ptr %.sroa.gep333, align 4 - %187 = select i1 %176, i32 %.sroa.gep335.val, i32 %.sroa.gep333.val353 + %.sroa.gep337 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %.sroa.gep337.val = load i32, ptr %.sroa.gep337, align 16 + %.sroa.gep335.val355 = load i32, ptr %.sroa.gep335, align 4 + %187 = select i1 %176, i32 %.sroa.gep337.val, i32 %.sroa.gep335.val355 %188 = zext i32 %187 to i64 - %.sroa.gep337 = getelementptr inbounds nuw i8, ptr %8, i64 20 - %.sroa.gep337.val = load i32, ptr %.sroa.gep337, align 4 - %189 = select i1 %176, i32 %.sroa.gep337.val, i32 %.sroa.gep335.val + %.sroa.gep339 = getelementptr inbounds nuw i8, ptr %8, i64 20 + %.sroa.gep339.val = load i32, ptr %.sroa.gep339, align 4 + %189 = select i1 %176, i32 %.sroa.gep339.val, i32 %.sroa.gep337.val %190 = zext i32 %189 to i64 %191 = shl nuw i64 %190, 32 %192 = or disjoint i64 %191, %188 @@ -15996,7 +15996,7 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 %137 = add i64 %107, %136 %138 = call i64 %134(ptr noundef %135, i64 noundef %137, ptr noundef nonnull %132, i64 noundef %127) #32 %.not788 = icmp eq i64 %138, %127 - br i1 %.not788, label %.preheader929, label %141 + br i1 %.not788, label %.preheader934, label %141 139: ; preds = %126 %140 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -16012,13 +16012,13 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 store i32 20, ptr %145, align 4 br label %.critedge -.preheader929: ; preds = %.critedge831, %173 +.preheader934: ; preds = %.critedge831, %173 %.0723 = phi ptr [ %175, %173 ], [ %132, %.critedge831 ] %.0722 = phi i32 [ %176, %173 ], [ %113, %.critedge831 ] %146 = icmp ult i32 %.0722, 4 br i1 %146, label %147, label %152 -147: ; preds = %.preheader929 +147: ; preds = %.preheader934 %148 = getelementptr inbounds nuw i8, ptr %0, i64 48 %149 = load ptr, ptr %148, align 8 %150 = load ptr, ptr %130, align 8 @@ -16027,7 +16027,7 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 store i32 9, ptr %151, align 4 br label %.critedge -152: ; preds = %.preheader929 +152: ; preds = %.preheader934 %153 = getelementptr inbounds nuw i8, ptr %.0723, i64 2 %154 = load i16, ptr %153, align 2 %155 = zext i16 %154 to i32 @@ -16067,7 +16067,7 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 %175 = getelementptr inbounds nuw i8, ptr %.0723, i64 %174 %176 = sub i32 %.0722, %156 %.not789 = icmp eq i32 %176, 0 - br i1 %.not789, label %.loopexit, label %.preheader929 + br i1 %.not789, label %.loopexit, label %.preheader934 .loopexit: ; preds = %173, %166 %177 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -16132,8 +16132,8 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 .preheader: ; preds = %205 %214 = add i64 %197, 30 - %.not793940 = icmp eq i64 %118, 0 - br i1 %.not793940, label %240, label %.lr.ph + %.not793945 = icmp eq i64 %118, 0 + br i1 %.not793945, label %240, label %.lr.ph 215: ; preds = %205 %216 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -16141,13 +16141,13 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 br label %.critedge .lr.ph: ; preds = %.preheader, %235 - %.0729943 = phi i64 [ %237, %235 ], [ %214, %.preheader ] - %.0731942 = phi i64 [ %236, %235 ], [ %107, %.preheader ] - %.0732941 = phi i64 [ %238, %235 ], [ %118, %.preheader ] - %217 = call i64 @llvm.umin.i64(i64 %.0732941, i64 65536) + %.0729948 = phi i64 [ %237, %235 ], [ %214, %.preheader ] + %.0731947 = phi i64 [ %236, %235 ], [ %107, %.preheader ] + %.0732946 = phi i64 [ %238, %235 ], [ %118, %.preheader ] + %217 = call i64 @llvm.umin.i64(i64 %.0732946, i64 65536) %218 = load ptr, ptr %16, align 8 %219 = load ptr, ptr %97, align 8 - %220 = call i64 %218(ptr noundef %219, i64 noundef %.0731942, ptr noundef %212, i64 noundef %217) #32 + %220 = call i64 %218(ptr noundef %219, i64 noundef %.0731947, ptr noundef %212, i64 noundef %217) #32 %.not828 = icmp eq i64 %220, %217 br i1 %.not828, label %226, label %221 @@ -16163,7 +16163,7 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 226: ; preds = %.lr.ph %227 = load ptr, ptr %198, align 8 %228 = load ptr, ptr %200, align 8 - %229 = call i64 %227(ptr noundef %228, i64 noundef %.0729943, ptr noundef %212, i64 noundef %217) #32 + %229 = call i64 %227(ptr noundef %228, i64 noundef %.0729948, ptr noundef %212, i64 noundef %217) #32 %.not829 = icmp eq i64 %229, %217 br i1 %.not829, label %235, label %230 @@ -16177,9 +16177,9 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 br label %.critedge 235: ; preds = %226 - %236 = add i64 %.0731942, %217 - %237 = add i64 %.0729943, %217 - %238 = sub i64 %.0732941, %217 + %236 = add i64 %.0731947, %217 + %237 = add i64 %.0729948, %217 + %238 = sub i64 %.0732946, %217 %.not793 = icmp eq i64 %238, 0 br i1 %.not793, label %._crit_edge, label %.lr.ph @@ -16327,8 +16327,8 @@ mz_zip_writer_compute_padding_needed_for_file_alignment.exit: ; preds = %68, %71 %316 = getelementptr inbounds nuw i8, ptr %7, i64 48 %.20..20..20..20..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 20 store i64 -1, ptr %.20..20..20..20..sroa_idx, align 4 - %.42..42..42..42..sroa_idx1019 = getelementptr inbounds nuw i8, ptr %6, i64 42 - store i32 -1, ptr %.42..42..42..42..sroa_idx1019, align 2 + %.42..42..42..42..sroa_idx1024 = getelementptr inbounds nuw i8, ptr %6, i64 42 + store i32 -1, ptr %.42..42..42..42..sroa_idx1024, align 2 %.val853 = load i64, ptr %316, align 8 %317 = call fastcc i32 @mz_zip_writer_update_zip64_extension_block(ptr noundef %8, ptr noundef %0, ptr noundef %314, i32 noundef %57, i64 %117, i64 %.val853, i64 %197) %.not807 = icmp eq i32 %317, 0 diff --git a/bench/meshlab/optimized/shell.ll b/bench/meshlab/optimized/shell.ll index 9a8f4be0ffb..03d83be5a3f 100644 --- a/bench/meshlab/optimized/shell.ll +++ b/bench/meshlab/optimized/shell.ll @@ -824,9 +824,9 @@ _ZL5BuildR4MeshR9FaceGroup.exit: ; preds = %60, %62 %136 = getelementptr inbounds nuw i8, ptr %117, i64 8 br label %137 -137: ; preds = %.lr.ph169, %343 - %.054167 = phi double [ 0.000000e+00, %.lr.ph169 ], [ %339, %343 ] - %.sroa.0145.0166 = phi ptr [ %111, %.lr.ph169 ], [ %373, %343 ] +137: ; preds = %.lr.ph169, %346 + %.054167 = phi double [ 0.000000e+00, %.lr.ph169 ], [ %342, %343 ] + %.sroa.0145.0166 = phi ptr [ %111, %.lr.ph169 ], [ %376, %343 ] %138 = load ptr, ptr %120, align 8 %139 = load ptr, ptr %138, align 8 %140 = ptrtoint ptr %.sroa.0145.0166 to i64 @@ -877,7 +877,7 @@ _ZL5BuildR4MeshR9FaceGroup.exit: ; preds = %60, %62 %183 = fmul double %2, %164 %184 = fmul double %2, %168 %185 = fmul double %2, %171 - br label %313 + br label %316 186: ; preds = %137 %187 = getelementptr inbounds nuw i8, ptr %149, i64 8 @@ -973,8 +973,8 @@ _Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit: ; preds %253 = fmul double %.024.i, %252 %254 = call double @sin(double noundef %.0.i) #27 %255 = fmul double %.024.i, %254 - %.sroa.0.0.vec.insert205 = insertelement <2 x double> poison, double %162, i64 0 - %.sroa.0.8.vec.insert = insertelement <2 x double> %.sroa.0.0.vec.insert205, double %167, i64 1 + %.sroa.0.0.vec.insert202 = insertelement <2 x double> poison, double %162, i64 0 + %.sroa.0.8.vec.insert = insertelement <2 x double> %.sroa.0.0.vec.insert202, double %167, i64 1 %.sroa.5.16.vec.insert = insertelement <2 x double> poison, double %169, i64 0 %.sroa.5.24.vec.insert = insertelement <2 x double> %.sroa.5.16.vec.insert, double %172, i64 1 %256 = fneg double %253 @@ -1005,60 +1005,60 @@ _Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit: ; preds call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(11) %124, i8 0, i64 11, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %126, i8 -1, i64 16, i1 false) store i64 0, ptr %127, align 8 - %275 = call noundef nonnull align 16 dereferenceable(224) ptr @_ZN5Eigen9JacobiSVDINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi2EE7computeERKS2_j(ptr noundef nonnull align 16 dereferenceable(224) %6, ptr noundef nonnull align 16 dereferenceable(32) %5, i32 noundef 20) - %276 = load <2 x double>, ptr %131, align 16 - %.sroa.092.0.vec.extract = extractelement <2 x double> %276, i64 0 - %.sroa.092.8.vec.extract = extractelement <2 x double> %276, i64 1 - %277 = fcmp ult double %.sroa.092.0.vec.extract, %.sroa.092.8.vec.extract - br i1 %277, label %278, label %279 - -278: ; preds = %_Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit + %278 = call noundef nonnull align 16 dereferenceable(224) ptr @_ZN5Eigen9JacobiSVDINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi2EE7computeERKS2_j(ptr noundef nonnull align 16 dereferenceable(224) %6, ptr noundef nonnull align 16 dereferenceable(32) %5, i32 noundef 20) + %279 = load <2 x double>, ptr %131, align 16 + %.sroa.092.0.vec.extract = extractelement <2 x double> %279, i64 0 + %.sroa.092.8.vec.extract = extractelement <2 x double> %279, i64 1 + %280 = fcmp ult double %.sroa.092.0.vec.extract, %.sroa.092.8.vec.extract + br i1 %280, label %281, label %282 + +281: ; preds = %_Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit call void @_Z11ensure_failPKcS0_j(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, i32 noundef 108) #26 unreachable -279: ; preds = %_Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit - %280 = load <2 x double>, ptr %130, align 16 - %281 = load <2 x double>, ptr %129, align 16 - %282 = load <2 x double>, ptr %128, align 16 - %283 = load <2 x double>, ptr %6, align 16 - %284 = fmul double %2, %.sroa.092.0.vec.extract - %285 = fcmp olt double %.sroa.092.8.vec.extract, %284 - %286 = select i1 %285, double %.sroa.092.8.vec.extract, double %284 - %287 = insertelement <2 x double> poison, double %284, i64 0 - %288 = shufflevector <2 x double> %287, <2 x double> poison, <2 x i32> zeroinitializer - %289 = fmul <2 x double> %283, %288 - %290 = shufflevector <2 x double> %281, <2 x double> poison, <2 x i32> zeroinitializer - %291 = fmul <2 x double> %289, %290 - %292 = insertelement <2 x double> poison, double %286, i64 0 - %293 = shufflevector <2 x double> %292, <2 x double> poison, <2 x i32> zeroinitializer - %294 = fmul <2 x double> %282, %293 - %295 = shufflevector <2 x double> %280, <2 x double> poison, <2 x i32> zeroinitializer - %296 = fmul <2 x double> %294, %295 - %297 = fadd <2 x double> %291, %296 - %298 = shufflevector <2 x double> %281, <2 x double> poison, <2 x i32> - %299 = fmul <2 x double> %289, %298 - %300 = shufflevector <2 x double> %280, <2 x double> poison, <2 x i32> - %301 = fmul <2 x double> %294, %300 - %302 = fadd <2 x double> %299, %301 - %.sroa.0173.8.vec.insert = insertelement <2 x double> poison, double %.025.i, i64 0 - %303 = shufflevector <2 x double> %.sroa.0173.8.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer +282: ; preds = %_Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit + %283 = load <2 x double>, ptr %130, align 16 + %284 = load <2 x double>, ptr %129, align 16 + %285 = load <2 x double>, ptr %128, align 16 + %286 = load <2 x double>, ptr %6, align 16 + %287 = fmul double %2, %.sroa.092.0.vec.extract + %288 = fcmp olt double %.sroa.092.8.vec.extract, %287 + %289 = select i1 %288, double %.sroa.092.8.vec.extract, double %287 + %290 = insertelement <2 x double> poison, double %287, i64 0 + %291 = shufflevector <2 x double> %290, <2 x double> poison, <2 x i32> zeroinitializer + %292 = fmul <2 x double> %286, %291 + %293 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> zeroinitializer + %294 = fmul <2 x double> %292, %293 + %295 = insertelement <2 x double> poison, double %289, i64 0 + %296 = shufflevector <2 x double> %295, <2 x double> poison, <2 x i32> zeroinitializer + %297 = fmul <2 x double> %285, %296 + %298 = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> zeroinitializer + %299 = fmul <2 x double> %297, %298 + %300 = fadd <2 x double> %294, %299 + %301 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> + %302 = fmul <2 x double> %292, %301 + %303 = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> %304 = fmul <2 x double> %297, %303 - %305 = fmul <2 x double> %302, zeroinitializer - %306 = fadd <2 x double> %304, %305 + %305 = fadd <2 x double> %302, %304 + %.sroa.0173.8.vec.insert = insertelement <2 x double> poison, double %.025.i, i64 0 + %306 = shufflevector <2 x double> %.sroa.0173.8.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer + %307 = fmul <2 x double> %300, %306 + %308 = fmul <2 x double> %305, zeroinitializer + %309 = fadd <2 x double> %307, %308 %.sroa.0.0.vec.insert = insertelement <2 x double> poison, double %253, i64 0 - %307 = shufflevector <2 x double> %.sroa.0.0.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer - %308 = fmul <2 x double> %297, %307 - %309 = insertelement <2 x double> poison, double %255, i64 0 - %310 = shufflevector <2 x double> %309, <2 x double> poison, <2 x i32> zeroinitializer - %311 = fmul <2 x double> %302, %310 - %312 = fadd <2 x double> %308, %311 - %.sroa.084.0.vec.extract = extractelement <2 x double> %306, i64 0 - %.sroa.084.8.vec.extract = extractelement <2 x double> %306, i64 1 - %.sroa.081.0.vec.extract = extractelement <2 x double> %312, i64 0 - %.sroa.081.8.vec.extract = extractelement <2 x double> %312, i64 1 - br label %313 - -313: ; preds = %279, %179 + %310 = shufflevector <2 x double> %.sroa.0.0.vec.insert, <2 x double> poison, <2 x i32> zeroinitializer + %311 = fmul <2 x double> %300, %310 + %312 = insertelement <2 x double> poison, double %255, i64 0 + %313 = shufflevector <2 x double> %312, <2 x double> poison, <2 x i32> zeroinitializer + %314 = fmul <2 x double> %305, %313 + %315 = fadd <2 x double> %311, %314 + %.sroa.084.0.vec.extract = extractelement <2 x double> %309, i64 0 + %.sroa.084.8.vec.extract = extractelement <2 x double> %309, i64 1 + %.sroa.081.0.vec.extract = extractelement <2 x double> %315, i64 0 + %.sroa.081.8.vec.extract = extractelement <2 x double> %315, i64 1 + br label %316 + +316: ; preds = %282, %179 %.sroa.0140.0 = phi double [ %180, %179 ], [ 0.000000e+00, %279 ] %.sroa.5.0 = phi double [ %181, %179 ], [ 0.000000e+00, %279 ] %.sroa.9.0 = phi double [ %132, %179 ], [ 0.000000e+00, %279 ] @@ -1066,98 +1066,98 @@ _Z13LocalIsometryIN3vcg6Point3IdEENS0_6Point2IdEEEvRKT_S7_RT0_S9_.exit: ; preds %.sroa.16.0 = phi double [ %183, %179 ], [ %.sroa.084.8.vec.extract, %279 ] %.sroa.22.0 = phi double [ %184, %179 ], [ %.sroa.081.0.vec.extract, %279 ] %.sroa.25.0 = phi double [ %185, %179 ], [ %.sroa.081.8.vec.extract, %279 ] - %314 = load ptr, ptr %134, align 8 - %315 = load ptr, ptr %314, align 8 - %316 = ptrtoint ptr %315 to i64 - %317 = sub i64 %140, %316 - %318 = load ptr, ptr %133, align 8 - %319 = sdiv exact i64 %317, 3 - %320 = getelementptr inbounds i8, ptr %318, i64 %319 - store double %.sroa.0140.0, ptr %320, align 8 - %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 8 + %317 = load ptr, ptr %134, align 8 + %318 = load ptr, ptr %317, align 8 + %319 = ptrtoint ptr %318 to i64 + %320 = sub i64 %140, %319 + %321 = load ptr, ptr %133, align 8 + %322 = sdiv exact i64 %320, 3 + %323 = getelementptr inbounds i8, ptr %321, i64 %322 + store double %.sroa.0140.0, ptr %323, align 8 + %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 8 store double %.sroa.5.0, ptr %.sroa.5.0..sroa_idx, align 8 - %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 16 + %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 16 store double %.sroa.9.0, ptr %.sroa.9.0..sroa_idx, align 8 - %.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 24 + %.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 24 store double %.sroa.13.0, ptr %.sroa.13.0..sroa_idx, align 8 - %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 32 + %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 32 store double %.sroa.16.0, ptr %.sroa.16.0..sroa_idx, align 8 - %.sroa.19.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 40 + %.sroa.19.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 40 store double %.sroa.9.0, ptr %.sroa.19.0..sroa_idx, align 8 - %.sroa.22.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 48 + %.sroa.22.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 48 store double %.sroa.22.0, ptr %.sroa.22.0..sroa_idx, align 8 - %.sroa.25.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 56 + %.sroa.25.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 56 store double %.sroa.25.0, ptr %.sroa.25.0..sroa_idx, align 8 - %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 64 + %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %323, i64 64 store double %.sroa.9.0, ptr %.sroa.28.0..sroa_idx, align 8 - %321 = fsub double %.sroa.13.0, %.sroa.0140.0 - %322 = fsub double %.sroa.16.0, %.sroa.5.0 - %323 = fsub double %.sroa.9.0, %.sroa.9.0 - %324 = fsub double %.sroa.22.0, %.sroa.0140.0 - %325 = fsub double %.sroa.25.0, %.sroa.5.0 - %326 = fneg double %325 - %327 = fmul double %323, %326 - %328 = call double @llvm.fmuladd.f64(double %322, double %323, double %327) - %329 = fneg double %323 - %330 = fmul double %321, %329 - %331 = call double @llvm.fmuladd.f64(double %323, double %324, double %330) - %332 = fneg double %324 - %333 = fmul double %322, %332 - %334 = call double @llvm.fmuladd.f64(double %321, double %325, double %333) - %335 = fmul double %331, %331 - %336 = call double @llvm.fmuladd.f64(double %328, double %328, double %335) - %337 = call double @llvm.fmuladd.f64(double %334, double %334, double %336) - %sqrt.i = call noundef double @llvm.sqrt.f64(double %337) - %338 = fmul double %sqrt.i, 5.000000e-01 - %339 = fadd double %.054167, %338 - %340 = call double @llvm.fabs.f64(double %339) - %341 = fcmp ueq double %340, 0x7FF0000000000000 - br i1 %341, label %342, label %343 - -342: ; preds = %313 + %324 = fsub double %.sroa.13.0, %.sroa.0140.0 + %325 = fsub double %.sroa.16.0, %.sroa.5.0 + %326 = fsub double %.sroa.9.0, %.sroa.9.0 + %327 = fsub double %.sroa.22.0, %.sroa.0140.0 + %328 = fsub double %.sroa.25.0, %.sroa.5.0 + %329 = fneg double %328 + %330 = fmul double %326, %329 + %331 = call double @llvm.fmuladd.f64(double %325, double %326, double %330) + %332 = fneg double %326 + %333 = fmul double %324, %332 + %334 = call double @llvm.fmuladd.f64(double %326, double %327, double %333) + %335 = fneg double %327 + %336 = fmul double %325, %335 + %337 = call double @llvm.fmuladd.f64(double %324, double %328, double %336) + %338 = fmul double %334, %334 + %339 = call double @llvm.fmuladd.f64(double %331, double %331, double %338) + %340 = call double @llvm.fmuladd.f64(double %337, double %337, double %339) + %sqrt.i = call noundef double @llvm.sqrt.f64(double %340) + %341 = fmul double %sqrt.i, 5.000000e-01 + %342 = fadd double %.054167, %341 + %343 = call double @llvm.fabs.f64(double %342) + %344 = fcmp ueq double %343, 0x7FF0000000000000 + br i1 %344, label %345, label %346 + +345: ; preds = %316 call void @_Z11ensure_failPKcS0_j(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.4, i32 noundef 130) #26 unreachable -343: ; preds = %313 - %344 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 8 - %345 = load ptr, ptr %344, align 8 - %346 = load ptr, ptr %136, align 8 - %347 = load ptr, ptr %346, align 8 - %348 = ptrtoint ptr %347 to i64 - %349 = sub i64 %140, %348 - %350 = load ptr, ptr %135, align 8 - %351 = sdiv exact i64 %349, 3 - %352 = getelementptr inbounds i8, ptr %350, i64 %351 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %352, ptr noundef nonnull align 8 dereferenceable(24) %345, i64 24, i1 false) - %353 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 16 - %354 = load ptr, ptr %353, align 8 - %355 = load ptr, ptr %136, align 8 - %356 = load ptr, ptr %355, align 8 - %357 = ptrtoint ptr %356 to i64 - %358 = sub i64 %140, %357 - %359 = load ptr, ptr %135, align 8 - %360 = sdiv exact i64 %358, 3 - %361 = getelementptr inbounds i8, ptr %359, i64 %360 - %362 = getelementptr inbounds nuw i8, ptr %361, i64 24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %362, ptr noundef nonnull align 8 dereferenceable(24) %354, i64 24, i1 false) - %363 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 24 - %364 = load ptr, ptr %363, align 8 - %365 = load ptr, ptr %136, align 8 - %366 = load ptr, ptr %365, align 8 - %367 = ptrtoint ptr %366 to i64 - %368 = sub i64 %140, %367 - %369 = load ptr, ptr %135, align 8 - %370 = sdiv exact i64 %368, 3 - %371 = getelementptr inbounds i8, ptr %369, i64 %370 - %372 = getelementptr inbounds nuw i8, ptr %371, i64 48 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %372, ptr noundef nonnull align 8 dereferenceable(24) %364, i64 24, i1 false) - %373 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 216 - %.not = icmp eq ptr %373, %113 +346: ; preds = %316 + %347 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 8 + %348 = load ptr, ptr %347, align 8 + %349 = load ptr, ptr %136, align 8 + %350 = load ptr, ptr %349, align 8 + %351 = ptrtoint ptr %350 to i64 + %352 = sub i64 %140, %351 + %353 = load ptr, ptr %135, align 8 + %354 = sdiv exact i64 %352, 3 + %355 = getelementptr inbounds i8, ptr %353, i64 %354 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %355, ptr noundef nonnull align 8 dereferenceable(24) %348, i64 24, i1 false) + %356 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 16 + %357 = load ptr, ptr %356, align 8 + %358 = load ptr, ptr %136, align 8 + %359 = load ptr, ptr %358, align 8 + %360 = ptrtoint ptr %359 to i64 + %361 = sub i64 %140, %360 + %362 = load ptr, ptr %135, align 8 + %363 = sdiv exact i64 %361, 3 + %364 = getelementptr inbounds i8, ptr %362, i64 %363 + %365 = getelementptr inbounds nuw i8, ptr %364, i64 24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %365, ptr noundef nonnull align 8 dereferenceable(24) %357, i64 24, i1 false) + %366 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 24 + %367 = load ptr, ptr %366, align 8 + %368 = load ptr, ptr %136, align 8 + %369 = load ptr, ptr %368, align 8 + %370 = ptrtoint ptr %369 to i64 + %371 = sub i64 %140, %370 + %372 = load ptr, ptr %135, align 8 + %373 = sdiv exact i64 %371, 3 + %374 = getelementptr inbounds i8, ptr %372, i64 %373 + %375 = getelementptr inbounds nuw i8, ptr %374, i64 48 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %375, ptr noundef nonnull align 8 dereferenceable(24) %367, i64 24, i1 false) + %376 = getelementptr inbounds nuw i8, ptr %.sroa.0145.0166, i64 216 + %.not = icmp eq ptr %376, %113 br i1 %.not, label %._crit_edge170, label %137 -._crit_edge170: ; preds = %343, %._crit_edge - %374 = icmp eq i32 %59, 1 - ret i1 %374 +._crit_edge170: ; preds = %346, %._crit_edge + %377 = icmp eq i32 %59, 1 + ret i1 %377 } ; Function Attrs: mustprogress uwtable diff --git a/bench/nori/optimized/accel.ll b/bench/nori/optimized/accel.ll index efa33786b92..5324d07d2c3 100644 --- a/bench/nori/optimized/accel.ll +++ b/bench/nori/optimized/accel.ll @@ -742,8 +742,8 @@ _ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit: ; preds = %23 .lr.ph.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i, %.lr.ph.i.preheader.i.i.i.i.i.i %.011.i.i.i.i.i.i.i = phi i64 [ %45, %.lr.ph.i.i.i.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i.i.i.i ] - %33 = getelementptr inbounds nuw float, ptr %25, i64 %.011.i.i.i.i.i.i.i - %34 = getelementptr inbounds nuw float, ptr %6, i64 %.011.i.i.i.i.i.i.i + %36 = getelementptr inbounds nuw float, ptr %25, i64 %.011.i.i.i.i.i.i.i + %37 = getelementptr inbounds nuw float, ptr %6, i64 %.011.i.i.i.i.i.i.i %35 = load <4 x float>, ptr %34, align 1 %36 = fmul <4 x float> %30, %35 %37 = getelementptr inbounds nuw float, ptr %10, i64 %.011.i.i.i.i.i.i.i @@ -760,15 +760,15 @@ _ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit: ; preds = %23 br i1 %46, label %.lr.ph.i.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i.i, !llvm.loop !22 ._crit_edge.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit.thread, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit - %47 = phi i64 [ %19, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit.thread ], [ %28, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit ], [ %28, %.lr.ph.i.i.i.i.i.i.i ] + %50 = phi i64 [ %19, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit.thread ], [ %28, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit ], [ %28, %.lr.ph.i.i.i.i.i.i.i ] %.sink.i23 = phi ptr [ null, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit.thread ], [ %25, %_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit ], [ %25, %.lr.ph.i.i.i.i.i.i.i ] - %48 = icmp slt i64 %47, %16 - br i1 %48, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit + %51 = icmp slt i64 %50, %16 + br i1 %51, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit .lr.ph.i.i.i.i.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i - %.05.i.i.i.i.i.i.i.i = phi i64 [ %61, %.lr.ph.i.i.i.i.i.i.i.i ], [ %47, %._crit_edge.i.i.i.i.i.i.i ] - %49 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05.i.i.i.i.i.i.i.i - %50 = getelementptr inbounds float, ptr %6, i64 %.05.i.i.i.i.i.i.i.i + %.05.i.i.i.i.i.i.i.i = phi i64 [ %61, %.lr.ph.i.i.i.i.i.i.i.i ], [ %50, %._crit_edge.i.i.i.i.i.i.i ] + %52 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05.i.i.i.i.i.i.i.i + %53 = getelementptr inbounds float, ptr %6, i64 %.05.i.i.i.i.i.i.i.i %51 = load float, ptr %50, align 4 %52 = fmul float %4, %51 %53 = getelementptr inbounds float, ptr %10, i64 %.05.i.i.i.i.i.i.i.i @@ -785,175 +785,175 @@ _ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll.exit: ; preds = %23 br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit, label %.lr.ph.i.i.i.i.i.i.i.i, !llvm.loop !23 _ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i.i - %62 = sdiv i64 %16, 8 - %63 = shl nsw i64 %62, 3 - %64 = sdiv i64 %16, 4 - %65 = shl nsw i64 %64, 2 + %65 = sdiv i64 %16, 8 + %66 = shl nsw i64 %65, 3 + %67 = sdiv i64 %16, 4 + %68 = shl nsw i64 %67, 2 %.off.i.i.i.i = add nsw i64 %16, 3 %.not.i.i.i.i = icmp ult i64 %.off.i.i.i.i, 7 - br i1 %.not.i.i.i.i, label %102, label %66 - -66: ; preds = %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit - %67 = load <4 x float>, ptr %.sink.i23, align 16 - %68 = fmul <4 x float> %67, %67 - %69 = icmp sgt i64 %16, 7 - br i1 %69, label %70, label %92 - -70: ; preds = %66 - %71 = getelementptr inbounds nuw i8, ptr %.sink.i23, i64 16 - %72 = load <4 x float>, ptr %71, align 16 - %73 = fmul <4 x float> %72, %72 - %74 = icmp samesign ugt i64 %16, 15 - br i1 %74, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i - -.lr.ph.i.i.i.i: ; preds = %70, %.lr.ph.i.i.i.i + br i1 %.not.i.i.i.i, label %105, label %69 + +69: ; preds = %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit + %70 = load <4 x float>, ptr %.sink.i23, align 16 + %71 = fmul <4 x float> %70, %70 + %72 = icmp sgt i64 %16, 7 + br i1 %72, label %73, label %95 + +73: ; preds = %69 + %74 = getelementptr inbounds nuw i8, ptr %.sink.i23, i64 16 + %75 = load <4 x float>, ptr %74, align 16 + %76 = fmul <4 x float> %75, %75 + %77 = icmp samesign ugt i64 %16, 15 + br i1 %77, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i + +.lr.ph.i.i.i.i: ; preds = %73, %.lr.ph.i.i.i.i %.05478.i.i.i.i = phi i64 [ %.054.i.i.i.i, %.lr.ph.i.i.i.i ], [ 8, %70 ] %.054.in77.i.i.i.i = phi i64 [ %.05478.i.i.i.i, %.lr.ph.i.i.i.i ], [ 0, %70 ] - %storemerge76.i.i.i.i = phi <4 x float> [ %83, %.lr.ph.i.i.i.i ], [ %73, %70 ] - %.17375.i.i.i.i = phi <4 x float> [ %78, %.lr.ph.i.i.i.i ], [ %68, %70 ] - %75 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.05478.i.i.i.i - %76 = load <4 x float>, ptr %75, align 16 - %77 = fmul <4 x float> %76, %76 - %78 = fadd <4 x float> %.17375.i.i.i.i, %77 - %79 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.054.in77.i.i.i.i - %80 = getelementptr inbounds nuw i8, ptr %79, i64 48 - %81 = load <4 x float>, ptr %80, align 16 - %82 = fmul <4 x float> %81, %81 - %83 = fadd <4 x float> %storemerge76.i.i.i.i, %82 + %storemerge76.i.i.i.i = phi <4 x float> [ %86, %.lr.ph.i.i.i.i ], [ %76, %70 ] + %.17375.i.i.i.i = phi <4 x float> [ %81, %.lr.ph.i.i.i.i ], [ %71, %70 ] + %78 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.05478.i.i.i.i + %79 = load <4 x float>, ptr %78, align 16 + %80 = fmul <4 x float> %79, %79 + %81 = fadd <4 x float> %.17375.i.i.i.i, %80 + %82 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.054.in77.i.i.i.i + %83 = getelementptr inbounds nuw i8, ptr %82, i64 48 + %84 = load <4 x float>, ptr %83, align 16 + %85 = fmul <4 x float> %84, %84 + %86 = fadd <4 x float> %storemerge76.i.i.i.i, %85 %.054.i.i.i.i = add nuw nsw i64 %.05478.i.i.i.i, 8 - %84 = icmp slt i64 %.054.i.i.i.i, %63 - br i1 %84, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i, !llvm.loop !24 - -._crit_edge.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %70 - %.173.lcssa.i.i.i.i = phi <4 x float> [ %68, %70 ], [ %78, %.lr.ph.i.i.i.i ] - %storemerge.lcssa.i.i.i.i = phi <4 x float> [ %73, %70 ], [ %83, %.lr.ph.i.i.i.i ] - %85 = fadd <4 x float> %.173.lcssa.i.i.i.i, %storemerge.lcssa.i.i.i.i - %86 = icmp sgt i64 %65, %63 - br i1 %86, label %87, label %92 - -87: ; preds = %._crit_edge.i.i.i.i - %88 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %63 - %89 = load <4 x float>, ptr %88, align 16 - %90 = fmul <4 x float> %89, %89 - %91 = fadd <4 x float> %85, %90 - br label %92 - -92: ; preds = %87, %._crit_edge.i.i.i.i, %66 - %.072.i.i.i.i = phi <4 x float> [ %91, %87 ], [ %85, %._crit_edge.i.i.i.i ], [ %68, %66 ] - %93 = shufflevector <4 x float> %.072.i.i.i.i, <4 x float> poison, <4 x i32> - %94 = fadd <4 x float> %.072.i.i.i.i, %93 - %shift = shufflevector <4 x float> %94, <4 x float> poison, <4 x i32> - %foldExtExtBinop = fadd <4 x float> %94, %shift - %95 = extractelement <4 x float> %foldExtExtBinop, i64 0 - %96 = icmp slt i64 %65, %16 - br i1 %96, label %.lr.ph83.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - -.lr.ph83.i.i.i.i: ; preds = %92, %.lr.ph83.i.i.i.i - %.05281.i.i.i.i = phi i64 [ %101, %.lr.ph83.i.i.i.i ], [ %65, %92 ] - %.180.i.i.i.i = phi float [ %100, %.lr.ph83.i.i.i.i ], [ %95, %92 ] - %97 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05281.i.i.i.i - %98 = load float, ptr %97, align 4 - %99 = fmul float %98, %98 - %100 = fadd float %.180.i.i.i.i, %99 - %101 = add nsw i64 %.05281.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %101, %16 + %87 = icmp slt i64 %.054.i.i.i.i, %66 + br i1 %87, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i, !llvm.loop !24 + +._crit_edge.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %73 + %.173.lcssa.i.i.i.i = phi <4 x float> [ %71, %70 ], [ %81, %.lr.ph.i.i.i.i ] + %storemerge.lcssa.i.i.i.i = phi <4 x float> [ %76, %70 ], [ %86, %.lr.ph.i.i.i.i ] + %88 = fadd <4 x float> %.173.lcssa.i.i.i.i, %storemerge.lcssa.i.i.i.i + %89 = icmp sgt i64 %68, %66 + br i1 %89, label %90, label %95 + +90: ; preds = %._crit_edge.i.i.i.i + %91 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %66 + %92 = load <4 x float>, ptr %91, align 16 + %93 = fmul <4 x float> %92, %92 + %94 = fadd <4 x float> %88, %93 + br label %95 + +95: ; preds = %90, %._crit_edge.i.i.i.i, %69 + %.072.i.i.i.i = phi <4 x float> [ %94, %87 ], [ %88, %._crit_edge.i.i.i.i ], [ %71, %66 ] + %96 = shufflevector <4 x float> %.072.i.i.i.i, <4 x float> poison, <4 x i32> + %97 = fadd <4 x float> %.072.i.i.i.i, %96 + %shift = shufflevector <4 x float> %97, <4 x float> poison, <4 x i32> + %foldExtExtBinop = fadd <4 x float> %97, %shift + %98 = extractelement <4 x float> %foldExtExtBinop, i64 0 + %99 = icmp slt i64 %68, %16 + br i1 %99, label %.lr.ph83.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit + +.lr.ph83.i.i.i.i: ; preds = %95, %.lr.ph83.i.i.i.i + %.05281.i.i.i.i = phi i64 [ %104, %.lr.ph83.i.i.i.i ], [ %68, %92 ] + %.180.i.i.i.i = phi float [ %103, %.lr.ph83.i.i.i.i ], [ %98, %92 ] + %100 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05281.i.i.i.i + %101 = load float, ptr %100, align 4 + %102 = fmul float %101, %101 + %103 = fadd float %.180.i.i.i.i, %102 + %104 = add nsw i64 %.05281.i.i.i.i, 1 + %exitcond.not.i.i.i.i = icmp eq i64 %104, %16 br i1 %exitcond.not.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit, label %.lr.ph83.i.i.i.i, !llvm.loop !25 -102: ; preds = %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit - %103 = load float, ptr %.sink.i23, align 4 - %104 = fmul float %103, %103 - %105 = icmp sgt i64 %16, 1 - br i1 %105, label %.lr.ph88.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - -.lr.ph88.i.i.i.i: ; preds = %102, %.lr.ph88.i.i.i.i - %.086.i.i.i.i = phi i64 [ %110, %.lr.ph88.i.i.i.i ], [ 1, %102 ] - %.385.i.i.i.i = phi float [ %109, %.lr.ph88.i.i.i.i ], [ %104, %102 ] - %106 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.086.i.i.i.i - %107 = load float, ptr %106, align 4 - %108 = fmul float %107, %107 - %109 = fadd float %.385.i.i.i.i, %108 - %110 = add nuw nsw i64 %.086.i.i.i.i, 1 - %exitcond94.not.i.i.i.i = icmp eq i64 %110, %16 +105: ; preds = %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIffEEKNS3_IS6_KNS3_INS4_17scalar_product_opIffEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEEKS1_EEKNS_5BlockIKNS0_IfLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESL_EESL_EEEERKT_.exit + %106 = load float, ptr %.sink.i23, align 4 + %107 = fmul float %106, %106 + %108 = icmp sgt i64 %16, 1 + br i1 %108, label %.lr.ph88.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit + +.lr.ph88.i.i.i.i: ; preds = %105, %.lr.ph88.i.i.i.i + %.086.i.i.i.i = phi i64 [ %113, %.lr.ph88.i.i.i.i ], [ 1, %102 ] + %.385.i.i.i.i = phi float [ %112, %.lr.ph88.i.i.i.i ], [ %107, %102 ] + %109 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.086.i.i.i.i + %110 = load float, ptr %109, align 4 + %111 = fmul float %110, %110 + %112 = fadd float %.385.i.i.i.i, %111 + %113 = add nuw nsw i64 %.086.i.i.i.i, 1 + %exitcond94.not.i.i.i.i = icmp eq i64 %113, %16 br i1 %exitcond94.not.i.i.i.i, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit, label %.lr.ph88.i.i.i.i, !llvm.loop !26 -_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit: ; preds = %.lr.ph83.i.i.i.i, %.lr.ph88.i.i.i.i, %102, %92 - %.0.i.i = phi float [ %104, %102 ], [ %95, %92 ], [ %109, %.lr.ph88.i.i.i.i ], [ %100, %.lr.ph83.i.i.i.i ] - %111 = fcmp ogt float %.0.i.i, 0.000000e+00 - br i1 %111, label %112, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread +_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit: ; preds = %.lr.ph83.i.i.i.i, %.lr.ph88.i.i.i.i, %105, %95 + %.0.i.i = phi float [ %107, %102 ], [ %98, %92 ], [ %112, %.lr.ph88.i.i.i.i ], [ %103, %.lr.ph83.i.i.i.i ] + %114 = fcmp ogt float %.0.i.i, 0.000000e+00 + br i1 %114, label %115, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread -112: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - %113 = tail call float @llvm.sqrt.f32(float %.0.i.i) +115: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit + %116 = tail call float @llvm.sqrt.f32(float %.0.i.i) tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) invoke void @_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %16, i64 noundef %16, i64 noundef 1) to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i unwind label %.body -_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i: ; preds = %112 - %114 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %115 = load i64, ptr %114, align 8 - %.not.i.i.i.i.i.i = icmp eq i64 %115, %16 - br i1 %.not.i.i.i.i.i.i, label %116, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i +_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i: ; preds = %115 + %117 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %118 = load i64, ptr %117, align 8 + %.not.i.i.i.i.i.i = icmp eq i64 %118, %16 + br i1 %.not.i.i.i.i.i.i, label %119, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i _ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i invoke void @_ZN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %16, i64 noundef %16, i64 noundef 1) to label %.noexc.i unwind label %.body .noexc.i: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i - %.pr.i.i.i.i.i = load i64, ptr %114, align 8 + %.pr.i.i.i.i.i = load i64, ptr %117, align 8 %.pre = sdiv i64 %.pr.i.i.i.i.i, 4 %.pre42 = shl nsw i64 %.pre, 2 - br label %116 - -116: ; preds = %.noexc.i, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i - %.pre-phi43 = phi i64 [ %.pre42, %.noexc.i ], [ %65, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i ] - %117 = phi i64 [ %.pr.i.i.i.i.i, %.noexc.i ], [ %16, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i ] - %118 = load ptr, ptr %0, align 8 - %119 = icmp sgt i64 %117, 3 - br i1 %119, label %.lr.ph.i.preheader.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i - -.lr.ph.i.preheader.i.i.i.i.i: ; preds = %116 - %120 = insertelement <4 x float> poison, float %113, i64 0 - %121 = shufflevector <4 x float> %120, <4 x float> poison, <4 x i32> zeroinitializer + br label %119 + +119: ; preds = %.noexc.i, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i + %.pre-phi43 = phi i64 [ %.pre42, %.noexc.i ], [ %68, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i ] + %120 = phi i64 [ %.pr.i.i.i.i.i, %.noexc.i ], [ %16, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE10resizeLikeINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIfEES9_EEEEEEvRKNS_9EigenBaseIT_EE.exit.i ] + %121 = load ptr, ptr %0, align 8 + %122 = icmp sgt i64 %120, 3 + br i1 %122, label %.lr.ph.i.preheader.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i + +.lr.ph.i.preheader.i.i.i.i.i: ; preds = %119 + %123 = insertelement <4 x float> poison, float %116, i64 0 + %124 = shufflevector <4 x float> %123, <4 x float> poison, <4 x i32> zeroinitializer br label %.lr.ph.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %.lr.ph.i.preheader.i.i.i.i.i - %.011.i.i.i.i.i.i = phi i64 [ %126, %.lr.ph.i.i.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i.i.i ] - %122 = getelementptr inbounds nuw float, ptr %118, i64 %.011.i.i.i.i.i.i - %123 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.011.i.i.i.i.i.i - %124 = load <4 x float>, ptr %123, align 16 - %125 = fdiv <4 x float> %124, %121 - store <4 x float> %125, ptr %122, align 16 - %126 = add nuw nsw i64 %.011.i.i.i.i.i.i, 4 - %127 = icmp slt i64 %126, %.pre-phi43 - br i1 %127, label %.lr.ph.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i, !llvm.loop !27 - -._crit_edge.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %116 - %128 = icmp slt i64 %.pre-phi43, %117 - br i1 %128, label %.lr.ph.i.i.i.i.i.i.i8, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit + %.011.i.i.i.i.i.i = phi i64 [ %129, %.lr.ph.i.i.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i.i.i ] + %125 = getelementptr inbounds nuw float, ptr %121, i64 %.011.i.i.i.i.i.i + %126 = getelementptr inbounds nuw float, ptr %.sink.i23, i64 %.011.i.i.i.i.i.i + %127 = load <4 x float>, ptr %126, align 16 + %128 = fdiv <4 x float> %127, %124 + store <4 x float> %128, ptr %125, align 16 + %129 = add nuw nsw i64 %.011.i.i.i.i.i.i, 4 + %130 = icmp slt i64 %129, %.pre-phi43 + br i1 %130, label %.lr.ph.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i, !llvm.loop !27 + +._crit_edge.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %119 + %131 = icmp slt i64 %.pre-phi43, %120 + br i1 %131, label %.lr.ph.i.i.i.i.i.i.i8, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit .lr.ph.i.i.i.i.i.i.i8: ; preds = %._crit_edge.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i8 - %.05.i.i.i.i.i.i.i = phi i64 [ %133, %.lr.ph.i.i.i.i.i.i.i8 ], [ %.pre-phi43, %._crit_edge.i.i.i.i.i.i ] - %129 = getelementptr inbounds float, ptr %118, i64 %.05.i.i.i.i.i.i.i - %130 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05.i.i.i.i.i.i.i - %131 = load float, ptr %130, align 4 - %132 = fdiv float %131, %113 - store float %132, ptr %129, align 4 - %133 = add nsw i64 %.05.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i = icmp eq i64 %133, %117 + %.05.i.i.i.i.i.i.i = phi i64 [ %136, %.lr.ph.i.i.i.i.i.i.i8 ], [ %.pre-phi43, %._crit_edge.i.i.i.i.i.i ] + %132 = getelementptr inbounds float, ptr %121, i64 %.05.i.i.i.i.i.i.i + %133 = getelementptr inbounds float, ptr %.sink.i23, i64 %.05.i.i.i.i.i.i.i + %134 = load float, ptr %133, align 4 + %135 = fdiv float %134, %116 + store float %135, ptr %132, align 4 + %136 = add nsw i64 %.05.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i.i.i.i = icmp eq i64 %136, %120 br i1 %exitcond.not.i.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit, label %.lr.ph.i.i.i.i.i.i.i8, !llvm.loop !28 -.body: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i, %112 - %134 = landingpad { ptr, i32 } +.body: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i, %115 + %137 = landingpad { ptr, i32 } cleanup - %135 = load ptr, ptr %0, align 8 - tail call void @free(ptr noundef %135) #16 + %138 = load ptr, ptr %0, align 8 + tail call void @free(ptr noundef %138) #16 tail call void @free(ptr noundef nonnull %.sink.i23) #16 - resume { ptr, i32 } %134 + resume { ptr, i32 } %137 _ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread: ; preds = %2, %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit %.sroa.0.12633 = phi ptr [ %.sink.i23, %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit ], [ null, %2 ] store ptr %.sroa.0.12633, ptr %0, align 8 - %136 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %16, ptr %136, align 8 + %139 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %16, ptr %139, align 8 br label %_ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit _ZN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEC2INS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIffEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIfEES7_EEEEEERKNS_9EigenBaseIT_EE.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i8, %._crit_edge.i.i.i.i.i.i, %_ZNK5Eigen10MatrixBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit.thread diff --git a/bench/ockam-rs/optimized/1411u8drt798uxi8.ll b/bench/ockam-rs/optimized/1411u8drt798uxi8.ll index 868bd3aa763..6cb7d4c5c86 100644 --- a/bench/ockam-rs/optimized/1411u8drt798uxi8.ll +++ b/bench/ockam-rs/optimized/1411u8drt798uxi8.ll @@ -78696,7 +78696,7 @@ define hidden void @"_ZN89_$LT$minicbor..bytes..ByteArray$LT$_$GT$$u20$as$u20$mi br i1 %.not.not, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread", label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread": ; preds = %14 - %.val.i = load i32, ptr %11, align 1, !alias.scope !10896 + %.val.i61 = load i32, ptr %11, align 1, !alias.scope !10896 br label %17 "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit": ; preds = %14 @@ -78728,10 +78728,10 @@ define hidden void @"_ZN89_$LT$minicbor..bytes..ByteArray$LT$_$GT$$u20$as$u20$mi br label %20 17: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread" - %.sroa.5.053 = phi i32 [ %.val.i, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread" ], [ %.sroa.5.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit" ] + %.sroa.5.055.ph = phi i32 [ %.val.i, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit.thread" ], [ %.sroa.5.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13ce806abcadf202E.exit" ] call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.8) %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %.sroa.5.053, ptr %18, align 8 + store i32 %.sroa.5.055.ph, ptr %18, align 8 store i64 2, ptr %0, align 8 br label %20 diff --git a/bench/open3d/optimized/VoxelGrid.ll b/bench/open3d/optimized/VoxelGrid.ll index c12866e976d..f96807a1005 100644 --- a/bench/open3d/optimized/VoxelGrid.ll +++ b/bench/open3d/optimized/VoxelGrid.ll @@ -34903,7 +34903,7 @@ define noundef nonnull align 8 dereferenceable(136) ptr @_ZN6open3d8geometry9Vox %.not112116 = icmp eq ptr %47, %48 br i1 %.not112116, label %.critedge, label %.lr.ph -49: ; preds = %161 +49: ; preds = %162 %50 = getelementptr inbounds nuw i8, ptr %.sroa.087.0117, i64 24 %.not112 = icmp eq ptr %50, %48 br i1 %.not112, label %.critedge, label %.lr.ph @@ -35032,142 +35032,142 @@ define noundef nonnull align 8 dereferenceable(136) ptr @_ZN6open3d8geometry9Vox %149 = extractelement <2 x double> %83, i64 1 %150 = fmul double %149, %142 %151 = extractelement <2 x double> %148, i64 1 - %152 = fadd double %150, %151 + %152 = fadd double %150, %152 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %153 = fdiv double %122, %92 - %154 = fdiv double %152, %92 - %155 = invoke { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88) %1, double noundef %153, double noundef %154) - to label %156 unwind label %159 - -156: ; preds = %.lr.ph - %157 = extractvalue { i8, double } %155, 0 - %158 = trunc nuw i8 %157 to i1 - %.not = xor i1 %158, true + %154 = fdiv double %122, %92 + %155 = fdiv double %153, %92 + %156 = invoke { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88) %1, double noundef %154, double noundef %155) + to label %157 unwind label %160 + +157: ; preds = %.lr.ph + %158 = extractvalue { i8, double } %156, 0 + %159 = trunc nuw i8 %158 to i1 + %.not = xor i1 %159, true %or.cond = and i1 %3, %.not - br i1 %or.cond, label %.thread109, label %161 + br i1 %or.cond, label %.thread109, label %162 -159: ; preds = %.lr.ph - %160 = landingpad { ptr, i32 } +160: ; preds = %.lr.ph + %161 = landingpad { ptr, i32 } cleanup %.not.i.i.i73 = icmp eq ptr %47, null - br i1 %.not.i.i.i73, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74, label %205 - -161: ; preds = %156 - %162 = extractvalue { i8, double } %155, 1 - %163 = fcmp ule double %162, 0.000000e+00 - %or.cond4 = select i1 %.not, i1 true, i1 %163 - %164 = fcmp ult double %92, %162 - %or.cond49 = select i1 %or.cond4, i1 true, i1 %164 + br i1 %.not.i.i.i73, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74, label %206 + +162: ; preds = %157 + %163 = extractvalue { i8, double } %156, 1 + %164 = fcmp ule double %163, 0.000000e+00 + %or.cond4 = select i1 %.not, i1 true, i1 %164 + %165 = fcmp ult double %92, %163 + %or.cond49 = select i1 %or.cond4, i1 true, i1 %165 br i1 %or.cond49, label %49, label %.thread109 .critedge: ; preds = %49, %45 - %165 = load i64, ptr %42, align 8, !tbaa !22 - %166 = getelementptr inbounds nuw i8, ptr %.sroa.091.0120, i64 64 - %167 = load i64, ptr %166, align 8, !tbaa !62 - %168 = urem i64 %167, %165 - %169 = load ptr, ptr %24, align 8, !tbaa !21 - %170 = getelementptr inbounds nuw ptr, ptr %169, i64 %168 - %171 = load ptr, ptr %170, align 8, !tbaa !64 - br label %172 - -172: ; preds = %172, %.critedge - %.0.i.i.i.i = phi ptr [ %171, %.critedge ], [ %173, %172 ] - %173 = load ptr, ptr %.0.i.i.i.i, align 8, !tbaa !18 - %.not.i.i.i.i = icmp eq ptr %173, %.sroa.091.0120 - br i1 %.not.i.i.i.i, label %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i, label %172, !llvm.loop !832 - -_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i: ; preds = %172 - %174 = icmp eq ptr %.0.i.i.i.i, %171 - %175 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 - %.not18.i.i.i.i = icmp eq ptr %175, null - br i1 %174, label %176, label %186 - -176: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i - br i1 %.not18.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %177 - -177: ; preds = %176 - %178 = getelementptr inbounds nuw i8, ptr %175, i64 64 - %179 = load i64, ptr %178, align 8, !tbaa !62 - %180 = urem i64 %179, %165 - %.not9.i.i.i.i.i = icmp eq i64 %180, %168 - br i1 %.not9.i.i.i.i.i, label %193, label %181 - -181: ; preds = %177 - %182 = getelementptr inbounds nuw ptr, ptr %169, i64 %180 - store ptr %171, ptr %182, align 8, !tbaa !64 + %166 = load i64, ptr %42, align 8, !tbaa !22 + %167 = getelementptr inbounds nuw i8, ptr %.sroa.091.0120, i64 64 + %168 = load i64, ptr %167, align 8, !tbaa !62 + %169 = urem i64 %168, %166 + %170 = load ptr, ptr %24, align 8, !tbaa !21 + %171 = getelementptr inbounds nuw ptr, ptr %170, i64 %169 + %172 = load ptr, ptr %171, align 8, !tbaa !64 + br label %173 + +173: ; preds = %173, %.critedge + %.0.i.i.i.i = phi ptr [ %172, %.critedge ], [ %174, %173 ] + %174 = load ptr, ptr %.0.i.i.i.i, align 8, !tbaa !18 + %.not.i.i.i.i = icmp eq ptr %174, %.sroa.091.0120 + br i1 %.not.i.i.i.i, label %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i, label %173, !llvm.loop !832 + +_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i: ; preds = %173 + %175 = icmp eq ptr %.0.i.i.i.i, %172 + %176 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 + %.not18.i.i.i.i = icmp eq ptr %176, null + br i1 %175, label %177, label %187 + +177: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i + br i1 %.not18.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %178 + +178: ; preds = %177 + %179 = getelementptr inbounds nuw i8, ptr %176, i64 64 + %180 = load i64, ptr %179, align 8, !tbaa !62 + %181 = urem i64 %180, %166 + %.not9.i.i.i.i.i = icmp eq i64 %181, %169 + br i1 %.not9.i.i.i.i.i, label %194, label %182 + +182: ; preds = %178 + %183 = getelementptr inbounds nuw ptr, ptr %170, i64 %181 + store ptr %172, ptr %183, align 8, !tbaa !64 br label %._crit_edge.i.i.i.i.i -._crit_edge.i.i.i.i.i: ; preds = %181, %176 - %183 = icmp eq ptr %25, %171 - br i1 %183, label %184, label %185 +._crit_edge.i.i.i.i.i: ; preds = %182, %177 + %184 = icmp eq ptr %25, %172 + br i1 %184, label %185, label %186 -184: ; preds = %._crit_edge.i.i.i.i.i - store ptr %175, ptr %25, align 8, !tbaa !7 - br label %185 +185: ; preds = %._crit_edge.i.i.i.i.i + store ptr %176, ptr %25, align 8, !tbaa !7 + br label %186 -185: ; preds = %184, %._crit_edge.i.i.i.i.i - store ptr null, ptr %170, align 8, !tbaa !64 - br label %193 +186: ; preds = %185, %._crit_edge.i.i.i.i.i + store ptr null, ptr %171, align 8, !tbaa !64 + br label %194 -186: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i - br i1 %.not18.i.i.i.i, label %193, label %187 +187: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i + br i1 %.not18.i.i.i.i, label %194, label %188 -187: ; preds = %186 - %188 = getelementptr inbounds nuw i8, ptr %175, i64 64 - %189 = load i64, ptr %188, align 8, !tbaa !62 - %190 = urem i64 %189, %165 - %.not17.i.i.i.i = icmp eq i64 %190, %168 - br i1 %.not17.i.i.i.i, label %193, label %191 +188: ; preds = %187 + %189 = getelementptr inbounds nuw i8, ptr %176, i64 64 + %190 = load i64, ptr %189, align 8, !tbaa !62 + %191 = urem i64 %190, %166 + %.not17.i.i.i.i = icmp eq i64 %191, %169 + br i1 %.not17.i.i.i.i, label %194, label %192 -191: ; preds = %187 - %192 = getelementptr inbounds nuw ptr, ptr %169, i64 %190 - store ptr %.0.i.i.i.i, ptr %192, align 8, !tbaa !64 - br label %193 +192: ; preds = %188 + %193 = getelementptr inbounds nuw ptr, ptr %170, i64 %191 + store ptr %.0.i.i.i.i, ptr %193, align 8, !tbaa !64 + br label %194 -193: ; preds = %191, %187, %186, %185, %177 - %194 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 - store ptr %194, ptr %.0.i.i.i.i, align 8, !tbaa !18 +194: ; preds = %192, %188, %187, %186, %178 + %195 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 + store ptr %195, ptr %.0.i.i.i.i, align 8, !tbaa !18 call void @_ZdlPvm(ptr noundef nonnull %.sroa.091.0120, i64 noundef 72) #37 - %195 = load i64, ptr %43, align 8, !tbaa !28 - %196 = add i64 %195, -1 - store i64 %196, ptr %43, align 8, !tbaa !28 - br label %198 - -.thread109: ; preds = %156, %161 - %197 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 - br label %198 - -198: ; preds = %.thread109, %193 - %.sroa.091.1 = phi ptr [ %194, %193 ], [ %197, %.thread109 ] - %199 = load ptr, ptr %9, align 8, !tbaa !691 - %.not.i.i.i = icmp eq ptr %199, null - br i1 %.not.i.i.i, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit, label %200 - -200: ; preds = %198 - %201 = load ptr, ptr %44, align 8, !tbaa !695 - %202 = ptrtoint ptr %201 to i64 - %203 = ptrtoint ptr %199 to i64 - %204 = sub i64 %202, %203 - call void @_ZdlPvm(ptr noundef nonnull %199, i64 noundef %204) #37 + %196 = load i64, ptr %43, align 8, !tbaa !28 + %197 = add i64 %196, -1 + store i64 %197, ptr %43, align 8, !tbaa !28 + br label %199 + +.thread109: ; preds = %157, %162 + %198 = load ptr, ptr %.sroa.091.0120, align 8, !tbaa !18 + br label %199 + +199: ; preds = %.thread109, %194 + %.sroa.091.1 = phi ptr [ %195, %194 ], [ %198, %.thread109 ] + %200 = load ptr, ptr %9, align 8, !tbaa !691 + %.not.i.i.i = icmp eq ptr %200, null + br i1 %.not.i.i.i, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit, label %201 + +201: ; preds = %199 + %202 = load ptr, ptr %44, align 8, !tbaa !695 + %203 = ptrtoint ptr %202 to i64 + %204 = ptrtoint ptr %200 to i64 + %205 = sub i64 %203, %204 + call void @_ZdlPvm(ptr noundef nonnull %200, i64 noundef %205) #37 br label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit -_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit: ; preds = %198, %200 +_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit: ; preds = %199, %201 call void @llvm.lifetime.end.p0(ptr nonnull %9) %.not111 = icmp eq ptr %.sroa.091.1, null br i1 %.not111, label %._crit_edge, label %45, !llvm.loop !833 -205: ; preds = %159 - %206 = load ptr, ptr %44, align 8, !tbaa !695 - %207 = ptrtoint ptr %206 to i64 - %208 = ptrtoint ptr %47 to i64 - %209 = sub i64 %207, %208 - call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %209) #37 +206: ; preds = %160 + %207 = load ptr, ptr %44, align 8, !tbaa !695 + %208 = ptrtoint ptr %207 to i64 + %209 = ptrtoint ptr %47 to i64 + %210 = sub i64 %208, %209 + call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %210) #37 br label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74 -_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74: ; preds = %159, %205 +_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit74: ; preds = %160, %206 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) - resume { ptr, i32 } %160 + resume { ptr, i32 } %161 } declare { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88), double noundef, double noundef) local_unnamed_addr #6 @@ -35253,9 +35253,9 @@ define noundef nonnull align 8 dereferenceable(136) ptr @_ZN6open3d8geometry9Vox %.not109110 = icmp eq ptr %47, %48 br i1 %.not109110, label %.critedge, label %.lr.ph -.lr.ph: ; preds = %45, %159 +.lr.ph: ; preds = %45, %160 %.028112 = phi i1 [ %spec.select, %159 ], [ true, %45 ] - %.sroa.084.0111 = phi ptr [ %162, %159 ], [ %47, %45 ] + %.sroa.084.0111 = phi ptr [ %163, %159 ], [ %47, %45 ] call void @llvm.lifetime.start.p0(ptr nonnull %7) store ptr %28, ptr %7, align 8, !tbaa !827 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.2.i.i.i.i.i.i.i.sroa.0) @@ -35380,91 +35380,91 @@ define noundef nonnull align 8 dereferenceable(136) ptr @_ZN6open3d8geometry9Vox %149 = extractelement <2 x double> %146, i64 1 %150 = fadd double %148, %149 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %151 = fdiv double %120, %90 - %152 = fdiv double %150, %90 - %153 = invoke { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88) %1, double noundef %151, double noundef %152) - to label %154 unwind label %157 - -154: ; preds = %.lr.ph - %155 = extractvalue { i8, double } %153, 0 - %156 = trunc nuw i8 %155 to i1 - %.not = xor i1 %156, true + %152 = fdiv double %120, %90 + %153 = fdiv double %150, %90 + %154 = invoke { i8, double } @_ZNK6open3d8geometry5Image12FloatValueAtEdd(ptr noundef nonnull align 8 dereferenceable(88) %1, double noundef %152, double noundef %153) + to label %155 unwind label %158 + +155: ; preds = %.lr.ph + %156 = extractvalue { i8, double } %154, 0 + %157 = trunc nuw i8 %156 to i1 + %.not = xor i1 %157, true %or.cond = and i1 %3, %.not - br i1 %or.cond, label %.thread106, label %159 + br i1 %or.cond, label %.thread106, label %160 -157: ; preds = %.lr.ph - %158 = landingpad { ptr, i32 } +158: ; preds = %.lr.ph + %159 = landingpad { ptr, i32 } cleanup %.not.i.i.i70 = icmp eq ptr %47, null - br i1 %.not.i.i.i70, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71, label %203 + br i1 %.not.i.i.i70, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71, label %204 -159: ; preds = %154 - %160 = extractvalue { i8, double } %153, 1 - %161 = fcmp ogt double %160, 0.000000e+00 - %or.cond4 = select i1 %156, i1 %161, i1 false +160: ; preds = %155 + %161 = extractvalue { i8, double } %154, 1 + %162 = fcmp ogt double %161, 0.000000e+00 + %or.cond4 = select i1 %157, i1 %162, i1 false %not.or.cond4 = xor i1 %or.cond4, true %spec.select = select i1 %not.or.cond4, i1 %.028112, i1 false - %162 = getelementptr inbounds nuw i8, ptr %.sroa.084.0111, i64 24 - %.not109 = icmp eq ptr %162, %48 + %163 = getelementptr inbounds nuw i8, ptr %.sroa.084.0111, i64 24 + %.not109 = icmp eq ptr %163, %48 %or.cond120 = select i1 %or.cond4, i1 true, i1 %.not109 br i1 %or.cond120, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %159 +._crit_edge: ; preds = %160 br i1 %spec.select, label %.critedge, label %.thread106 .critedge: ; preds = %45, %._crit_edge - %163 = load i64, ptr %42, align 8, !tbaa !22 - %164 = getelementptr inbounds nuw i8, ptr %.sroa.088.0116, i64 64 - %165 = load i64, ptr %164, align 8, !tbaa !62 - %166 = urem i64 %165, %163 - %167 = load ptr, ptr %24, align 8, !tbaa !21 - %168 = getelementptr inbounds nuw ptr, ptr %167, i64 %166 - %169 = load ptr, ptr %168, align 8, !tbaa !64 - br label %170 - -170: ; preds = %170, %.critedge - %.0.i.i.i.i = phi ptr [ %169, %.critedge ], [ %171, %170 ] - %171 = load ptr, ptr %.0.i.i.i.i, align 8, !tbaa !18 - %.not.i.i.i.i = icmp eq ptr %171, %.sroa.088.0116 - br i1 %.not.i.i.i.i, label %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i, label %170, !llvm.loop !832 - -_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i: ; preds = %170 - %172 = icmp eq ptr %.0.i.i.i.i, %169 - %173 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 - %.not18.i.i.i.i = icmp eq ptr %173, null - br i1 %172, label %174, label %184 - -174: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i - br i1 %.not18.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %175 - -175: ; preds = %174 - %176 = getelementptr inbounds nuw i8, ptr %173, i64 64 - %177 = load i64, ptr %176, align 8, !tbaa !62 - %178 = urem i64 %177, %163 - %.not9.i.i.i.i.i = icmp eq i64 %178, %166 - br i1 %.not9.i.i.i.i.i, label %191, label %179 - -179: ; preds = %175 + %164 = load i64, ptr %42, align 8, !tbaa !22 + %165 = getelementptr inbounds nuw i8, ptr %.sroa.088.0116, i64 64 + %166 = load i64, ptr %165, align 8, !tbaa !62 + %167 = urem i64 %166, %164 + %168 = load ptr, ptr %24, align 8, !tbaa !21 + %169 = getelementptr inbounds nuw ptr, ptr %168, i64 %167 + %170 = load ptr, ptr %169, align 8, !tbaa !64 + br label %171 + +171: ; preds = %171, %.critedge + %.0.i.i.i.i = phi ptr [ %170, %.critedge ], [ %172, %171 ] + %172 = load ptr, ptr %.0.i.i.i.i, align 8, !tbaa !18 + %.not.i.i.i.i = icmp eq ptr %172, %.sroa.088.0116 + br i1 %.not.i.i.i.i, label %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i, label %171, !llvm.loop !832 + +_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i: ; preds = %171 + %173 = icmp eq ptr %.0.i.i.i.i, %170 + %174 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 + %.not18.i.i.i.i = icmp eq ptr %174, null + br i1 %173, label %175, label %185 + +175: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i + br i1 %.not18.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %176 + +176: ; preds = %175 + %177 = getelementptr inbounds nuw i8, ptr %174, i64 64 + %178 = load i64, ptr %177, align 8, !tbaa !62 + %179 = urem i64 %178, %164 + %.not9.i.i.i.i.i = icmp eq i64 %179, %167 + br i1 %.not9.i.i.i.i.i, label %192, label %180 + +183: ; preds = %175 %180 = getelementptr inbounds nuw ptr, ptr %167, i64 %178 store ptr %169, ptr %180, align 8, !tbaa !64 br label %._crit_edge.i.i.i.i.i -._crit_edge.i.i.i.i.i: ; preds = %179, %174 +184: ; preds = %180, %174 %181 = icmp eq ptr %25, %169 br i1 %181, label %182, label %183 -182: ; preds = %._crit_edge.i.i.i.i.i +185: ; preds = %._crit_edge.i.i.i.i.i store ptr %173, ptr %25, align 8, !tbaa !7 br label %183 -183: ; preds = %182, %._crit_edge.i.i.i.i.i +186: ; preds = %185, %184 store ptr null, ptr %168, align 8, !tbaa !64 - br label %191 + br label %192 -184: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i - br i1 %.not18.i.i.i.i, label %191, label %185 +190: ; preds = %_ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geometry5VoxelEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS5_7utility10hash_eigenIS2_EENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE20_M_get_previous_nodeEmPNSA_10_Hash_nodeIS8_Lb1EEE.exit.i.i.i + br i1 %.not18.i.i.i.i, label %192, label %185 -185: ; preds = %184 +192: ; preds = %184 %186 = getelementptr inbounds nuw i8, ptr %173, i64 64 %187 = load i64, ptr %186, align 8, !tbaa !62 %188 = urem i64 %187, %163 @@ -35480,46 +35480,46 @@ _ZNSt10_HashtableIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIKS2_N6open3d8geo %192 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 store ptr %192, ptr %.0.i.i.i.i, align 8, !tbaa !18 call void @_ZdlPvm(ptr noundef nonnull %.sroa.088.0116, i64 noundef 72) #37 - %193 = load i64, ptr %43, align 8, !tbaa !28 - %194 = add i64 %193, -1 - store i64 %194, ptr %43, align 8, !tbaa !28 - br label %196 + %194 = load i64, ptr %43, align 8, !tbaa !28 + %195 = add i64 %194, -1 + store i64 %195, ptr %43, align 8, !tbaa !28 + br label %197 -.thread106: ; preds = %154, %._crit_edge - %195 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 - br label %196 +.thread106: ; preds = %155, %._crit_edge + %196 = load ptr, ptr %.sroa.088.0116, align 8, !tbaa !18 + br label %197 -196: ; preds = %.thread106, %191 - %.sroa.088.1 = phi ptr [ %192, %191 ], [ %195, %.thread106 ] - %197 = load ptr, ptr %9, align 8, !tbaa !691 - %.not.i.i.i = icmp eq ptr %197, null - br i1 %.not.i.i.i, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit, label %198 +197: ; preds = %.thread106, %192 + %.sroa.088.1 = phi ptr [ %193, %191 ], [ %196, %.thread106 ] + %198 = load ptr, ptr %9, align 8, !tbaa !691 + %.not.i.i.i = icmp eq ptr %198, null + br i1 %.not.i.i.i, label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit, label %199 -198: ; preds = %196 - %199 = load ptr, ptr %44, align 8, !tbaa !695 - %200 = ptrtoint ptr %199 to i64 - %201 = ptrtoint ptr %197 to i64 - %202 = sub i64 %200, %201 - call void @_ZdlPvm(ptr noundef nonnull %197, i64 noundef %202) #37 +199: ; preds = %197 + %200 = load ptr, ptr %44, align 8, !tbaa !695 + %201 = ptrtoint ptr %200 to i64 + %202 = ptrtoint ptr %198 to i64 + %203 = sub i64 %201, %202 + call void @_ZdlPvm(ptr noundef nonnull %198, i64 noundef %203) #37 br label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit -_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit: ; preds = %196, %198 +_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit: ; preds = %197, %199 call void @llvm.lifetime.end.p0(ptr nonnull %9) %.not108 = icmp eq ptr %.sroa.088.1, null br i1 %.not108, label %._crit_edge119, label %45, !llvm.loop !834 -203: ; preds = %157 - %204 = load ptr, ptr %44, align 8, !tbaa !695 - %205 = ptrtoint ptr %204 to i64 - %206 = ptrtoint ptr %47 to i64 - %207 = sub i64 %205, %206 - call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %207) #37 +204: ; preds = %158 + %205 = load ptr, ptr %44, align 8, !tbaa !695 + %206 = ptrtoint ptr %205 to i64 + %207 = ptrtoint ptr %47 to i64 + %208 = sub i64 %206, %207 + call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %208) #37 br label %_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71 -_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71: ; preds = %157, %203 +_ZNSt6vectorIN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEESaIS2_EED2Ev.exit71: ; preds = %158, %204 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) - resume { ptr, i32 } %158 + resume { ptr, i32 } %159 } ; Function Attrs: mustprogress ssp uwtable diff --git a/bench/opencv/optimized/gfluidbackend.ll b/bench/opencv/optimized/gfluidbackend.ll index 5a37823d055..f565793d2d4 100644 --- a/bench/opencv/optimized/gfluidbackend.ll +++ b/bench/opencv/optimized/gfluidbackend.ll @@ -2398,11 +2398,11 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i: ; preds = %443 _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i %.pre = load ptr, ptr %436, align 8, !tbaa !123 - %.pre232 = load ptr, ptr %437, align 8, !tbaa !123 + %.pre233 = load ptr, ptr %437, align 8, !tbaa !123 br label %.noexc122 .noexc122: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge, %435 - %446 = phi ptr [ %438, %435 ], [ %.pre232, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge ] + %446 = phi ptr [ %438, %435 ], [ %.pre233, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge ] %447 = phi ptr [ %439, %435 ], [ %.pre, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge ] %448 = phi ptr [ null, %435 ], [ %445, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc122_crit_edge ] %.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %446, %447 @@ -4345,9 +4345,9 @@ _ZNK3ade4util5Range13IterableRangeINS1_8ZipRangeIJNS1_9IotaRangeImLi1EEERSt6vect %156 = load ptr, ptr %154, align 8, !tbaa !340 %157 = load ptr, ptr %155, align 8, !tbaa !340 %158 = icmp eq ptr %156, %157 - br i1 %158, label %.loopexit789, label %.lr.ph1221 + br i1 %158, label %.loopexit789, label %.lr.ph1222 -.lr.ph1221: ; preds = %_ZNK3ade4util5Range13IterableRangeINS1_8ZipRangeIJNS1_9IotaRangeImLi1EEERSt6vectorINS_6HandleINS_4NodeEEESaIS9_EEEEEE8iteratorneERKSF_.exit.preheader +.lr.ph1222: ; preds = %_ZNK3ade4util5Range13IterableRangeINS1_8ZipRangeIJNS1_9IotaRangeImLi1EEERSt6vectorINS_6HandleINS_4NodeEEESaIS9_EEEEEE8iteratorneERKSF_.exit.preheader %159 = getelementptr inbounds nuw i8, ptr %40, i64 56 %160 = getelementptr inbounds nuw i8, ptr %40, i64 72 %161 = getelementptr inbounds nuw i8, ptr %40, i64 64 @@ -4571,19 +4571,19 @@ _ZNKSt10_HashtableIN3ade7details10MetadataIdESt4pairIKS2_St10unique_ptrINS1_8Met %272 = load i64, ptr %149, align 8, !tbaa !346 %.not.not.i.i.i = icmp eq i64 %272, 0 %273 = load i32, ptr %271, align 4 - br i1 %.not.not.i.i.i, label %.preheader1527, label %278 + br i1 %.not.not.i.i.i, label %.preheader1528, label %278 -.preheader1527: ; preds = %.loopexit801, %274 +.preheader1528: ; preds = %.loopexit801, %274 %.sroa.06.0.in.i.i.i = phi ptr [ %.sroa.06.0.i.i.i, %274 ], [ %151, %.loopexit801 ] %.sroa.06.0.i.i.i = load ptr, ptr %.sroa.06.0.in.i.i.i, align 8, !tbaa !52 %.not.i.i.i = icmp eq ptr %.sroa.06.0.i.i.i, null br i1 %.not.i.i.i, label %.thread, label %274 -274: ; preds = %.preheader1527 +274: ; preds = %.preheader1528 %275 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i.i.i, i64 8 %276 = load i32, ptr %275, align 4, !tbaa !23 %277 = icmp eq i32 %273, %276 - br i1 %277, label %.loopexit793, label %.preheader1527, !llvm.loop !347 + br i1 %277, label %.loopexit793, label %.preheader1528, !llvm.loop !347 278: ; preds = %.loopexit801 %279 = sext i32 %273 to i64 @@ -4697,11 +4697,11 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i: ; preds = %315 _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i %.pre = load ptr, ptr %308, align 8, !tbaa !123 - %.pre1322 = load ptr, ptr %309, align 8, !tbaa !123 + %.pre1323 = load ptr, ptr %309, align 8, !tbaa !123 br label %.noexc187 .noexc187: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge, %307 - %318 = phi ptr [ %310, %307 ], [ %.pre1322, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ] + %318 = phi ptr [ %310, %307 ], [ %.pre1323, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ] %319 = phi ptr [ %311, %307 ], [ %.pre, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ] %320 = phi ptr [ null, %307 ], [ %317, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ] %.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %318, %319 @@ -4716,19 +4716,19 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge 325: ; preds = %321, %.noexc187 %326 = load i32, ptr %271, align 4 - br i1 %.not.not.i.i.i, label %.preheader1524, label %331 + br i1 %.not.not.i.i.i, label %.preheader1525, label %331 -.preheader1524: ; preds = %325, %327 +.preheader1525: ; preds = %325, %327 %.sroa.06.0.in.i.i.i196 = phi ptr [ %.sroa.06.0.i.i.i197, %327 ], [ %151, %325 ] %.sroa.06.0.i.i.i197 = load ptr, ptr %.sroa.06.0.in.i.i.i196, align 8, !tbaa !52 %.not.i.i.i198 = icmp eq ptr %.sroa.06.0.i.i.i197, null br i1 %.not.i.i.i198, label %.loopexit.i.i, label %327 -327: ; preds = %.preheader1524 +327: ; preds = %.preheader1525 %328 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i.i.i197, i64 8 %329 = load i32, ptr %328, align 4, !tbaa !23 %330 = icmp eq i32 %326, %329 - br i1 %330, label %.loopexit790, label %.preheader1524, !llvm.loop !357 + br i1 %330, label %.loopexit790, label %.preheader1525, !llvm.loop !357 331: ; preds = %325 %332 = sext i32 %326 to i64 @@ -4768,7 +4768,7 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i..noexc187_crit_edge ..loopexit_crit_edge21.i.i.i.i.i194: ; preds = %346 br label %.loopexit.i.i, !llvm.loop !350 -.loopexit.i.i: ; preds = %331, %.lr.ph.i.i.i.i.i190, %.preheader1524, %..loopexit_crit_edge21.i.i.i.i.i194 +.loopexit.i.i: ; preds = %331, %.lr.ph.i.i.i.i.i190, %.preheader1525, %..loopexit_crit_edge21.i.i.i.i.i194 invoke void @_ZSt20__throw_out_of_rangePKc(ptr noundef nonnull @.str.115) #36 to label %.noexc199 unwind label %373 @@ -5070,7 +5070,7 @@ _ZNSt5stackIN3ade6HandleINS0_4NodeEEESt5dequeIS3_SaIS3_EEE4pushERKS3_.exit: ; pr call void @_ZdlPv(ptr noundef nonnull %320) #35 br label %.body -.thread: ; preds = %.lr.ph.i.i.i.i.i, %.preheader1527, %449, %_ZNSt5stackIN3ade6HandleINS0_4NodeEEESt5dequeIS3_SaIS3_EEE4pushERKS3_.exit, %..loopexit_crit_edge21.i.i.i.i.i, %278, %.loopexit793 +.thread: ; preds = %.lr.ph.i.i.i.i.i, %.preheader1528, %449, %_ZNSt5stackIN3ade6HandleINS0_4NodeEEESt5dequeIS3_SaIS3_EEE4pushERKS3_.exit, %..loopexit_crit_edge21.i.i.i.i.i, %278, %.loopexit793 %454 = add nuw i64 %.sroa.10.01216, 1 %455 = getelementptr inbounds nuw i8, ptr %.sroa.0.01217, i64 16 %456 = icmp eq i64 %454, -1 @@ -5078,7 +5078,7 @@ _ZNSt5stackIN3ade6HandleINS0_4NodeEEESt5dequeIS3_SaIS3_EEE4pushERKS3_.exit: ; pr %narrow.i.i.i.i.i.i.i = select i1 %456, i1 true, i1 %457 br i1 %narrow.i.i.i.i.i.i.i, label %_ZNK3ade4util5Range13IterableRangeINS1_8ZipRangeIJNS1_9IotaRangeImLi1EEERSt6vectorINS_6HandleINS_4NodeEEESaIS9_EEEEEE8iteratorneERKSF_.exit.preheader, label %192 -458: ; preds = %.lr.ph1221, %_ZN3ade6HandleINS_4NodeEED2Ev.exit634 +458: ; preds = %.lr.ph1222, %_ZN3ade6HandleINS_4NodeEED2Ev.exit634 %459 = phi ptr [ %156, %.lr.ph1221 ], [ %1819, %_ZN3ade6HandleINS_4NodeEED2Ev.exit634 ] %460 = load ptr, ptr %159, align 8, !tbaa !366, !noalias !367 %461 = icmp eq ptr %459, %460 @@ -5809,9 +5809,9 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i306: ; preds = %765 %772 = load ptr, ptr %58, align 8, !tbaa !102 %773 = load ptr, ptr %171, align 8, !tbaa !102 %774 = icmp eq ptr %772, %773 - br i1 %774, label %._crit_edge, label %.lr.ph1218 + br i1 %774, label %._crit_edge, label %.lr.ph1219 -.lr.ph1218: ; preds = %771 +.lr.ph1219: ; preds = %771 %.sroa.5679.0.copyload = load ptr, ptr %.sroa.5679.0..sroa_idx, align 8 %.sroa.0678.0.copyload = load ptr, ptr %57, align 8 %775 = icmp eq ptr %.sroa.0678.0.copyload, %.sroa.5679.0.copyload @@ -5819,7 +5819,7 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i306: ; preds = %765 %777 = getelementptr inbounds nuw i8, ptr %732, i64 32 br label %778 -778: ; preds = %.lr.ph1218, %_ZN3ade6HandleINS_4EdgeEED2Ev.exit +778: ; preds = %.lr.ph1219, %_ZN3ade6HandleINS_4EdgeEED2Ev.exit %779 = phi ptr [ %772, %.lr.ph1218 ], [ %1759, %_ZN3ade6HandleINS_4EdgeEED2Ev.exit ] %780 = load i8, ptr %170, align 8, !tbaa !395, !range !103, !noundef !53 %781 = trunc nuw i8 %780 to i1 @@ -6468,19 +6468,19 @@ _ZNKSt10_HashtableIN3ade7details10MetadataIdESt4pairIKS2_St10unique_ptrINS1_8Met %1044 = load i64, ptr %180, align 8, !tbaa !346 %.not.not.i.i.i410 = icmp eq i64 %1044, 0 %1045 = load i32, ptr %776, align 4 - br i1 %.not.not.i.i.i410, label %.preheader1519, label %1050 + br i1 %.not.not.i.i.i410, label %.preheader1520, label %1050 -.preheader1519: ; preds = %.loopexit762, %1046 +.preheader1520: ; preds = %.loopexit762, %1046 %.sroa.06.0.in.i.i.i419 = phi ptr [ %.sroa.06.0.i.i.i420, %1046 ], [ %182, %.loopexit762 ] %.sroa.06.0.i.i.i420 = load ptr, ptr %.sroa.06.0.in.i.i.i419, align 8, !tbaa !52 %.not.i.i.i421 = icmp eq ptr %.sroa.06.0.i.i.i420, null br i1 %.not.i.i.i421, label %.loopexit.i.i417, label %1046 -1046: ; preds = %.preheader1519 +1046: ; preds = %.preheader1520 %1047 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i.i.i420, i64 8 %1048 = load i32, ptr %1047, align 4, !tbaa !23 %1049 = icmp eq i32 %1045, %1048 - br i1 %1049, label %.loopexit755, label %.preheader1519, !llvm.loop !357 + br i1 %1049, label %.loopexit755, label %.preheader1520, !llvm.loop !357 1050: ; preds = %.loopexit762 %1051 = sext i32 %1045 to i64 @@ -6520,7 +6520,7 @@ _ZNKSt10_HashtableIN3ade7details10MetadataIdESt4pairIKS2_St10unique_ptrINS1_8Met ..loopexit_crit_edge21.i.i.i.i.i416: ; preds = %1065 br label %.loopexit.i.i417, !llvm.loop !350 -.loopexit.i.i417: ; preds = %1050, %.lr.ph.i.i.i.i.i412, %.preheader1519, %..loopexit_crit_edge21.i.i.i.i.i416 +.loopexit.i.i417: ; preds = %1050, %.lr.ph.i.i.i.i.i412, %.preheader1520, %..loopexit_crit_edge21.i.i.i.i.i416 invoke void @_ZSt20__throw_out_of_rangePKc(ptr noundef nonnull @.str.115) #36 to label %.noexc422 unwind label %1158 diff --git a/bench/openvdb/optimized/Prune.ll b/bench/openvdb/optimized/Prune.ll index 86eb473660b..4b134afb0ba 100644 --- a/bench/openvdb/optimized/Prune.ll +++ b/bench/openvdb/optimized/Prune.ll @@ -40400,35 +40400,35 @@ for.end: ; preds = %for.inc.i.i.i, %_ZN ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZSt13__introselectIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEElN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_T0_T1_(ptr noundef %__first, ptr noundef %__nth, ptr noundef %__last, i64 noundef %__depth_limit) local_unnamed_addr #5 comdat { entry: - %sub.ptr.lhs.cast23 = ptrtoint ptr %__last to i64 - %sub.ptr.rhs.cast24 = ptrtoint ptr %__first to i64 - %sub.ptr.sub25 = sub i64 %sub.ptr.lhs.cast23, %sub.ptr.rhs.cast24 - %cmp26 = icmp sgt i64 %sub.ptr.sub25, 24 - br i1 %cmp26, label %while.body, label %while.end + %sub.ptr.lhs.cast22 = ptrtoint ptr %__last to i64 + %sub.ptr.rhs.cast23 = ptrtoint ptr %__first to i64 + %sub.ptr.sub24 = sub i64 %sub.ptr.lhs.cast22, %sub.ptr.rhs.cast23 + %cmp25 = icmp sgt i64 %sub.ptr.sub24, 24 + br i1 %cmp25, label %while.body, label %while.end while.body: ; preds = %entry, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit - %sub.ptr.sub30 = phi i64 [ %sub.ptr.sub, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %sub.ptr.sub25, %entry ] - %__first.addr.029 = phi ptr [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__first, %entry ] - %__last.addr.028 = phi ptr [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__last, %entry ] - %__depth_limit.addr.027 = phi i64 [ %dec, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__depth_limit, %entry ] - %cmp1 = icmp eq i64 %__depth_limit.addr.027, 0 + %sub.ptr.sub29 = phi i64 [ %sub.ptr.sub, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %sub.ptr.sub24, %entry ] + %__first.addr.028 = phi ptr [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__first, %entry ] + %__last.addr.027 = phi ptr [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__last, %entry ] + %__depth_limit.addr.026 = phi i64 [ %dec, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__depth_limit, %entry ] + %cmp1 = icmp eq i64 %__depth_limit.addr.026, 0 br i1 %cmp1, label %if.then, label %if.end if.then: ; preds = %while.body %add.ptr = getelementptr inbounds nuw i8, ptr %__nth, i64 8 - tail call void @_ZSt13__heap_selectIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_T0_(ptr noundef %__first.addr.029, ptr noundef nonnull %add.ptr, ptr noundef %__last.addr.028) - %__tmp.sroa.0.0.copyload.i.i = load ptr, ptr %__first.addr.029, align 8 + tail call void @_ZSt13__heap_selectIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_T0_(ptr noundef %__first.addr.028, ptr noundef nonnull %add.ptr, ptr noundef %__last.addr.027) + %__tmp.sroa.0.0.copyload.i.i = load ptr, ptr %__first.addr.028, align 8 %0 = load i64, ptr %__nth, align 8 - store i64 %0, ptr %__first.addr.029, align 8 + store i64 %0, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i, ptr %__nth, align 8 br label %return if.end: ; preds = %while.body - %dec = add nsw i64 %__depth_limit.addr.027, -1 - %div.i1819 = lshr i64 %sub.ptr.sub30, 4 - %add.ptr.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.751", ptr %__first.addr.029, i64 %div.i1819 - %add.ptr1.i = getelementptr inbounds nuw i8, ptr %__first.addr.029, i64 8 - %add.ptr2.i = getelementptr inbounds i8, ptr %__last.addr.028, i64 -8 + %dec = add nsw i64 %__depth_limit.addr.026, -1 + %div.i1718 = lshr i64 %sub.ptr.sub29, 4 + %add.ptr.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.751", ptr %__first.addr.028, i64 %div.i1718 + %add.ptr1.i = getelementptr inbounds nuw i8, ptr %__first.addr.028, i64 8 + %add.ptr2.i = getelementptr inbounds i8, ptr %__last.addr.027, i64 -8 %1 = load float, ptr %add.ptr1.i, align 4 %2 = load float, ptr %add.ptr.i, align 4 %cmp.i.i.i.i = fcmp olt float %1, %2 @@ -40440,26 +40440,26 @@ if.then.i.i: ; preds = %if.end br i1 %cmp.i.i19.i.i, label %if.then2.i.i, label %if.else.i.i if.then2.i.i: ; preds = %if.then.i.i - %__tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %__first.addr.029, align 8 + %__tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %__first.addr.028, align 8 %4 = load i64, ptr %add.ptr.i, align 8 - store i64 %4, ptr %__first.addr.029, align 8 + store i64 %4, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i.i.i, ptr %add.ptr.i, align 8 br label %while.body.i.i.preheader if.else.i.i: ; preds = %if.then.i.i %cmp.i.i20.i.i = fcmp olt float %1, %3 - %__tmp.sroa.0.0.copyload.i.i21.i.i = load ptr, ptr %__first.addr.029, align 8 + %__tmp.sroa.0.0.copyload.i.i21.i.i = load ptr, ptr %__first.addr.028, align 8 br i1 %cmp.i.i20.i.i, label %if.then4.i.i, label %if.else5.i.i if.then4.i.i: ; preds = %if.else.i.i %5 = load i64, ptr %add.ptr2.i, align 8 - store i64 %5, ptr %__first.addr.029, align 8 + store i64 %5, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i21.i.i, ptr %add.ptr2.i, align 8 br label %while.body.i.i.preheader if.else5.i.i: ; preds = %if.else.i.i %6 = load i64, ptr %add.ptr1.i, align 8 - store i64 %6, ptr %__first.addr.029, align 8 + store i64 %6, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i21.i.i, ptr %add.ptr1.i, align 8 br label %while.body.i.i.preheader @@ -40468,26 +40468,26 @@ if.else7.i.i: ; preds = %if.end br i1 %cmp.i.i23.i.i, label %if.then9.i.i, label %if.else10.i.i if.then9.i.i: ; preds = %if.else7.i.i - %__tmp.sroa.0.0.copyload.i.i24.i.i = load ptr, ptr %__first.addr.029, align 8 + %__tmp.sroa.0.0.copyload.i.i24.i.i = load ptr, ptr %__first.addr.028, align 8 %7 = load i64, ptr %add.ptr1.i, align 8 - store i64 %7, ptr %__first.addr.029, align 8 + store i64 %7, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i24.i.i, ptr %add.ptr1.i, align 8 br label %while.body.i.i.preheader if.else10.i.i: ; preds = %if.else7.i.i %cmp.i.i25.i.i = fcmp olt float %2, %3 - %__tmp.sroa.0.0.copyload.i.i26.i.i = load ptr, ptr %__first.addr.029, align 8 + %__tmp.sroa.0.0.copyload.i.i26.i.i = load ptr, ptr %__first.addr.028, align 8 br i1 %cmp.i.i25.i.i, label %if.then12.i.i, label %if.else13.i.i if.then12.i.i: ; preds = %if.else10.i.i %8 = load i64, ptr %add.ptr2.i, align 8 - store i64 %8, ptr %__first.addr.029, align 8 + store i64 %8, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i26.i.i, ptr %add.ptr2.i, align 8 br label %while.body.i.i.preheader if.else13.i.i: ; preds = %if.else10.i.i %9 = load i64, ptr %add.ptr.i, align 8 - store i64 %9, ptr %__first.addr.029, align 8 + store i64 %9, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i26.i.i, ptr %add.ptr.i, align 8 br label %while.body.i.i.preheader @@ -40495,9 +40495,9 @@ while.body.i.i.preheader: ; preds = %if.else13.i.i, %if. br label %while.body.i.i while.body.i.i: ; preds = %while.body.i.i.preheader, %if.end.i.i - %__last.addr.0.i.i = phi ptr [ %__last.addr.1.i.i, %if.end.i.i ], [ %__last.addr.028, %while.body.i.i.preheader ] + %__last.addr.0.i.i = phi ptr [ %__last.addr.1.i.i, %if.end.i.i ], [ %__last.addr.027, %while.body.i.i.preheader ] %__first.addr.0.i.i = phi ptr [ %incdec.ptr.i.i, %if.end.i.i ], [ %add.ptr1.i, %while.body.i.i.preheader ] - %10 = load float, ptr %__first.addr.029, align 4 + %10 = load float, ptr %__first.addr.028, align 4 br label %while.cond1.i.i while.cond1.i.i: ; preds = %while.cond1.i.i, %while.body.i.i @@ -40527,8 +40527,8 @@ if.end.i.i: ; preds = %while.end8.i.i _ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit: ; preds = %while.end8.i.i %cmp3.not = icmp ugt ptr %__first.addr.1.i.i, %__nth - %call.__last.addr.0 = select i1 %cmp3.not, ptr %__first.addr.1.i.i, ptr %__last.addr.028 - %__first.addr.0.call = select i1 %cmp3.not, ptr %__first.addr.029, ptr %__first.addr.1.i.i + %call.__last.addr.0 = select i1 %cmp3.not, ptr %__first.addr.1.i.i, ptr %__last.addr.027 + %__first.addr.0.call = select i1 %cmp3.not, ptr %__first.addr.028, ptr %__first.addr.1.i.i %sub.ptr.lhs.cast = ptrtoint ptr %call.__last.addr.0 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %__first.addr.0.call to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -40538,7 +40538,7 @@ _ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNode while.end: ; preds = %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit, %entry %__last.addr.0.lcssa = phi ptr [ %__last, %entry ], [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ] %__first.addr.0.lcssa = phi ptr [ %__first, %entry ], [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ] - %sub.ptr.rhs.cast.lcssa = phi i64 [ %sub.ptr.rhs.cast24, %entry ], [ %sub.ptr.rhs.cast, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ] + %sub.ptr.rhs.cast.lcssa = phi i64 [ %sub.ptr.rhs.cast23, %entry ], [ %sub.ptr.rhs.cast, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEESM_SM_SM_T0_.exit ] %cmp.i = icmp eq ptr %__first.addr.0.lcssa, %__last.addr.0.lcssa %__i.013.i = getelementptr inbounds nuw i8, ptr %__first.addr.0.lcssa, i64 8 %cmp1.not14.i = icmp eq ptr %__i.013.i, %__last.addr.0.lcssa @@ -40569,21 +40569,21 @@ if.else.i: ; preds = %for.body.i %__last.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %__first.pn15.i, i64 12 %16 = load i32, ptr %__last.sroa_idx.i.i, align 4 %17 = load float, ptr %__first.pn15.i, align 4 - %cmp.i.i11.i.i15 = fcmp ogt float %17, %14 - br i1 %cmp.i.i11.i.i15, label %while.body.i.i16, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i - -while.body.i.i16: ; preds = %if.else.i, %while.body.i.i16 - %__next.013.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i16 ], [ %__first.pn15.i, %if.else.i ] - %__last.addr.012.i.i = phi ptr [ %__next.013.i.i, %while.body.i.i16 ], [ %__i.016.i, %if.else.i ] - %18 = load i64, ptr %__next.013.i.i, align 8 - store i64 %18, ptr %__last.addr.012.i.i, align 8 - %__next.0.i.i = getelementptr inbounds i8, ptr %__next.013.i.i, i64 -8 + %cmp.i.i10.i.i = fcmp ogt float %17, %14 + br i1 %cmp.i.i10.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i + +while.body.i.i15: ; preds = %if.else.i, %while.body.i.i15 + %__next.012.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i16 ], [ %__first.pn15.i, %if.else.i ] + %__last.addr.011.i.i = phi ptr [ %__next.012.i.i, %while.body.i.i16 ], [ %__i.016.i, %if.else.i ] + %18 = load i64, ptr %__next.012.i.i, align 8 + store i64 %18, ptr %__last.addr.011.i.i, align 8 + %__next.0.i.i = getelementptr inbounds i8, ptr %__next.012.i.i, i64 -8 %19 = load float, ptr %__next.0.i.i, align 8 - %cmp.i.i.i.i17 = fcmp ogt float %19, %14 - br i1 %cmp.i.i.i.i17, label %while.body.i.i16, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !522 + %cmp.i.i.i.i16 = fcmp ogt float %19, %14 + br i1 %cmp.i.i.i.i16, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !522 -_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i16, %if.else.i - %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.013.i.i, %while.body.i.i16 ] +_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_8LeafNodeIfLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i15, %if.else.i + %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.012.i.i, %while.body.i.i16 ] store float %14, ptr %__last.addr.0.lcssa.i.i, align 8 %__last.addr.0.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %__last.addr.0.lcssa.i.i, i64 4 store i32 %16, ptr %__last.addr.0.sroa_idx.i.i, align 4 @@ -41511,35 +41511,35 @@ _ZNSt3setIN7openvdb5v11_04math5CoordESt4lessIS3_ESaIS3_EED2Ev.exit: ; preds = %f ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZSt13__introselectIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEElN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_T0_T1_(ptr noundef %__first, ptr noundef %__nth, ptr noundef %__last, i64 noundef %__depth_limit) local_unnamed_addr #5 comdat { entry: - %sub.ptr.lhs.cast23 = ptrtoint ptr %__last to i64 - %sub.ptr.rhs.cast24 = ptrtoint ptr %__first to i64 - %sub.ptr.sub25 = sub i64 %sub.ptr.lhs.cast23, %sub.ptr.rhs.cast24 - %cmp26 = icmp sgt i64 %sub.ptr.sub25, 24 - br i1 %cmp26, label %while.body, label %while.end + %sub.ptr.lhs.cast22 = ptrtoint ptr %__last to i64 + %sub.ptr.rhs.cast23 = ptrtoint ptr %__first to i64 + %sub.ptr.sub24 = sub i64 %sub.ptr.lhs.cast22, %sub.ptr.rhs.cast23 + %cmp25 = icmp sgt i64 %sub.ptr.sub24, 24 + br i1 %cmp25, label %while.body, label %while.end while.body: ; preds = %entry, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit - %sub.ptr.sub30 = phi i64 [ %sub.ptr.sub, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %sub.ptr.sub25, %entry ] - %__first.addr.029 = phi ptr [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__first, %entry ] - %__last.addr.028 = phi ptr [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__last, %entry ] - %__depth_limit.addr.027 = phi i64 [ %dec, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__depth_limit, %entry ] - %cmp1 = icmp eq i64 %__depth_limit.addr.027, 0 + %sub.ptr.sub29 = phi i64 [ %sub.ptr.sub, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %sub.ptr.sub24, %entry ] + %__first.addr.028 = phi ptr [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__first, %entry ] + %__last.addr.027 = phi ptr [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__last, %entry ] + %__depth_limit.addr.026 = phi i64 [ %dec, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ], [ %__depth_limit, %entry ] + %cmp1 = icmp eq i64 %__depth_limit.addr.026, 0 br i1 %cmp1, label %if.then, label %if.end if.then: ; preds = %while.body %add.ptr = getelementptr inbounds nuw i8, ptr %__nth, i64 8 - tail call void @_ZSt13__heap_selectIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_T0_(ptr noundef %__first.addr.029, ptr noundef nonnull %add.ptr, ptr noundef %__last.addr.028) - %__tmp.sroa.0.0.copyload.i.i = load ptr, ptr %__first.addr.029, align 8 + tail call void @_ZSt13__heap_selectIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_T0_(ptr noundef %__first.addr.028, ptr noundef nonnull %add.ptr, ptr noundef %__last.addr.027) + %__tmp.sroa.0.0.copyload.i.i = load ptr, ptr %__first.addr.028, align 8 %0 = load i64, ptr %__nth, align 8 - store i64 %0, ptr %__first.addr.029, align 8 + store i64 %0, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i, ptr %__nth, align 8 br label %return if.end: ; preds = %while.body - %dec = add nsw i64 %__depth_limit.addr.027, -1 - %div.i1819 = lshr i64 %sub.ptr.sub30, 4 - %add.ptr.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.740", ptr %__first.addr.029, i64 %div.i1819 - %add.ptr1.i = getelementptr inbounds nuw i8, ptr %__first.addr.029, i64 8 - %add.ptr2.i = getelementptr inbounds i8, ptr %__last.addr.028, i64 -8 + %dec = add nsw i64 %__depth_limit.addr.026, -1 + %div.i1718 = lshr i64 %sub.ptr.sub29, 4 + %add.ptr.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.740", ptr %__first.addr.028, i64 %div.i1718 + %add.ptr1.i = getelementptr inbounds nuw i8, ptr %__first.addr.028, i64 8 + %add.ptr2.i = getelementptr inbounds i8, ptr %__last.addr.027, i64 -8 %1 = load float, ptr %add.ptr1.i, align 4 %2 = load float, ptr %add.ptr.i, align 4 %cmp.i.i.i.i = fcmp olt float %1, %2 @@ -41551,26 +41551,26 @@ if.then.i.i: ; preds = %if.end br i1 %cmp.i.i19.i.i, label %if.then2.i.i, label %if.else.i.i if.then2.i.i: ; preds = %if.then.i.i - %__tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %__first.addr.029, align 8 + %__tmp.sroa.0.0.copyload.i.i.i.i = load ptr, ptr %__first.addr.028, align 8 %4 = load i64, ptr %add.ptr.i, align 8 - store i64 %4, ptr %__first.addr.029, align 8 + store i64 %4, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i.i.i, ptr %add.ptr.i, align 8 br label %while.body.i.i.preheader if.else.i.i: ; preds = %if.then.i.i %cmp.i.i20.i.i = fcmp olt float %1, %3 - %__tmp.sroa.0.0.copyload.i.i21.i.i = load ptr, ptr %__first.addr.029, align 8 + %__tmp.sroa.0.0.copyload.i.i21.i.i = load ptr, ptr %__first.addr.028, align 8 br i1 %cmp.i.i20.i.i, label %if.then4.i.i, label %if.else5.i.i if.then4.i.i: ; preds = %if.else.i.i %5 = load i64, ptr %add.ptr2.i, align 8 - store i64 %5, ptr %__first.addr.029, align 8 + store i64 %5, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i21.i.i, ptr %add.ptr2.i, align 8 br label %while.body.i.i.preheader if.else5.i.i: ; preds = %if.else.i.i %6 = load i64, ptr %add.ptr1.i, align 8 - store i64 %6, ptr %__first.addr.029, align 8 + store i64 %6, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i21.i.i, ptr %add.ptr1.i, align 8 br label %while.body.i.i.preheader @@ -41579,26 +41579,26 @@ if.else7.i.i: ; preds = %if.end br i1 %cmp.i.i23.i.i, label %if.then9.i.i, label %if.else10.i.i if.then9.i.i: ; preds = %if.else7.i.i - %__tmp.sroa.0.0.copyload.i.i24.i.i = load ptr, ptr %__first.addr.029, align 8 + %__tmp.sroa.0.0.copyload.i.i24.i.i = load ptr, ptr %__first.addr.028, align 8 %7 = load i64, ptr %add.ptr1.i, align 8 - store i64 %7, ptr %__first.addr.029, align 8 + store i64 %7, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i24.i.i, ptr %add.ptr1.i, align 8 br label %while.body.i.i.preheader if.else10.i.i: ; preds = %if.else7.i.i %cmp.i.i25.i.i = fcmp olt float %2, %3 - %__tmp.sroa.0.0.copyload.i.i26.i.i = load ptr, ptr %__first.addr.029, align 8 + %__tmp.sroa.0.0.copyload.i.i26.i.i = load ptr, ptr %__first.addr.028, align 8 br i1 %cmp.i.i25.i.i, label %if.then12.i.i, label %if.else13.i.i if.then12.i.i: ; preds = %if.else10.i.i %8 = load i64, ptr %add.ptr2.i, align 8 - store i64 %8, ptr %__first.addr.029, align 8 + store i64 %8, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i26.i.i, ptr %add.ptr2.i, align 8 br label %while.body.i.i.preheader if.else13.i.i: ; preds = %if.else10.i.i %9 = load i64, ptr %add.ptr.i, align 8 - store i64 %9, ptr %__first.addr.029, align 8 + store i64 %9, ptr %__first.addr.028, align 8 store ptr %__tmp.sroa.0.0.copyload.i.i26.i.i, ptr %add.ptr.i, align 8 br label %while.body.i.i.preheader @@ -41606,9 +41606,9 @@ while.body.i.i.preheader: ; preds = %if.else13.i.i, %if. br label %while.body.i.i while.body.i.i: ; preds = %while.body.i.i.preheader, %if.end.i.i - %__last.addr.0.i.i = phi ptr [ %__last.addr.1.i.i, %if.end.i.i ], [ %__last.addr.028, %while.body.i.i.preheader ] + %__last.addr.0.i.i = phi ptr [ %__last.addr.1.i.i, %if.end.i.i ], [ %__last.addr.027, %while.body.i.i.preheader ] %__first.addr.0.i.i = phi ptr [ %incdec.ptr.i.i, %if.end.i.i ], [ %add.ptr1.i, %while.body.i.i.preheader ] - %10 = load float, ptr %__first.addr.029, align 4 + %10 = load float, ptr %__first.addr.028, align 4 br label %while.cond1.i.i while.cond1.i.i: ; preds = %while.cond1.i.i, %while.body.i.i @@ -41638,8 +41638,8 @@ if.end.i.i: ; preds = %while.end8.i.i _ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit: ; preds = %while.end8.i.i %cmp3.not = icmp ugt ptr %__first.addr.1.i.i, %__nth - %call.__last.addr.0 = select i1 %cmp3.not, ptr %__first.addr.1.i.i, ptr %__last.addr.028 - %__first.addr.0.call = select i1 %cmp3.not, ptr %__first.addr.029, ptr %__first.addr.1.i.i + %call.__last.addr.0 = select i1 %cmp3.not, ptr %__first.addr.1.i.i, ptr %__last.addr.027 + %__first.addr.0.call = select i1 %cmp3.not, ptr %__first.addr.028, ptr %__first.addr.1.i.i %sub.ptr.lhs.cast = ptrtoint ptr %call.__last.addr.0 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %__first.addr.0.call to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -41649,7 +41649,7 @@ _ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12Interna while.end: ; preds = %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit, %entry %__last.addr.0.lcssa = phi ptr [ %__last, %entry ], [ %call.__last.addr.0, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ] %__first.addr.0.lcssa = phi ptr [ %__first, %entry ], [ %__first.addr.0.call, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ] - %sub.ptr.rhs.cast.lcssa = phi i64 [ %sub.ptr.rhs.cast24, %entry ], [ %sub.ptr.rhs.cast, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ] + %sub.ptr.rhs.cast.lcssa = phi i64 [ %sub.ptr.rhs.cast23, %entry ], [ %sub.ptr.rhs.cast, %_ZSt27__unguarded_partition_pivotIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEESM_SM_SM_T0_.exit ] %cmp.i = icmp eq ptr %__first.addr.0.lcssa, %__last.addr.0.lcssa %__i.013.i = getelementptr inbounds nuw i8, ptr %__first.addr.0.lcssa, i64 8 %cmp1.not14.i = icmp eq ptr %__i.013.i, %__last.addr.0.lcssa @@ -41680,21 +41680,21 @@ if.else.i: ; preds = %for.body.i %__last.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %__first.pn15.i, i64 12 %16 = load i32, ptr %__last.sroa_idx.i.i, align 4 %17 = load float, ptr %__first.pn15.i, align 4 - %cmp.i.i11.i.i15 = fcmp ogt float %17, %14 - br i1 %cmp.i.i11.i.i15, label %while.body.i.i16, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i - -while.body.i.i16: ; preds = %if.else.i, %while.body.i.i16 - %__next.013.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i16 ], [ %__first.pn15.i, %if.else.i ] - %__last.addr.012.i.i = phi ptr [ %__next.013.i.i, %while.body.i.i16 ], [ %__i.016.i, %if.else.i ] - %18 = load i64, ptr %__next.013.i.i, align 8 - store i64 %18, ptr %__last.addr.012.i.i, align 8 - %__next.0.i.i = getelementptr inbounds i8, ptr %__next.013.i.i, i64 -8 + %cmp.i.i10.i.i = fcmp ogt float %17, %14 + br i1 %cmp.i.i10.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i + +while.body.i.i15: ; preds = %if.else.i, %while.body.i.i15 + %__next.012.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i16 ], [ %__first.pn15.i, %if.else.i ] + %__last.addr.011.i.i = phi ptr [ %__next.012.i.i, %while.body.i.i16 ], [ %__i.016.i, %if.else.i ] + %18 = load i64, ptr %__next.012.i.i, align 8 + store i64 %18, ptr %__last.addr.011.i.i, align 8 + %__next.0.i.i = getelementptr inbounds i8, ptr %__next.012.i.i, i64 -8 %19 = load float, ptr %__next.0.i.i, align 8 - %cmp.i.i.i.i17 = fcmp ogt float %19, %14 - br i1 %cmp.i.i.i.i17, label %while.body.i.i16, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !541 + %cmp.i.i.i.i16 = fcmp ogt float %19, %14 + br i1 %cmp.i.i.i.i16, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !541 -_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i16, %if.else.i - %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.013.i.i, %while.body.i.i16 ] +_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIfNS2_12InternalNodeINS2_8LeafNodeIfLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i15, %if.else.i + %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.012.i.i, %while.body.i.i16 ] store float %14, ptr %__last.addr.0.lcssa.i.i, align 8 %__last.addr.0.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %__last.addr.0.lcssa.i.i, i64 4 store i32 %16, ptr %__last.addr.0.sroa_idx.i.i, align 4 @@ -49922,21 +49922,21 @@ if.then2.i: ; preds = %for.body.i if.else.i: ; preds = %for.body.i %13 = load double, ptr %__first.pn15.i, align 8 - %cmp.i.i9.i.i = fcmp ogt double %13, %9 - br i1 %cmp.i.i9.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i + %cmp.i.i10.i.i = fcmp ogt double %13, %9 + br i1 %cmp.i.i10.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i while.body.i.i15: ; preds = %if.else.i, %while.body.i.i15 %.in.i.i = phi double [ %14, %while.body.i.i15 ], [ %13, %if.else.i ] - %__next.011.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] - %__last.addr.010.i.i = phi ptr [ %__next.011.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] - store double %.in.i.i, ptr %__last.addr.010.i.i, align 8 - %__next.0.i.i = getelementptr inbounds i8, ptr %__next.011.i.i, i64 -8 + %__next.012.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] + %__last.addr.011.i.i = phi ptr [ %__next.012.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] + store double %.in.i.i, ptr %__last.addr.011.i.i, align 8 + %__next.0.i.i = getelementptr inbounds i8, ptr %__next.012.i.i, i64 -8 %14 = load double, ptr %__next.0.i.i, align 8 %cmp.i.i.i.i16 = fcmp ogt double %14, %9 br i1 %cmp.i.i.i.i16, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !619 _ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i15, %if.else.i - %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.011.i.i, %while.body.i.i15 ] + %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.012.i.i, %while.body.i.i15 ] store double %9, ptr %__last.addr.0.lcssa.i.i, align 8 br label %for.inc.i @@ -50008,8 +50008,8 @@ while.body.i.i.us: ; preds = %if.then.us, %while. br i1 %cmp.i.i8.us, label %while.body.i.i.us, label %while.end.i.i.loopexit.us, !llvm.loop !621 if.end17.i.i.us: ; preds = %while.end.i.i.loopexit.us - %cmp12.i.i.not.i.us = icmp eq i64 %spec.select.i.i.us, 0 - br i1 %cmp12.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us.preheader + %cmp13.i.i.not.i.us = icmp eq i64 %spec.select.i.i.us, 0 + br i1 %cmp13.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us.preheader if.end17.i.thread.i.us: ; preds = %while.end.i.i.loopexit.us %7 = load i64, ptr %add.ptr14.i.i.us, align 8 @@ -50017,26 +50017,26 @@ if.end17.i.thread.i.us: ; preds = %while.end.i.i.loope br label %land.rhs.i.i.i.us.preheader land.rhs.i.i.i.us.preheader: ; preds = %if.end17.i.thread.i.us, %if.end17.i.i.us - %__holeIndex.addr.013.i.i.i.us.ph = phi i64 [ %spec.select.i.i.us, %if.end17.i.i.us ], [ %sub13.i.i.us, %if.end17.i.thread.i.us ] + %__holeIndex.addr.014.i.i.i.us.ph = phi i64 [ %spec.select.i.i.us, %if.end17.i.i.us ], [ %sub13.i.i.us, %if.end17.i.thread.i.us ] br label %land.rhs.i.i.i.us land.rhs.i.i.i.us: ; preds = %land.rhs.i.i.i.us.preheader, %while.body.i.i.i.us - %__holeIndex.addr.013.i.i.i.us = phi i64 [ %__parent.014.i.i78.i.us, %while.body.i.i.i.us ], [ %__holeIndex.addr.013.i.i.i.us.ph, %land.rhs.i.i.i.us.preheader ] - %__parent.014.in.i.i.i.us = add nsw i64 %__holeIndex.addr.013.i.i.i.us, -1 - %__parent.014.i.i78.i.us = lshr i64 %__parent.014.in.i.i.i.us, 1 - %add.ptr.i.i.i.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.014.i.i78.i.us + %__holeIndex.addr.014.i.i.i.us = phi i64 [ %__parent.015.i.i45.i.us, %while.body.i.i.i.us ], [ %__holeIndex.addr.014.i.i.i.us.ph, %land.rhs.i.i.i.us.preheader ] + %__parent.015.in.i.i.i.us = add nsw i64 %__holeIndex.addr.014.i.i.i.us, -1 + %__parent.015.i.i45.i.us = lshr i64 %__parent.015.in.i.i.i.us, 1 + %add.ptr.i.i.i.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.015.i.i45.i.us %8 = load double, ptr %add.ptr.i.i.i.us, align 8 %cmp.i.i.i.i.i.us = fcmp olt double %8, %1 br i1 %cmp.i.i.i.i.i.us, label %while.body.i.i.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us while.body.i.i.i.us: ; preds = %land.rhs.i.i.i.us - %add.ptr3.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.013.i.i.i.us + %add.ptr3.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.014.i.i.i.us store double %8, ptr %add.ptr3.i.i.i.us, align 8 - %cmp.i.i.not.i.us = icmp eq i64 %__parent.014.i.i78.i.us, 0 + %cmp.i.i.not.i.us = icmp eq i64 %__parent.015.i.i45.i.us, 0 br i1 %cmp.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us, !llvm.loop !622 _ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_SM_SM_RT0_.exit.us: ; preds = %land.rhs.i.i.i.us, %while.body.i.i.i.us, %if.end17.i.i.us - %__holeIndex.addr.0.lcssa.i.i.i.us = phi i64 [ 0, %if.end17.i.i.us ], [ 0, %while.body.i.i.i.us ], [ %__holeIndex.addr.013.i.i.i.us, %land.rhs.i.i.i.us ] + %__holeIndex.addr.0.lcssa.i.i.i.us = phi i64 [ 0, %if.end17.i.i.us ], [ 0, %while.body.i.i.i.us ], [ %__holeIndex.addr.014.i.i.i.us, %land.rhs.i.i.i.us ] %add.ptr6.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i.i.us store double %1, ptr %add.ptr6.i.i.i.us, align 8 br label %for.inc.us @@ -50154,8 +50154,8 @@ if.end.split: ; preds = %entry %add.ptr9 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %div13 %__value.sroa.0.0.copyload10 = load ptr, ptr %add.ptr9, align 8 %sub.i = add nsw i64 %sub.ptr.div, -1 - %div.i5860 = lshr i64 %sub.i, 1 - %cmp23.i = icmp samesign ult i64 %div13, %div.i5860 + %div.i5759 = lshr i64 %sub.i, 1 + %cmp23.i = icmp samesign ult i64 %div13, %div.i5759 br i1 %cmp23.i, label %while.body.i, label %while.end.i while.body.i: ; preds = %if.end.split, %while.body.i @@ -50174,7 +50174,7 @@ while.body.i: ; preds = %if.end.split, %whil %add.ptr5.i = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i %3 = load i64, ptr %add.ptr4.i, align 8 store i64 %3, ptr %add.ptr5.i, align 8 - %cmp.i = icmp slt i64 %spec.select.i, %div.i5860 + %cmp.i = icmp slt i64 %spec.select.i, %div.i5759 br i1 %cmp.i, label %while.body.i, label %while.end.i, !llvm.loop !621 while.end.i: ; preds = %while.body.i, %if.end.split @@ -50203,78 +50203,78 @@ land.rhs.lr.ph.i.i: ; preds = %if.end17.i br label %land.rhs.i.i land.rhs.i.i: ; preds = %while.body.i.i, %land.rhs.lr.ph.i.i - %__holeIndex.addr.013.i.i = phi i64 [ %__holeIndex.addr.1.i, %land.rhs.lr.ph.i.i ], [ %__parent.014.i.i66, %while.body.i.i ] - %__parent.014.in.i.i = add nsw i64 %__holeIndex.addr.013.i.i, -1 - %__parent.014.i.i66 = lshr i64 %__parent.014.in.i.i, 1 - %add.ptr.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.014.i.i66 + %__holeIndex.addr.014.i.i = phi i64 [ %__holeIndex.addr.1.i, %land.rhs.lr.ph.i.i ], [ %__parent.015.i.i65, %while.body.i.i ] + %__parent.015.in.i.i = add nsw i64 %__holeIndex.addr.014.i.i, -1 + %__parent.015.i.i65 = lshr i64 %__parent.015.in.i.i, 1 + %add.ptr.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__parent.015.i.i65 %8 = load double, ptr %add.ptr.i.i, align 8 %cmp.i.i.i.i = fcmp olt double %8, %7 br i1 %cmp.i.i.i.i, label %while.body.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit while.body.i.i: ; preds = %land.rhs.i.i - %add.ptr3.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.013.i.i + %add.ptr3.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.014.i.i store double %8, ptr %add.ptr3.i.i, align 8 - %cmp.i.i = icmp samesign ugt i64 %__parent.014.i.i66, %div13 + %cmp.i.i = icmp samesign ugt i64 %__parent.015.i.i65, %div13 br i1 %cmp.i.i, label %land.rhs.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit, !llvm.loop !622 _ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit: ; preds = %land.rhs.i.i, %while.body.i.i, %if.end17.i - %__holeIndex.addr.0.lcssa.i.i = phi i64 [ %__holeIndex.addr.1.i, %if.end17.i ], [ %__parent.014.i.i66, %while.body.i.i ], [ %__holeIndex.addr.013.i.i, %land.rhs.i.i ] + %__holeIndex.addr.0.lcssa.i.i = phi i64 [ %__holeIndex.addr.1.i, %if.end17.i ], [ %__parent.015.i.i65, %while.body.i.i ], [ %__holeIndex.addr.014.i.i, %land.rhs.i.i ] %add.ptr6.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i store i64 %6, ptr %add.ptr6.i.i, align 8 - %cmp761 = icmp eq i64 %div13, 0 - br i1 %cmp761, label %return, label %if.end9.split.lr.ph + %cmp760 = icmp eq i64 %div13, 0 + br i1 %cmp760, label %return, label %if.end9.split.lr.ph if.end9.split.lr.ph: ; preds = %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit - %div8.i38 = lshr exact i64 %sub, 1 + %div8.i37 = lshr exact i64 %sub, 1 br i1 %cmp6.i, label %if.end9.split.preheader, label %if.end9.split.us if.end9.split.preheader: ; preds = %if.end9.split.lr.ph - %sub13.i42 = or disjoint i64 %sub, 1 - %add.ptr14.i43 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %sub13.i42 - %add.ptr15.i44 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %div8.i38 + %sub13.i41 = or disjoint i64 %sub, 1 + %add.ptr14.i42 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %sub13.i41 + %add.ptr15.i43 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %div8.i37 br label %if.end9.split if.end9.split.us: ; preds = %if.end9.split.lr.ph, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us - %__parent.062.us = phi i64 [ %dec.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us ], [ %div13, %if.end9.split.lr.ph ] - %dec.us = add nsw i64 %__parent.062.us, -1 + %__parent.061.us = phi i64 [ %dec.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us ], [ %div13, %if.end9.split.lr.ph ] + %dec.us = add nsw i64 %__parent.061.us, -1 %add.ptr11.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %dec.us %__value.sroa.0.0.copyload12.us = load ptr, ptr %add.ptr11.us, align 8 - %cmp23.i16.not.us = icmp sgt i64 %__parent.062.us, %div.i5860 - br i1 %cmp23.i16.not.us, label %while.end.i17.us.thread, label %while.body.i45.us + %cmp23.i16.not.us = icmp sgt i64 %__parent.061.us, %div.i5759 + br i1 %cmp23.i16.not.us, label %while.end.i17.us.thread, label %while.body.i44.us while.end.i17.us.thread: ; preds = %if.end9.split.us %9 = ptrtoint ptr %__value.sroa.0.0.copyload12.us to i64 br label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us -while.body.i45.us: ; preds = %if.end9.split.us, %while.body.i45.us - %__holeIndex.addr.024.i46.us = phi i64 [ %spec.select.i53.us, %while.body.i45.us ], [ %dec.us, %if.end9.split.us ] - %add.i47.us = shl i64 %__holeIndex.addr.024.i46.us, 1 - %mul.i48.us = add i64 %add.i47.us, 2 - %add.ptr.i49.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %mul.i48.us - %10 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %add.i47.us - %add.ptr3.i50.us = getelementptr i8, ptr %10, i64 8 - %11 = load double, ptr %add.ptr.i49.us, align 8 - %12 = load double, ptr %add.ptr3.i50.us, align 8 - %cmp.i.i.i51.us = fcmp olt double %11, %12 - %dec.i52.us = or disjoint i64 %add.i47.us, 1 - %spec.select.i53.us = select i1 %cmp.i.i.i51.us, i64 %dec.i52.us, i64 %mul.i48.us - %add.ptr4.i54.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %spec.select.i53.us - %add.ptr5.i55.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i46.us - %13 = load i64, ptr %add.ptr4.i54.us, align 8 - store i64 %13, ptr %add.ptr5.i55.us, align 8 - %cmp.i56.us = icmp slt i64 %spec.select.i53.us, %div.i5860 - br i1 %cmp.i56.us, label %while.body.i45.us, label %while.end.i17.us, !llvm.loop !621 - -while.end.i17.us: ; preds = %while.body.i45.us +while.body.i44.us: ; preds = %if.end9.split.us, %while.body.i44.us + %__holeIndex.addr.024.i45.us = phi i64 [ %spec.select.i52.us, %while.body.i45.us ], [ %dec.us, %if.end9.split.us ] + %add.i46.us = shl i64 %__holeIndex.addr.024.i45.us, 1 + %mul.i47.us = add i64 %add.i46.us, 2 + %add.ptr.i48.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %mul.i47.us + %10 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %add.i46.us + %add.ptr3.i49.us = getelementptr i8, ptr %10, i64 8 + %11 = load double, ptr %add.ptr.i48.us, align 8 + %12 = load double, ptr %add.ptr3.i49.us, align 8 + %cmp.i.i.i50.us = fcmp olt double %11, %12 + %dec.i51.us = or disjoint i64 %add.i46.us, 1 + %spec.select.i52.us = select i1 %cmp.i.i.i50.us, i64 %dec.i51.us, i64 %mul.i47.us + %add.ptr4.i53.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %spec.select.i52.us + %add.ptr5.i54.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i45.us + %13 = load i64, ptr %add.ptr4.i53.us, align 8 + store i64 %13, ptr %add.ptr5.i54.us, align 8 + %cmp.i55.us = icmp slt i64 %spec.select.i52.us, %div.i5759 + br i1 %cmp.i55.us, label %while.body.i44.us, label %while.end.i17.us, !llvm.loop !621 + +while.end.i17.us: ; preds = %while.body.i44.us %14 = ptrtoint ptr %__value.sroa.0.0.copyload12.us to i64 %cmp12.i.i23.not.us = icmp slt i64 %spec.select.i53.us, %__parent.062.us - br i1 %cmp12.i.i23.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, label %land.rhs.lr.ph.i.i26.us + br i1 %cmp12.i.i23.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, label %land.rhs.i.i26.us -land.rhs.lr.ph.i.i26.us: ; preds = %while.end.i17.us +while.body.i.i32.us: ; preds = %while.end.i17.us %15 = bitcast i64 %14 to double br label %land.rhs.i.i27.us -land.rhs.i.i27.us: ; preds = %while.body.i.i33.us, %land.rhs.lr.ph.i.i26.us +land.rhs.i.i27.us:; preds = %while.body.i.i33.us, %land.rhs.i.i26.us %__holeIndex.addr.013.i.i28.us = phi i64 [ %spec.select.i53.us, %land.rhs.lr.ph.i.i26.us ], [ %__parent.014.i.i30.us67, %while.body.i.i33.us ] %__parent.014.in.i.i29.us = add nsw i64 %__holeIndex.addr.013.i.i28.us, -1 %__parent.014.i.i30.us67 = lshr i64 %__parent.014.in.i.i29.us, 1 @@ -50298,53 +50298,53 @@ _ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6 br i1 %cmp7.us, label %return, label %if.end9.split.us, !llvm.loop !624 if.end9.split: ; preds = %if.end9.split.preheader, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 - %__parent.062 = phi i64 [ %dec, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 ], [ %div13, %if.end9.split.preheader ] - %dec = add nsw i64 %__parent.062, -1 + %__parent.061 = phi i64 [ %dec, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 ], [ %div13, %if.end9.split.preheader ] + %dec = add nsw i64 %__parent.061, -1 %add.ptr11 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %dec %__value.sroa.0.0.copyload12 = load ptr, ptr %add.ptr11, align 8 - %cmp23.i16.not = icmp sgt i64 %__parent.062, %div.i5860 - br i1 %cmp23.i16.not, label %while.end.i17, label %while.body.i45 - -while.body.i45: ; preds = %if.end9.split, %while.body.i45 - %__holeIndex.addr.024.i46 = phi i64 [ %spec.select.i53, %while.body.i45 ], [ %dec, %if.end9.split ] - %add.i47 = shl i64 %__holeIndex.addr.024.i46, 1 - %mul.i48 = add i64 %add.i47, 2 - %add.ptr.i49 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %mul.i48 - %18 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %add.i47 - %add.ptr3.i50 = getelementptr i8, ptr %18, i64 8 - %19 = load double, ptr %add.ptr.i49, align 8 - %20 = load double, ptr %add.ptr3.i50, align 8 - %cmp.i.i.i51 = fcmp olt double %19, %20 - %dec.i52 = or disjoint i64 %add.i47, 1 - %spec.select.i53 = select i1 %cmp.i.i.i51, i64 %dec.i52, i64 %mul.i48 - %add.ptr4.i54 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %spec.select.i53 - %add.ptr5.i55 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i46 - %21 = load i64, ptr %add.ptr4.i54, align 8 - store i64 %21, ptr %add.ptr5.i55, align 8 - %cmp.i56 = icmp slt i64 %spec.select.i53, %div.i5860 - br i1 %cmp.i56, label %while.body.i45, label %while.end.i17, !llvm.loop !621 - -while.end.i17: ; preds = %while.body.i45, %if.end9.split - %__holeIndex.addr.0.lcssa.i18 = phi i64 [ %dec, %if.end9.split ], [ %spec.select.i53, %while.body.i45 ] - %cmp9.i39 = icmp eq i64 %__holeIndex.addr.0.lcssa.i18, %div8.i38 - br i1 %cmp9.i39, label %if.then10.i40, label %if.end17.i21 - -if.then10.i40: ; preds = %while.end.i17 - %22 = load i64, ptr %add.ptr14.i43, align 8 - store i64 %22, ptr %add.ptr15.i44, align 8 + %cmp23.i16.not = icmp sgt i64 %__parent.061, %div.i5759 + br i1 %cmp23.i16.not, label %while.end.i17, label %while.body.i44 + +while.body.i44: ; preds = %if.end9.split, %while.body.i44 + %__holeIndex.addr.024.i45 = phi i64 [ %spec.select.i52, %while.body.i45 ], [ %dec, %if.end9.split ] + %add.i46 = shl i64 %__holeIndex.addr.024.i45, 1 + %mul.i47 = add i64 %add.i46, 2 + %add.ptr.i48 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %mul.i47 + %18 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %add.i46 + %add.ptr3.i49 = getelementptr i8, ptr %18, i64 8 + %19 = load double, ptr %add.ptr.i48, align 8 + %20 = load double, ptr %add.ptr3.i49, align 8 + %cmp.i.i.i50 = fcmp olt double %19, %20 + %dec.i51 = or disjoint i64 %add.i46, 1 + %spec.select.i52 = select i1 %cmp.i.i.i50, i64 %dec.i51, i64 %mul.i47 + %add.ptr4.i53 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %spec.select.i52 + %add.ptr5.i54 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.837", ptr %__first, i64 %__holeIndex.addr.024.i45 + %21 = load i64, ptr %add.ptr4.i53, align 8 + store i64 %21, ptr %add.ptr5.i54, align 8 + %cmp.i55 = icmp slt i64 %spec.select.i52, %div.i5759 + br i1 %cmp.i55, label %while.body.i44, label %while.end.i17, !llvm.loop !621 + +while.end.i17: ; preds = %while.body.i44, %if.end9.split + %__holeIndex.addr.0.lcssa.i18 = phi i64 [ %dec, %if.end9.split ], [ %spec.select.i52, %while.body.i45 ] + %cmp9.i38 = icmp eq i64 %__holeIndex.addr.0.lcssa.i18, %div8.i37 + br i1 %cmp9.i38, label %if.then10.i39, label %if.end17.i21 + +if.then10.i39: ; preds = %while.end.i17 + %22 = load i64, ptr %add.ptr14.i42, align 8 + store i64 %22, ptr %add.ptr15.i43, align 8 br label %if.end17.i21 -if.end17.i21: ; preds = %if.then10.i40, %while.end.i17 - %__holeIndex.addr.1.i22 = phi i64 [ %sub13.i42, %if.then10.i40 ], [ %__holeIndex.addr.0.lcssa.i18, %while.end.i17 ] +if.end17.i21: ; preds = %if.then10.i39, %while.end.i17 + %__holeIndex.addr.1.i22 = phi i64 [ %sub13.i41, %if.then10.i40 ], [ %__holeIndex.addr.0.lcssa.i18, %while.end.i17 ] %23 = ptrtoint ptr %__value.sroa.0.0.copyload12 to i64 %cmp12.i.i23.not = icmp slt i64 %__holeIndex.addr.1.i22, %__parent.062 - br i1 %cmp12.i.i23.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, label %land.rhs.lr.ph.i.i26 + br i1 %cmp12.i.i23.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_8LeafNodeIdLj3EEEvEElS6_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS2_12InternalNodeINSF_IS5_Lj4EEELj5EEEEEEELj0EE6medianISG_EENT_9ValueTypeERSM_EUlRKS6_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, label %land.rhs.i.i26 -land.rhs.lr.ph.i.i26: ; preds = %if.end17.i21 +while.body.i.i32: ; preds = %if.end17.i21 %24 = bitcast i64 %23 to double br label %land.rhs.i.i27 -land.rhs.i.i27: ; preds = %while.body.i.i33, %land.rhs.lr.ph.i.i26 +land.rhs.i.i27:; preds = %while.body.i.i33, %land.rhs.i.i26 %__holeIndex.addr.013.i.i28 = phi i64 [ %__holeIndex.addr.1.i22, %land.rhs.lr.ph.i.i26 ], [ %__parent.014.i.i3068, %while.body.i.i33 ] %__parent.014.in.i.i29 = add nsw i64 %__holeIndex.addr.013.i.i28, -1 %__parent.014.i.i3068 = lshr i64 %__parent.014.in.i.i29, 1 @@ -51010,21 +51010,21 @@ if.then2.i: ; preds = %for.body.i if.else.i: ; preds = %for.body.i %13 = load double, ptr %__first.pn15.i, align 8 - %cmp.i.i9.i.i = fcmp ogt double %13, %9 - br i1 %cmp.i.i9.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i + %cmp.i.i10.i.i = fcmp ogt double %13, %9 + br i1 %cmp.i.i10.i.i, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i while.body.i.i15: ; preds = %if.else.i, %while.body.i.i15 %.in.i.i = phi double [ %14, %while.body.i.i15 ], [ %13, %if.else.i ] - %__next.011.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] - %__last.addr.010.i.i = phi ptr [ %__next.011.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] - store double %.in.i.i, ptr %__last.addr.010.i.i, align 8 - %__next.0.i.i = getelementptr inbounds i8, ptr %__next.011.i.i, i64 -8 + %__next.012.i.i = phi ptr [ %__next.0.i.i, %while.body.i.i15 ], [ %__first.pn15.i, %if.else.i ] + %__last.addr.011.i.i = phi ptr [ %__next.012.i.i, %while.body.i.i15 ], [ %__i.016.i, %if.else.i ] + store double %.in.i.i, ptr %__last.addr.011.i.i, align 8 + %__next.0.i.i = getelementptr inbounds i8, ptr %__next.012.i.i, i64 -8 %14 = load double, ptr %__next.0.i.i, align 8 %cmp.i.i.i.i16 = fcmp ogt double %14, %9 br i1 %cmp.i.i.i.i16, label %while.body.i.i15, label %_ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i, !llvm.loop !638 _ZSt25__unguarded_linear_insertIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops14_Val_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_.exit.i: ; preds = %while.body.i.i15, %if.else.i - %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.011.i.i, %while.body.i.i15 ] + %__last.addr.0.lcssa.i.i = phi ptr [ %__i.016.i, %if.else.i ], [ %__next.012.i.i, %while.body.i.i15 ] store double %9, ptr %__last.addr.0.lcssa.i.i, align 8 br label %for.inc.i @@ -51096,8 +51096,8 @@ while.body.i.i.us: ; preds = %if.then.us, %while. br i1 %cmp.i.i8.us, label %while.body.i.i.us, label %while.end.i.i.loopexit.us, !llvm.loop !640 if.end17.i.i.us: ; preds = %while.end.i.i.loopexit.us - %cmp12.i.i.not.i.us = icmp eq i64 %spec.select.i.i.us, 0 - br i1 %cmp12.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us.preheader + %cmp13.i.i.not.i.us = icmp eq i64 %spec.select.i.i.us, 0 + br i1 %cmp13.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us.preheader if.end17.i.thread.i.us: ; preds = %while.end.i.i.loopexit.us %7 = load i64, ptr %add.ptr14.i.i.us, align 8 @@ -51105,26 +51105,26 @@ if.end17.i.thread.i.us: ; preds = %while.end.i.i.loope br label %land.rhs.i.i.i.us.preheader land.rhs.i.i.i.us.preheader: ; preds = %if.end17.i.thread.i.us, %if.end17.i.i.us - %__holeIndex.addr.013.i.i.i.us.ph = phi i64 [ %spec.select.i.i.us, %if.end17.i.i.us ], [ %sub13.i.i.us, %if.end17.i.thread.i.us ] + %__holeIndex.addr.014.i.i.i.us.ph = phi i64 [ %spec.select.i.i.us, %if.end17.i.i.us ], [ %sub13.i.i.us, %if.end17.i.thread.i.us ] br label %land.rhs.i.i.i.us land.rhs.i.i.i.us: ; preds = %land.rhs.i.i.i.us.preheader, %while.body.i.i.i.us - %__holeIndex.addr.013.i.i.i.us = phi i64 [ %__parent.014.i.i78.i.us, %while.body.i.i.i.us ], [ %__holeIndex.addr.013.i.i.i.us.ph, %land.rhs.i.i.i.us.preheader ] - %__parent.014.in.i.i.i.us = add nsw i64 %__holeIndex.addr.013.i.i.i.us, -1 - %__parent.014.i.i78.i.us = lshr i64 %__parent.014.in.i.i.i.us, 1 - %add.ptr.i.i.i.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.014.i.i78.i.us + %__holeIndex.addr.014.i.i.i.us = phi i64 [ %__parent.015.i.i45.i.us, %while.body.i.i.i.us ], [ %__holeIndex.addr.014.i.i.i.us.ph, %land.rhs.i.i.i.us.preheader ] + %__parent.015.in.i.i.i.us = add nsw i64 %__holeIndex.addr.014.i.i.i.us, -1 + %__parent.015.i.i45.i.us = lshr i64 %__parent.015.in.i.i.i.us, 1 + %add.ptr.i.i.i.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.015.i.i45.i.us %8 = load double, ptr %add.ptr.i.i.i.us, align 8 %cmp.i.i.i.i.i.us = fcmp olt double %8, %1 br i1 %cmp.i.i.i.i.i.us, label %while.body.i.i.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us while.body.i.i.i.us: ; preds = %land.rhs.i.i.i.us - %add.ptr3.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.013.i.i.i.us + %add.ptr3.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.014.i.i.i.us store double %8, ptr %add.ptr3.i.i.i.us, align 8 - %cmp.i.i.not.i.us = icmp eq i64 %__parent.014.i.i78.i.us, 0 + %cmp.i.i.not.i.us = icmp eq i64 %__parent.015.i.i45.i.us, 0 br i1 %cmp.i.i.not.i.us, label %_ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us, label %land.rhs.i.i.i.us, !llvm.loop !641 _ZSt10__pop_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEEN9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_SM_SM_RT0_.exit.us: ; preds = %land.rhs.i.i.i.us, %while.body.i.i.i.us, %if.end17.i.i.us - %__holeIndex.addr.0.lcssa.i.i.i.us = phi i64 [ 0, %if.end17.i.i.us ], [ 0, %while.body.i.i.i.us ], [ %__holeIndex.addr.013.i.i.i.us, %land.rhs.i.i.i.us ] + %__holeIndex.addr.0.lcssa.i.i.i.us = phi i64 [ 0, %if.end17.i.i.us ], [ 0, %while.body.i.i.i.us ], [ %__holeIndex.addr.014.i.i.i.us, %land.rhs.i.i.i.us ] %add.ptr6.i.i.i.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i.i.us store double %1, ptr %add.ptr6.i.i.i.us, align 8 br label %for.inc.us @@ -51242,8 +51242,8 @@ if.end.split: ; preds = %entry %add.ptr9 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %div13 %__value.sroa.0.0.copyload10 = load ptr, ptr %add.ptr9, align 8 %sub.i = add nsw i64 %sub.ptr.div, -1 - %div.i5860 = lshr i64 %sub.i, 1 - %cmp23.i = icmp samesign ult i64 %div13, %div.i5860 + %div.i5759 = lshr i64 %sub.i, 1 + %cmp23.i = icmp samesign ult i64 %div13, %div.i5759 br i1 %cmp23.i, label %while.body.i, label %while.end.i while.body.i: ; preds = %if.end.split, %while.body.i @@ -51262,7 +51262,7 @@ while.body.i: ; preds = %if.end.split, %whil %add.ptr5.i = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i %3 = load i64, ptr %add.ptr4.i, align 8 store i64 %3, ptr %add.ptr5.i, align 8 - %cmp.i = icmp slt i64 %spec.select.i, %div.i5860 + %cmp.i = icmp slt i64 %spec.select.i, %div.i5759 br i1 %cmp.i, label %while.body.i, label %while.end.i, !llvm.loop !640 while.end.i: ; preds = %while.body.i, %if.end.split @@ -51291,78 +51291,78 @@ land.rhs.lr.ph.i.i: ; preds = %if.end17.i br label %land.rhs.i.i land.rhs.i.i: ; preds = %while.body.i.i, %land.rhs.lr.ph.i.i - %__holeIndex.addr.013.i.i = phi i64 [ %__holeIndex.addr.1.i, %land.rhs.lr.ph.i.i ], [ %__parent.014.i.i66, %while.body.i.i ] - %__parent.014.in.i.i = add nsw i64 %__holeIndex.addr.013.i.i, -1 - %__parent.014.i.i66 = lshr i64 %__parent.014.in.i.i, 1 - %add.ptr.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.014.i.i66 + %__holeIndex.addr.014.i.i = phi i64 [ %__holeIndex.addr.1.i, %land.rhs.lr.ph.i.i ], [ %__parent.015.i.i65, %while.body.i.i ] + %__parent.015.in.i.i = add nsw i64 %__holeIndex.addr.014.i.i, -1 + %__parent.015.i.i65 = lshr i64 %__parent.015.in.i.i, 1 + %add.ptr.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__parent.015.i.i65 %8 = load double, ptr %add.ptr.i.i, align 8 %cmp.i.i.i.i = fcmp olt double %8, %7 br i1 %cmp.i.i.i.i, label %while.body.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit while.body.i.i: ; preds = %land.rhs.i.i - %add.ptr3.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.013.i.i + %add.ptr3.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.014.i.i store double %8, ptr %add.ptr3.i.i, align 8 - %cmp.i.i = icmp samesign ugt i64 %__parent.014.i.i66, %div13 + %cmp.i.i = icmp samesign ugt i64 %__parent.015.i.i65, %div13 br i1 %cmp.i.i, label %land.rhs.i.i, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit, !llvm.loop !641 _ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit: ; preds = %land.rhs.i.i, %while.body.i.i, %if.end17.i - %__holeIndex.addr.0.lcssa.i.i = phi i64 [ %__holeIndex.addr.1.i, %if.end17.i ], [ %__parent.014.i.i66, %while.body.i.i ], [ %__holeIndex.addr.013.i.i, %land.rhs.i.i ] + %__holeIndex.addr.0.lcssa.i.i = phi i64 [ %__holeIndex.addr.1.i, %if.end17.i ], [ %__parent.015.i.i65, %while.body.i.i ], [ %__holeIndex.addr.014.i.i, %land.rhs.i.i ] %add.ptr6.i.i = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i store i64 %6, ptr %add.ptr6.i.i, align 8 - %cmp761 = icmp eq i64 %div13, 0 - br i1 %cmp761, label %return, label %if.end9.split.lr.ph + %cmp760 = icmp eq i64 %div13, 0 + br i1 %cmp760, label %return, label %if.end9.split.lr.ph if.end9.split.lr.ph: ; preds = %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit - %div8.i38 = lshr exact i64 %sub, 1 + %div8.i37 = lshr exact i64 %sub, 1 br i1 %cmp6.i, label %if.end9.split.preheader, label %if.end9.split.us if.end9.split.preheader: ; preds = %if.end9.split.lr.ph - %sub13.i42 = or disjoint i64 %sub, 1 - %add.ptr14.i43 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %sub13.i42 - %add.ptr15.i44 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %div8.i38 + %sub13.i41 = or disjoint i64 %sub, 1 + %add.ptr14.i42 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %sub13.i41 + %add.ptr15.i43 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %div8.i37 br label %if.end9.split if.end9.split.us: ; preds = %if.end9.split.lr.ph, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us - %__parent.062.us = phi i64 [ %dec.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us ], [ %div13, %if.end9.split.lr.ph ] - %dec.us = add nsw i64 %__parent.062.us, -1 + %__parent.061.us = phi i64 [ %dec.us, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us ], [ %div13, %if.end9.split.lr.ph ] + %dec.us = add nsw i64 %__parent.061.us, -1 %add.ptr11.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %dec.us %__value.sroa.0.0.copyload12.us = load ptr, ptr %add.ptr11.us, align 8 - %cmp23.i16.not.us = icmp sgt i64 %__parent.062.us, %div.i5860 - br i1 %cmp23.i16.not.us, label %while.end.i17.us.thread, label %while.body.i45.us + %cmp23.i16.not.us = icmp sgt i64 %__parent.061.us, %div.i5759 + br i1 %cmp23.i16.not.us, label %while.end.i17.us.thread, label %while.body.i44.us while.end.i17.us.thread: ; preds = %if.end9.split.us %9 = ptrtoint ptr %__value.sroa.0.0.copyload12.us to i64 br label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us -while.body.i45.us: ; preds = %if.end9.split.us, %while.body.i45.us - %__holeIndex.addr.024.i46.us = phi i64 [ %spec.select.i53.us, %while.body.i45.us ], [ %dec.us, %if.end9.split.us ] - %add.i47.us = shl i64 %__holeIndex.addr.024.i46.us, 1 - %mul.i48.us = add i64 %add.i47.us, 2 - %add.ptr.i49.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %mul.i48.us - %10 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %add.i47.us - %add.ptr3.i50.us = getelementptr i8, ptr %10, i64 8 - %11 = load double, ptr %add.ptr.i49.us, align 8 - %12 = load double, ptr %add.ptr3.i50.us, align 8 - %cmp.i.i.i51.us = fcmp olt double %11, %12 - %dec.i52.us = or disjoint i64 %add.i47.us, 1 - %spec.select.i53.us = select i1 %cmp.i.i.i51.us, i64 %dec.i52.us, i64 %mul.i48.us - %add.ptr4.i54.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %spec.select.i53.us - %add.ptr5.i55.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i46.us - %13 = load i64, ptr %add.ptr4.i54.us, align 8 - store i64 %13, ptr %add.ptr5.i55.us, align 8 - %cmp.i56.us = icmp slt i64 %spec.select.i53.us, %div.i5860 - br i1 %cmp.i56.us, label %while.body.i45.us, label %while.end.i17.us, !llvm.loop !640 - -while.end.i17.us: ; preds = %while.body.i45.us +while.body.i44.us: ; preds = %if.end9.split.us, %while.body.i44.us + %__holeIndex.addr.024.i45.us = phi i64 [ %spec.select.i52.us, %while.body.i45.us ], [ %dec.us, %if.end9.split.us ] + %add.i46.us = shl i64 %__holeIndex.addr.024.i45.us, 1 + %mul.i47.us = add i64 %add.i46.us, 2 + %add.ptr.i48.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %mul.i47.us + %10 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %add.i46.us + %add.ptr3.i49.us = getelementptr i8, ptr %10, i64 8 + %11 = load double, ptr %add.ptr.i48.us, align 8 + %12 = load double, ptr %add.ptr3.i49.us, align 8 + %cmp.i.i.i50.us = fcmp olt double %11, %12 + %dec.i51.us = or disjoint i64 %add.i46.us, 1 + %spec.select.i52.us = select i1 %cmp.i.i.i50.us, i64 %dec.i51.us, i64 %mul.i47.us + %add.ptr4.i53.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %spec.select.i52.us + %add.ptr5.i54.us = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i45.us + %13 = load i64, ptr %add.ptr4.i53.us, align 8 + store i64 %13, ptr %add.ptr5.i54.us, align 8 + %cmp.i55.us = icmp slt i64 %spec.select.i52.us, %div.i5759 + br i1 %cmp.i55.us, label %while.body.i44.us, label %while.end.i17.us, !llvm.loop !640 + +while.end.i17.us: ; preds = %while.body.i44.us %14 = ptrtoint ptr %__value.sroa.0.0.copyload12.us to i64 %cmp12.i.i23.not.us = icmp slt i64 %spec.select.i53.us, %__parent.062.us - br i1 %cmp12.i.i23.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, label %land.rhs.lr.ph.i.i26.us + br i1 %cmp12.i.i23.not.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us, label %land.rhs.i.i26.us -land.rhs.lr.ph.i.i26.us: ; preds = %while.end.i17.us +land.rhs.i.i26.us: ; preds = %while.end.i17.us %15 = bitcast i64 %14 to double br label %land.rhs.i.i27.us -land.rhs.i.i27.us: ; preds = %while.body.i.i33.us, %land.rhs.lr.ph.i.i26.us +land.rhs.i.i27.us:; preds = %while.body.i.i33.us, %land.rhs.i.i26.us %__holeIndex.addr.013.i.i28.us = phi i64 [ %spec.select.i53.us, %land.rhs.lr.ph.i.i26.us ], [ %__parent.014.i.i30.us67, %while.body.i.i33.us ] %__parent.014.in.i.i29.us = add nsw i64 %__holeIndex.addr.013.i.i28.us, -1 %__parent.014.i.i30.us67 = lshr i64 %__parent.014.in.i.i29.us, 1 @@ -51371,7 +51371,7 @@ land.rhs.i.i27.us: ; preds = %while.body.i.i33.us %cmp.i.i.i.i32.us = fcmp olt double %16, %15 br i1 %cmp.i.i.i.i32.us, label %while.body.i.i33.us, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57.us -while.body.i.i33.us: ; preds = %land.rhs.i.i27.us +while.body.i.i33.us:; preds = %land.rhs.i.i27.us %add.ptr3.i.i34.us = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.013.i.i28.us store double %16, ptr %add.ptr3.i.i34.us, align 8 %cmp.i.i35.not.us = icmp slt i64 %__parent.014.i.i30.us67, %__parent.062.us @@ -51386,53 +51386,53 @@ _ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8Lea br i1 %cmp7.us, label %return, label %if.end9.split.us, !llvm.loop !643 if.end9.split: ; preds = %if.end9.split.preheader, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 - %__parent.062 = phi i64 [ %dec, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 ], [ %div13, %if.end9.split.preheader ] - %dec = add nsw i64 %__parent.062, -1 + %__parent.061 = phi i64 [ %dec, %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 ], [ %div13, %if.end9.split.preheader ] + %dec = add nsw i64 %__parent.061, -1 %add.ptr11 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %dec %__value.sroa.0.0.copyload12 = load ptr, ptr %add.ptr11, align 8 - %cmp23.i16.not = icmp sgt i64 %__parent.062, %div.i5860 - br i1 %cmp23.i16.not, label %while.end.i17, label %while.body.i45 - -while.body.i45: ; preds = %if.end9.split, %while.body.i45 - %__holeIndex.addr.024.i46 = phi i64 [ %spec.select.i53, %while.body.i45 ], [ %dec, %if.end9.split ] - %add.i47 = shl i64 %__holeIndex.addr.024.i46, 1 - %mul.i48 = add i64 %add.i47, 2 - %add.ptr.i49 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %mul.i48 - %18 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %add.i47 - %add.ptr3.i50 = getelementptr i8, ptr %18, i64 8 - %19 = load double, ptr %add.ptr.i49, align 8 - %20 = load double, ptr %add.ptr3.i50, align 8 - %cmp.i.i.i51 = fcmp olt double %19, %20 - %dec.i52 = or disjoint i64 %add.i47, 1 - %spec.select.i53 = select i1 %cmp.i.i.i51, i64 %dec.i52, i64 %mul.i48 - %add.ptr4.i54 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %spec.select.i53 - %add.ptr5.i55 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i46 - %21 = load i64, ptr %add.ptr4.i54, align 8 - store i64 %21, ptr %add.ptr5.i55, align 8 - %cmp.i56 = icmp slt i64 %spec.select.i53, %div.i5860 - br i1 %cmp.i56, label %while.body.i45, label %while.end.i17, !llvm.loop !640 - -while.end.i17: ; preds = %while.body.i45, %if.end9.split - %__holeIndex.addr.0.lcssa.i18 = phi i64 [ %dec, %if.end9.split ], [ %spec.select.i53, %while.body.i45 ] - %cmp9.i39 = icmp eq i64 %__holeIndex.addr.0.lcssa.i18, %div8.i38 - br i1 %cmp9.i39, label %if.then10.i40, label %if.end17.i21 - -if.then10.i40: ; preds = %while.end.i17 - %22 = load i64, ptr %add.ptr14.i43, align 8 - store i64 %22, ptr %add.ptr15.i44, align 8 + %cmp23.i16.not = icmp sgt i64 %__parent.061, %div.i5759 + br i1 %cmp23.i16.not, label %while.end.i17, label %while.body.i44 + +while.body.i44: ; preds = %if.end9.split, %while.body.i44 + %__holeIndex.addr.024.i45 = phi i64 [ %spec.select.i52, %while.body.i45 ], [ %dec, %if.end9.split ] + %add.i46 = shl i64 %__holeIndex.addr.024.i45, 1 + %mul.i47 = add i64 %add.i46, 2 + %add.ptr.i48 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %mul.i47 + %18 = getelementptr %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %add.i46 + %add.ptr3.i49 = getelementptr i8, ptr %18, i64 8 + %19 = load double, ptr %add.ptr.i48, align 8 + %20 = load double, ptr %add.ptr3.i49, align 8 + %cmp.i.i.i50 = fcmp olt double %19, %20 + %dec.i51 = or disjoint i64 %add.i46, 1 + %spec.select.i52 = select i1 %cmp.i.i.i50, i64 %dec.i51, i64 %mul.i47 + %add.ptr4.i53 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %spec.select.i52 + %add.ptr5.i54 = getelementptr inbounds %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.024.i45 + %21 = load i64, ptr %add.ptr4.i53, align 8 + store i64 %21, ptr %add.ptr5.i54, align 8 + %cmp.i55 = icmp slt i64 %spec.select.i52, %div.i5759 + br i1 %cmp.i55, label %while.body.i44, label %while.end.i17, !llvm.loop !640 + +while.end.i17: ; preds = %while.body.i44, %if.end9.split + %__holeIndex.addr.0.lcssa.i18 = phi i64 [ %dec, %if.end9.split ], [ %spec.select.i52, %while.body.i45 ] + %cmp9.i38 = icmp eq i64 %__holeIndex.addr.0.lcssa.i18, %div8.i37 + br i1 %cmp9.i38, label %if.then10.i39, label %if.end17.i21 + +if.then10.i39: ; preds = %while.end.i17 + %22 = load i64, ptr %add.ptr14.i42, align 8 + store i64 %22, ptr %add.ptr15.i43, align 8 br label %if.end17.i21 -if.end17.i21: ; preds = %if.then10.i40, %while.end.i17 - %__holeIndex.addr.1.i22 = phi i64 [ %sub13.i42, %if.then10.i40 ], [ %__holeIndex.addr.0.lcssa.i18, %while.end.i17 ] +if.end17.i21: ; preds = %if.then10.i39, %while.end.i17 + %__holeIndex.addr.1.i22 = phi i64 [ %sub13.i41, %if.then10.i40 ], [ %__holeIndex.addr.0.lcssa.i18, %while.end.i17 ] %23 = ptrtoint ptr %__value.sroa.0.0.copyload12 to i64 %cmp12.i.i23.not = icmp slt i64 %__holeIndex.addr.1.i22, %__parent.062 - br i1 %cmp12.i.i23.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, label %land.rhs.lr.ph.i.i26 + br i1 %cmp12.i.i23.not, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57, label %land.rhs.i.i26 -land.rhs.lr.ph.i.i26: ; preds = %if.end17.i21 +land.rhs.i.i26: ; preds = %if.end17.i21 %24 = bitcast i64 %23 to double br label %land.rhs.i.i27 -land.rhs.i.i27: ; preds = %while.body.i.i33, %land.rhs.lr.ph.i.i26 +land.rhs.i.i27:; preds = %while.body.i.i33, %land.rhs.i.i26 %__holeIndex.addr.013.i.i28 = phi i64 [ %__holeIndex.addr.1.i22, %land.rhs.lr.ph.i.i26 ], [ %__parent.014.i.i3068, %while.body.i.i33 ] %__parent.014.in.i.i29 = add nsw i64 %__holeIndex.addr.013.i.i28, -1 %__parent.014.i.i3068 = lshr i64 %__parent.014.in.i.i29, 1 @@ -51441,7 +51441,7 @@ land.rhs.i.i27: ; preds = %while.body.i.i33, % %cmp.i.i.i.i32 = fcmp olt double %25, %24 br i1 %cmp.i.i.i.i32, label %while.body.i.i33, label %_ZSt13__adjust_heapIPN7openvdb5v11_04tree9NodeUnionIdNS2_12InternalNodeINS2_8LeafNodeIdLj3EEELj4EEEvEElS8_N9__gnu_cxx5__ops15_Iter_comp_iterIZNKS1_5tools16TolerancePruneOpINS2_4TreeINS2_8RootNodeINS4_IS7_Lj5EEEEEEELj0EE6medianISH_EENT_9ValueTypeERSM_EUlRKS8_SQ_E_EEEvSM_T0_ST_T1_T2_.exit57 -while.body.i.i33: ; preds = %land.rhs.i.i27 +while.body.i.i33:; preds = %land.rhs.i.i27 %add.ptr3.i.i34 = getelementptr inbounds nuw %"class.openvdb::v11_0::tree::NodeUnion.826", ptr %__first, i64 %__holeIndex.addr.013.i.i28 store double %25, ptr %add.ptr3.i.i34, align 8 %cmp.i.i35.not = icmp slt i64 %__parent.014.i.i3068, %__parent.062 diff --git a/bench/php/optimized/zip.ll b/bench/php/optimized/zip.ll index 62217d9a1fc..31323277224 100644 --- a/bench/php/optimized/zip.ll +++ b/bench/php/optimized/zip.ll @@ -5844,8 +5844,8 @@ zend_hash_update_mem.exit124: ; preds = %136, %138 167: ; preds = %158 %168 = call ptr @zend_hash_find(ptr noundef nonnull %166, ptr noundef nonnull %159) #16 - %.not241 = icmp eq ptr %168, null - br i1 %.not241, label %169, label %191 + %.not238 = icmp eq ptr %168, null + br i1 %.not238, label %169, label %191 169: ; preds = %167 %170 = load ptr, ptr %9, align 8, !tbaa !66 @@ -6062,16 +6062,16 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 br i1 %.not101, label %242, label %244 242: ; preds = %232 - br i1 %.not102, label %243, label %.thread261 + br i1 %.not102, label %243, label %.thread258 243: ; preds = %242 store i32 3, ptr %240, align 4, !tbaa !59 - br label %.thread261 + br label %.thread258 244: ; preds = %232 - br i1 %.not102, label %249, label %.thread261 + br i1 %.not102, label %249, label %.thread258 -.thread261: ; preds = %242, %243, %244 +.thread258: ; preds = %242, %243, %244 %245 = getelementptr inbounds nuw i8, ptr %236, i64 92 %246 = load i32, ptr %245, align 4, !tbaa !76 %247 = trunc i32 %246 to i16 @@ -6084,12 +6084,12 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 %252 = trunc i32 %251 to i16 br label %253 -253: ; preds = %249, %.thread261 - %.sink242 = phi i16 [ %252, %249 ], [ %248, %.thread261 ] +253: ; preds = %249, %.thread258 + %.sink239 = phi i16 [ %252, %249 ], [ %248, %.thread261 ] %254 = getelementptr inbounds nuw i8, ptr %12, i64 8 - store i16 %.sink242, ptr %254, align 4 + store i16 %.sink239, ptr %254, align 4 %255 = getelementptr inbounds nuw i8, ptr %12, i64 10 - store i16 %.sink242, ptr %255, align 2 + store i16 %.sink239, ptr %255, align 2 %256 = getelementptr inbounds nuw i8, ptr %236, i64 64 call void @zend_hash_apply_with_argument(ptr noundef nonnull %256, ptr noundef nonnull @phar_zip_changed_apply, ptr noundef nonnull %11) #16 %257 = load ptr, ptr %9, align 8, !tbaa !66 @@ -6111,11 +6111,11 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 %266 = load ptr, ptr %9, align 8, !tbaa !66 %267 = load ptr, ptr %266, align 8, !tbaa !21 %268 = call i64 (ptr, i64, ptr, ...) @zend_spprintf(ptr noundef nonnull %3, i64 noundef 4096, ptr noundef nonnull @.str.65, ptr noundef %267, ptr noundef nonnull %263) #16 - %.pre243 = load ptr, ptr %10, align 8, !tbaa !60 + %.pre240 = load ptr, ptr %10, align 8, !tbaa !60 br label %269 269: ; preds = %265, %264 - %270 = phi ptr [ %.pre243, %265 ], [ %263, %264 ] + %270 = phi ptr [ %.pre240, %265 ], [ %263, %264 ] call void @_efree(ptr noundef %270) #16 br label %271 @@ -6267,11 +6267,11 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 358: ; preds = %351 %359 = call i32 @_php_stream_free(ptr noundef nonnull %354, i32 noundef 3) #16 - %.pre244 = load ptr, ptr %9, align 8, !tbaa !66 + %.pre241 = load ptr, ptr %9, align 8, !tbaa !66 br label %360 360: ; preds = %358, %351 - %361 = phi ptr [ %.pre244, %358 ], [ %352, %351 ] + %361 = phi ptr [ %.pre241, %358 ], [ %352, %351 ] %362 = getelementptr inbounds nuw i8, ptr %361, i64 256 %363 = load ptr, ptr %362, align 8, !tbaa !78 %.not113 = icmp eq ptr %363, null @@ -6284,11 +6284,11 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 367: ; preds = %364 %368 = call i32 @_php_stream_free(ptr noundef nonnull %363, i32 noundef 3) #16 - %.pre245 = load ptr, ptr %9, align 8, !tbaa !66 + %.pre242 = load ptr, ptr %9, align 8, !tbaa !66 br label %369 369: ; preds = %367, %364 - %370 = phi ptr [ %.pre245, %367 ], [ %361, %364 ] + %370 = phi ptr [ %.pre242, %367 ], [ %361, %364 ] %371 = getelementptr inbounds nuw i8, ptr %370, i64 256 store ptr null, ptr %371, align 8, !tbaa !78 br label %372 @@ -6323,11 +6323,11 @@ zend_hash_update_mem.exit126: ; preds = %197, %199 387: ; preds = %386 %388 = call i32 @_php_stream_free(ptr noundef %.0, i32 noundef 3) #16 - %.pre246 = load ptr, ptr %9, align 8, !tbaa !66 + %.pre243 = load ptr, ptr %9, align 8, !tbaa !66 br label %389 389: ; preds = %387, %386 - %390 = phi ptr [ %.pre246, %387 ], [ %384, %386 ] + %390 = phi ptr [ %.pre243, %387 ], [ %384, %386 ] %391 = load ptr, ptr %11, align 8, !tbaa !72 %392 = getelementptr inbounds nuw i8, ptr %390, i64 248 store ptr %391, ptr %392, align 8, !tbaa !65 diff --git a/bench/proj/optimized/adams.ll b/bench/proj/optimized/adams.ll index bc76c96bb37..94dd8cb2291 100644 --- a/bench/proj/optimized/adams.ll +++ b/bench/proj/optimized/adams.ll @@ -141,127 +141,127 @@ define internal fastcc noundef ptr @_ZL14pj_adams_setupP8PJconstsN12_GLOBAL__N_1 %15 = getelementptr inbounds nuw i8, ptr %0, i64 24 %16 = load ptr, ptr %15, align 8, !tbaa !47 %17 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %14, ptr noundef %16, ptr noundef nonnull @.str.5) - %18 = inttoptr i64 %17 to ptr + %.sroa.015.0..sroa.015.0..cast = inttoptr i64 %17 to ptr %.not = icmp eq i64 %17, 0 - %spec.store.select = select i1 %.not, ptr @.str.6, ptr %18 - %19 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(7) @.str.7) #9 - %20 = icmp eq i32 %19, 0 - br i1 %20, label %21, label %24 - -21: ; preds = %13 - %22 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 0, ptr %22, align 4, !tbaa !48 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store ptr @_ZL23peirce_q_square_inverse5PJ_XYP8PJconsts, ptr %23, align 8, !tbaa !45 + %spec.store.select = select i1 %.not, ptr @.str.6, ptr %.sroa.015.0..sroa.015.0..cast + %18 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(7) @.str.7) #9 + %19 = icmp eq i32 %18, 0 + br i1 %19, label %20, label %23 + +20: ; preds = %13 + %21 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 0, ptr %21, align 4, !tbaa !48 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store ptr @_ZL23peirce_q_square_inverse5PJ_XYP8PJconsts, ptr %22, align 8, !tbaa !45 br label %.thread75 -24: ; preds = %13 - %25 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(8) @.str.6) #9 - %26 = icmp eq i32 %25, 0 - br i1 %26, label %27, label %30 +23: ; preds = %13 + %24 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(8) @.str.6) #9 + %25 = icmp eq i32 %24, 0 + br i1 %25, label %26, label %29 -27: ; preds = %24 - %28 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 1, ptr %28, align 4, !tbaa !48 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store ptr @_ZL24peirce_q_diamond_inverse5PJ_XYP8PJconsts, ptr %29, align 8, !tbaa !45 +26: ; preds = %23 + %27 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 1, ptr %27, align 4, !tbaa !48 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store ptr @_ZL24peirce_q_diamond_inverse5PJ_XYP8PJconsts, ptr %28, align 8, !tbaa !45 br label %.thread75 -30: ; preds = %24 - %31 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(12) @.str.8) #9 - %32 = icmp eq i32 %31, 0 - br i1 %32, label %33, label %35 +29: ; preds = %23 + %30 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(12) @.str.8) #9 + %31 = icmp eq i32 %30, 0 + br i1 %31, label %32, label %34 -33: ; preds = %30 - %34 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 2, ptr %34, align 4, !tbaa !48 +32: ; preds = %29 + %33 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 2, ptr %33, align 4, !tbaa !48 br label %.thread75 -35: ; preds = %30 - %36 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(12) @.str.9) #9 - %37 = icmp eq i32 %36, 0 - br i1 %37, label %38, label %40 +34: ; preds = %29 + %35 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(12) @.str.9) #9 + %36 = icmp eq i32 %35, 0 + br i1 %36, label %37, label %39 -38: ; preds = %35 - %39 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 3, ptr %39, align 4, !tbaa !48 +37: ; preds = %34 + %38 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 3, ptr %38, align 4, !tbaa !48 br label %.thread75 -40: ; preds = %35 - %41 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(11) @.str.10) #9 - %42 = icmp eq i32 %41, 0 - br i1 %42, label %43, label %58 - -43: ; preds = %40 - %44 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 4, ptr %44, align 4, !tbaa !48 - %45 = load ptr, ptr %0, align 8, !tbaa !46 - %46 = load ptr, ptr %15, align 8, !tbaa !47 - %47 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %45, ptr noundef %46, ptr noundef nonnull @.str.11) - %48 = and i64 %47, 4294967295 - %.not71 = icmp eq i64 %48, 0 - br i1 %.not71, label %.thread75, label %49 - -49: ; preds = %43 - %50 = load ptr, ptr %0, align 8, !tbaa !46 - %51 = load ptr, ptr %15, align 8, !tbaa !47 - %52 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %50, ptr noundef %51, ptr noundef nonnull @.str.12) - %53 = bitcast i64 %52 to double - %54 = tail call double @llvm.fabs.f64(double %53) - %or.cond = fcmp ule double %54, 1.000000e+00 - br i1 %or.cond, label %.thread, label %56 - -.thread: ; preds = %49 - %55 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %52, ptr %55, align 8, !tbaa !49 +39: ; preds = %34 + %40 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(11) @.str.10) #9 + %41 = icmp eq i32 %40, 0 + br i1 %41, label %42, label %57 + +42: ; preds = %39 + %43 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 4, ptr %43, align 4, !tbaa !48 + %44 = load ptr, ptr %0, align 8, !tbaa !46 + %45 = load ptr, ptr %15, align 8, !tbaa !47 + %46 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %44, ptr noundef %45, ptr noundef nonnull @.str.11) + %47 = and i64 %46, 4294967295 + %.not71 = icmp eq i64 %47, 0 + br i1 %.not71, label %.thread75, label %48 + +48: ; preds = %42 + %49 = load ptr, ptr %0, align 8, !tbaa !46 + %50 = load ptr, ptr %15, align 8, !tbaa !47 + %51 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %49, ptr noundef %50, ptr noundef nonnull @.str.12) + %52 = bitcast i64 %51 to double + %53 = tail call double @llvm.fabs.f64(double %52) + %or.cond = fcmp ule double %53, 1.000000e+00 + br i1 %or.cond, label %.thread, label %55 + +.thread: ; preds = %48 + %54 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %51, ptr %54, align 8, !tbaa !49 br label %.thread75 -56: ; preds = %49 +55: ; preds = %48 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.13) - %57 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) + %56 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) br label %.thread75 -58: ; preds = %40 - %59 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(9) @.str.14) #9 - %60 = icmp eq i32 %59, 0 - br i1 %60, label %61, label %76 - -61: ; preds = %58 - %62 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 5, ptr %62, align 4, !tbaa !48 - %63 = load ptr, ptr %0, align 8, !tbaa !46 - %64 = load ptr, ptr %15, align 8, !tbaa !47 - %65 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %63, ptr noundef %64, ptr noundef nonnull @.str.15) - %66 = and i64 %65, 4294967295 - %.not70 = icmp eq i64 %66, 0 - br i1 %.not70, label %.thread75, label %67 - -67: ; preds = %61 - %68 = load ptr, ptr %0, align 8, !tbaa !46 - %69 = load ptr, ptr %15, align 8, !tbaa !47 - %70 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %68, ptr noundef %69, ptr noundef nonnull @.str.16) - %71 = bitcast i64 %70 to double - %72 = tail call double @llvm.fabs.f64(double %71) - %or.cond5 = fcmp ule double %72, 1.000000e+00 - br i1 %or.cond5, label %.thread73, label %74 - -.thread73: ; preds = %67 - %73 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store i64 %70, ptr %73, align 8, !tbaa !50 +57: ; preds = %39 + %58 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select, ptr noundef nonnull dereferenceable(9) @.str.14) #9 + %59 = icmp eq i32 %58, 0 + br i1 %59, label %60, label %75 + +60: ; preds = %57 + %61 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 5, ptr %61, align 4, !tbaa !48 + %62 = load ptr, ptr %0, align 8, !tbaa !46 + %63 = load ptr, ptr %15, align 8, !tbaa !47 + %64 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %62, ptr noundef %63, ptr noundef nonnull @.str.15) + %65 = and i64 %64, 4294967295 + %.not70 = icmp eq i64 %65, 0 + br i1 %.not70, label %.thread75, label %66 + +66: ; preds = %60 + %67 = load ptr, ptr %0, align 8, !tbaa !46 + %68 = load ptr, ptr %15, align 8, !tbaa !47 + %69 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %67, ptr noundef %68, ptr noundef nonnull @.str.16) + %70 = bitcast i64 %69 to double + %71 = tail call double @llvm.fabs.f64(double %70) + %or.cond5 = fcmp ule double %71, 1.000000e+00 + br i1 %or.cond5, label %.thread73, label %73 + +.thread73: ; preds = %66 + %72 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store i64 %69, ptr %72, align 8, !tbaa !50 br label %.thread75 -74: ; preds = %67 +73: ; preds = %66 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.17) - %75 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) + %74 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) br label %.thread75 -76: ; preds = %58 +75: ; preds = %57 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.18) - %77 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) + %76 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) br label %.thread75 -.thread75: ; preds = %21, %33, %43, %61, %38, %27, %.thread, %.thread73, %7, %11, %76, %56, %74, %5 - %.0 = phi ptr [ %6, %5 ], [ %57, %56 ], [ %75, %74 ], [ %77, %76 ], [ %0, %11 ], [ %0, %7 ], [ %0, %.thread73 ], [ %0, %.thread ], [ %0, %27 ], [ %0, %38 ], [ %0, %61 ], [ %0, %43 ], [ %0, %33 ], [ %0, %21 ] +.thread75: ; preds = %20, %32, %42, %60, %37, %26, %.thread, %.thread73, %7, %11, %75, %55, %73, %5 + %.0 = phi ptr [ %6, %5 ], [ %56, %56 ], [ %74, %74 ], [ %77, %76 ], [ %0, %11 ], [ %0, %7 ], [ %0, %.thread73 ], [ %0, %.thread ], [ %0, %27 ], [ %0, %38 ], [ %0, %61 ], [ %0, %43 ], [ %0, %33 ], [ %0, %21 ] ret ptr %.0 } diff --git a/bench/proj/optimized/airocean.ll b/bench/proj/optimized/airocean.ll index 7484fa8485c..a5ba352de50 100644 --- a/bench/proj/optimized/airocean.ll +++ b/bench/proj/optimized/airocean.ll @@ -62,7 +62,7 @@ define hidden noundef ptr @_Z37pj_projection_specific_setup_airoceanP8PJconsts(p 4: ; preds = %1 %5 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef %0, i32 noundef 4096) - br label %121 + br label %120 6: ; preds = %1 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(10304) %2, ptr noundef nonnull align 16 dereferenceable(1656) @_ZL14base_ico_faces, i64 1656, i1 false) @@ -82,186 +82,186 @@ define hidden noundef ptr @_Z37pj_projection_specific_setup_airoceanP8PJconsts(p %14 = getelementptr inbounds nuw i8, ptr %0, i64 24 %15 = load ptr, ptr %14, align 8, !tbaa !42 %16 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %13, ptr noundef %15, ptr noundef nonnull @.str.1) - %17 = inttoptr i64 %16 to ptr + %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %16 to ptr %.not = icmp eq i64 %16, 0 - br i1 %.not, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %18 + br i1 %.not, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %17 -18: ; preds = %6 - %19 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(11) @.str.2) #10 - %.not19 = icmp eq i32 %19, 0 - br i1 %.not19, label %.preheader, label %115 +17: ; preds = %6 + %18 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(11) @.str.2) #10 + %.not18 = icmp eq i32 %18, 0 + br i1 %.not18, label %.preheader, label %114 -.preheader: ; preds = %18, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i +.preheader: ; preds = %17, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i ], [ 0, %18 ] - %20 = getelementptr inbounds nuw [4 x [4 x double]], ptr @_ZL18base_ico_air_trans, i64 %indvars.iv.i - %21 = getelementptr inbounds nuw [4 x [4 x double]], ptr %10, i64 %indvars.iv.i - %22 = getelementptr inbounds nuw i8, ptr %20, i64 32 - %23 = getelementptr inbounds nuw i8, ptr %20, i64 64 - %24 = getelementptr inbounds nuw i8, ptr %20, i64 96 + %19 = getelementptr inbounds nuw [4 x [4 x double]], ptr @_ZL18base_ico_air_trans, i64 %indvars.iv.i + %20 = getelementptr inbounds nuw [4 x [4 x double]], ptr %10, i64 %indvars.iv.i + %21 = getelementptr inbounds nuw i8, ptr %19, i64 32 + %22 = getelementptr inbounds nuw i8, ptr %19, i64 64 + %23 = getelementptr inbounds nuw i8, ptr %19, i64 96 br label %.preheader.i.i -.preheader.i.i: ; preds = %34, %.preheader +.preheader.i.i: ; preds = %33, %.preheader %indvars.iv26.i.i = phi i64 [ 0, %.preheader ], [ %indvars.iv.next27.i.i, %34 ] - %25 = getelementptr inbounds nuw [4 x double], ptr @_ZL23orient_horizontal_trans, i64 %indvars.iv26.i.i - %26 = getelementptr inbounds nuw i8, ptr %25, i64 8 - %27 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %28 = getelementptr inbounds nuw i8, ptr %25, i64 24 - %29 = getelementptr inbounds nuw [4 x double], ptr %21, i64 %indvars.iv26.i.i - %30 = load double, ptr %25, align 16, !tbaa !43 - %31 = load double, ptr %26, align 8, !tbaa !43 - %32 = load double, ptr %27, align 16, !tbaa !43 - %33 = load double, ptr %28, align 8, !tbaa !43 - br label %35 - -34: ; preds = %35 + %24 = getelementptr inbounds nuw [4 x double], ptr @_ZL23orient_horizontal_trans, i64 %indvars.iv26.i.i + %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 + %26 = getelementptr inbounds nuw i8, ptr %24, i64 16 + %27 = getelementptr inbounds nuw i8, ptr %24, i64 24 + %28 = getelementptr inbounds nuw [4 x double], ptr %20, i64 %indvars.iv26.i.i + %29 = load double, ptr %24, align 16, !tbaa !43 + %30 = load double, ptr %25, align 8, !tbaa !43 + %31 = load double, ptr %26, align 16, !tbaa !43 + %32 = load double, ptr %27, align 8, !tbaa !43 + br label %34 + +33: ; preds = %34 %indvars.iv.next27.i.i = add nuw nsw i64 %indvars.iv26.i.i, 1 %exitcond29.not.i.i = icmp eq i64 %indvars.iv.next27.i.i, 4 br i1 %exitcond29.not.i.i, label %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i, label %.preheader.i.i, !llvm.loop !44 -35: ; preds = %35, %.preheader.i.i +34: ; preds = %34, %.preheader.i.i %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %35 ] - %36 = getelementptr inbounds nuw double, ptr %20, i64 %indvars.iv.i.i - %37 = load double, ptr %36, align 8, !tbaa !43 - %38 = getelementptr inbounds nuw double, ptr %22, i64 %indvars.iv.i.i - %39 = load double, ptr %38, align 8, !tbaa !43 - %40 = fmul double %31, %39 - %41 = tail call double @llvm.fmuladd.f64(double %30, double %37, double %40) - %42 = getelementptr inbounds nuw double, ptr %23, i64 %indvars.iv.i.i - %43 = load double, ptr %42, align 8, !tbaa !43 - %44 = tail call double @llvm.fmuladd.f64(double %32, double %43, double %41) - %45 = getelementptr inbounds nuw double, ptr %24, i64 %indvars.iv.i.i - %46 = load double, ptr %45, align 8, !tbaa !43 - %47 = tail call double @llvm.fmuladd.f64(double %33, double %46, double %44) - %48 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv.i.i - store double %47, ptr %48, align 8, !tbaa !43 + %35 = getelementptr inbounds nuw double, ptr %19, i64 %indvars.iv.i.i + %36 = load double, ptr %35, align 8, !tbaa !43 + %37 = getelementptr inbounds nuw double, ptr %21, i64 %indvars.iv.i.i + %38 = load double, ptr %37, align 8, !tbaa !43 + %39 = fmul double %30, %38 + %40 = tail call double @llvm.fmuladd.f64(double %29, double %36, double %39) + %41 = getelementptr inbounds nuw double, ptr %22, i64 %indvars.iv.i.i + %42 = load double, ptr %41, align 8, !tbaa !43 + %43 = tail call double @llvm.fmuladd.f64(double %31, double %42, double %40) + %44 = getelementptr inbounds nuw double, ptr %23, i64 %indvars.iv.i.i + %45 = load double, ptr %44, align 8, !tbaa !43 + %46 = tail call double @llvm.fmuladd.f64(double %32, double %45, double %43) + %47 = getelementptr inbounds nuw double, ptr %28, i64 %indvars.iv.i.i + store double %46, ptr %47, align 8, !tbaa !43 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 4 - br i1 %exitcond.not.i.i, label %34, label %35, !llvm.loop !46 + br i1 %exitcond.not.i.i, label %33, label %34, !llvm.loop !46 -_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i: ; preds = %34 - %49 = getelementptr inbounds nuw [4 x [4 x double]], ptr @_ZL18base_air_ico_trans, i64 %indvars.iv.i - %50 = getelementptr inbounds nuw [4 x [4 x double]], ptr %11, i64 %indvars.iv.i +_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i: ; preds = %33 + %48 = getelementptr inbounds nuw [4 x [4 x double]], ptr @_ZL18base_air_ico_trans, i64 %indvars.iv.i + %49 = getelementptr inbounds nuw [4 x [4 x double]], ptr %11, i64 %indvars.iv.i br label %.preheader.i15.i -.preheader.i15.i: ; preds = %60, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i +.preheader.i15.i: ; preds = %59, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i %indvars.iv26.i16.i = phi i64 [ 0, %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit.i ], [ %indvars.iv.next27.i20.i, %60 ] - %51 = getelementptr inbounds nuw [4 x double], ptr %49, i64 %indvars.iv26.i16.i - %52 = getelementptr inbounds nuw i8, ptr %51, i64 8 - %53 = getelementptr inbounds nuw i8, ptr %51, i64 16 - %54 = getelementptr inbounds nuw i8, ptr %51, i64 24 - %55 = getelementptr inbounds nuw [4 x double], ptr %50, i64 %indvars.iv26.i16.i - %56 = load double, ptr %51, align 16, !tbaa !43 - %57 = load double, ptr %52, align 8, !tbaa !43 - %58 = load double, ptr %53, align 16, !tbaa !43 - %59 = load double, ptr %54, align 8, !tbaa !43 - br label %61 - -60: ; preds = %61 + %50 = getelementptr inbounds nuw [4 x double], ptr %48, i64 %indvars.iv26.i16.i + %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 + %52 = getelementptr inbounds nuw i8, ptr %50, i64 16 + %53 = getelementptr inbounds nuw i8, ptr %50, i64 24 + %54 = getelementptr inbounds nuw [4 x double], ptr %49, i64 %indvars.iv26.i16.i + %55 = load double, ptr %50, align 16, !tbaa !43 + %56 = load double, ptr %51, align 8, !tbaa !43 + %57 = load double, ptr %52, align 16, !tbaa !43 + %58 = load double, ptr %53, align 8, !tbaa !43 + br label %60 + +59: ; preds = %60 %indvars.iv.next27.i20.i = add nuw nsw i64 %indvars.iv26.i16.i, 1 %exitcond29.not.i21.i = icmp eq i64 %indvars.iv.next27.i20.i, 4 br i1 %exitcond29.not.i21.i, label %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i, label %.preheader.i15.i, !llvm.loop !44 -61: ; preds = %61, %.preheader.i15.i +60: ; preds = %60, %.preheader.i15.i %indvars.iv.i17.i = phi i64 [ 0, %.preheader.i15.i ], [ %indvars.iv.next.i18.i, %61 ] - %62 = getelementptr inbounds nuw double, ptr @_ZL27orient_horizontal_inv_trans, i64 %indvars.iv.i17.i - %63 = load double, ptr %62, align 8, !tbaa !43 - %64 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 32), i64 %indvars.iv.i17.i - %65 = load double, ptr %64, align 8, !tbaa !43 - %66 = fmul double %57, %65 - %67 = tail call double @llvm.fmuladd.f64(double %56, double %63, double %66) - %68 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 64), i64 %indvars.iv.i17.i - %69 = load double, ptr %68, align 8, !tbaa !43 - %70 = tail call double @llvm.fmuladd.f64(double %58, double %69, double %67) - %71 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 96), i64 %indvars.iv.i17.i - %72 = load double, ptr %71, align 8, !tbaa !43 - %73 = tail call double @llvm.fmuladd.f64(double %59, double %72, double %70) - %74 = getelementptr inbounds nuw double, ptr %55, i64 %indvars.iv.i17.i - store double %73, ptr %74, align 8, !tbaa !43 + %61 = getelementptr inbounds nuw double, ptr @_ZL27orient_horizontal_inv_trans, i64 %indvars.iv.i17.i + %62 = load double, ptr %61, align 8, !tbaa !43 + %63 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 32), i64 %indvars.iv.i17.i + %64 = load double, ptr %63, align 8, !tbaa !43 + %65 = fmul double %56, %64 + %66 = tail call double @llvm.fmuladd.f64(double %55, double %62, double %65) + %67 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 64), i64 %indvars.iv.i17.i + %68 = load double, ptr %67, align 8, !tbaa !43 + %69 = tail call double @llvm.fmuladd.f64(double %57, double %68, double %66) + %70 = getelementptr inbounds nuw double, ptr getelementptr inbounds nuw (i8, ptr @_ZL27orient_horizontal_inv_trans, i64 96), i64 %indvars.iv.i17.i + %71 = load double, ptr %70, align 8, !tbaa !43 + %72 = tail call double @llvm.fmuladd.f64(double %58, double %71, double %69) + %73 = getelementptr inbounds nuw double, ptr %54, i64 %indvars.iv.i17.i + store double %72, ptr %73, align 8, !tbaa !43 %indvars.iv.next.i18.i = add nuw nsw i64 %indvars.iv.i17.i, 1 %exitcond.not.i19.i = icmp eq i64 %indvars.iv.next.i18.i, 4 - br i1 %exitcond.not.i19.i, label %60, label %61, !llvm.loop !46 - -_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i: ; preds = %60 - %75 = getelementptr inbounds nuw %"struct.(anonymous namespace)::pj_face", ptr @_ZL19base_airocean_faces, i64 %indvars.iv.i - %76 = load double, ptr %75, align 8, !tbaa !47, !noalias !49 - %77 = getelementptr inbounds nuw i8, ptr %75, i64 8 - %78 = load double, ptr %77, align 8, !tbaa !52, !noalias !49 - %79 = fneg double %78 - %80 = tail call double @llvm.fmuladd.f64(double %76, double 0.000000e+00, double %79) - %81 = fadd double %80, 0.000000e+00 - %82 = fadd double %81, 0x401721D5D2BDD232 - %83 = fmul double %78, 0.000000e+00 - %84 = fadd double %76, %83 - %85 = fadd double %84, 0.000000e+00 - %86 = tail call double @llvm.fmuladd.f64(double %76, double 0.000000e+00, double %83) - %87 = fadd double %86, 1.000000e+00 - %88 = getelementptr inbounds nuw i8, ptr %75, i64 24 - %89 = load double, ptr %88, align 8, !tbaa !47, !noalias !53 - %90 = getelementptr inbounds nuw i8, ptr %75, i64 32 - %91 = load double, ptr %90, align 8, !tbaa !52, !noalias !53 - %92 = fneg double %91 - %93 = tail call double @llvm.fmuladd.f64(double %89, double 0.000000e+00, double %92) - %94 = fadd double %93, 0.000000e+00 - %95 = fadd double %94, 0x401721D5D2BDD232 - %96 = fmul double %91, 0.000000e+00 - %97 = fadd double %89, %96 - %98 = fadd double %97, 0.000000e+00 - %99 = tail call double @llvm.fmuladd.f64(double %89, double 0.000000e+00, double %96) - %100 = fadd double %99, 1.000000e+00 - %101 = getelementptr inbounds nuw i8, ptr %75, i64 48 - %102 = load double, ptr %101, align 8, !tbaa !47, !noalias !56 - %103 = getelementptr inbounds nuw i8, ptr %75, i64 56 - %104 = load double, ptr %103, align 8, !tbaa !52, !noalias !56 - %105 = fneg double %104 - %106 = tail call double @llvm.fmuladd.f64(double %102, double 0.000000e+00, double %105) - %107 = fadd double %106, 0.000000e+00 - %108 = fadd double %107, 0x401721D5D2BDD232 - %109 = fmul double %104, 0.000000e+00 - %110 = fadd double %102, %109 - %111 = fadd double %110, 0.000000e+00 - %112 = tail call double @llvm.fmuladd.f64(double %102, double 0.000000e+00, double %109) - %113 = fadd double %112, 1.000000e+00 - %114 = getelementptr inbounds nuw %"struct.(anonymous namespace)::pj_face", ptr %7, i64 %indvars.iv.i - store double %82, ptr %114, align 8, !tbaa !43 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 8 - store double %85, ptr %.sroa.4.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 16 - store double %87, ptr %.sroa.5.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 24 - store double %95, ptr %.sroa.6.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.7.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 32 - store double %98, ptr %.sroa.7.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.8.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 40 - store double %100, ptr %.sroa.8.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.9.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 48 - store double %108, ptr %.sroa.9.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.10.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 56 - store double %111, ptr %.sroa.10.0..sroa_idx.i, align 8, !tbaa !43 - %.sroa.11.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 64 - store double %113, ptr %.sroa.11.0..sroa_idx.i, align 8, !tbaa !43 + br i1 %exitcond.not.i19.i, label %59, label %60, !llvm.loop !46 + +_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i: ; preds = %59 + %74 = getelementptr inbounds nuw %"struct.(anonymous namespace)::pj_face", ptr @_ZL19base_airocean_faces, i64 %indvars.iv.i + %75 = load double, ptr %74, align 8, !tbaa !47, !noalias !49 + %76 = getelementptr inbounds nuw i8, ptr %74, i64 8 + %77 = load double, ptr %76, align 8, !tbaa !52, !noalias !49 + %78 = fneg double %77 + %79 = tail call double @llvm.fmuladd.f64(double %75, double 0.000000e+00, double %78) + %80 = fadd double %79, 0.000000e+00 + %81 = fadd double %80, 0x401721D5D2BDD232 + %82 = fmul double %77, 0.000000e+00 + %83 = fadd double %75, %82 + %84 = fadd double %83, 0.000000e+00 + %85 = tail call double @llvm.fmuladd.f64(double %75, double 0.000000e+00, double %82) + %86 = fadd double %85, 1.000000e+00 + %87 = getelementptr inbounds nuw i8, ptr %74, i64 24 + %88 = load double, ptr %87, align 8, !tbaa !47, !noalias !53 + %89 = getelementptr inbounds nuw i8, ptr %74, i64 32 + %90 = load double, ptr %89, align 8, !tbaa !52, !noalias !53 + %91 = fneg double %90 + %92 = tail call double @llvm.fmuladd.f64(double %88, double 0.000000e+00, double %91) + %93 = fadd double %92, 0.000000e+00 + %94 = fadd double %93, 0x401721D5D2BDD232 + %95 = fmul double %90, 0.000000e+00 + %96 = fadd double %88, %95 + %97 = fadd double %96, 0.000000e+00 + %98 = tail call double @llvm.fmuladd.f64(double %88, double 0.000000e+00, double %95) + %99 = fadd double %98, 1.000000e+00 + %100 = getelementptr inbounds nuw i8, ptr %74, i64 48 + %101 = load double, ptr %100, align 8, !tbaa !47, !noalias !56 + %102 = getelementptr inbounds nuw i8, ptr %74, i64 56 + %103 = load double, ptr %102, align 8, !tbaa !52, !noalias !56 + %104 = fneg double %103 + %105 = tail call double @llvm.fmuladd.f64(double %101, double 0.000000e+00, double %104) + %106 = fadd double %105, 0.000000e+00 + %107 = fadd double %106, 0x401721D5D2BDD232 + %108 = fmul double %103, 0.000000e+00 + %109 = fadd double %101, %108 + %110 = fadd double %109, 0.000000e+00 + %111 = tail call double @llvm.fmuladd.f64(double %101, double 0.000000e+00, double %108) + %112 = fadd double %111, 1.000000e+00 + %113 = getelementptr inbounds nuw %"struct.(anonymous namespace)::pj_face", ptr %7, i64 %indvars.iv.i + store double %81, ptr %113, align 8, !tbaa !43 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 8 + store double %84, ptr %.sroa.4.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 16 + store double %86, ptr %.sroa.5.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 24 + store double %94, ptr %.sroa.6.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.7.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 32 + store double %97, ptr %.sroa.7.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.8.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 40 + store double %99, ptr %.sroa.8.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.9.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 48 + store double %107, ptr %.sroa.9.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.10.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 56 + store double %110, ptr %.sroa.10.0..sroa_idx.i, align 8, !tbaa !43 + %.sroa.11.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %113, i64 64 + store double %112, ptr %.sroa.11.0..sroa_idx.i, align 8, !tbaa !43 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 23 br i1 %exitcond.not.i, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %.preheader, !llvm.loop !59 -115: ; preds = %18 - %116 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(9) @.str.3) #10 - %.not20 = icmp eq i32 %116, 0 - br i1 %.not20, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %117 +114: ; preds = %17 + %115 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(9) @.str.3) #10 + %.not19 = icmp eq i32 %115, 0 + br i1 %.not19, label %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, label %116 -117: ; preds = %115 +116: ; preds = %114 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) - %118 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) - br label %121 - -_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit: ; preds = %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i, %115, %6 - %119 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store ptr @_ZL16airocean_inverse5PJ_XYP8PJconsts, ptr %119, align 8, !tbaa !60 - %120 = getelementptr inbounds nuw i8, ptr %0, i64 104 - store ptr @_ZL16airocean_forward5PJ_LPP8PJconsts, ptr %120, align 8, !tbaa !61 - br label %121 - -121: ; preds = %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, %117, %4 - %.0 = phi ptr [ %5, %4 ], [ %118, %117 ], [ %0, %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit ] + %117 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef 1027) + br label %120 + +_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit: ; preds = %_ZN12_GLOBAL__N_116pj_airocean_data8mat_multEPA4_KdS3_PA4_d.exit22.i, %114, %6 + %118 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store ptr @_ZL16airocean_inverse5PJ_XYP8PJconsts, ptr %118, align 8, !tbaa !60 + %119 = getelementptr inbounds nuw i8, ptr %0, i64 104 + store ptr @_ZL16airocean_forward5PJ_LPP8PJconsts, ptr %119, align 8, !tbaa !61 + br label %120 + +120: ; preds = %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit, %116, %4 + %.0 = phi ptr [ %5, %4 ], [ %117, %117 ], [ %0, %_ZN12_GLOBAL__N_116pj_airocean_data9transformEPA4_KdS3_.exit ] ret ptr %.0 } diff --git a/bench/proj/optimized/datum_set.ll b/bench/proj/optimized/datum_set.ll index 926eb5a9075..0806d7b208f 100644 --- a/bench/proj/optimized/datum_set.ll +++ b/bench/proj/optimized/datum_set.ll @@ -17,220 +17,220 @@ define hidden noundef range(i32 -1, 2) i32 @_Z12pj_datum_setP6pj_ctxP8ARG_listP8 %5 = getelementptr inbounds nuw i8, ptr %2, i64 528 store i32 0, ptr %5, align 8, !tbaa !3 %6 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str) - %7 = inttoptr i64 %6 to ptr + %.sroa.046.0..sroa.046.0..cast = inttoptr i64 %6 to ptr %.not = icmp eq i64 %6, 0 - br i1 %.not, label %.critedge113, label %.preheader + br i1 %.not, label %.critedge111, label %.preheader -.preheader: ; preds = %3, %8 - %.081 = phi ptr [ %9, %8 ], [ %1, %3 ] - %.not98 = icmp eq ptr %.081, null - br i1 %.not98, label %.critedge113.thread, label %8 +.preheader: ; preds = %3, %7 + %.081 = phi ptr [ %8, %8 ], [ %1, %3 ] + %.not96 = icmp eq ptr %.081, null + br i1 %.not96, label %.critedge111.thread, label %7 -8: ; preds = %.preheader - %9 = load ptr, ptr %.081, align 8, !tbaa !36 - %.not99 = icmp eq ptr %9, null - br i1 %.not99, label %.critedge, label %.preheader, !llvm.loop !37 +7: ; preds = %.preheader + %8 = load ptr, ptr %.081, align 8, !tbaa !36 + %.not97 = icmp eq ptr %8, null + br i1 %.not97, label %.critedge, label %.preheader, !llvm.loop !37 -.critedge: ; preds = %8 - %10 = tail call noundef ptr @_Z17pj_get_datums_refv() - %11 = load ptr, ptr %10, align 8, !tbaa !39 - %.not100122 = icmp eq ptr %11, null - br i1 %.not100122, label %.critedge114, label %.lr.ph +.critedge: ; preds = %7 + %9 = tail call noundef ptr @_Z17pj_get_datums_refv() + %10 = load ptr, ptr %9, align 8, !tbaa !39 + %.not98120 = icmp eq ptr %10, null + br i1 %.not98120, label %.critedge112, label %.lr.ph -12: ; preds = %.lr.ph +11: ; preds = %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %13 = getelementptr inbounds nuw %struct.PJ_DATUMS, ptr %10, i64 %indvars.iv.next - %14 = load ptr, ptr %13, align 8, !tbaa !39 - %.not100 = icmp eq ptr %14, null - br i1 %.not100, label %.critedge114, label %.lr.ph, !llvm.loop !41 + %12 = getelementptr inbounds nuw %struct.PJ_DATUMS, ptr %9, i64 %indvars.iv.next + %13 = load ptr, ptr %12, align 8, !tbaa !39 + %.not98 = icmp eq ptr %13, null + br i1 %.not98, label %.critedge112, label %.lr.ph, !llvm.loop !41 -.lr.ph: ; preds = %.critedge, %12 +.lr.ph: ; preds = %.critedge, %11 %indvars.iv = phi i64 [ %indvars.iv.next, %12 ], [ 0, %.critedge ] - %15 = phi ptr [ %14, %12 ], [ %11, %.critedge ] - %16 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) %15) #7 - %.not101 = icmp eq i32 %16, 0 - br i1 %.not101, label %.critedge4, label %12 + %14 = phi ptr [ %13, %12 ], [ %10, %.critedge ] + %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.046.0..sroa.046.0..cast, ptr noundef nonnull dereferenceable(1) %14) #7 + %.not99 = icmp eq i32 %15, 0 + br i1 %.not99, label %.critedge4, label %11 -.critedge114: ; preds = %12, %.critedge +.critedge112: ; preds = %11, %.critedge tail call void (ptr, i32, ptr, ...) @_Z6pj_logP6pj_ctxiPKcz(ptr noundef %0, i32 noundef 1, ptr noundef nonnull @.str.1) tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %0, i32 noundef 1027) - br label %.critedge113.thread + br label %.critedge111.thread .critedge4: ; preds = %.lr.ph - %17 = getelementptr inbounds nuw %struct.PJ_DATUMS, ptr %10, i64 %indvars.iv - %18 = getelementptr inbounds nuw i8, ptr %17, i64 16 - %19 = load ptr, ptr %18, align 8, !tbaa !42 - %.not102 = icmp eq ptr %19, null - br i1 %.not102, label %29, label %20 - -20: ; preds = %.critedge4 - %char0 = load i8, ptr %19, align 1 - %.not103 = icmp eq i8 %char0, 0 - br i1 %.not103, label %29, label %21 - -21: ; preds = %20 + %16 = getelementptr inbounds nuw %struct.PJ_DATUMS, ptr %9, i64 %indvars.iv + %17 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %18 = load ptr, ptr %17, align 8, !tbaa !42 + %.not100 = icmp eq ptr %18, null + br i1 %.not100, label %28, label %19 + +19: ; preds = %.critedge4 + %char0 = load i8, ptr %18, align 1 + %.not101 = icmp eq i8 %char0, 0 + br i1 %.not101, label %28, label %20 + +20: ; preds = %19 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(7) %4, ptr noundef nonnull align 1 dereferenceable(7) @.str.2, i64 7, i1 false) #8 - %22 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #7 - %23 = getelementptr inbounds nuw i8, ptr %4, i64 %22 - %24 = sub i64 99, %22 - %25 = call ptr @strncpy(ptr noundef nonnull %23, ptr noundef nonnull %19, i64 noundef %24) #8 - %26 = getelementptr inbounds nuw i8, ptr %4, i64 99 - store i8 0, ptr %26, align 1, !tbaa !43 - %27 = call noundef ptr @_Z10pj_mkparamPKc(ptr noundef nonnull %4) - %.not104 = icmp eq ptr %27, null - br i1 %.not104, label %.thread, label %28 - -.thread: ; preds = %21 + %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #7 + %22 = getelementptr inbounds nuw i8, ptr %4, i64 %21 + %23 = sub i64 99, %21 + %24 = call ptr @strncpy(ptr noundef nonnull %22, ptr noundef nonnull %18, i64 noundef %23) #8 + %25 = getelementptr inbounds nuw i8, ptr %4, i64 99 + store i8 0, ptr %25, align 1, !tbaa !43 + %26 = call noundef ptr @_Z10pj_mkparamPKc(ptr noundef nonnull %4) + %.not102 = icmp eq ptr %26, null + br i1 %.not102, label %.thread, label %27 + +.thread: ; preds = %20 call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %0, i32 noundef 4096) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %.critedge113.thread + br label %.critedge111.thread -28: ; preds = %21 - store ptr %27, ptr %.081, align 8, !tbaa !36 +27: ; preds = %20 + store ptr %26, ptr %.081, align 8, !tbaa !36 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %29 - -29: ; preds = %28, %20, %.critedge4 - %.182 = phi ptr [ %27, %28 ], [ %.081, %20 ], [ %.081, %.critedge4 ] - %30 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %31 = load ptr, ptr %30, align 8, !tbaa !44 - %.not105 = icmp eq ptr %31, null - br i1 %.not105, label %.critedge113, label %32 - -32: ; preds = %29 - %char0106 = load i8, ptr %31, align 1 - %.not107 = icmp eq i8 %char0106, 0 - br i1 %.not107, label %.critedge113, label %33 - -33: ; preds = %32 - %34 = call noundef ptr @_Z10pj_mkparamPKc(ptr noundef nonnull %31) - %.not108 = icmp eq ptr %34, null - br i1 %.not108, label %.thread116, label %35 - -.thread116: ; preds = %33 + br label %28 + +28: ; preds = %27, %19, %.critedge4 + %.182 = phi ptr [ %26, %28 ], [ %.081, %20 ], [ %.081, %.critedge4 ] + %29 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %30 = load ptr, ptr %29, align 8, !tbaa !44 + %.not103 = icmp eq ptr %30, null + br i1 %.not103, label %.critedge111, label %31 + +31: ; preds = %28 + %char0104 = load i8, ptr %30, align 1 + %.not105 = icmp eq i8 %char0104, 0 + br i1 %.not105, label %.critedge111, label %32 + +32: ; preds = %31 + %33 = call noundef ptr @_Z10pj_mkparamPKc(ptr noundef nonnull %30) + %.not106 = icmp eq ptr %33, null + br i1 %.not106, label %.thread114, label %34 + +.thread114: ; preds = %32 call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %0, i32 noundef 4096) - br label %.critedge113.thread + br label %.critedge111.thread -35: ; preds = %33 - store ptr %34, ptr %.182, align 8, !tbaa !36 - br label %.critedge113 +34: ; preds = %32 + store ptr %33, ptr %.182, align 8, !tbaa !36 + br label %.critedge111 -.critedge113: ; preds = %35, %32, %29, %3 - %36 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.3) - %.not109 = icmp eq i64 %36, 0 - br i1 %.not109, label %38, label %37 +.critedge111: ; preds = %34, %31, %28, %3 + %35 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.3) + %.not107 = icmp eq i64 %35, 0 + br i1 %.not107, label %37, label %36 -37: ; preds = %.critedge113 +36: ; preds = %.critedge111 store i32 3, ptr %5, align 8, !tbaa !3 - br label %.critedge113.thread - -38: ; preds = %.critedge113 - %39 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.4) - %.not110 = icmp eq i64 %39, 0 - br i1 %.not110, label %.critedge113.thread, label %40 - -40: ; preds = %38 - %41 = inttoptr i64 %39 to ptr - %42 = getelementptr inbounds nuw i8, ptr %2, i64 536 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %42, i8 0, i64 56, i1 false) - %43 = load i8, ptr %41, align 1, !tbaa !43 - %.not127 = icmp eq i8 %43, 0 - br i1 %.not127, label %._crit_edge.thread, label %.lr.ph126 - -._crit_edge.thread: ; preds = %40 - %44 = getelementptr inbounds nuw i8, ptr %2, i64 560 - br label %58 - -.lr.ph126: ; preds = %40, %.critedge6 - %indvars.iv132 = phi i64 [ %indvars.iv.next133, %.critedge6 ], [ 0, %40 ] - %.0125 = phi ptr [ %spec.select, %.critedge6 ], [ %41, %40 ] - %45 = call noundef double @_Z7pj_atofPKc(ptr noundef nonnull %.0125) - %indvars.iv.next133 = add nuw nsw i64 %indvars.iv132, 1 - %46 = getelementptr inbounds nuw double, ptr %42, i64 %indvars.iv132 - store double %45, ptr %46, align 8, !tbaa !45 - br label %47 - -47: ; preds = %49, %.lr.ph126 - %.1 = phi ptr [ %.0125, %.lr.ph126 ], [ %50, %49 ] - %48 = load i8, ptr %.1, align 1, !tbaa !43 - switch i8 %48, label %49 [ + br label %.critedge111.thread + +37: ; preds = %.critedge111 + %38 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.4) + %.not108 = icmp eq i64 %38, 0 + br i1 %.not108, label %.critedge111.thread, label %39 + +39: ; preds = %37 + %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %38 to ptr + %40 = getelementptr inbounds nuw i8, ptr %2, i64 536 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %40, i8 0, i64 56, i1 false) + %41 = load i8, ptr %.sroa.0.0..sroa.0.0..cast, align 1, !tbaa !43 + %.not125 = icmp eq i8 %41, 0 + br i1 %.not125, label %._crit_edge.thread, label %.lr.ph124 + +._crit_edge.thread: ; preds = %39 + %42 = getelementptr inbounds nuw i8, ptr %2, i64 560 + br label %56 + +.lr.ph124: ; preds = %39, %.critedge6 + %indvars.iv130 = phi i64 [ %indvars.iv.next131, %.critedge6 ], [ 0, %40 ] + %.0123 = phi ptr [ %spec.select, %.critedge6 ], [ %.sroa.0.0..sroa.0.0..cast, %40 ] + %43 = call noundef double @_Z7pj_atofPKc(ptr noundef nonnull %.0123) + %indvars.iv.next131 = add nuw nsw i64 %indvars.iv130, 1 + %44 = getelementptr inbounds nuw double, ptr %40, i64 %indvars.iv130 + store double %43, ptr %44, align 8, !tbaa !45 + br label %45 + +45: ; preds = %47, %.lr.ph124 + %.1 = phi ptr [ %.0123, %.lr.ph126 ], [ %48, %49 ] + %46 = load i8, ptr %.1, align 1, !tbaa !43 + switch i8 %46, label %49 [ i8 0, label %.critedge6 i8 44, label %.critedge6 ] -49: ; preds = %47 - %50 = getelementptr inbounds nuw i8, ptr %.1, i64 1 - br label %47, !llvm.loop !46 +47: ; preds = %45 + %48 = getelementptr inbounds nuw i8, ptr %.1, i64 1 + br label %45, !llvm.loop !46 -.critedge6: ; preds = %47, %47 - %51 = icmp eq i8 %48, 44 - %spec.select.idx = zext i1 %51 to i64 +.critedge6: ; preds = %45, %45 + %49 = icmp eq i8 %46, 44 + %spec.select.idx = zext i1 %49 to i64 %spec.select = getelementptr inbounds nuw i8, ptr %.1, i64 %spec.select.idx - %52 = load i8, ptr %spec.select, align 1, !tbaa !43 - %53 = icmp ne i8 %52, 0 - %54 = icmp samesign ult i64 %indvars.iv132, 6 - %55 = select i1 %53, i1 %54, i1 false - br i1 %55, label %.lr.ph126, label %._crit_edge, !llvm.loop !47 + %50 = load i8, ptr %spec.select, align 1, !tbaa !43 + %51 = icmp ne i8 %50, 0 + %52 = icmp samesign ult i64 %indvars.iv130, 6 + %53 = select i1 %51, i1 %52, i1 false + br i1 %53, label %.lr.ph124, label %._crit_edge, !llvm.loop !47 ._crit_edge: ; preds = %.critedge6 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %2, i64 560 %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !45 - %56 = getelementptr inbounds nuw i8, ptr %2, i64 560 - %57 = fcmp une double %.pre, 0.000000e+00 - br i1 %57, label %._crit_edge._crit_edge, label %58 + %54 = getelementptr inbounds nuw i8, ptr %2, i64 560 + %55 = fcmp une double %.pre, 0.000000e+00 + br i1 %55, label %._crit_edge._crit_edge, label %56 ._crit_edge._crit_edge: ; preds = %._crit_edge - %.phi.trans.insert135 = getelementptr inbounds nuw i8, ptr %2, i64 568 - %.pre136 = load double, ptr %.phi.trans.insert135, align 8, !tbaa !45 - br label %72 - -58: ; preds = %._crit_edge.thread, %._crit_edge - %59 = phi ptr [ %44, %._crit_edge.thread ], [ %56, %._crit_edge ] - %60 = phi double [ 0.000000e+00, %._crit_edge.thread ], [ %.pre, %._crit_edge ] - %61 = getelementptr inbounds nuw i8, ptr %2, i64 568 - %62 = load double, ptr %61, align 8, !tbaa !45 - %63 = fcmp une double %62, 0.000000e+00 - br i1 %63, label %72, label %64 - -64: ; preds = %58 - %65 = getelementptr inbounds nuw i8, ptr %2, i64 576 - %66 = load double, ptr %65, align 8, !tbaa !45 - %67 = fcmp une double %66, 0.000000e+00 - br i1 %67, label %72, label %68 - -68: ; preds = %64 - %69 = getelementptr inbounds nuw i8, ptr %2, i64 584 - %70 = load double, ptr %69, align 8, !tbaa !45 - %71 = fcmp une double %70, 0.000000e+00 - br i1 %71, label %72, label %86 - -72: ; preds = %._crit_edge._crit_edge, %68, %64, %58 - %73 = phi ptr [ %56, %._crit_edge._crit_edge ], [ %59, %68 ], [ %59, %64 ], [ %59, %58 ] - %74 = phi double [ %.pre, %._crit_edge._crit_edge ], [ %60, %68 ], [ %60, %64 ], [ %60, %58 ] - %75 = phi double [ %.pre136, %._crit_edge._crit_edge ], [ %62, %68 ], [ %62, %64 ], [ %62, %58 ] + %.phi.trans.insert133 = getelementptr inbounds nuw i8, ptr %2, i64 568 + %.pre134 = load double, ptr %.phi.trans.insert133, align 8, !tbaa !45 + br label %70 + +56: ; preds = %._crit_edge.thread, %._crit_edge + %57 = phi ptr [ %42, %._crit_edge.thread ], [ %54, %._crit_edge ] + %58 = phi double [ 0.000000e+00, %._crit_edge.thread ], [ %.pre, %._crit_edge ] + %59 = getelementptr inbounds nuw i8, ptr %2, i64 568 + %60 = load double, ptr %59, align 8, !tbaa !45 + %61 = fcmp une double %60, 0.000000e+00 + br i1 %61, label %70, label %62 + +62: ; preds = %56 + %63 = getelementptr inbounds nuw i8, ptr %2, i64 576 + %64 = load double, ptr %63, align 8, !tbaa !45 + %65 = fcmp une double %64, 0.000000e+00 + br i1 %65, label %70, label %66 + +66: ; preds = %62 + %67 = getelementptr inbounds nuw i8, ptr %2, i64 584 + %68 = load double, ptr %67, align 8, !tbaa !45 + %69 = fcmp une double %68, 0.000000e+00 + br i1 %69, label %70, label %84 + +70: ; preds = %._crit_edge._crit_edge, %66, %62, %56 + %71 = phi ptr [ %54, %._crit_edge._crit_edge ], [ %57, %68 ], [ %57, %64 ], [ %57, %58 ] + %72 = phi double [ %.pre, %._crit_edge._crit_edge ], [ %58, %68 ], [ %58, %64 ], [ %58, %58 ] + %73 = phi double [ %.pre134, %._crit_edge._crit_edge ], [ %60, %68 ], [ %60, %64 ], [ %60, %58 ] store i32 2, ptr %5, align 8, !tbaa !3 - %76 = fmul double %74, 0x3ED455A5B2FF8F9D - store double %76, ptr %73, align 8, !tbaa !45 - %77 = getelementptr inbounds nuw i8, ptr %2, i64 568 - %78 = fmul double %75, 0x3ED455A5B2FF8F9D - store double %78, ptr %77, align 8, !tbaa !45 - %79 = getelementptr inbounds nuw i8, ptr %2, i64 576 - %80 = load double, ptr %79, align 8, !tbaa !45 - %81 = fmul double %80, 0x3ED455A5B2FF8F9D - store double %81, ptr %79, align 8, !tbaa !45 - %82 = getelementptr inbounds nuw i8, ptr %2, i64 584 - %83 = load double, ptr %82, align 8, !tbaa !45 - %84 = fdiv double %83, 1.000000e+06 - %85 = fadd double %84, 1.000000e+00 - store double %85, ptr %82, align 8, !tbaa !45 - br label %.critedge113.thread - -86: ; preds = %68 + %74 = fmul double %72, 0x3ED455A5B2FF8F9D + store double %74, ptr %71, align 8, !tbaa !45 + %75 = getelementptr inbounds nuw i8, ptr %2, i64 568 + %76 = fmul double %73, 0x3ED455A5B2FF8F9D + store double %76, ptr %75, align 8, !tbaa !45 + %77 = getelementptr inbounds nuw i8, ptr %2, i64 576 + %78 = load double, ptr %77, align 8, !tbaa !45 + %79 = fmul double %78, 0x3ED455A5B2FF8F9D + store double %79, ptr %77, align 8, !tbaa !45 + %80 = getelementptr inbounds nuw i8, ptr %2, i64 584 + %81 = load double, ptr %80, align 8, !tbaa !45 + %82 = fdiv double %81, 1.000000e+06 + %83 = fadd double %82, 1.000000e+00 + store double %83, ptr %80, align 8, !tbaa !45 + br label %.critedge111.thread + +84: ; preds = %66 store i32 1, ptr %5, align 8, !tbaa !3 - br label %.critedge113.thread + br label %.critedge111.thread -.critedge113.thread: ; preds = %.preheader, %.thread116, %.thread, %.critedge114, %37, %38, %86, %72 +.critedge111.thread: ; preds = %.preheader, %.thread114, %.thread, %.critedge112, %36, %37, %84, %70 %.6 = phi i32 [ 0, %72 ], [ 0, %86 ], [ 0, %38 ], [ 0, %37 ], [ 1, %.thread116 ], [ 1, %.thread ], [ 1, %.critedge114 ], [ -1, %.preheader ] ret i32 %.6 } diff --git a/bench/proj/optimized/geod_set.ll b/bench/proj/optimized/geod_set.ll index 35836675f77..7889aba1e43 100644 --- a/bench/proj/optimized/geod_set.ll +++ b/bench/proj/optimized/geod_set.ll @@ -69,22 +69,22 @@ define hidden void @geod_set(i32 noundef %0, ptr noundef readonly captures(none) ._crit_edge: ; preds = %18, %.thread, %9 %12 = tail call noundef ptr @_Z18pj_get_default_ctxv() %13 = call noundef i32 @_Z10pj_ell_setP6pj_ctxP8ARG_listPdS3_(ptr noundef %12, ptr noundef %8, ptr noundef nonnull @GEODESIC, ptr noundef nonnull %3) - %.not68 = icmp eq i32 %13, 0 - br i1 %.not68, label %24, label %23 + %.not67 = icmp eq i32 %13, 0 + br i1 %.not67, label %24, label %23 .lr.ph: ; preds = %.lr.ph.preheader, %18 %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %18 ] - %.05979 = phi ptr [ %8, %.lr.ph.preheader ], [ %19, %18 ] + %.05978 = phi ptr [ %8, %.lr.ph.preheader ], [ %19, %18 ] %14 = getelementptr inbounds nuw ptr, ptr %1, i64 %indvars.iv %15 = load ptr, ptr %14, align 8, !tbaa !4 %16 = tail call noundef ptr @_Z10pj_mkparamPKc(ptr noundef %15) - store ptr %16, ptr %.05979, align 8, !tbaa !9 - %.not77 = icmp eq ptr %16, null - br i1 %.not77, label %17, label %18 + store ptr %16, ptr %.05978, align 8, !tbaa !9 + %.not76 = icmp eq ptr %16, null + br i1 %.not76, label %17, label %18 17: ; preds = %.lr.ph tail call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.1) - %.pre = load ptr, ptr %.05979, align 8, !tbaa !9 + %.pre = load ptr, ptr %.05978, align 8, !tbaa !9 br label %18 18: ; preds = %17, %.lr.ph @@ -101,172 +101,172 @@ define hidden void @geod_set(i32 noundef %0, ptr noundef readonly captures(none) 24: ; preds = %23, %._crit_edge %25 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.3) - %26 = inttoptr i64 %25 to ptr - %.not69 = icmp eq i64 %25, 0 - br i1 %.not69, label %44, label %27 - -27: ; preds = %24 - %28 = call ptr @proj_get_units_from_database(ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.4, i32 noundef 0, ptr noundef null) - %.not70 = icmp eq ptr %28, null - br i1 %.not70, label %.critedge96, label %.lr.ph83.split - -.lr.ph83.split: ; preds = %27 - %29 = load ptr, ptr %28, align 8, !tbaa !13 - %.not7187 = icmp eq ptr %29, null - br i1 %.not7187, label %.critedge96, label %.lr.ph90 - -.critedge: ; preds = %40 - call void @proj_unit_list_destroy(ptr noundef nonnull %28) - br i1 %.1, label %45, label %43 - -.lr.ph90: ; preds = %.lr.ph83.split, %40 - %indvars.iv98 = phi i64 [ %indvars.iv.next99, %40 ], [ 0, %.lr.ph83.split ] - %30 = phi ptr [ %42, %40 ], [ %29, %.lr.ph83.split ] - %.0618188 = phi i1 [ %.1, %40 ], [ false, %.lr.ph83.split ] - %31 = getelementptr inbounds nuw i8, ptr %30, i64 40 - %32 = load ptr, ptr %31, align 8, !tbaa !14 - %.not76 = icmp eq ptr %32, null - br i1 %.not76, label %40, label %33 - -33: ; preds = %.lr.ph90 - %34 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) %26) #7 - %35 = icmp eq i32 %34, 0 - br i1 %35, label %36, label %40 - -36: ; preds = %33 - %37 = getelementptr inbounds nuw i8, ptr %30, i64 32 - %38 = load double, ptr %37, align 8, !tbaa !18 - store double %38, ptr @to_meter, align 8, !tbaa !19 - %39 = fdiv double 1.000000e+00, %38 - store double %39, ptr @fr_meter, align 8, !tbaa !19 - br label %40 - -40: ; preds = %.lr.ph90, %33, %36 - %.1 = phi i1 [ true, %36 ], [ %.0618188, %33 ], [ %.0618188, %.lr.ph90 ] - %indvars.iv.next99 = add nuw nsw i64 %indvars.iv98, 1 - %41 = getelementptr inbounds nuw ptr, ptr %28, i64 %indvars.iv.next99 - %42 = load ptr, ptr %41, align 8, !tbaa !13 - %.not71 = icmp eq ptr %42, null - br i1 %.not71, label %.critedge, label %.lr.ph90 - -.critedge96: ; preds = %.lr.ph83.split, %27 - call void @proj_unit_list_destroy(ptr noundef %28) - br label %43 - -43: ; preds = %.critedge96, %.critedge - call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.5, ptr noundef nonnull %26) - br label %45 - -44: ; preds = %24 + %.sroa.026.0..sroa.026.0..cast = inttoptr i64 %25 to ptr + %.not68 = icmp eq i64 %25, 0 + br i1 %.not68, label %43, label %26 + +26: ; preds = %24 + %27 = call ptr @proj_get_units_from_database(ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.4, i32 noundef 0, ptr noundef null) + %.not69 = icmp eq ptr %27, null + br i1 %.not69, label %.critedge95, label %.lr.ph82.split + +.lr.ph82.split: ; preds = %26 + %28 = load ptr, ptr %27, align 8, !tbaa !13 + %.not7086 = icmp eq ptr %28, null + br i1 %.not7086, label %.critedge95, label %.lr.ph89 + +.critedge: ; preds = %39 + call void @proj_unit_list_destroy(ptr noundef nonnull %27) + br i1 %.1, label %44, label %42 + +.lr.ph89: ; preds = %.lr.ph82.split, %39 + %indvars.iv97 = phi i64 [ %indvars.iv.next98, %40 ], [ 0, %.lr.ph83.split ] + %29 = phi ptr [ %41, %40 ], [ %28, %.lr.ph83.split ] + %.0618087 = phi i1 [ %.1, %40 ], [ false, %.lr.ph83.split ] + %30 = getelementptr inbounds nuw i8, ptr %29, i64 40 + %31 = load ptr, ptr %30, align 8, !tbaa !14 + %.not75 = icmp eq ptr %31, null + br i1 %.not75, label %39, label %32 + +32: ; preds = %.lr.ph89 + %33 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) %.sroa.026.0..sroa.026.0..cast) #7 + %34 = icmp eq i32 %33, 0 + br i1 %34, label %35, label %39 + +35: ; preds = %32 + %36 = getelementptr inbounds nuw i8, ptr %29, i64 32 + %37 = load double, ptr %36, align 8, !tbaa !18 + store double %37, ptr @to_meter, align 8, !tbaa !19 + %38 = fdiv double 1.000000e+00, %37 + store double %38, ptr @fr_meter, align 8, !tbaa !19 + br label %39 + +39: ; preds = %.lr.ph89, %32, %35 + %.1 = phi i1 [ true, %36 ], [ %.0618087, %33 ], [ %.0618187, %.lr.ph90 ] + %indvars.iv.next98 = add nuw nsw i64 %indvars.iv97, 1 + %40 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv.next98 + %41 = load ptr, ptr %40, align 8, !tbaa !13 + %.not70 = icmp eq ptr %41, null + br i1 %.not70, label %.critedge, label %.lr.ph89 + +.critedge95: ; preds = %.lr.ph82.split, %26 + call void @proj_unit_list_destroy(ptr noundef %27) + br label %42 + +42: ; preds = %.critedge95, %.critedge + call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.5, ptr noundef nonnull %.sroa.026.0..sroa.026.0..cast) + br label %44 + +43: ; preds = %24 store double 1.000000e+00, ptr @fr_meter, align 8, !tbaa !19 store double 1.000000e+00, ptr @to_meter, align 8, !tbaa !19 - br label %45 - -45: ; preds = %.critedge, %43, %44 - %46 = load double, ptr %3, align 8, !tbaa !19 - %47 = fsub double 1.000000e+00, %46 - %48 = call double @sqrt(double noundef %47) #8, !tbaa !20 - %49 = fadd double %48, 1.000000e+00 - %50 = fdiv double %46, %49 - store double %50, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 8), align 8, !tbaa !21 + br label %44 + +44: ; preds = %.critedge, %42, %43 + %45 = load double, ptr %3, align 8, !tbaa !19 + %46 = fsub double 1.000000e+00, %45 + %47 = call double @sqrt(double noundef %46) #8, !tbaa !20 + %48 = fadd double %47, 1.000000e+00 + %49 = fdiv double %45, %48 + store double %49, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 8), align 8, !tbaa !21 call void @geod_ini() - %51 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.6) - %52 = and i64 %51, 4294967295 - %.not72 = icmp eq i64 %52, 0 - br i1 %.not72, label %89, label %53 - -53: ; preds = %45 - %54 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.7) - store i64 %54, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 24), align 8, !tbaa !23 - %55 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.8) - store i64 %55, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 16), align 8, !tbaa !24 - %56 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.9) - %57 = and i64 %56, 4294967295 - %.not73 = icmp eq i64 %57, 0 - br i1 %.not73, label %61, label %58 - -58: ; preds = %53 - %59 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.10) - store i64 %59, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 48), align 8, !tbaa !25 - %60 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.11) - store i64 %60, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 40), align 8, !tbaa !26 + %50 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.6) + %51 = and i64 %50, 4294967295 + %.not71 = icmp eq i64 %51, 0 + br i1 %.not71, label %88, label %52 + +52: ; preds = %44 + %53 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.7) + store i64 %53, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 24), align 8, !tbaa !23 + %54 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.8) + store i64 %54, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 16), align 8, !tbaa !24 + %55 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.9) + %56 = and i64 %55, 4294967295 + %.not72 = icmp eq i64 %56, 0 + br i1 %.not72, label %60, label %57 + +57: ; preds = %52 + %58 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.10) + store i64 %58, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 48), align 8, !tbaa !25 + %59 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.11) + store i64 %59, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 40), align 8, !tbaa !26 call void @geod_inv() call void @geod_pre() - br label %67 - -61: ; preds = %53 - %62 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.12) - store i64 %62, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 64), align 8, !tbaa !27 - %63 = and i64 %62, 9223372036854775807 - %.not74 = icmp eq i64 %63, 0 - br i1 %.not74, label %66, label %64 - -64: ; preds = %61 - %65 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.13) - store i64 %65, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 32), align 8, !tbaa !28 + br label %66 + +60: ; preds = %52 + %61 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.12) + store i64 %61, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 64), align 8, !tbaa !27 + %62 = and i64 %61, 9223372036854775807 + %.not73 = icmp eq i64 %62, 0 + br i1 %.not73, label %65, label %63 + +63: ; preds = %60 + %64 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.13) + store i64 %64, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 32), align 8, !tbaa !28 call void @geod_pre() call void @geod_for() - br label %67 + br label %66 -66: ; preds = %61 +65: ; preds = %60 call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.14) - br label %67 + br label %66 -67: ; preds = %64, %66, %58 - %68 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.15) - %.sroa.03.0.extract.trunc = trunc i64 %68 to i32 +66: ; preds = %63, %65, %57 + %67 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.15) + %.sroa.03.0.extract.trunc = trunc i64 %67 to i32 store i32 %.sroa.03.0.extract.trunc, ptr @n_alpha, align 4, !tbaa !20 - %69 = icmp sgt i32 %.sroa.03.0.extract.trunc, 0 - br i1 %69, label %70, label %75 + %68 = icmp sgt i32 %.sroa.03.0.extract.trunc, 0 + br i1 %68, label %69, label %74 -70: ; preds = %67 - %71 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.16) - store i64 %71, ptr @del_alpha, align 8, !tbaa !19 - %72 = and i64 %71, 9223372036854775807 - %73 = icmp eq i64 %72, 0 - br i1 %73, label %74, label %89 +69: ; preds = %66 + %70 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.16) + store i64 %70, ptr @del_alpha, align 8, !tbaa !19 + %71 = and i64 %70, 9223372036854775807 + %72 = icmp eq i64 %71, 0 + br i1 %72, label %73, label %88 -74: ; preds = %70 +73: ; preds = %69 call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.17) - br label %89 - -75: ; preds = %67 - %76 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.18) - %77 = bitcast i64 %76 to double - %78 = fcmp une double %77, 0.000000e+00 - br i1 %78, label %79, label %85 - -79: ; preds = %75 - %80 = call double @llvm.fabs.f64(double %77) - %81 = load double, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 64), align 8, !tbaa !27 - %82 = fdiv double %81, %80 - %83 = fadd double %82, 5.000000e-01 - %84 = fptosi double %83 to i32 - store i32 %84, ptr @n_S, align 4, !tbaa !20 - br label %89 - -85: ; preds = %75 - %86 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.19) - %.sroa.0.0.extract.trunc = trunc i64 %86 to i32 + br label %88 + +74: ; preds = %66 + %75 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.18) + %76 = bitcast i64 %75 to double + %77 = fcmp une double %76, 0.000000e+00 + br i1 %77, label %78, label %84 + +78: ; preds = %74 + %79 = call double @llvm.fabs.f64(double %76) + %80 = load double, ptr getelementptr inbounds nuw (i8, ptr @GEODESIC, i64 64), align 8, !tbaa !27 + %81 = fdiv double %80, %79 + %82 = fadd double %81, 5.000000e-01 + %83 = fptosi double %82 to i32 + store i32 %83, ptr @n_S, align 4, !tbaa !20 + br label %88 + +84: ; preds = %74 + %85 = call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef null, ptr noundef %8, ptr noundef nonnull @.str.19) + %.sroa.0.0.extract.trunc = trunc i64 %85 to i32 store i32 %.sroa.0.0.extract.trunc, ptr @n_S, align 4, !tbaa !20 - %87 = icmp slt i32 %.sroa.0.0.extract.trunc, 1 - br i1 %87, label %88, label %89 + %86 = icmp slt i32 %.sroa.0.0.extract.trunc, 1 + br i1 %86, label %87, label %88 -88: ; preds = %85 +87: ; preds = %84 call void (i32, ptr, ...) @_Z5emessiPKcz(i32 noundef 1, ptr noundef nonnull @.str.20) - br label %89 + br label %88 -89: ; preds = %74, %70, %85, %88, %79, %45 - br i1 %.not, label %._crit_edge95, label %.lr.ph94 +88: ; preds = %73, %69, %84, %87, %78, %44 + br i1 %.not, label %._crit_edge94, label %.lr.ph93 -.lr.ph94: ; preds = %89, %.lr.ph94 - %.092 = phi ptr [ %90, %.lr.ph94 ], [ %8, %89 ] - %90 = load ptr, ptr %.092, align 8, !tbaa !9 - call void @free(ptr noundef nonnull %.092) #8 - %.not75 = icmp eq ptr %90, null - br i1 %.not75, label %._crit_edge95, label %.lr.ph94, !llvm.loop !29 +.lr.ph93: ; preds = %88, %.lr.ph93 + %.091 = phi ptr [ %89, %.lr.ph94 ], [ %8, %89 ] + %89 = load ptr, ptr %.091, align 8, !tbaa !9 + call void @free(ptr noundef nonnull %.091) #8 + %.not74 = icmp eq ptr %89, null + br i1 %.not74, label %._crit_edge94, label %.lr.ph93, !llvm.loop !29 -._crit_edge95: ; preds = %.lr.ph94, %89 +._crit_edge94: ; preds = %.lr.ph93, %88 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void } diff --git a/bench/proj/optimized/helmert.ll b/bench/proj/optimized/helmert.ll index 3d275436309..c776f439695 100644 --- a/bench/proj/optimized/helmert.ll +++ b/bench/proj/optimized/helmert.ll @@ -1083,44 +1083,44 @@ define internal fastcc noundef ptr @_ZL15read_conventionP8PJconsts(ptr noundef % %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 %9 = load ptr, ptr %8, align 8, !tbaa !40 %10 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %7, ptr noundef %9, ptr noundef nonnull @.str.60) - %11 = inttoptr i64 %10 to ptr - %.not21 = icmp eq i64 %10, 0 - br i1 %.not21, label %.thread.sink.split, label %12 + %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %10 to ptr + %.not20 = icmp eq i64 %10, 0 + br i1 %.not20, label %.thread.sink.split, label %11 -12: ; preds = %6 - %13 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %11, ptr noundef nonnull dereferenceable(16) @.str.62) #12 - %14 = icmp eq i32 %13, 0 - br i1 %14, label %18, label %15 +11: ; preds = %6 + %12 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(16) @.str.62) #12 + %13 = icmp eq i32 %12, 0 + br i1 %13, label %17, label %14 -15: ; preds = %12 - %16 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %11, ptr noundef nonnull dereferenceable(17) @.str.63) #12 - %17 = icmp eq i32 %16, 0 - br i1 %17, label %18, label %.thread.sink.split +14: ; preds = %11 + %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(17) @.str.63) #12 + %16 = icmp eq i32 %15, 0 + br i1 %16, label %17, label %.thread.sink.split -18: ; preds = %15, %12 +17: ; preds = %14, %11 %.sink = phi i32 [ 1, %12 ], [ 0, %15 ] - %19 = getelementptr inbounds nuw i8, ptr %3, i64 316 - store i32 %.sink, ptr %19, align 4, !tbaa !82 - %20 = load ptr, ptr %8, align 8, !tbaa !40 - %21 = tail call noundef ptr @_Z15pj_param_existsP8ARG_listPKc(ptr noundef %20, ptr noundef nonnull @.str.4) - %.not22 = icmp eq ptr %21, null - br i1 %.not22, label %.thread, label %22 - -22: ; preds = %18 - %23 = getelementptr inbounds nuw i8, ptr %3, i64 316 - %24 = load i32, ptr %23, align 4, !tbaa !82 - %.not23 = icmp eq i32 %24, 0 - br i1 %.not23, label %.thread.sink.split, label %.thread - -.thread.sink.split: ; preds = %22, %15, %6 + %18 = getelementptr inbounds nuw i8, ptr %3, i64 316 + store i32 %.sink, ptr %18, align 4, !tbaa !82 + %19 = load ptr, ptr %8, align 8, !tbaa !40 + %20 = tail call noundef ptr @_Z15pj_param_existsP8ARG_listPKc(ptr noundef %19, ptr noundef nonnull @.str.4) + %.not21 = icmp eq ptr %20, null + br i1 %.not21, label %.thread, label %21 + +21: ; preds = %17 + %22 = getelementptr inbounds nuw i8, ptr %3, i64 316 + %23 = load i32, ptr %22, align 4, !tbaa !82 + %.not22 = icmp eq i32 %23, 0 + br i1 %.not22, label %.thread.sink.split, label %.thread + +.thread.sink.split: ; preds = %21, %14, %6 %.str.61.sink = phi ptr [ @.str.61, %6 ], [ @.str.64, %15 ], [ @.str.65, %22 ] - %.sink27 = phi i32 [ 1026, %6 ], [ 1027, %15 ], [ 1027, %22 ] + %.sink26 = phi i32 [ 1026, %6 ], [ 1027, %15 ], [ 1027, %22 ] tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull %.str.61.sink) - %25 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef %.sink27) + %24 = tail call noundef ptr @_Z21pj_default_destructorP8PJconstsi(ptr noundef nonnull %0, i32 noundef %.sink26) br label %.thread -.thread: ; preds = %.thread.sink.split, %1, %18, %22 - %.1 = phi ptr [ %0, %22 ], [ %0, %18 ], [ %0, %1 ], [ %25, %.thread.sink.split ] +.thread: ; preds = %.thread.sink.split, %1, %17, %21 + %.1 = phi ptr [ %0, %22 ], [ %0, %18 ], [ %0, %1 ], [ %24, %.thread.sink.split ] ret ptr %.1 } diff --git a/bench/proj/optimized/horner.ll b/bench/proj/optimized/horner.ll index feb437caed4..eabdc41b788 100644 --- a/bench/proj/optimized/horner.ll +++ b/bench/proj/optimized/horner.ll @@ -1219,45 +1219,45 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL11parse_coefsP8PJconstsPd br i1 %25, label %.lr.ph.preheader, label %.loopexit .lr.ph.preheader: ; preds = %20 - %26 = inttoptr i64 %24 to ptr + %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %24 to ptr %wide.trip.count = zext nneg i32 %3 to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %35 +.lr.ph: ; preds = %.lr.ph.preheader, %34 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %35 ] - %.02936 = phi ptr [ %26, %.lr.ph.preheader ], [ %.1, %35 ] + %.02936 = phi ptr [ %.sroa.0.0..sroa.0.0..cast, %.lr.ph.preheader ], [ %.1, %35 ] %.not = icmp eq i64 %indvars.iv, 0 - br i1 %.not, label %35, label %27 + br i1 %.not, label %34, label %26 -27: ; preds = %.lr.ph - %28 = load ptr, ptr %5, align 8, !tbaa !75 - %29 = icmp eq ptr %28, null - br i1 %29, label %32, label %30 +26: ; preds = %.lr.ph + %27 = load ptr, ptr %5, align 8, !tbaa !75 + %28 = icmp eq ptr %27, null + br i1 %28, label %31, label %29 -30: ; preds = %27 - %31 = load i8, ptr %28, align 1, !tbaa !76 - %.not34 = icmp eq i8 %31, 44 - br i1 %.not34, label %33, label %32 +29: ; preds = %26 + %30 = load i8, ptr %27, align 1, !tbaa !76 + %.not34 = icmp eq i8 %30, 44 + br i1 %.not34, label %32, label %31 -32: ; preds = %30, %27 +31: ; preds = %29, %26 call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.30, ptr noundef nonnull %2, i32 noundef %3) br label %.loopexit -33: ; preds = %30 - %34 = getelementptr inbounds nuw i8, ptr %28, i64 1 - store ptr %34, ptr %5, align 8, !tbaa !75 - br label %35 +32: ; preds = %29 + %33 = getelementptr inbounds nuw i8, ptr %27, i64 1 + store ptr %33, ptr %5, align 8, !tbaa !75 + br label %34 -35: ; preds = %33, %.lr.ph - %.1 = phi ptr [ %34, %33 ], [ %.02936, %.lr.ph ] - %36 = call noundef double @_Z9pj_strtodPKcPPc(ptr noundef %.1, ptr noundef nonnull %5) - %37 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv - store double %36, ptr %37, align 8, !tbaa !62 +34: ; preds = %32, %.lr.ph + %.1 = phi ptr [ %33, %33 ], [ %.02936, %.lr.ph ] + %35 = call noundef double @_Z9pj_strtodPKcPPc(ptr noundef %.1, ptr noundef nonnull %5) + %36 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv + store double %35, ptr %36, align 8, !tbaa !62 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !77 -.loopexit: ; preds = %35, %20, %32, %19, %10 +.loopexit: ; preds = %34, %20, %31, %19, %10 %.0 = phi i32 [ 0, %10 ], [ 0, %19 ], [ 0, %32 ], [ 1, %20 ], [ 1, %35 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.0 diff --git a/bench/proj/optimized/info.ll b/bench/proj/optimized/info.ll index 3f05c7b59ab..582907219bb 100644 --- a/bench/proj/optimized/info.ll +++ b/bench/proj/optimized/info.ll @@ -252,7 +252,7 @@ define void @proj_pj_info(ptr dead_on_unwind noalias writable writeonly sret(%st %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 store double -1.000000e+00, ptr %4, align 8, !tbaa !58 %5 = icmp eq ptr %1, null - br i1 %5, label %104, label %6 + br i1 %5, label %103, label %6 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %1, i64 816 @@ -306,7 +306,7 @@ define void @proj_pj_info(ptr dead_on_unwind noalias writable writeonly sret(%st store ptr @.str.2, ptr %29, align 8, !tbaa !88 %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr @.str.2, ptr %30, align 8, !tbaa !89 - br label %104 + br label %103 31: ; preds = %._crit_edge, %16, %6 %.0 = phi ptr [ %1, %6 ], [ %20, %16 ], [ %.3.ph, %._crit_edge ] @@ -316,158 +316,158 @@ define void @proj_pj_info(ptr dead_on_unwind noalias writable writeonly sret(%st %35 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %32, ptr noundef %34, ptr noundef nonnull @.str.3) %36 = and i64 %35, 4294967295 %.not = icmp eq i64 %36, 0 - br i1 %.not, label %42, label %37 + br i1 %.not, label %41, label %37 37: ; preds = %31 %38 = load ptr, ptr %.0, align 8, !tbaa !90 %39 = load ptr, ptr %33, align 8, !tbaa !91 %40 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %38, ptr noundef %39, ptr noundef nonnull @.str.4) - %41 = inttoptr i64 %40 to ptr - store ptr %41, ptr %0, align 8, !tbaa !87 - br label %42 - -42: ; preds = %37, %31 - %43 = getelementptr inbounds nuw i8, ptr %.0, i64 16 - %44 = load ptr, ptr %43, align 8, !tbaa !92 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %44, ptr %45, align 8, !tbaa !88 - %46 = getelementptr inbounds nuw i8, ptr %.0, i64 640 - %47 = load ptr, ptr %46, align 8, !tbaa !93 - %.not83 = icmp eq ptr %47, null - br i1 %.not83, label %93, label %48 - -48: ; preds = %42 - %49 = tail call ptr @__dynamic_cast(ptr nonnull %47, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj6common16IdentifiedObjectE, i64 0) #18 - %.not58 = icmp eq ptr %49, null - br i1 %.not58, label %53, label %50 - -50: ; preds = %48 - %51 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5osgeo4proj6common16IdentifiedObject7nameStrB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #20 - %52 = load ptr, ptr %51, align 8, !tbaa !23 - store ptr %52, ptr %45, align 8, !tbaa !88 - br label %53 - -53: ; preds = %50, %48 - %54 = tail call ptr @__dynamic_cast(ptr nonnull %47, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj9operation10ConversionE, i64 -1) #18 - %55 = icmp eq ptr %54, null - br i1 %55, label %57, label %56 - -56: ; preds = %53 + %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %40 to ptr + store ptr %.sroa.0.0..sroa.0.0..cast, ptr %0, align 8, !tbaa !87 + br label %41 + +41: ; preds = %37, %31 + %42 = getelementptr inbounds nuw i8, ptr %.0, i64 16 + %43 = load ptr, ptr %42, align 8, !tbaa !92 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %43, ptr %44, align 8, !tbaa !88 + %45 = getelementptr inbounds nuw i8, ptr %.0, i64 640 + %46 = load ptr, ptr %45, align 8, !tbaa !93 + %.not83 = icmp eq ptr %46, null + br i1 %.not83, label %92, label %47 + +47: ; preds = %41 + %48 = tail call ptr @__dynamic_cast(ptr nonnull %46, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj6common16IdentifiedObjectE, i64 0) #18 + %.not58 = icmp eq ptr %48, null + br i1 %.not58, label %52, label %49 + +49: ; preds = %47 + %50 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5osgeo4proj6common16IdentifiedObject7nameStrB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40) %48) #20 + %51 = load ptr, ptr %50, align 8, !tbaa !23 + store ptr %51, ptr %44, align 8, !tbaa !88 + br label %52 + +52: ; preds = %49, %47 + %53 = tail call ptr @__dynamic_cast(ptr nonnull %46, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj9operation10ConversionE, i64 -1) #18 + %54 = icmp eq ptr %53, null + br i1 %54, label %56, label %55 + +55: ; preds = %52 store double 0.000000e+00, ptr %4, align 8, !tbaa !58 - br label %93 - -57: ; preds = %53 - %58 = tail call ptr @__dynamic_cast(ptr nonnull %47, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj9operation19CoordinateOperationE, i64 0) #18 - %.not60 = icmp eq ptr %58, null - br i1 %.not60, label %93, label %59 - -59: ; preds = %57 - %60 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5osgeo4proj9operation19CoordinateOperation29coordinateOperationAccuraciesEv(ptr noundef nonnull align 8 dereferenceable(72) %58) - %61 = load ptr, ptr %60, align 8, !tbaa !94 - %62 = getelementptr inbounds nuw i8, ptr %60, i64 8 - %63 = load ptr, ptr %62, align 8, !tbaa !94 - %64 = icmp eq ptr %61, %63 - br i1 %64, label %93, label %65 - -65: ; preds = %59 - %66 = load ptr, ptr %61, align 8, !tbaa !96 - %67 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5osgeo4proj8metadata18PositionalAccuracy5valueB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #20 - %68 = load ptr, ptr %67, align 8, !tbaa !23 + br label %92 + +56: ; preds = %52 + %57 = tail call ptr @__dynamic_cast(ptr nonnull %46, ptr nonnull @_ZTIN5osgeo4proj4util10BaseObjectE, ptr nonnull @_ZTIN5osgeo4proj9operation19CoordinateOperationE, i64 0) #18 + %.not60 = icmp eq ptr %57, null + br i1 %.not60, label %92, label %58 + +58: ; preds = %56 + %59 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK5osgeo4proj9operation19CoordinateOperation29coordinateOperationAccuraciesEv(ptr noundef nonnull align 8 dereferenceable(72) %57) + %60 = load ptr, ptr %59, align 8, !tbaa !94 + %61 = getelementptr inbounds nuw i8, ptr %59, i64 8 + %62 = load ptr, ptr %61, align 8, !tbaa !94 + %63 = icmp eq ptr %60, %62 + br i1 %63, label %92, label %64 + +64: ; preds = %58 + %65 = load ptr, ptr %60, align 8, !tbaa !96 + %66 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5osgeo4proj8metadata18PositionalAccuracy5valueB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #20 + %67 = load ptr, ptr %66, align 8, !tbaa !23 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %69 = tail call ptr @__errno_location() #22 - %70 = load i32, ptr %69, align 4, !tbaa !55 - store i32 0, ptr %69, align 4, !tbaa !55 - %71 = call noundef double @strtod(ptr noundef %68, ptr noundef nonnull %3) - %72 = load ptr, ptr %3, align 8, !tbaa !56 - %73 = icmp eq ptr %72, %68 - br i1 %73, label %74, label %84 - -74: ; preds = %65 + %68 = tail call ptr @__errno_location() #22 + %69 = load i32, ptr %68, align 4, !tbaa !55 + store i32 0, ptr %68, align 4, !tbaa !55 + %70 = call noundef double @strtod(ptr noundef %67, ptr noundef nonnull %3) + %71 = load ptr, ptr %3, align 8, !tbaa !56 + %72 = icmp eq ptr %71, %67 + br i1 %72, label %73, label %83 + +73: ; preds = %64 invoke void @_ZSt24__throw_invalid_argumentPKc(ptr noundef nonnull @.str.7) #23 - to label %75 unwind label %76 + to label %75 unwind label %75 -75: ; preds = %74 +74: ; preds = %73 unreachable -76: ; preds = %.critedge.i.i, %74 - %77 = landingpad { ptr, i32 } +75: ; preds = %.critedge.i.i, %73 + %76 = landingpad { ptr, i32 } cleanup catch ptr @_ZTISt9exception - %78 = load i32, ptr %69, align 4, !tbaa !55 - %79 = icmp eq i32 %78, 0 - br i1 %79, label %80, label %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i + %77 = load i32, ptr %68, align 4, !tbaa !55 + %78 = icmp eq i32 %77, 0 + br i1 %78, label %79, label %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i -80: ; preds = %76 - store i32 %70, ptr %69, align 4, !tbaa !55 +79: ; preds = %75 + store i32 %69, ptr %68, align 4, !tbaa !55 br label %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i -_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i: ; preds = %80, %76 +_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i: ; preds = %79, %75 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %81 = extractvalue { ptr, i32 } %77, 1 - %82 = tail call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #18 - %83 = icmp eq i32 %81, %82 - br i1 %83, label %89, label %92 - -84: ; preds = %65 - %85 = load i32, ptr %69, align 4, !tbaa !55 - switch i32 %85, label %88 [ + %80 = extractvalue { ptr, i32 } %76, 1 + %81 = tail call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #18 + %82 = icmp eq i32 %80, %81 + br i1 %82, label %88, label %91 + +83: ; preds = %64 + %84 = load i32, ptr %68, align 4, !tbaa !55 + switch i32 %84, label %88 [ i32 34, label %.critedge.i.i - i32 0, label %87 + i32 0, label %86 ] -.critedge.i.i: ; preds = %84 +.critedge.i.i: ; preds = %83 invoke void @_ZSt20__throw_out_of_rangePKc(ptr noundef nonnull @.str.7) #23 - to label %86 unwind label %76 + to label %86 unwind label %75 -86: ; preds = %.critedge.i.i +85: ; preds = %.critedge.i.i unreachable -87: ; preds = %84 - store i32 %70, ptr %69, align 4, !tbaa !55 - br label %88 +86: ; preds = %83 + store i32 %69, ptr %68, align 4, !tbaa !55 + br label %87 -88: ; preds = %84, %87 +87: ; preds = %83, %86 call void @llvm.lifetime.end.p0(ptr nonnull %3) - store double %71, ptr %4, align 8, !tbaa !58 - br label %93 + store double %70, ptr %4, align 8, !tbaa !58 + br label %92 -89: ; preds = %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i - %90 = extractvalue { ptr, i32 } %77, 0 - %91 = tail call ptr @__cxa_begin_catch(ptr %90) #18 +88: ; preds = %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i + %89 = extractvalue { ptr, i32 } %76, 0 + %90 = tail call ptr @__cxa_begin_catch(ptr %89) #18 tail call void @__cxa_end_catch() - br label %93 + br label %92 -92: ; preds = %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i - resume { ptr, i32 } %77 +91: ; preds = %_ZZN9__gnu_cxx6__stoaIddcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i + resume { ptr, i32 } %76 -93: ; preds = %42, %56, %59, %89, %88, %57 - %94 = getelementptr inbounds nuw i8, ptr %.0, i64 32 - %95 = load ptr, ptr %94, align 8, !tbaa !99 - %.not61 = icmp eq ptr %95, null - br i1 %.not61, label %96, label %.thread78 +92: ; preds = %41, %55, %58, %88, %87, %56 + %93 = getelementptr inbounds nuw i8, ptr %.0, i64 32 + %94 = load ptr, ptr %93, align 8, !tbaa !99 + %.not61 = icmp eq ptr %94, null + br i1 %.not61, label %95, label %.thread78 -96: ; preds = %93 - %97 = tail call noundef ptr @_Z10pj_get_defPK8PJconstsi(ptr noundef nonnull %.0, i32 noundef 0) - %98 = icmp eq ptr %97, null - br i1 %98, label %100, label %.thread78 +95: ; preds = %92 + %96 = tail call noundef ptr @_Z10pj_get_defPK8PJconstsi(ptr noundef nonnull %.0, i32 noundef 0) + %97 = icmp eq ptr %96, null + br i1 %97, label %99, label %.thread78 -.thread78: ; preds = %93, %96 - %.04581 = phi ptr [ %97, %96 ], [ %95, %93 ] - %99 = tail call noundef ptr @_Z9pj_shrinkPc(ptr noundef nonnull %.04581) - br label %100 +.thread78: ; preds = %92, %95 + %.04581 = phi ptr [ %96, %96 ], [ %94, %93 ] + %98 = tail call noundef ptr @_Z9pj_shrinkPc(ptr noundef nonnull %.04581) + br label %99 -100: ; preds = %96, %.thread78 - %.sink = phi ptr [ %99, %.thread78 ], [ @.str.6, %96 ] +99: ; preds = %95, %.thread78 + %.sink = phi ptr [ %98, %.thread78 ], [ @.str.6, %96 ] %.04580 = phi ptr [ %.04581, %.thread78 ], [ null, %96 ] - %101 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %.sink, ptr %101, align 8, !tbaa !89 - store ptr %.04580, ptr %94, align 8, !tbaa !99 - %102 = tail call noundef i32 @_Z14pj_has_inverseP8PJconsts(ptr noundef nonnull %.0) - %103 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 %102, ptr %103, align 8, !tbaa !100 - br label %104 - -104: ; preds = %.thread73, %2, %100 + %100 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %.sink, ptr %100, align 8, !tbaa !89 + store ptr %.04580, ptr %93, align 8, !tbaa !99 + %101 = tail call noundef i32 @_Z14pj_has_inverseP8PJconsts(ptr noundef nonnull %.0) + %102 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i32 %101, ptr %102, align 8, !tbaa !100 + br label %103 + +103: ; preds = %.thread73, %2, %99 ret void } diff --git a/bench/proj/optimized/param.ll b/bench/proj/optimized/param.ll index cbe7a914b7e..e1e55de2458 100644 --- a/bench/proj/optimized/param.ll +++ b/bench/proj/optimized/param.ll @@ -214,7 +214,7 @@ define i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr br label %7 7: ; preds = %5, %3 - %.048 = phi ptr [ %6, %5 ], [ %0, %3 ] + %.028 = phi ptr [ %6, %5 ], [ %0, %3 ] %8 = getelementptr inbounds nuw i8, ptr %2, i64 1 %9 = load i8, ptr %2, align 1, !tbaa !3 %10 = sext i8 %9 to i32 @@ -272,18 +272,18 @@ define i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %0, ptr noundef %1, ptr _Z15pj_param_existsP8ARG_listPKc.exit: ; preds = %30, %33, %15, %28 %.020.i = phi ptr [ %.02127.i, %28 ], [ null, %15 ], [ null, %33 ], [ null, %30 ] %35 = icmp eq i8 %9, 116 - br i1 %35, label %36, label %38 + br i1 %35, label %36, label %39 36: ; preds = %_Z15pj_param_existsP8ARG_listPKc.exit %37 = icmp ne ptr %.020.i, null - %.sroa.0.0.insert.ext = zext i1 %37 to i64 + %38 = zext i1 %37 to i64 br label %.loopexit -38: ; preds = %_Z15pj_param_existsP8ARG_listPKc.exit - %39 = icmp eq ptr %.020.i, null - br i1 %39, label %.loopexit, label %40 +39: ; preds = %_Z15pj_param_existsP8ARG_listPKc.exit + %40 = icmp eq ptr %.020.i, null + br i1 %40, label %.loopexit, label %40 -40: ; preds = %38 +41: ; preds = %39 %41 = getelementptr inbounds nuw i8, ptr %.020.i, i64 8 %42 = load i8, ptr %41, align 8, !tbaa !3 %43 = or i8 %42, 1 @@ -297,71 +297,71 @@ _Z15pj_param_existsP8ARG_listPKc.exit: ; preds = %30, %33, %15, %28 %spec.select.idx = zext i1 %49 to i64 %spec.select = getelementptr inbounds nuw i8, ptr %47, i64 %spec.select.idx switch i8 %9, label %.loopexit [ - i8 105, label %50 - i8 100, label %59 - i8 114, label %62 - i8 115, label %65 - i8 98, label %67 + i8 105, label %55 + i8 100, label %65 + i8 114, label %67 + i8 115, label %69 + i8 98, label %70 ] -50: ; preds = %40 - %51 = tail call i64 @strtol(ptr noundef nonnull captures(none) %spec.select, ptr noundef null, i32 noundef 10) #17 - %.sroa.0.0.insert.ext32 = and i64 %51, 4294967295 +55: ; preds = %40 + %56 = tail call i64 @strtol(ptr noundef nonnull captures(none) %spec.select, ptr noundef null, i32 noundef 10) #17 + %.sroa.0.0.insert.ext32 = and i64 %56, 4294967295 %52 = load i8, ptr %spec.select, align 1, !tbaa !3 %.not55 = icmp eq i8 %52, 0 br i1 %.not55, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %50, %56 %53 = phi i8 [ %58, %56 ], [ %52, %50 ] - %.057 = phi ptr [ %57, %56 ], [ %spec.select, %50 ] - %.sroa.0.356 = phi i64 [ %.sroa.0.4, %56 ], [ %.sroa.0.0.insert.ext32, %50 ] - %54 = add i8 %53, -48 - %or.cond = icmp ult i8 %54, 10 - br i1 %or.cond, label %56, label %55 - -55: ; preds = %.lr.ph - tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %.048, i32 noundef 1027) + %59 = phi ptr [ %63, %56 ], [ %spec.select, %50 ] + %.038 = phi i64 [ %.sroa.0.4, %56 ], [ %.sroa.0.0.insert.ext32, %50 ] + %60 = add i8 %53, -48 + %or.cond = icmp ult i8 %60, 10 + br i1 %or.cond, label %56, label %61 + +61: ; preds = %.lr.ph + tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %.028, i32 noundef 1027) br label %56 56: ; preds = %.lr.ph, %55 - %.sroa.0.4 = phi i64 [ 0, %55 ], [ %.sroa.0.356, %.lr.ph ] - %57 = getelementptr inbounds nuw i8, ptr %.057, i64 1 - %58 = load i8, ptr %57, align 1, !tbaa !3 - %.not = icmp eq i8 %58, 0 + %.sroa.0.4 = phi i64 [ 0, %55 ], [ %.038, %.lr.ph ] + %63 = getelementptr inbounds nuw i8, ptr %.057, i64 1 + %64 = load i8, ptr %63, align 1, !tbaa !3 + %.not = icmp eq i8 %64, 0 br i1 %.not, label %.loopexit, label %.lr.ph, !llvm.loop !21 -59: ; preds = %40 - %60 = tail call noundef double @_Z7pj_atofPKc(ptr noundef nonnull %spec.select) - %61 = bitcast double %60 to i64 +65: ; preds = %40 + %66 = tail call noundef double @_Z7pj_atofPKc(ptr noundef nonnull %spec.select) + %61 = bitcast double %66 to i64 br label %.loopexit -62: ; preds = %40 - %63 = tail call noundef double @_Z10dmstor_ctxP6pj_ctxPKcPPc(ptr noundef %.048, ptr noundef nonnull %spec.select, ptr noundef null) - %64 = bitcast double %63 to i64 +67: ; preds = %40 + %68 = tail call noundef double @_Z10dmstor_ctxP6pj_ctxPKcPPc(ptr noundef %.028, ptr noundef nonnull %spec.select, ptr noundef null) + %64 = bitcast double %68 to i64 br label %.loopexit -65: ; preds = %40 +69: ; preds = %40 %66 = ptrtoint ptr %spec.select to i64 br label %.loopexit -67: ; preds = %40 - %68 = load i8, ptr %spec.select, align 1, !tbaa !3 - switch i8 %68, label %70 [ +70: ; preds = %40 + %71 = load i8, ptr %spec.select, align 1, !tbaa !3 + switch i8 %71, label %70 [ i8 70, label %.loopexit i8 102, label %.loopexit - i8 0, label %69 - i8 84, label %69 - i8 116, label %69 + i8 0, label %72 + i8 84, label %72 + i8 116, label %72 ] -69: ; preds = %67, %67, %67 +72: ; preds = %70, %70, %67 br label %.loopexit -70: ; preds = %67 - tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %.048, i32 noundef 1027) +74: ; preds = %70 + tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %.028, i32 noundef 1027) br label %.loopexit -.loopexit: ; preds = %56, %50, %38, %40, %59, %62, %65, %70, %69, %67, %67, %36 +.loopexit: ; preds = %56, %55, %38, %40, %65, %67, %69, %74, %72, %67, %67, %36 %.sroa.0.0 = phi i64 [ %.sroa.0.0.insert.ext, %36 ], [ 0, %40 ], [ %61, %59 ], [ %64, %62 ], [ %66, %65 ], [ 0, %70 ], [ 1, %69 ], [ 0, %67 ], [ 0, %67 ], [ 0, %38 ], [ %.sroa.0.0.insert.ext32, %50 ], [ %.sroa.0.4, %56 ] ret i64 %.sroa.0.0 } diff --git a/bench/proj/optimized/tmerc.ll b/bench/proj/optimized/tmerc.ll index 92fd202c04e..b0fce066e9c 100644 --- a/bench/proj/optimized/tmerc.ll +++ b/bench/proj/optimized/tmerc.ll @@ -114,72 +114,72 @@ define internal fastcc noundef zeroext i1 @_ZL17getAlgoFromParamsP8PJconstsR9TMe 8: ; preds = %2 store i32 1, ptr %1, align 4, !tbaa !3 - br label %48 + br label %47 9: ; preds = %2 %10 = load ptr, ptr %0, align 8, !tbaa !42 %11 = load ptr, ptr %4, align 8, !tbaa !43 %12 = tail call i64 @_Z8pj_paramP6pj_ctxP8ARG_listPKc(ptr noundef %10, ptr noundef %11, ptr noundef nonnull @.str.11) - %13 = inttoptr i64 %12 to ptr - %.not25 = icmp eq i64 %12, 0 - br i1 %.not25, label %26, label %14 + %.sroa.0.0..sroa.0.0..cast = inttoptr i64 %12 to ptr + %.not24 = icmp eq i64 %12, 0 + br i1 %.not24, label %25, label %13 -14: ; preds = %9 - %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(15) @.str.12) #11 - %16 = icmp eq i32 %15, 0 - br i1 %16, label %17, label %18 +13: ; preds = %9 + %14 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(15) @.str.12) #11 + %15 = icmp eq i32 %14, 0 + br i1 %15, label %16, label %17 -17: ; preds = %14 +16: ; preds = %13 store i32 1, ptr %1, align 4, !tbaa !3 - br label %48 + br label %47 -18: ; preds = %14 - %19 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(15) @.str.13) #11 - %20 = icmp eq i32 %19, 0 - br i1 %20, label %21, label %22 +17: ; preds = %13 + %18 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(15) @.str.13) #11 + %19 = icmp eq i32 %18, 0 + br i1 %19, label %20, label %21 -21: ; preds = %18 +20: ; preds = %17 store i32 2, ptr %1, align 4, !tbaa !3 - br label %48 + br label %47 -22: ; preds = %18 - %23 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(5) @.str.14) #11 - %24 = icmp eq i32 %23, 0 - br i1 %24, label %.thread, label %25 +21: ; preds = %17 + %22 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.sroa.0.0..sroa.0.0..cast, ptr noundef nonnull dereferenceable(5) @.str.14) #11 + %23 = icmp eq i32 %22, 0 + br i1 %23, label %.thread, label %24 -.thread: ; preds = %22 +.thread: ; preds = %21 store i32 0, ptr %1, align 4, !tbaa !3 br label %33 -25: ; preds = %22 +24: ; preds = %21 tail call void (ptr, ptr, ...) @_Z14proj_log_errorPK8PJconstsPKcz(ptr noundef nonnull %0, ptr noundef nonnull @.str.15) - br label %48 + br label %47 -26: ; preds = %9 +25: ; preds = %9 %27 = load ptr, ptr %0, align 8, !tbaa !42 tail call void @_Z11pj_load_iniP6pj_ctx(ptr noundef %27) %28 = load ptr, ptr %0, align 8, !tbaa !42 tail call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %28, i32 noundef 0) - %29 = load ptr, ptr %0, align 8, !tbaa !42 + %30 = load ptr, ptr %0, align 8, !tbaa !42 %30 = getelementptr inbounds nuw i8, ptr %29, i64 560 %31 = load i32, ptr %30, align 8, !tbaa !44 store i32 %31, ptr %1, align 4, !tbaa !3 %32 = icmp eq i32 %31, 0 br i1 %32, label %33, label %48 -33: ; preds = %.thread, %26 +33:; preds = %.thread, %26 %34 = getelementptr inbounds nuw i8, ptr %0, i64 216 %35 = load double, ptr %34, align 8, !tbaa !67 %36 = fcmp ogt double %35, 1.000000e-01 br i1 %36, label %47, label %37 -37: ; preds = %33 +37:; preds = %33 %38 = getelementptr inbounds nuw i8, ptr %0, i64 448 %39 = load double, ptr %38, align 8, !tbaa !68 %40 = fcmp une double %39, 0.000000e+00 br i1 %40, label %47, label %41 -41: ; preds = %37 +41:; preds = %37 %42 = getelementptr inbounds nuw i8, ptr %0, i64 488 %43 = load double, ptr %42, align 8, !tbaa !69 %44 = fadd double %43, -1.000000e+00 @@ -189,9 +189,9 @@ define internal fastcc noundef zeroext i1 @_ZL17getAlgoFromParamsP8PJconstsR9TMe 47: ; preds = %41, %37, %33 store i32 2, ptr %1, align 4, !tbaa !3 - br label %48 + br label %47 -48: ; preds = %17, %21, %25, %47, %41, %26, %8 +47: ; preds = %16, %20, %24, %47, %41, %25, %8 %.0 = phi i1 [ true, %8 ], [ true, %17 ], [ true, %21 ], [ false, %25 ], [ true, %47 ], [ true, %41 ], [ true, %26 ] ret i1 %.0 } diff --git a/bench/quickjs/optimized/qjsc.ll b/bench/quickjs/optimized/qjsc.ll index f33ad3d70af..1ce37cb0016 100644 --- a/bench/quickjs/optimized/qjsc.ll +++ b/bench/quickjs/optimized/qjsc.ll @@ -296,26 +296,26 @@ namelist_add.exit: ; preds = %27, %34 %37 = getelementptr inbounds nuw i8, ptr %32, i64 16 store i32 0, ptr %37, align 8, !tbaa !19 %38 = tail call ptr @JS_NewCModule(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @js_module_dummy_init) #18 - br label %91 + br label %90 .loopexit: ; preds = %10, %3 %39 = tail call i32 @has_suffix(ptr noundef %1, ptr noundef nonnull @.str) #18 - %.not35 = icmp eq i32 %39, 0 - br i1 %.not35, label %44, label %40 + %.not36 = icmp eq i32 %39, 0 + br i1 %.not36, label %44, label %40 40: ; preds = %.loopexit %41 = load ptr, ptr @stderr, align 8, !tbaa !23 %42 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %41, ptr noundef nonnull @.str.1, ptr noundef %1) #20 %43 = tail call ptr @JS_NewCModule(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @js_module_dummy_init) #18 store i1 true, ptr @dynamic_export, align 4 - br label %91 + br label %90 44: ; preds = %.loopexit call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) %45 = call ptr @js_load_file(ptr noundef %0, ptr noundef nonnull %5, ptr noundef %1) #18 - %.not36 = icmp eq ptr %45, null - br i1 %.not36, label %46, label %48 + %.not37 = icmp eq ptr %45, null + br i1 %.not37, label %46, label %48 46: ; preds = %44 %47 = call { i64, i64 } (ptr, ptr, ...) @JS_ThrowReferenceError(ptr noundef %0, ptr noundef nonnull @.str.2, ptr noundef %1) #18 @@ -335,38 +335,38 @@ namelist_add.exit: ; preds = %27, %34 call fastcc void @get_c_name(ptr noundef %6, ptr noundef %1) %55 = load i32, ptr @cname_list.1, align 8, !tbaa !7 %56 = icmp sgt i32 %55, 0 - br i1 %56, label %.lr.ph.i40, label %namelist_find.exit46.thread + br i1 %56, label %.lr.ph.i44, label %namelist_find.exit50.thread -.lr.ph.i40: ; preds = %54 +.lr.ph.i44: ; preds = %54 %57 = load ptr, ptr @cname_list.0, align 8, !tbaa !14 - %wide.trip.count.i41 = zext nneg i32 %55 to i64 + %wide.trip.count.i45 = zext nneg i32 %55 to i64 br label %59 58: ; preds = %59 - %indvars.iv.next.i44 = add nuw nsw i64 %indvars.iv.i42, 1 - %exitcond.not.i45 = icmp eq i64 %indvars.iv.next.i44, %wide.trip.count.i41 - br i1 %exitcond.not.i45, label %namelist_find.exit46.thread, label %59, !llvm.loop !22 + %indvars.iv.next.i48 = add nuw nsw i64 %indvars.iv.i46, 1 + %exitcond.not.i49 = icmp eq i64 %indvars.iv.next.i48, %wide.trip.count.i45 + br i1 %exitcond.not.i49, label %namelist_find.exit50.thread, label %59, !llvm.loop !22 -59: ; preds = %58, %.lr.ph.i40 - %indvars.iv.i42 = phi i64 [ 0, %.lr.ph.i40 ], [ %indvars.iv.next.i44, %58 ] - %60 = getelementptr inbounds nuw %struct.namelist_entry_t, ptr %57, i64 %indvars.iv.i42 +59: ; preds = %58, %.lr.ph.i44 + %indvars.iv.i46 = phi i64 [ 0, %.lr.ph.i40 ], [ %indvars.iv.next.i48, %58 ] + %60 = getelementptr inbounds nuw %struct.namelist_entry_t, ptr %57, i64 %indvars.iv.i46 %61 = load ptr, ptr %60, align 8, !tbaa !15 %62 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %61, ptr noundef nonnull readonly dereferenceable(1) %6) #19 - %.not.not.i43 = icmp eq i32 %62, 0 - br i1 %.not.not.i43, label %namelist_find.exit46, label %58 + %.not.not.i47 = icmp eq i32 %62, 0 + br i1 %.not.not.i47, label %namelist_find.exit50, label %58 -namelist_find.exit46: ; preds = %59 +namelist_find.exit50: ; preds = %59 call void @llvm.lifetime.start.p0(ptr nonnull %4) %63 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %6) #19 %64 = icmp ugt i64 %63, 1008 br i1 %64, label %65, label %67 -65: ; preds = %namelist_find.exit46 +65: ; preds = %namelist_find.exit50 %66 = getelementptr inbounds nuw i8, ptr %6, i64 1008 store i8 0, ptr %66, align 16, !tbaa !27 br label %67 -67: ; preds = %65, %namelist_find.exit46 +67: ; preds = %65, %namelist_find.exit50 %68 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 1024, ptr noundef nonnull @.str.30, ptr noundef nonnull %6, i32 noundef 1) #18 %69 = load i32, ptr @cname_list.1, align 8, !tbaa !7 %70 = icmp sgt i32 %69, 0 @@ -402,39 +402,39 @@ namelist_find.exit.i: ; preds = %74 find_unique_cname.exit: ; preds = %namelist_find.exit.i, %73, %67 call void @pstrcpy(ptr noundef nonnull %6, i32 noundef 1024, ptr noundef nonnull %4) #18 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %namelist_find.exit46.thread + br label %namelist_find.exit50.thread -namelist_find.exit46.thread: ; preds = %58, %54, %find_unique_cname.exit +namelist_find.exit50.thread: ; preds = %58, %54, %find_unique_cname.exit %82 = load ptr, ptr @outfile, align 8, !tbaa !23 call fastcc void @output_object_code(ptr noundef %0, ptr noundef %82, i64 %51, i64 %52, ptr noundef %6, i32 noundef 1) - %83 = inttoptr i64 %51 to ptr - %84 = trunc i64 %52 to i32 - %85 = icmp ugt i32 %84, -12 - br i1 %85, label %86, label %JS_FreeValue.exit - -86: ; preds = %namelist_find.exit46.thread - %87 = load i32, ptr %83, align 4, !tbaa !28 - %88 = add i32 %87, -1 - store i32 %88, ptr %83, align 4, !tbaa !28 - %89 = icmp slt i32 %88, 1 - br i1 %89, label %90, label %JS_FreeValue.exit - -90: ; preds = %86 + %.sroa.02.0..sroa.02.0..cast = inttoptr i64 %51 to ptr + %83 = trunc i64 %52 to i32 + %84 = icmp ugt i32 %83, -12 + br i1 %84, label %85, label %JS_FreeValue.exit + +85: ; preds = %namelist_find.exit50.thread + %86 = load i32, ptr %.sroa.02.0..sroa.02.0..cast, align 4, !tbaa !28 + %87 = add i32 %86, -1 + store i32 %87, ptr %.sroa.02.0..sroa.02.0..cast, align 4, !tbaa !28 + %88 = icmp slt i32 %87, 1 + br i1 %88, label %89, label %JS_FreeValue.exit + +89: ; preds = %85 call void @__JS_FreeValue(ptr noundef %0, i64 %51, i64 %52) #18 br label %JS_FreeValue.exit -JS_FreeValue.exit: ; preds = %namelist_find.exit46.thread, %86, %90 +JS_FreeValue.exit: ; preds = %namelist_find.exit50.thread, %85, %89 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %91 + br label %90 .critedge: ; preds = %48, %46 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %91 + br label %90 -91: ; preds = %namelist_add.exit, %40, %JS_FreeValue.exit, %.critedge - %.1 = phi ptr [ null, %.critedge ], [ %38, %namelist_add.exit ], [ %43, %40 ], [ %83, %JS_FreeValue.exit ] +90: ; preds = %namelist_add.exit, %40, %JS_FreeValue.exit, %.critedge + %.1 = phi ptr [ null, %.critedge ], [ %38, %namelist_add.exit ], [ %43, %40 ], [ %.sroa.02.0..sroa.02.0..cast, %JS_FreeValue.exit ] ret ptr %.1 } diff --git a/bench/quickjs/optimized/quickjs-libc.ll b/bench/quickjs/optimized/quickjs-libc.ll index dfbb46f0399..d8b9175b1e9 100644 --- a/bench/quickjs/optimized/quickjs-libc.ll +++ b/bench/quickjs/optimized/quickjs-libc.ll @@ -358,77 +358,77 @@ declare noundef i32 @fclose(ptr noundef captures(none)) local_unnamed_addr #1 define dso_local range(i32 -1, 1) i32 @js_module_set_import_meta(ptr noundef %0, i64 %1, i64 %2, i32 noundef %3, i32 noundef %4) local_unnamed_addr #0 { %6 = alloca [4112 x i8], align 16 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %7 = inttoptr i64 %1 to ptr - %8 = tail call i32 @JS_GetModuleName(ptr noundef %0, ptr noundef %7) #30 - %9 = tail call ptr @JS_AtomToCString(ptr noundef %0, i32 noundef %8) #30 - tail call void @JS_FreeAtom(ptr noundef %0, i32 noundef %8) #30 - %.not = icmp eq ptr %9, null - br i1 %.not, label %JS_FreeValue.exit, label %10 + %.sroa.037.0..sroa.037.0..cast = inttoptr i64 %1 to ptr + %7 = tail call i32 @JS_GetModuleName(ptr noundef %0, ptr noundef %.sroa.037.0..sroa.037.0..cast) #30 + %8 = tail call ptr @JS_AtomToCString(ptr noundef %0, i32 noundef %7) #30 + tail call void @JS_FreeAtom(ptr noundef %0, i32 noundef %7) #30 + %.not = icmp eq ptr %8, null + br i1 %.not, label %JS_FreeValue.exit, label %9 -10: ; preds = %5 - %11 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %9, i32 noundef 58) #32 - %.not42 = icmp eq ptr %11, null - br i1 %.not42, label %12, label %21 +9: ; preds = %5 + %10 = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %8, i32 noundef 58) #32 + %.not42 = icmp eq ptr %10, null + br i1 %.not42, label %11, label %20 -12: ; preds = %10 +11: ; preds = %9 store i64 13281251761613158, ptr %6, align 16 %.not43 = icmp eq i32 %3, 0 - br i1 %.not43, label %19, label %13 + br i1 %.not43, label %18, label %12 -13: ; preds = %12 - %14 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %6) #32 - %15 = getelementptr inbounds nuw i8, ptr %6, i64 %14 - %16 = call ptr @realpath(ptr noundef nonnull %9, ptr noundef nonnull %15) #30 - %.not44.not = icmp eq ptr %16, null - br i1 %.not44.not, label %17, label %.critedge +12: ; preds = %11 + %13 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %6) #32 + %14 = getelementptr inbounds nuw i8, ptr %6, i64 %13 + %15 = call ptr @realpath(ptr noundef nonnull %8, ptr noundef nonnull %14) #30 + %.not44.not = icmp eq ptr %15, null + br i1 %.not44.not, label %16, label %.critedge -17: ; preds = %13 - %18 = call { i64, i64 } (ptr, ptr, ...) @JS_ThrowTypeError(ptr noundef %0, ptr noundef nonnull @.str.2) #30 - call void @JS_FreeCString(ptr noundef %0, ptr noundef nonnull %9) #30 +16: ; preds = %12 + %17 = call { i64, i64 } (ptr, ptr, ...) @JS_ThrowTypeError(ptr noundef %0, ptr noundef nonnull @.str.2) #30 + call void @JS_FreeCString(ptr noundef %0, ptr noundef nonnull %8) #30 br label %JS_FreeValue.exit -19: ; preds = %12 - %20 = call ptr @pstrcat(ptr noundef nonnull %6, i32 noundef 4112, ptr noundef nonnull %9) #30 +18: ; preds = %11 + %19 = call ptr @pstrcat(ptr noundef nonnull %6, i32 noundef 4112, ptr noundef nonnull %8) #30 br label %.critedge -21: ; preds = %10 - call void @pstrcpy(ptr noundef nonnull %6, i32 noundef 4112, ptr noundef nonnull %9) #30 +20: ; preds = %9 + call void @pstrcpy(ptr noundef nonnull %6, i32 noundef 4112, ptr noundef nonnull %8) #30 br label %.critedge -.critedge: ; preds = %13, %19, %21 - call void @JS_FreeCString(ptr noundef %0, ptr noundef nonnull %9) #30 - %22 = call { i64, i64 } @JS_GetImportMeta(ptr noundef %0, ptr noundef %7) #30 - %23 = extractvalue { i64, i64 } %22, 0 - %24 = extractvalue { i64, i64 } %22, 1 - %25 = and i64 %24, 4294967295 - %.not46 = icmp eq i64 %25, 6 - br i1 %.not46, label %JS_FreeValue.exit, label %26 - -26: ; preds = %.critedge - %27 = call { i64, i64 } @JS_NewString(ptr noundef %0, ptr noundef nonnull %6) #30 - %28 = extractvalue { i64, i64 } %27, 0 - %29 = extractvalue { i64, i64 } %27, 1 - %30 = call i32 @JS_DefinePropertyValueStr(ptr noundef %0, i64 %23, i64 %24, ptr noundef nonnull @.str.3, i64 %28, i64 %29, i32 noundef 7) #30 - %31 = icmp ne i32 %4, 0 - %.sroa.0.0.insert.ext.i = zext i1 %31 to i64 - %32 = call i32 @JS_DefinePropertyValueStr(ptr noundef %0, i64 %23, i64 %24, ptr noundef nonnull @.str.4, i64 %.sroa.0.0.insert.ext.i, i64 1, i32 noundef 7) #30 - %33 = trunc i64 %24 to i32 - %34 = icmp ugt i32 %33, -12 - br i1 %34, label %35, label %JS_FreeValue.exit - -35: ; preds = %26 - %36 = inttoptr i64 %23 to ptr - %37 = load i32, ptr %36, align 4, !tbaa !14 - %38 = add i32 %37, -1 - store i32 %38, ptr %36, align 4, !tbaa !14 - %39 = icmp slt i32 %38, 1 - br i1 %39, label %40, label %JS_FreeValue.exit +.critedge: ; preds = %12, %18, %20 + call void @JS_FreeCString(ptr noundef %0, ptr noundef nonnull %8) #30 + %21 = call { i64, i64 } @JS_GetImportMeta(ptr noundef %0, ptr noundef %.sroa.037.0..sroa.037.0..cast) #30 + %22 = extractvalue { i64, i64 } %21, 0 + %23 = extractvalue { i64, i64 } %21, 1 + %24 = and i64 %23, 4294967295 + %.not46 = icmp eq i64 %24, 6 + br i1 %.not46, label %JS_FreeValue.exit, label %25 -40: ; preds = %35 - call void @__JS_FreeValue(ptr noundef %0, i64 %23, i64 %24) #30 +25: ; preds = %.critedge + %26 = call { i64, i64 } @JS_NewString(ptr noundef %0, ptr noundef nonnull %6) #30 + %27 = extractvalue { i64, i64 } %26, 0 + %28 = extractvalue { i64, i64 } %26, 1 + %29 = call i32 @JS_DefinePropertyValueStr(ptr noundef %0, i64 %22, i64 %23, ptr noundef nonnull @.str.3, i64 %27, i64 %28, i32 noundef 7) #30 + %30 = icmp ne i32 %4, 0 + %.sroa.0.0.insert.ext.i = zext i1 %30 to i64 + %31 = call i32 @JS_DefinePropertyValueStr(ptr noundef %0, i64 %22, i64 %23, ptr noundef nonnull @.str.4, i64 %.sroa.0.0.insert.ext.i, i64 1, i32 noundef 7) #30 + %32 = trunc i64 %23 to i32 + %33 = icmp ugt i32 %32, -12 + br i1 %33, label %34, label %JS_FreeValue.exit + +34: ; preds = %25 + %35 = inttoptr i64 %22 to ptr + %36 = load i32, ptr %35, align 4, !tbaa !14 + %37 = add i32 %36, -1 + store i32 %37, ptr %35, align 4, !tbaa !14 + %38 = icmp slt i32 %37, 1 + br i1 %38, label %39, label %JS_FreeValue.exit + +39: ; preds = %34 + call void @__JS_FreeValue(ptr noundef %0, i64 %22, i64 %23) #30 br label %JS_FreeValue.exit -JS_FreeValue.exit: ; preds = %40, %35, %26, %17, %.critedge, %5 +JS_FreeValue.exit: ; preds = %39, %34, %25, %16, %.critedge, %5 %.0 = phi i32 [ -1, %17 ], [ -1, %5 ], [ -1, %.critedge ], [ 0, %26 ], [ 0, %35 ], [ 0, %40 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 %.0 @@ -532,8 +532,8 @@ define dso_local ptr @js_module_loader(ptr noundef %0, ptr noundef %1, ptr readn 29: ; preds = %3 call void @llvm.lifetime.start.p0(ptr nonnull %4) %30 = call ptr @js_load_file(ptr noundef %0, ptr noundef nonnull %4, ptr noundef %1) - %.not26 = icmp eq ptr %30, null - br i1 %.not26, label %31, label %33 + %.not27 = icmp eq ptr %30, null + br i1 %.not27, label %31, label %33 31: ; preds = %29 %32 = tail call { i64, i64 } (ptr, ptr, ...) @JS_ThrowReferenceError(ptr noundef %0, ptr noundef nonnull @.str.6, ptr noundef %1) #30 @@ -546,17 +546,17 @@ define dso_local ptr @js_module_loader(ptr noundef %0, ptr noundef %1, ptr readn %37 = extractvalue { i64, i64 } %35, 1 tail call void @js_free(ptr noundef %0, ptr noundef nonnull %30) #30 %38 = and i64 %37, 4294967295 - %.not28 = icmp eq i64 %38, 6 - br i1 %.not28, label %.critedge, label %39 + %.not32 = icmp eq i64 %38, 6 + br i1 %.not32, label %.critedge, label %39 39: ; preds = %33 %40 = tail call i32 @js_module_set_import_meta(ptr noundef %0, i64 %36, i64 poison, i32 noundef 1, i32 noundef 0) - %41 = inttoptr i64 %36 to ptr - %42 = trunc i64 %37 to i32 - %43 = icmp ugt i32 %42, -12 - br i1 %43, label %44, label %JS_FreeValue.exit + %.sroa.02.0..sroa.02.0..cast = inttoptr i64 %36 to ptr + %41 = trunc i64 %37 to i32 + %42 = icmp ugt i32 %41, -12 + br i1 %42, label %44, label %JS_FreeValue.exit -44: ; preds = %39 +47: ; preds = %39 %45 = load i32, ptr %41, align 4, !tbaa !14 %46 = add i32 %45, -1 store i32 %46, ptr %41, align 4, !tbaa !14 @@ -576,7 +576,7 @@ JS_FreeValue.exit: ; preds = %39, %44, %48 br label %js_module_loader_so.exit js_module_loader_so.exit: ; preds = %26, %24, %22, %9, %JS_FreeValue.exit, %.critedge - %.1 = phi ptr [ null, %.critedge ], [ %41, %JS_FreeValue.exit ], [ null, %9 ], [ null, %26 ], [ null, %24 ], [ %23, %22 ] + %.1 = phi ptr [ null, %.critedge ], [ %.sroa.02.0..sroa.02.0..cast, %JS_FreeValue.exit ], [ null, %9 ], [ null, %26 ], [ null, %24 ], [ %23, %22 ] ret ptr %.1 } diff --git a/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll b/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll index 7c5416dd764..ae342557f69 100644 --- a/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll +++ b/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll @@ -46723,8 +46723,8 @@ common.resume: ; preds = %77, %.body.thread.i br label %138 138: ; preds = %133, %128 - %.sroa.019.034 = phi ptr [ null, %128 ], [ %134, %133 ] - store ptr %.sroa.019.034, ptr %0, align 8, !alias.scope !8939, !noalias !8942 + %.sroa.019.033 = phi ptr [ null, %128 ], [ %134, %133 ] + store ptr %.sroa.019.033, ptr %0, align 8, !alias.scope !8939, !noalias !8942 call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %25 @@ -165507,17 +165507,17 @@ define void @"_ZN81_$LT$typst..text..lang..Region$u20$as$u20$typst..foundations. call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %22 -66: ; preds = %29, %.thread30 +66: ; preds = %29, %.thread32 %67 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #63 unreachable -.thread: ; preds = %29, %25, %.thread30 - %.pn29 = phi { ptr, i32 } [ %14, %.thread30 ], [ %26, %25 ], [ %26, %29 ] - resume { ptr, i32 } %.pn29 +.thread: ; preds = %29, %25, %.thread32 + %.pn31 = phi { ptr, i32 } [ %14, %.thread30 ], [ %26, %25 ], [ %26, %29 ] + resume { ptr, i32 } %.pn31 -.thread30: ; preds = %13 +.thread32: ; preds = %13 invoke void @"_ZN4core3ptr53drop_in_place$LT$typst..foundations..value..Value$GT$17h54cec887ca59b7d7E.llvm.3683678558897460461"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) #61 to label %.thread unwind label %66 } diff --git a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll index 0d22184dc3e..fff62be63f1 100644 --- a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll +++ b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll @@ -28094,16 +28094,16 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal store i32 0, ptr %25, align 8 store i64 -9223372036854775808, ptr %22, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !6224) - %.val.i.i.i235.i = load ptr, ptr %1, align 8, !alias.scope !6227, !noalias !6232, !nonnull !4, !align !565, !noundef !4 + %.val.i.i.i238.i = load ptr, ptr %1, align 8, !alias.scope !6227, !noalias !6232, !nonnull !4, !align !565, !noundef !4 %26 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val1.i.i.i236.i = load i64, ptr %26, align 8, !alias.scope !6240, !noalias !6232, !noundef !4 + %.val1.i.i.i239.i = load i64, ptr %26, align 8, !alias.scope !6240, !noalias !6232, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !6241) tail call void @llvm.experimental.noalias.scope.decl(metadata !6244) - %27 = load ptr, ptr %.val.i.i.i235.i, align 8, !alias.scope !6247, !noalias !6248, !nonnull !4, !noundef !4 - %.pn1.in.i.i.i.i.i.i.i.i.i237.i = getelementptr inbounds nuw i8, ptr %27, i64 48 - %.pn1.i.i.i.i.i.i.i.i.i238.i = load i64, ptr %.pn1.in.i.i.i.i.i.i.i.i.i237.i, align 8, !alias.scope !6255, !noalias !6258, !noundef !4 - %.not.i239.i = icmp ugt i64 %.pn1.i.i.i.i.i.i.i.i.i238.i, %.val1.i.i.i236.i - br i1 %.not.i239.i, label %.lr.ph.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" + %27 = load ptr, ptr %.val.i.i.i238.i, align 8, !alias.scope !6247, !noalias !6248, !nonnull !4, !noundef !4 + %.pn1.in.i.i.i.i.i.i.i.i.i240.i = getelementptr inbounds nuw i8, ptr %27, i64 48 + %.pn1.i.i.i.i.i.i.i.i.i241.i = load i64, ptr %.pn1.in.i.i.i.i.i.i.i.i.i240.i, align 8, !alias.scope !6255, !noalias !6258, !noundef !4 + %.not.i242.i = icmp ugt i64 %.pn1.i.i.i.i.i.i.i.i.i241.i, %.val1.i.i.i239.i + br i1 %.not.i242.i, label %.lr.ph.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" .lr.ph.i: ; preds = %2 %28 = getelementptr inbounds nuw i8, ptr %18, i64 8 @@ -28117,7 +28117,7 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal %36 = getelementptr inbounds nuw i8, ptr %8, i64 8 %37 = getelementptr inbounds nuw i8, ptr %8, i64 16 call void @llvm.lifetime.start.p0(ptr nonnull %14), !noalias !6259 - %38 = sub nuw i64 %.pn1.i.i.i.i.i.i.i.i.i238.i, %.val1.i.i.i236.i + %38 = sub nuw i64 %.pn1.i.i.i.i.i.i.i.i.i241.i, %.val1.i.i.i239.i %39 = icmp ult i64 %38, 8 br i1 %39, label %._crit_edge, label %.lr.ph @@ -28133,17 +28133,17 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal br i1 %42, label %._crit_edge, label %43 43: ; preds = %.lr.ph, %40 - %.sroa.18.sroa.0.0240.i147 = phi i64 [ 0, %.lr.ph ], [ %49, %40 ] - %.val1.i.i.i242.i146 = phi i64 [ %.val1.i.i.i236.i, %.lr.ph ], [ %.val1.i.i.i.i, %40 ] - %44 = phi ptr [ %27, %.lr.ph ], [ %135, %40 ] + %.sroa.18.sroa.0.0243.i189 = phi i64 [ 0, %.lr.ph ], [ %49, %40 ] + %.val1.i.i.i245.i188 = phi i64 [ %.val1.i.i.i239.i, %.lr.ph ], [ %.val1.i.i.i.i, %40 ] + %44 = phi ptr [ %27, %.lr.ph ], [ %138, %40 ] call void @llvm.experimental.noalias.scope.decl(metadata !6260) call void @llvm.experimental.noalias.scope.decl(metadata !6263) %.pn3.in.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %44, i64 40 %.pn3.i.i.i.i.i.i.i.i.i = load ptr, ptr %.pn3.in.i.i.i.i.i.i.i.i.i, align 8, !alias.scope !6266, !noalias !6269, !nonnull !4, !noundef !4 - %45 = getelementptr inbounds i8, ptr %.pn3.i.i.i.i.i.i.i.i.i, i64 %.val1.i.i.i242.i146 + %45 = getelementptr inbounds i8, ptr %.pn3.i.i.i.i.i.i.i.i.i, i64 %.val1.i.i.i245.i188 %46 = load i64, ptr %45, align 1, !alias.scope !6279, !noalias !6283 store i64 %46, ptr %14, align 8, !alias.scope !6287, !noalias !6288 - %47 = add i64 %.val1.i.i.i242.i146, 8 + %47 = add i64 %.val1.i.i.i245.i188, 8 store i64 %47, ptr %26, align 8, !alias.scope !6263, !noalias !6289 %48 = invoke noundef i32 @"_ZN64_$LT$exif..endian..BigEndian$u20$as$u20$exif..endian..Endian$GT$7loadu3217h4a435939c7411829E"(ptr noalias noundef nonnull readonly align 1 %14, i64 noundef 8, i64 noundef 0) to label %.noexc unwind label %.loopexit @@ -28194,7 +28194,7 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal br label %69 ._crit_edge: ; preds = %40, %51, %53, %59, %.lr.ph.i - %.sroa.18.sroa.0.1.i = phi i64 [ 0, %.lr.ph.i ], [ 16, %59 ], [ %.sroa.18.sroa.0.0240.i147, %53 ], [ 16, %51 ], [ %49, %40 ] + %.sroa.18.sroa.0.1.i = phi i64 [ 0, %.lr.ph.i ], [ 16, %59 ], [ %.sroa.18.sroa.0.0243.i189, %53 ], [ 16, %51 ], [ %49, %40 ] %.sroa.12.1.i = phi i64 [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.112.llvm.16978709814855407318 to i64), %.lr.ph.i ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.246 to i64), %59 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.112.llvm.16978709814855407318 to i64), %53 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.246 to i64), %51 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.112.llvm.16978709814855407318 to i64), %40 ] %.sroa.6125.1.i = phi i64 [ 1, %.lr.ph.i ], [ 0, %59 ], [ 1, %53 ], [ 0, %51 ], [ 1, %40 ] call void @llvm.lifetime.end.p0(ptr nonnull %14), !noalias !6259 @@ -28226,13 +28226,13 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal 76: ; preds = %72 %77 = icmp sgt i64 %70, -1 - br i1 %77, label %78, label %150 + br i1 %77, label %78, label %155 78: ; preds = %76 %.05.i.i37.i.i = load i64, ptr %26, align 8, !noalias !6347, !noundef !4 %79 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %.05.i.i37.i.i, i64 %70) %80 = extractvalue { i64, i1 } %79, 1 - br i1 %80, label %150, label %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i" + br i1 %80, label %155, label %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i" "_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i": ; preds = %78 %81 = extractvalue { i64, i1 } %79, 0 @@ -28259,7 +28259,7 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal %.sroa.025.3.vec.extract31.i = extractelement <4 x i8> %71, i64 3 %89 = icmp eq i8 %.sroa.025.3.vec.extract31.i, 97 %or.cond11.i = select i1 %or.cond8.i, i1 %89, i1 false - br i1 %or.cond11.i, label %138, label %72 + br i1 %or.cond11.i, label %142, label %72 90: ; preds = %82 call void @llvm.lifetime.start.p0(ptr nonnull %19), !noalias !6355 @@ -28270,9 +28270,9 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal .noexc29: ; preds = %90 %91 = load i64, ptr %18, align 8, !range !26, !noalias !6355, !noundef !4 %trunc107.i = trunc nuw i64 %91 to i1 - %.sroa.6.i.sroa.0.0.copyload60 = load i64, ptr %28, align 8, !noalias !6355 - %.sroa.6.i.sroa.6.0.copyload64 = load i64, ptr %.sroa.6.i.sroa.6.0..sroa_idx, align 8, !noalias !6355 - %.sroa.6.i.sroa.7.0.copyload68 = load i64, ptr %.sroa.6.i.sroa.7.0..sroa_idx, align 8, !noalias !6355 + %.sroa.6.i.sroa.0.0.copyload83 = load i64, ptr %28, align 8, !noalias !6355 + %.sroa.6.i.sroa.6.0.copyload87 = load i64, ptr %.sroa.6.i.sroa.6.0..sroa_idx, align 8, !noalias !6355 + %.sroa.6.i.sroa.8.0.copyload95 = load i64, ptr %.sroa.6.i.sroa.7.0..sroa_idx, align 8, !noalias !6355 call void @llvm.lifetime.end.p0(ptr nonnull %18), !noalias !6355 br i1 %trunc107.i, label %.loopexit245, label %92 @@ -28280,35 +28280,35 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal store i64 %.sroa.6.i.sroa.0.0.copyload60, ptr %19, align 8, !noalias !6355 store i64 %.sroa.6.i.sroa.6.0.copyload64, ptr %29, align 8, !noalias !6355 store i64 %.sroa.6.i.sroa.7.0.copyload68, ptr %30, align 8, !noalias !6355 - %.cast116 = inttoptr i64 %.sroa.6.i.sroa.6.0.copyload64 to ptr + %.cast116 = inttoptr i64 %.sroa.6.i.sroa.6.0.copyload87 to ptr call void @llvm.lifetime.start.p0(ptr nonnull %13), !noalias !6355 store ptr %.cast116, ptr %13, align 8, !noalias !6356 - store i64 %.sroa.6.i.sroa.7.0.copyload68, ptr %31, align 8, !noalias !6356 + store i64 %.sroa.6.i.sroa.8.0.copyload95, ptr %31, align 8, !noalias !6356 call void @llvm.lifetime.start.p0(ptr nonnull %12), !noalias !6356 invoke void @_ZN4exif7isobmff11BoxSplitter5slice17h9dc27e1acee0e8bdE(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %12, ptr noalias noundef nonnull align 8 dereferenceable(16) %13, i64 noundef 8) to label %.noexc.i unwind label %.loopexit.split-lp.loopexit.i, !noalias !6355 .noexc.i: ; preds = %92 - %93 = load i64, ptr %12, align 8, !range !6360, !noalias !6356, !noundef !4 - %94 = icmp eq i64 %93, 7 - %95 = load ptr, ptr %32, align 8, !noalias !6356 - %96 = load i64, ptr %33, align 8, !noalias !6356 + %94 = load i64, ptr %12, align 8, !range !6360, !noalias !6356, !noundef !4 + %95 = icmp eq i64 %94, 7 + %96 = load ptr, ptr %32, align 8, !noalias !6356 + %97 = load i64, ptr %33, align 8, !noalias !6356 call void @llvm.lifetime.end.p0(ptr nonnull %12), !noalias !6356 - br i1 %94, label %97, label %.loopexit202.i + br i1 %95, label %98, label %.loopexit205.i -97: ; preds = %.noexc.i - %98 = icmp ult i64 %96, 4 - br i1 %98, label %99, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i" +98: ; preds = %.noexc.i + %99 = icmp ult i64 %97, 4 + br i1 %99, label %100, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i" -99: ; preds = %97 - invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h332fde1d59776f82E(i64 noundef 4, i64 noundef %96, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.43c633cc9d0c07b847282a0596e0d119.217) #82 +100: ; preds = %98 + invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h332fde1d59776f82E(i64 noundef 4, i64 noundef %97, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.43c633cc9d0c07b847282a0596e0d119.217) #82 to label %.noexc118.i unwind label %.loopexit.split-lp.loopexit.split-lp.i, !noalias !6355 -.noexc118.i: ; preds = %99 +.noexc118.i: ; preds = %100 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i": ; preds = %97 - %100 = invoke noundef i32 @"_ZN64_$LT$exif..endian..BigEndian$u20$as$u20$exif..endian..Endian$GT$7loadu3217h4a435939c7411829E"(ptr noalias noundef nonnull readonly align 1 %95, i64 noundef %96, i64 noundef 4) +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i": ; preds = %98 + %101 = invoke noundef i32 @"_ZN64_$LT$exif..endian..BigEndian$u20$as$u20$exif..endian..Endian$GT$7loadu3217h4a435939c7411829E"(ptr noalias noundef nonnull readonly align 1 %96, i64 noundef %97, i64 noundef 4) to label %.noexc119.i unwind label %.loopexit.split-lp.loopexit.i, !noalias !6355 .noexc119.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i", %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit28.i.i" @@ -28317,66 +28317,66 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal to label %.noexc120.i unwind label %.loopexit.i, !noalias !6355 .noexc120.i: ; preds = %.noexc119.i - %101 = load i64, ptr %11, align 8, !range !6360, !noalias !6356, !noundef !4 - switch i64 %101, label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" [ - i64 7, label %102 - i64 1, label %112 + %102 = load i64, ptr %11, align 8, !range !6360, !noalias !6356, !noundef !4 + switch i64 %102, label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" [ + i64 7, label %103 + i64 1, label %113 ] -102: ; preds = %.noexc120.i - %103 = load i32, ptr %34, align 8, !noalias !6356 - %104 = load ptr, ptr @_ZN4exif7isobmff11HEIF_BRANDS17h827cc918e7d08a1eE, align 8, !noalias !6356, !nonnull !4, !align !5, !noundef !4 - %105 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN4exif7isobmff11HEIF_BRANDS17h827cc918e7d08a1eE, i64 8), align 8, !noalias !6356, !noundef !4 +103: ; preds = %.noexc120.i + %104 = load i32, ptr %34, align 8, !noalias !6356 + %105 = load ptr, ptr @_ZN4exif7isobmff11HEIF_BRANDS17h827cc918e7d08a1eE, align 8, !noalias !6356, !nonnull !4, !align !5, !noundef !4 + %106 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN4exif7isobmff11HEIF_BRANDS17h827cc918e7d08a1eE, i64 8), align 8, !noalias !6356, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %10), !noalias !6361 - %106 = getelementptr inbounds [4 x i8], ptr %104, i64 %105 - store ptr %104, ptr %10, align 8, !noalias !6361 - store ptr %106, ptr %35, align 8, !noalias !6361 - br label %107 + %107 = getelementptr inbounds [4 x i8], ptr %105, i64 %106 + store ptr %105, ptr %10, align 8, !noalias !6361 + store ptr %107, ptr %35, align 8, !noalias !6361 + br label %108 -107: ; preds = %109, %102 - %108 = invoke noundef align 1 dereferenceable_or_null(4) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8e262a66b703b557E.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %10) - to label %.noexc.i.i unwind label %117, !noalias !6365 +108: ; preds = %110, %103 + %109 = invoke noundef align 1 dereferenceable_or_null(4) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8e262a66b703b557E.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(16) %10) + to label %.noexc.i.i unwind label %118, !noalias !6365 -.noexc.i.i: ; preds = %107 - %.not.not.not.not.i.not.not.not.i.not.i.i = icmp eq ptr %108, null - br i1 %.not.not.not.not.i.not.not.not.i.not.i.i, label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit28.i.i", label %109 +.noexc.i.i: ; preds = %108 + %.not.not.not.not.i.not.not.not.i.not.i.i = icmp eq ptr %109, null + br i1 %.not.not.not.not.i.not.not.not.i.not.i.i, label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit28.i.i", label %110 -109: ; preds = %.noexc.i.i - %110 = load i32, ptr %108, align 1, !alias.scope !6366, !noalias !6373 - %111 = icmp eq i32 %110, %103 - br i1 %111, label %119, label %107 +110: ; preds = %.noexc.i.i + %111 = load i32, ptr %109, align 1, !alias.scope !6366, !noalias !6373 + %112 = icmp eq i32 %111, %104 + br i1 %112, label %121, label %108 -112: ; preds = %.noexc120.i +113: ; preds = %.noexc120.i %.val25.i.i = load ptr, ptr %34, align 8, !noalias !6356, !nonnull !4, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %9), !noalias !6379 invoke void @_ZN3std2io5error14repr_bitpacked11decode_repr17had847663024859d8E.llvm.16845035774076767816(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %9, ptr noundef nonnull %.val25.i.i) to label %.noexc121.i unwind label %.loopexit.split-lp.loopexit.split-lp.i, !noalias !6355 -.noexc121.i: ; preds = %112 - %113 = load i8, ptr %9, align 8, !range !572, !alias.scope !6386, !noalias !6379, !noundef !4 - %114 = icmp eq i8 %113, 3 - br i1 %114, label %115, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i" +.noexc121.i: ; preds = %113 + %114 = load i8, ptr %9, align 8, !range !572, !alias.scope !6386, !noalias !6379, !noundef !4 + %115 = icmp eq i8 %114, 3 + br i1 %115, label %116, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i" -115: ; preds = %.noexc121.i - %116 = getelementptr inbounds nuw i8, ptr %9, i64 8 - invoke void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$std..io..error..Custom$GT$$GT$17hc955abe8797c5cc0E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(8) %116) +116: ; preds = %.noexc121.i + %117 = getelementptr inbounds nuw i8, ptr %9, i64 8 + invoke void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$std..io..error..Custom$GT$$GT$17hc955abe8797c5cc0E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(8) %117) to label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i" unwind label %.loopexit.split-lp.loopexit.split-lp.i, !noalias !6355 -"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i": ; preds = %115, %.noexc121.i +"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i": ; preds = %116, %.noexc121.i call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !6379 br label %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" "_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i": ; preds = %.noexc120.i, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i.i.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %11), !noalias !6356 - br label %.loopexit202.i + br label %.loopexit205.i "_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit28.i.i": ; preds = %.noexc.i.i call void @llvm.lifetime.end.p0(ptr nonnull %10), !noalias !6361 call void @llvm.lifetime.end.p0(ptr nonnull %11), !noalias !6356 br label %.noexc119.i -117: ; preds = %107 - %118 = landingpad { ptr, i32 } +118: ; preds = %108 + %119 = landingpad { ptr, i32 } cleanup br label %.body.i @@ -28386,21 +28386,21 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal br label %.body.i .loopexit.split-lp.loopexit.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hbe5520874da2d7a7E.exit.i.i", %92 - %lpad.loopexit199.i = landingpad { ptr, i32 } + %lpad.loopexit202.i = landingpad { ptr, i32 } cleanup br label %.body.i -.loopexit.split-lp.loopexit.split-lp.i: ; preds = %115, %112, %99 - %lpad.loopexit.split-lp200.i = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp.i: ; preds = %116, %113, %100 + %lpad.loopexit.split-lp203.i = landingpad { ptr, i32 } cleanup br label %.body.i -.body.i: ; preds = %.loopexit.split-lp.loopexit.split-lp.i, %.loopexit.split-lp.loopexit.i, %.loopexit.i, %117 - %eh.lpad-body.i = phi { ptr, i32 } [ %118, %117 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit199.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp200.i, %.loopexit.split-lp.loopexit.split-lp.i ] +.body.i: ; preds = %.loopexit.split-lp.loopexit.split-lp.i, %.loopexit.split-lp.loopexit.i, %.loopexit.i, %118 + %eh.lpad-body.i = phi { ptr, i32 } [ %119, %117 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit202.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp203.i, %.loopexit.split-lp.loopexit.split-lp.i ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %19) #83 - to label %.body unwind label %136, !noalias !6355 + to label %.body unwind label %140, !noalias !6355 -119: ; preds = %109 +121: ; preds = %110 call void @llvm.lifetime.end.p0(ptr nonnull %10), !noalias !6361 call void @llvm.lifetime.end.p0(ptr nonnull %11), !noalias !6356 call void @llvm.lifetime.end.p0(ptr nonnull %13), !noalias !6355 @@ -28409,276 +28409,276 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he34f37b9bfa2d460E.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %19) to label %.noexc30 unwind label %.loopexit -.noexc30: ; preds = %119 - %120 = load i64, ptr %36, align 8, !range !570, !noalias !6390, !noundef !4 - %.not.i.i.i.i = icmp eq i64 %120, 0 - br i1 %.not.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", label %121 +.noexc30: ; preds = %121 + %122 = load i64, ptr %36, align 8, !range !570, !noalias !6390, !noundef !4 + %.not.i.i.i.i = icmp eq i64 %122, 0 + br i1 %.not.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", label %123 -121: ; preds = %.noexc30 - %122 = load i64, ptr %37, align 8, !noalias !6390, !noundef !4 - %123 = icmp eq i64 %122, 0 - br i1 %123, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", label %124 +123: ; preds = %.noexc30 + %124 = load i64, ptr %37, align 8, !noalias !6390, !noundef !4 + %125 = icmp eq i64 %124, 0 + br i1 %125, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", label %126 -124: ; preds = %121 - %125 = load ptr, ptr %8, align 8, !noalias !6390, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %125, i64 noundef %122, i64 noundef %120) #85, !noalias !6355 +126: ; preds = %123 + %127 = load ptr, ptr %8, align 8, !noalias !6390, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %127, i64 noundef %124, i64 noundef %122) #85, !noalias !6355 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i": ; preds = %124, %121, %.noexc30 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i": ; preds = %126, %123, %.noexc30 call void @llvm.lifetime.end.p0(ptr nonnull %8), !noalias !6390 call void @llvm.lifetime.end.p0(ptr nonnull %19), !noalias !6355 %.val1.i.i.i.pre.i = load i64, ptr %26, align 8, !alias.scope !6240, !noalias !6232 br label %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" -.loopexit202.i: ; preds = %.noexc.i, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" - %.sroa.9.2.ph.i = phi i64 [ 53, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %96, %.noexc.i ] - %.sroa.6130.2.ph.i = phi ptr [ @anon.43c633cc9d0c07b847282a0596e0d119.218, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %95, %.noexc.i ] - %.sroa.0129.0.ph.i = phi i64 [ 0, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %93, %.noexc.i ] +.loopexit205.i: ; preds = %.noexc.i, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" + %.sroa.9.2.ph.i = phi i64 [ 53, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %97, %.noexc.i ] + %.sroa.6133.2.ph.i = phi ptr [ @anon.43c633cc9d0c07b847282a0596e0d119.218, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %96, %.noexc.i ] + %.sroa.0132.0.ph.i = phi i64 [ 0, %"_ZN4core3ptr93drop_in_place$LT$core..result..Result$LT$$u5b$u8$u3b$$u20$4$u5d$$C$exif..error..Error$GT$$GT$17h9016b7904cc0b900E.exit.i.i" ], [ %94, %.noexc.i ] call void @llvm.lifetime.end.p0(ptr nonnull %13), !noalias !6355 - %126 = ptrtoint ptr %.sroa.6130.2.ph.i to i64 + %128 = ptrtoint ptr %.sroa.6133.2.ph.i to i64 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !6397 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he34f37b9bfa2d460E.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %19) to label %.noexc31 unwind label %.loopexit.split-lp -.noexc31: ; preds = %.loopexit202.i - %127 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %128 = load i64, ptr %127, align 8, !range !570, !noalias !6397, !noundef !4 - %.not.i.i.i123.i = icmp eq i64 %128, 0 - br i1 %.not.i.i.i123.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i", label %129 +.noexc31: ; preds = %.loopexit205.i + %130 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %131 = load i64, ptr %130, align 8, !range !570, !noalias !6397, !noundef !4 + %.not.i.i.i123.i = icmp eq i64 %131, 0 + br i1 %.not.i.i.i123.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i", label %132 -129: ; preds = %.noexc31 - %130 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %131 = load i64, ptr %130, align 8, !noalias !6397, !noundef !4 - %132 = icmp eq i64 %131, 0 - br i1 %132, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i", label %133 +132: ; preds = %.noexc31 + %133 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %134 = load i64, ptr %133, align 8, !noalias !6397, !noundef !4 + %135 = icmp eq i64 %134, 0 + br i1 %135, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i", label %136 -133: ; preds = %129 - %134 = load ptr, ptr %7, align 8, !noalias !6397, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %134, i64 noundef %131, i64 noundef %128) #85, !noalias !6355 +136: ; preds = %132 + %137 = load ptr, ptr %7, align 8, !noalias !6397, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %137, i64 noundef %134, i64 noundef %131) #85, !noalias !6355 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i": ; preds = %133, %129, %.noexc31 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i": ; preds = %136, %132, %.noexc31 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !6397 - br label %.loopexit245 + br label %139 "_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i": ; preds = %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i", %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i", %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit.thread.i.i" %.val1.i.i.i.i = phi i64 [ %81, %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit41.thread.i.i" ], [ %.05.i.i.i.i, %"_ZN3std2io5impls57_$LT$impl$u20$std..io..Seek$u20$for$u20$$RF$mut$u20$S$GT$4seek17hf237ac1d5761dcb4E.exit.thread.i.i" ], [ %.val1.i.i.i.pre.i, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit.i" ] %.val.i.i.i.i = load ptr, ptr %1, align 8, !alias.scope !6227, !noalias !6232, !nonnull !4, !align !565, !noundef !4 call void @llvm.experimental.noalias.scope.decl(metadata !6404) call void @llvm.experimental.noalias.scope.decl(metadata !6406) - %135 = load ptr, ptr %.val.i.i.i.i, align 8, !alias.scope !6408, !noalias !6248, !nonnull !4, !noundef !4 - %.pn1.in.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %135, i64 48 + %138 = load ptr, ptr %.val.i.i.i.i, align 8, !alias.scope !6408, !noalias !6248, !nonnull !4, !noundef !4 + %.pn1.in.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %138, i64 48 %.pn1.i.i.i.i.i.i.i.i.i.i = load i64, ptr %.pn1.in.i.i.i.i.i.i.i.i.i.i, align 8, !alias.scope !6255, !noalias !6409, !noundef !4 %.not.i.i = icmp ugt i64 %.pn1.i.i.i.i.i.i.i.i.i.i, %.val1.i.i.i.i br i1 %.not.i.i, label %40, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" -.loopexit245: ; preds = %.noexc29, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" - %.sroa.35.1 = phi i64 [ %.sroa.9.2.ph.i, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ], [ %.sroa.6.i.sroa.7.0.copyload68, %.noexc29 ] - %.sroa.27.1 = phi i64 [ %126, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ], [ %.sroa.6.i.sroa.6.0.copyload64, %.noexc29 ] - %.sroa.14.1 = phi i64 [ %.sroa.0129.0.ph.i, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ], [ %.sroa.6.i.sroa.0.0.copyload60, %.noexc29 ] +139: ; preds = %.noexc29, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" + %.sroa.35.sroa.13.1 = phi i64 [ %.sroa.9.2.ph.i, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ], [ %.sroa.6.i.sroa.7.0.copyload68, %.noexc29 ] + %.sroa.35.sroa.0.1 = phi i64 [ %126, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ], [ %.sroa.6.i.sroa.6.0.copyload64, %.noexc29 ] + %.sroa.27.1 = phi i64 [ %.sroa.0129.0.ph.i, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E.exit124.i" ], [ %.sroa.6.i.sroa.0.0.copyload60, %.noexc29 ] call void @llvm.lifetime.end.p0(ptr nonnull %19), !noalias !6355 br label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" -136: ; preds = %145, %.body.i - %137 = landingpad { ptr, i32 } +140: ; preds = %150, %.body.i + %141 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #84, !noalias !6389 unreachable -138: ; preds = %86 - %139 = load i8, ptr %24, align 8, !range !23, !alias.scope !6224, !noalias !6389, !noundef !4 - %140 = trunc nuw i8 %139 to i1 - br i1 %140, label %141, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" +142: ; preds = %86 + %143 = load i8, ptr %24, align 8, !range !23, !alias.scope !6224, !noalias !6389, !noundef !4 + %144 = trunc nuw i8 %143 to i1 + br i1 %144, label %145, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" -141: ; preds = %138 +145: ; preds = %142 call void @llvm.lifetime.start.p0(ptr nonnull %17), !noalias !6355 call void @llvm.lifetime.start.p0(ptr nonnull %16), !noalias !6355 invoke fastcc void @"_ZN4exif7isobmff15Parser$LT$R$GT$19read_file_level_box17h2a9b2589d4aed971E"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %16, ptr noalias noundef nonnull align 8 dereferenceable(64) %22, i64 noundef %70) to label %.noexc32 unwind label %.loopexit.split-lp -.noexc32: ; preds = %141 - %142 = load i64, ptr %16, align 8, !range !26, !noalias !6355, !noundef !4 - %trunc103.i = trunc nuw i64 %142 to i1 - %143 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %.sroa.644.i.sroa.0.0.copyload70 = load i64, ptr %143, align 8, !noalias !6355 - %.sroa.644.i.sroa.6.0..sroa_idx73 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %.sroa.644.i.sroa.6.0.copyload74 = load i64, ptr %.sroa.644.i.sroa.6.0..sroa_idx73, align 8, !noalias !6355 - %.sroa.644.i.sroa.7.0..sroa_idx77 = getelementptr inbounds nuw i8, ptr %16, i64 24 - %.sroa.644.i.sroa.7.0.copyload78 = load i64, ptr %.sroa.644.i.sroa.7.0..sroa_idx77, align 8, !noalias !6355 +.noexc32: ; preds = %145 + %146 = load i64, ptr %16, align 8, !range !26, !noalias !6355, !noundef !4 + %trunc103.i = trunc nuw i64 %146 to i1 + %147 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %.sroa.644.i.sroa.0.0.copyload97 = load i64, ptr %147, align 8, !noalias !6355 + %.sroa.644.i.sroa.6.0..sroa_idx100 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %.sroa.644.i.sroa.6.0.copyload101 = load i64, ptr %.sroa.644.i.sroa.6.0..sroa_idx100, align 8, !noalias !6355 + %.sroa.644.i.sroa.7.0..sroa_idx104 = getelementptr inbounds nuw i8, ptr %16, i64 24 + %.sroa.644.i.sroa.7.0.copyload78 = load i64, ptr %.sroa.644.i.sroa.7.0..sroa_idx104, align 8, !noalias !6355 call void @llvm.lifetime.end.p0(ptr nonnull %16), !noalias !6355 br i1 %trunc103.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102", label %144 -144: ; preds = %.noexc32 +144:; preds = %.noexc32 store i64 %.sroa.644.i.sroa.0.0.copyload70, ptr %17, align 8, !noalias !6355 %.sroa.644.i.sroa.6.0..sroa_idx71 = getelementptr inbounds nuw i8, ptr %17, i64 8 store i64 %.sroa.644.i.sroa.6.0.copyload74, ptr %.sroa.644.i.sroa.6.0..sroa_idx71, align 8, !noalias !6355 %.sroa.644.i.sroa.7.0..sroa_idx75 = getelementptr inbounds nuw i8, ptr %17, i64 16 store i64 %.sroa.644.i.sroa.7.0.copyload78, ptr %.sroa.644.i.sroa.7.0..sroa_idx75, align 8, !noalias !6355 call void @llvm.lifetime.start.p0(ptr nonnull %15), !noalias !6355 - %.cast = inttoptr i64 %.sroa.644.i.sroa.6.0.copyload74 to ptr + %.cast = inttoptr i64 %.sroa.644.i.sroa.6.0.copyload101 to ptr invoke fastcc void @"_ZN4exif7isobmff15Parser$LT$R$GT$10parse_meta17hf004740fb162f77bE"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %15, ptr noalias noundef nonnull align 8 dereferenceable(64) %22, ptr noalias noundef nonnull readonly align 1 %.cast, i64 noundef %.sroa.644.i.sroa.7.0.copyload78) - to label %147 unwind label %145, !noalias !6389 + to label %147 unwind label %155, !noalias !6389 -"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102": ; preds = %.noexc32 +"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread137": ; preds = %.noexc32 call void @llvm.lifetime.end.p0(ptr nonnull %17), !noalias !6355 br label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" -145: ; preds = %144 - %146 = landingpad { ptr, i32 } +150: ; preds = %144 + %151 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %17) #83 - to label %.body unwind label %136, !noalias !6389 - -147: ; preds = %144 - %148 = load i64, ptr %15, align 8, !range !26, !noalias !6355, !noundef !4 - %149 = getelementptr inbounds nuw i8, ptr %15, i64 8 - %.sroa.647.i.sroa.0.0.copyload79 = load i64, ptr %149, align 8, !noalias !6355 - %.sroa.647.i.sroa.5.0..sroa_idx80 = getelementptr inbounds nuw i8, ptr %15, i64 16 - %.sroa.647.i.sroa.5.0.copyload81 = load i64, ptr %.sroa.647.i.sroa.5.0..sroa_idx80, align 8, !noalias !6355 - %.sroa.647.i.sroa.6.0..sroa_idx82 = getelementptr inbounds nuw i8, ptr %15, i64 24 - %.sroa.647.i.sroa.6.0.copyload83 = load i64, ptr %.sroa.647.i.sroa.6.0..sroa_idx82, align 8, !noalias !6355 + to label %.body unwind label %140, !noalias !6389 + +152: ; preds = %144 + %153 = load i64, ptr %15, align 8, !range !26, !noalias !6355, !noundef !4 + %154 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %.sroa.647.i.sroa.0.0.copyload110 = load i64, ptr %154, align 8, !noalias !6355 + %.sroa.647.i.sroa.5.0..sroa_idx111 = getelementptr inbounds nuw i8, ptr %15, i64 16 + %.sroa.647.i.sroa.5.0.copyload112 = load i64, ptr %.sroa.647.i.sroa.5.0..sroa_idx111, align 8, !noalias !6355 + %.sroa.647.i.sroa.6.0..sroa_idx113 = getelementptr inbounds nuw i8, ptr %15, i64 24 + %.sroa.647.i.sroa.6.0.copyload114154 = load i64, ptr %.sroa.647.i.sroa.6.0..sroa_idx113, align 8, !noalias !6355 call void @llvm.lifetime.end.p0(ptr nonnull %15), !noalias !6355 invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %17) to label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" unwind label %.loopexit.split-lp -150: ; preds = %78, %76 +155: ; preds = %78, %76 %.sroa.753.sroa.0.2.ph.i = phi ptr [ @anon.43c633cc9d0c07b847282a0596e0d119.639.llvm.16978709814855407318, %78 ], [ @anon.43c633cc9d0c07b847282a0596e0d119.251, %76 ] %.sroa.051.0.ph.i = phi i64 [ 1, %78 ], [ 0, %76 ] - %151 = ptrtoint ptr %.sroa.753.sroa.0.2.ph.i to i64 + %156 = ptrtoint ptr %.sroa.753.sroa.0.2.ph.i to i64 br label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" -.loopexit: ; preds = %43, %90, %119 +.loopexit: ; preds = %43, %90, %121 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp: ; preds = %.loopexit202.i, %141, %147 +.loopexit.split-lp: ; preds = %.loopexit205.i, %145, %152 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %.loopexit, %.loopexit.split-lp, %.body.i, %145 - %eh.lpad-body = phi { ptr, i32 } [ %eh.lpad-body.i, %.body.i ], [ %146, %145 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +.body: ; preds = %.loopexit, %.loopexit.split-lp, %.body.i, %150 + %eh.lpad-body = phi { ptr, i32 } [ %eh.lpad-body.i, %.body.i ], [ %151, %145 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE"(ptr noalias noundef nonnull align 8 dereferenceable(64) %22) #83 - to label %.thread unwind label %203 + to label %.thread unwind label %209 -"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit": ; preds = %147 - %trunc105.i = trunc nuw i64 %148 to i1 +"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit": ; preds = %152 + %trunc105.i = trunc nuw i64 %153 to i1 call void @llvm.lifetime.end.p0(ptr nonnull %17), !noalias !6355 - br i1 %trunc105.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread", label %152 + br i1 %trunc105.i, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread", label %157 -152: ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" +157: ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" call void @llvm.lifetime.start.p0(ptr nonnull %21) - store i64 %.sroa.647.i.sroa.0.0.copyload79, ptr %21, align 8 + store i64 %.sroa.647.i.sroa.0.0.copyload110, ptr %21, align 8 %.sroa.27.8..sroa_idx48 = getelementptr inbounds nuw i8, ptr %21, i64 8 - store i64 %.sroa.647.i.sroa.5.0.copyload81, ptr %.sroa.27.8..sroa_idx48, align 8 + store i64 %.sroa.647.i.sroa.5.0.copyload112, ptr %.sroa.27.8..sroa_idx48, align 8 %.sroa.35.8..sroa_idx53 = getelementptr inbounds nuw i8, ptr %21, i64 16 - store i64 %.sroa.647.i.sroa.6.0.copyload83, ptr %.sroa.35.8..sroa_idx53, align 8 + store i64 %.sroa.647.i.sroa.6.0.copyload114154, ptr %.sroa.35.8..sroa_idx53, align 8 %153 = icmp ult i64 %.sroa.647.i.sroa.6.0.copyload83, 4 br i1 %153, label %193, label %155 -"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread": ; preds = %.loopexit245, %150, %._crit_edge, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102", %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" +"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread":; preds = %.loopexit245, %150, %._crit_edge, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102", %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" %.sroa.14.297 = phi i64 [ %.sroa.647.i.sroa.0.0.copyload79, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.0.0.copyload70, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102" ], [ %.sroa.14.1, %.loopexit245 ], [ %.sroa.051.0.ph.i, %150 ], [ %.sroa.6125.1.i, %._crit_edge ] %.sroa.27.293 = phi i64 [ %.sroa.647.i.sroa.5.0.copyload81, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.6.0.copyload74, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102" ], [ %.sroa.27.1, %.loopexit245 ], [ %151, %150 ], [ %.sroa.12.1.i, %._crit_edge ] %.sroa.35.289 = phi i64 [ %.sroa.647.i.sroa.6.0.copyload83, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit" ], [ %.sroa.644.i.sroa.7.0.copyload78, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread102" ], [ %.sroa.35.1, %.loopexit245 ], [ 24, %150 ], [ %.sroa.18.sroa.0.1.i, %._crit_edge ] %154 = icmp eq i64 %.sroa.14.297, 1 br i1 %154, label %221, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" -155: ; preds = %152 +155:; preds = %152 %156 = inttoptr i64 %.sroa.647.i.sroa.5.0.copyload81 to ptr %157 = invoke noundef i32 @"_ZN64_$LT$exif..endian..BigEndian$u20$as$u20$exif..endian..Endian$GT$7loadu3217h4a435939c7411829E"(ptr noalias noundef nonnull readonly align 1 %156, i64 noundef %.sroa.647.i.sroa.6.0.copyload83, i64 noundef 0) to label %160 unwind label %158 -158: ; preds = %168, %165, %155 +158:; preds = %168, %171, %155 %159 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hb1bd5fe26ba89da7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %21) #83 - to label %205 unwind label %203 + to label %205 unwind label %209 -160: ; preds = %155 - %161 = zext i32 %157 to i64 - %162 = load i64, ptr %.sroa.35.8..sroa_idx53, align 8, !noundef !4 - %163 = add i64 %162, -4 - %164 = icmp ult i64 %163, %161 - br i1 %164, label %193, label %165 +166: ; preds = %155 + %167 = zext i32 %157 to i64 + %168 = load i64, ptr %.sroa.35.8..sroa_idx53, align 8, !noundef !4 + %169 = add i64 %168, -4 + %170 = icmp ult i64 %169, %167 + br i1 %170, label %199, label %171 -165: ; preds = %160 +171: ; preds = %166 call void @llvm.lifetime.start.p0(ptr nonnull %20) - %166 = add nuw nsw i64 %161, 4 + %172 = add nuw nsw i64 %167, 4 call void @llvm.experimental.noalias.scope.decl(metadata !6410) call void @llvm.experimental.noalias.scope.decl(metadata !6413) - %167 = invoke { i64, i64 } @_ZN4core5slice5index5range17hc6a150385bfca842E(i64 noundef %166, i64 noundef %162, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ecbbdf4ce99fb387dde54de6349d4c38.142.llvm.10579729455205085779) + %173 = invoke { i64, i64 } @_ZN4core5slice5index5range17hc6a150385bfca842E(i64 noundef %172, i64 noundef %168, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ecbbdf4ce99fb387dde54de6349d4c38.142.llvm.10579729455205085779) to label %168 unwind label %158 -168: ; preds = %165 - %169 = extractvalue { i64, i64 } %167, 0 - %170 = extractvalue { i64, i64 } %167, 1 - store i64 %169, ptr %.sroa.35.8..sroa_idx53, align 8, !alias.scope !6413, !noalias !6410 - %171 = load ptr, ptr %.sroa.27.8..sroa_idx48, align 8, !alias.scope !6413, !noalias !6410, !nonnull !4, !noundef !4 - %172 = getelementptr inbounds i8, ptr %171, i64 %169 - %173 = sub i64 %162, %170 - %174 = getelementptr inbounds i8, ptr %171, i64 %170 - %175 = getelementptr inbounds nuw i8, ptr %20, i64 24 - store i64 %170, ptr %175, align 8, !alias.scope !6410, !noalias !6413 - %176 = getelementptr inbounds nuw i8, ptr %20, i64 32 - store i64 %173, ptr %176, align 8, !alias.scope !6410, !noalias !6413 - store ptr %172, ptr %20, align 8, !alias.scope !6410, !noalias !6413 - %177 = getelementptr inbounds nuw i8, ptr %20, i64 8 - store ptr %174, ptr %177, align 8, !alias.scope !6410, !noalias !6413 - %178 = getelementptr inbounds nuw i8, ptr %20, i64 16 - store ptr %21, ptr %178, align 8, !alias.scope !6410, !noalias !6413 +174: ; preds = %171 + %175 = extractvalue { i64, i64 } %173, 0 + %176 = extractvalue { i64, i64 } %173, 1 + store i64 %175, ptr %.sroa.35.8..sroa_idx53, align 8, !alias.scope !6413, !noalias !6410 + %177 = load ptr, ptr %.sroa.27.8..sroa_idx48, align 8, !alias.scope !6413, !noalias !6410, !nonnull !4, !noundef !4 + %178 = getelementptr inbounds i8, ptr %177, i64 %175 + %179 = sub i64 %168, %176 + %180 = getelementptr inbounds i8, ptr %177, i64 %176 + %181 = getelementptr inbounds nuw i8, ptr %20, i64 24 + store i64 %176, ptr %181, align 8, !alias.scope !6410, !noalias !6413 + %182 = getelementptr inbounds nuw i8, ptr %20, i64 32 + store i64 %179, ptr %182, align 8, !alias.scope !6410, !noalias !6413 + store ptr %178, ptr %20, align 8, !alias.scope !6410, !noalias !6413 + %183 = getelementptr inbounds nuw i8, ptr %20, i64 8 + store ptr %180, ptr %183, align 8, !alias.scope !6410, !noalias !6413 + %184 = getelementptr inbounds nuw i8, ptr %20, i64 16 + store ptr %21, ptr %184, align 8, !alias.scope !6410, !noalias !6413 invoke void @"_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h50274a3985a77014E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(40) %20) to label %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" unwind label %158 -"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit": ; preds = %168 +"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit": ; preds = %174 call void @llvm.lifetime.end.p0(ptr nonnull %20) - %179 = getelementptr inbounds nuw i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %179, ptr noundef nonnull align 8 dereferenceable(24) %21, i64 24, i1 false) + %185 = getelementptr inbounds nuw i8, ptr %0, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %185, ptr noundef nonnull align 8 dereferenceable(24) %21, i64 24, i1 false) store i64 0, ptr %0, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %21) - br label %180 + br label %186 -180: ; preds = %239, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread", %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" - %181 = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ true, %239 ], [ false, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] - %.sroa.14.296 = phi i64 [ %.sroa.647.i.sroa.0.0.copyload79, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ 1, %239 ], [ %.sroa.14.297113, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] - %.sroa.27.292 = phi i64 [ %.sroa.647.i.sroa.5.0.copyload81, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ %.sroa.27.293, %239 ], [ %.sroa.27.293114, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] +186: ; preds = %245, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread", %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" + %187 = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ true, %239 ], [ false, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] + %.sroa.14.2131 = phi i64 [ %.sroa.647.i.sroa.0.0.copyload110, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ 1, %239 ], [ %.sroa.14.297113, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] + %.sroa.27.2127 = phi i64 [ %.sroa.647.i.sroa.5.0.copyload112, %"_ZN4core3ptr55drop_in_place$LT$alloc..vec..drain..Drain$LT$u8$GT$$GT$17h094eb6c1d157d671E.exit" ], [ %.sroa.27.293, %239 ], [ %.sroa.27.293114, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" ] call void @llvm.experimental.noalias.scope.decl(metadata !6415) call void @llvm.experimental.noalias.scope.decl(metadata !6418) - %182 = load i64, ptr %22, align 8, !range !570, !alias.scope !6421, !noundef !4 - %183 = icmp eq i64 %182, -9223372036854775808 - br i1 %183, label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit", label %184 + %188 = load i64, ptr %22, align 8, !range !570, !alias.scope !6421, !noundef !4 + %189 = icmp eq i64 %188, -9223372036854775808 + br i1 %189, label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit", label %190 -184: ; preds = %180 +190: ; preds = %186 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !6422 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfe7e05562bdee3caE.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %22) - to label %.noexc36 unwind label %219 - -.noexc36: ; preds = %184 - %185 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %186 = load i64, ptr %185, align 8, !range !570, !noalias !6422, !noundef !4 - %.not.i.i.i.i.i.i = icmp eq i64 %186, 0 - br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", label %187 - -187: ; preds = %.noexc36 - %188 = getelementptr inbounds nuw i8, ptr %6, i64 16 - %189 = load i64, ptr %188, align 8, !noalias !6422, !noundef !4 - %190 = icmp eq i64 %189, 0 - br i1 %190, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", label %191 - -191: ; preds = %187 - %192 = load ptr, ptr %6, align 8, !noalias !6422, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %192, i64 noundef %189, i64 noundef %186) #85 + to label %.noexc36 unwind label %225 + +.noexc36: ; preds = %190 + %191 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %192 = load i64, ptr %191, align 8, !range !570, !noalias !6422, !noundef !4 + %.not.i.i.i.i.i.i = icmp eq i64 %192, 0 + br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", label %193 + +193: ; preds = %.noexc36 + %194 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %195 = load i64, ptr %194, align 8, !noalias !6422, !noundef !4 + %196 = icmp eq i64 %195, 0 + br i1 %196, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", label %197 + +197: ; preds = %193 + %198 = load ptr, ptr %6, align 8, !noalias !6422, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %198, i64 noundef %195, i64 noundef %192) #85 br label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i" -"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i": ; preds = %191, %187, %.noexc36 +"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i": ; preds = %197, %193, %.noexc36 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !6422 br label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit" -193: ; preds = %160, %152 +199: ; preds = %166, %157 %anon.43c633cc9d0c07b847282a0596e0d119.213.sink = phi ptr [ @anon.43c633cc9d0c07b847282a0596e0d119.214, %152 ], [ @anon.43c633cc9d0c07b847282a0596e0d119.213, %160 ] %.sink = phi i64 [ 23, %152 ], [ 26, %160 ] - %194 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 0, ptr %194, align 8 + %200 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 0, ptr %200, align 8 %.sroa.48.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %anon.43c633cc9d0c07b847282a0596e0d119.213.sink, ptr %.sroa.48.0..sroa_idx, align 8 %.sroa.59.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -28686,182 +28686,182 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal store i64 1, ptr %0, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !6431 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he34f37b9bfa2d460E.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %21) - to label %.noexc37 unwind label %206 + to label %.noexc37 unwind label %212 -.noexc37: ; preds = %193 - %195 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %196 = load i64, ptr %195, align 8, !range !570, !noalias !6431, !noundef !4 - %.not.i.i.i = icmp eq i64 %196, 0 - br i1 %.not.i.i.i, label %208, label %197 +.noexc37: ; preds = %199 + %201 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %202 = load i64, ptr %201, align 8, !range !570, !noalias !6431, !noundef !4 + %.not.i.i.i = icmp eq i64 %202, 0 + br i1 %.not.i.i.i, label %214, label %203 -197: ; preds = %.noexc37 - %198 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %199 = load i64, ptr %198, align 8, !noalias !6431, !noundef !4 - %200 = icmp eq i64 %199, 0 - br i1 %200, label %208, label %201 +203: ; preds = %.noexc37 + %204 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %205 = load i64, ptr %204, align 8, !noalias !6431, !noundef !4 + %206 = icmp eq i64 %1100, 0 + br i1 %206, label %214, label %207 -201: ; preds = %197 - %202 = load ptr, ptr %5, align 8, !noalias !6431, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %202, i64 noundef %199, i64 noundef %196) #85 - br label %208 +207: ; preds = %203 + %208 = load ptr, ptr %5, align 8, !noalias !6431, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %208, i64 noundef %1100, i64 noundef %202) #85 + br label %214 -203: ; preds = %248, %205, %158, %.body - %204 = landingpad { ptr, i32 } +209: ; preds = %254, %211, %158, %.body + %210 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #84 unreachable -205: ; preds = %206, %158 - %.pn = phi { ptr, i32 } [ %207, %206 ], [ %159, %158 ] +211: ; preds = %212, %158 + %.pn = phi { ptr, i32 } [ %213, %206 ], [ %159, %158 ] invoke void @"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE"(ptr noalias noundef nonnull align 8 dereferenceable(64) %22) #83 - to label %.thread unwind label %203 + to label %.thread unwind label %209 -206: ; preds = %193 - %207 = landingpad { ptr, i32 } +212: ; preds = %199 + %213 = landingpad { ptr, i32 } cleanup - br label %205 + br label %211 -208: ; preds = %201, %197, %.noexc37 +214: ; preds = %207, %203, %.noexc37 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !6431 call void @llvm.lifetime.end.p0(ptr nonnull %21) call void @llvm.experimental.noalias.scope.decl(metadata !6438) call void @llvm.experimental.noalias.scope.decl(metadata !6441) - %209 = load i64, ptr %22, align 8, !range !570, !alias.scope !6444, !noundef !4 - %210 = icmp eq i64 %209, -9223372036854775808 - br i1 %210, label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41", label %.noexc40 + %215 = load i64, ptr %22, align 8, !range !570, !alias.scope !6444, !noundef !4 + %216 = icmp eq i64 %215, -9223372036854775808 + br i1 %216, label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41", label %.noexc40 -.noexc40: ; preds = %208 +.noexc40: ; preds = %214 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !6445 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hfe7e05562bdee3caE.llvm.16845035774076767816"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %22) - %211 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %212 = load i64, ptr %211, align 8, !range !570, !noalias !6445, !noundef !4 - %.not.i.i.i.i.i.i38 = icmp eq i64 %212, 0 - br i1 %.not.i.i.i.i.i.i38, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", label %213 - -213: ; preds = %.noexc40 - %214 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %215 = load i64, ptr %214, align 8, !noalias !6445, !noundef !4 - %216 = icmp eq i64 %215, 0 - br i1 %216, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", label %217 + %217 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %218 = load i64, ptr %217, align 8, !range !570, !noalias !6445, !noundef !4 + %.not.i.i.i.i.i.i38 = icmp eq i64 %218, 0 + br i1 %.not.i.i.i.i.i.i38, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", label %219 -217: ; preds = %213 - %218 = load ptr, ptr %4, align 8, !noalias !6445, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %218, i64 noundef %215, i64 noundef %212) #85 +219: ; preds = %.noexc40 + %220 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %221 = load i64, ptr %220, align 8, !noalias !6445, !noundef !4 + %222 = icmp eq i64 %221, 0 + br i1 %222, label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", label %223 + +223: ; preds = %219 + %224 = load ptr, ptr %4, align 8, !noalias !6445, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %224, i64 noundef %221, i64 noundef %218) #85 br label %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39" -"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39": ; preds = %217, %213, %.noexc40 +"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39": ; preds = %223, %219, %.noexc40 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !6445 br label %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41" -219: ; preds = %184 - %220 = landingpad { ptr, i32 } +225: ; preds = %190 + %226 = landingpad { ptr, i32 } cleanup - br i1 %181, label %248, label %.thread + br i1 %187, label %254, label %.thread -"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41": ; preds = %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", %208 +"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41": ; preds = %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i39", %214 call void @llvm.lifetime.end.p0(ptr nonnull %22) br label %"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit" "_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit": ; preds = %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i", %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit", %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit41" ret void -221: ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" - %222 = inttoptr i64 %.sroa.27.293 to ptr - %223 = and i64 %.sroa.27.293, 3 - switch i64 %223, label %default.unreachable [ - i64 2, label %224 - i64 3, label %228 - i64 0, label %231 - i64 1, label %234 +227: ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" + %228 = inttoptr i64 %.sroa.27.293 to ptr + %229 = and i64 %.sroa.27.293, 3 + switch i64 %229, label %default.unreachable [ + i64 2, label %230 + i64 3, label %234 + i64 0, label %237 + i64 1, label %240 ] -default.unreachable: ; preds = %221 +default.unreachable: ; preds = %227 unreachable -224: ; preds = %221 - %225 = lshr i64 %.sroa.27.293, 32 - %226 = trunc nuw i64 %225 to i32 - %227 = call noundef i8 @_ZN3std3sys3pal4unix17decode_error_kind17h9c6936ce8cf07affE.llvm.16978709814855407318(i32 noundef %226), !range !1741 +230: ; preds = %227 + %231 = lshr i64 %.sroa.27.293, 32 + %232 = trunc nuw i64 %231 to i32 + %233 = call noundef i8 @_ZN3std3sys3pal4unix17decode_error_kind17h9c6936ce8cf07affE.llvm.16978709814855407318(i32 noundef %232), !range !1741 br label %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit -228: ; preds = %221 - %229 = lshr i64 %.sroa.27.293, 32 - %spec.select.i.i.i = trunc nuw nsw i64 %229 to i8 - %230 = icmp ult i64 %.sroa.27.293, 176093659136 - call void @llvm.assume(i1 %230) +234: ; preds = %227 + %235 = lshr i64 %.sroa.27.293, 32 + %spec.select.i.i.i = trunc nuw nsw i64 %235 to i8 + %236 = icmp ult i64 %.sroa.27.293, 176093659136 + call void @llvm.assume(i1 %236) br label %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit -231: ; preds = %221 - %232 = getelementptr inbounds nuw i8, ptr %222, i64 16 - %233 = load i8, ptr %232, align 8, !range !1741, !noalias !6454, !noundef !4 +237: ; preds = %227 + %238 = getelementptr inbounds nuw i8, ptr %228, i64 16 + %239 = load i8, ptr %238, align 8, !range !1741, !noalias !6454, !noundef !4 br label %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit -234: ; preds = %221 - %235 = getelementptr i8, ptr %222, i64 15 - %236 = load i8, ptr %235, align 8, !range !1741, !noalias !6454, !noundef !4 +240: ; preds = %227 + %241 = getelementptr i8, ptr %228, i64 15 + %242 = load i8, ptr %241, align 8, !range !1741, !noalias !6454, !noundef !4 br label %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit -"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread": ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i", %2, %138, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" - %.sroa.35.289115 = phi i64 [ %.sroa.35.289, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.35.289, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ 4, %2 ], [ 32, %138 ], [ 4, %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] - %.sroa.27.293114 = phi i64 [ %.sroa.27.293, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.27.293, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.231 to i64), %2 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.252 to i64), %138 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.231 to i64), %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] - %.sroa.14.297113 = phi i64 [ 1, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.14.297, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ 2, %2 ], [ 0, %138 ], [ 2, %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] +"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread": ; preds = %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i", %2, %142, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" + %.sroa.35.sroa.13.2123153 = phi i64 [ %.sroa.35.289, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.35.289, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ 4, %2 ], [ 32, %138 ], [ 4, %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] + %.sroa.35.sroa.0.2124152 = phi i64 [ %.sroa.27.293, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.27.293, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.231 to i64), %2 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.252 to i64), %138 ], [ ptrtoint (ptr @anon.43c633cc9d0c07b847282a0596e0d119.231 to i64), %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] + %.sroa.27.2128151 = phi i64 [ 1, %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit ], [ %.sroa.14.298, %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread" ], [ 2, %2 ], [ 0, %138 ], [ 2, %"_ZN4exif7isobmff15Parser$LT$R$GT$19skip_file_level_box17h1b2ae098b86f6525E.exit.i" ] %237 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.14.297113, ptr %237, align 8 + store i64 %.sroa.27.2128151, ptr %237, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %.sroa.27.293114, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i64 %.sroa.35.289115, ptr %.sroa.3.0..sroa_idx, align 8 + store i64 %.sroa.35.sroa.13.2123153, ptr %.sroa.3.0..sroa_idx, align 8 store i64 1, ptr %0, align 8 - br label %180 + br label %186 -_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit: ; preds = %234, %231, %228, %224 - %.0.i = phi i8 [ %227, %224 ], [ %spec.select.i.i.i, %228 ], [ %233, %231 ], [ %236, %234 ] - %238 = icmp eq i8 %.0.i, 37 - br i1 %238, label %239, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" +_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit: ; preds = %240, %237, %234, %230 + %.0.i = phi i8 [ %233, %224 ], [ %spec.select.i.i.i, %228 ], [ %239, %231 ], [ %242, %234 ] + %244 = icmp eq i8 %.0.i, 37 + br i1 %244, label %245, label %"_ZN4exif7isobmff15Parser$LT$R$GT$5parse17hab5a3c807cee4bbdE.exit.thread.thread" -239: ; preds = %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit - %240 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 0, ptr %240, align 8 +245: ; preds = %_ZN3std2io5error5Error4kind17he9f58cfbf63ce398E.llvm.16978709814855407318.exit + %246 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 0, ptr %246, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr @anon.43c633cc9d0c07b847282a0596e0d119.215, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 16, ptr %.sroa.5.0..sroa_idx, align 8 store i64 1, ptr %0, align 8 - br label %180 + br label %186 -"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit": ; preds = %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", %180 +"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit": ; preds = %"_ZN4core3ptr44drop_in_place$LT$exif..isobmff..Location$GT$17h7299dbe2bc18608bE.exit.i.i", %186 call void @llvm.lifetime.end.p0(ptr nonnull %22) - %cond.i = icmp eq i64 %.sroa.14.296, 1 - %or.cond117 = select i1 %181, i1 %cond.i, i1 false - br i1 %or.cond117, label %241, label %"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit" + %cond.i = icmp eq i64 %.sroa.14.2131, 1 + %or.cond159 = select i1 %187, i1 %cond.i, i1 false + br i1 %or.cond159, label %247, label %"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit" -241: ; preds = %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit" - %242 = inttoptr i64 %.sroa.27.292 to ptr +247: ; preds = %"_ZN4core3ptr129drop_in_place$LT$exif..isobmff..Parser$LT$$RF$mut$u20$std..io..cursor..Cursor$LT$$RF$typst..foundations..bytes..Bytes$GT$$GT$$GT$17hffa136688f74fcacE.exit" + %248 = inttoptr i64 %.sroa.27.2127 to ptr call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !6457 - %243 = icmp ne i64 %.sroa.27.292, 0 - call void @llvm.assume(i1 %243) - call void @_ZN3std2io5error14repr_bitpacked11decode_repr17had847663024859d8E.llvm.16845035774076767816(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %3, ptr noundef nonnull %242), !noalias !6457 - %244 = load i8, ptr %3, align 8, !range !572, !alias.scope !6464, !noalias !6457, !noundef !4 - %245 = icmp eq i8 %244, 3 - br i1 %245, label %246, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i" - -246: ; preds = %241 - %247 = getelementptr inbounds nuw i8, ptr %3, i64 8 - call void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$std..io..error..Custom$GT$$GT$17hc955abe8797c5cc0E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(8) %247), !noalias !6457 + %249 = icmp ne i64 %.sroa.27.2127, 0 + call void @llvm.assume(i1 %249) + call void @_ZN3std2io5error14repr_bitpacked11decode_repr17had847663024859d8E.llvm.16845035774076767816(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %3, ptr noundef nonnull %248), !noalias !6457 + %250 = load i8, ptr %3, align 8, !range !572, !alias.scope !6464, !noalias !6457, !noundef !4 + %251 = icmp eq i8 %250, 3 + br i1 %251, label %252, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i" + +252: ; preds = %247 + %253 = getelementptr inbounds nuw i8, ptr %3, i64 8 + call void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$std..io..error..Custom$GT$$GT$17hc955abe8797c5cc0E.llvm.16845035774076767816"(ptr noalias noundef nonnull align 8 dereferenceable(8) %253), !noalias !6457 br label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i" -"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i": ; preds = %246, %241 +"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8e6df756df8b0580E.exit.i": ; preds = %252, %247 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !6457 br label %"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E.exit" -.thread: ; preds = %205, %248, %219, %.body - %.pn23.pn = phi { ptr, i32 } [ %220, %248 ], [ %220, %219 ], [ %eh.lpad-body, %.body ], [ %.pn, %205 ] +.thread: ; preds = %211, %254, %225, %.body + %.pn23.pn = phi { ptr, i32 } [ %226, %248 ], [ %226, %219 ], [ %eh.lpad-body, %.body ], [ %.pn, %205 ] resume { ptr, i32 } %.pn23.pn -248: ; preds = %219 - %249 = inttoptr i64 %.sroa.27.292 to ptr - invoke fastcc void @"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E"(i64 %.sroa.14.296, ptr %249) #83 - to label %.thread unwind label %203 +254: ; preds = %225 + %255 = inttoptr i64 %.sroa.27.2127 to ptr + invoke fastcc void @"_ZN4core3ptr39drop_in_place$LT$exif..error..Error$GT$17h5d6ba6e1f50dec35E"(i64 %.sroa.14.2131, ptr %255) #83 + to label %.thread unwind label %209 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll b/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll index 5e04c180501..72c2d2e947d 100644 --- a/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll +++ b/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll @@ -169593,13 +169593,13 @@ define void @_ZN5typst9visualize5color5Color5oklab17ha39c4cec745e889eE(ptr noali 17: ; preds = %2 %18 = getelementptr inbounds nuw i8, ptr %14, i64 4 - %.sroa.042.0.copyload = load i32, ptr %18, align 4 - %.sroa.443.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 - %.sroa.443.0.copyload = load ptr, ptr %.sroa.443.0..sroa_idx, align 8 + %.sroa.040.0.copyload = load i32, ptr %18, align 4 + %.sroa.441.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 + %.sroa.441.0.copyload = load ptr, ptr %.sroa.441.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 16 %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..sroa_idx, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %14) - %.not = icmp eq i32 %.sroa.042.0.copyload, 8 + %.not = icmp eq i32 %.sroa.040.0.copyload, 8 br i1 %.not, label %27, label %26 19: ; preds = %2 @@ -169615,9 +169615,9 @@ define void @_ZN5typst9visualize5color5Color5oklab17ha39c4cec745e889eE(ptr noali br label %112 26: ; preds = %17 - store i32 %.sroa.042.0.copyload, ptr %13, align 4 + store i32 %.sroa.040.0.copyload, ptr %13, align 4 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 4 - store ptr %.sroa.443.0.copyload, ptr %.sroa.3.0..sroa_idx, align 4 + store ptr %.sroa.441.0.copyload, ptr %.sroa.3.0..sroa_idx, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 12 store i64 %.sroa.5.0.copyload, ptr %.sroa.4.0..sroa_idx, align 4 call void @_ZN5typst9visualize5color5Color8to_oklab17hebe9a90cf2d29a10E(ptr noalias noundef nonnull sret({ i32, [4 x i32] }) align 4 captures(none) dereferenceable(20) %15, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(20) %13) @@ -169669,7 +169669,7 @@ common.resume: ; preds = %84, %62, %38 %common.resume.op = phi { ptr, i32 } [ %39, %38 ], [ %63, %62 ], [ %85, %84 ] resume { ptr, i32 } %common.resume.op -_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84: ; preds = %36 +_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread82: ; preds = %36 %42 = load ptr, ptr %9, align 8, !noalias !36868, !nonnull !4, !noundef !4 %43 = load double, ptr %37, align 8, !noalias !36868, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !36868 @@ -169727,18 +169727,18 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #55, !noalias !36882 unreachable -"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64": ; preds = %60 +"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i62": ; preds = %60 %66 = load ptr, ptr %6, align 8, !noalias !36879, !nonnull !4, !noundef !4 %67 = load i64, ptr %61, align 8, !noalias !36879, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !36879 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !36872 br label %90 -68: ; preds = %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit +68: ; preds = %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread82, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit %69 = phi double [ %43, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84 ], [ %46, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] - %.sroa.0.087 = phi ptr [ %42, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84 ], [ %44, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] + %.sroa.0.085 = phi ptr [ %42, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread84 ], [ %44, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.0.087, ptr %70, align 8 + store ptr %.sroa.0.085, ptr %70, align 8 %71 = getelementptr inbounds nuw i8, ptr %0, i64 16 store double %69, ptr %71, align 8 br label %112 @@ -169782,41 +169782,41 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #55, !noalias !36893 unreachable -"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66": ; preds = %82 +"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64": ; preds = %82 %88 = load ptr, ptr %3, align 8, !noalias !36890, !nonnull !4, !noundef !4 %89 = load i64, ptr %83, align 8, !noalias !36890, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !36890 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !36883 br label %99 -90: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64", %49 - %.sroa.670.0.ph = phi i64 [ %57, %49 ], [ %67, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" ] - %.sroa.069.0.ph = phi ptr [ %51, %49 ], [ %66, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" ] +90: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i62", %49 + %.sroa.668.0.ph = phi i64 [ %57, %49 ], [ %67, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" ] + %.sroa.067.0.ph = phi ptr [ %51, %49 ], [ %66, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64" ] %91 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.069.0.ph, ptr %91, align 8 + store ptr %.sroa.067.0.ph, ptr %91, align 8 %92 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.670.0.ph, ptr %92, align 8 + store i64 %.sroa.668.0.ph, ptr %92, align 8 br label %112 93: ; preds = %80 call void @llvm.lifetime.start.p0(ptr nonnull %12) call void @_ZN5typst11foundations4args4Args3eat17hfb18ecea20e575e8E(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %12, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) %94 = load i64, ptr %12, align 8, !range !26, !noundef !4 - %trunc58 = trunc nuw i64 %94 to i1 + %trunc56 = trunc nuw i64 %94 to i1 %95 = getelementptr inbounds nuw i8, ptr %12, i64 8 %96 = load i64, ptr %95, align 8 %97 = getelementptr inbounds nuw i8, ptr %12, i64 16 %98 = load double, ptr %97, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %12) - br i1 %trunc58, label %108, label %102 + br i1 %trunc56, label %108, label %102 -99: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66", %72 - %.sroa.673.0.ph = phi i64 [ %79, %72 ], [ %89, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66" ] - %.sroa.072.0.ph = phi ptr [ %73, %72 ], [ %88, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66" ] +99: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i64", %72 + %.sroa.671.0.ph = phi i64 [ %79, %72 ], [ %89, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66" ] + %.sroa.070.0.ph = phi ptr [ %73, %72 ], [ %88, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i66" ] %100 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.072.0.ph, ptr %100, align 8 + store ptr %.sroa.070.0.ph, ptr %100, align 8 %101 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.673.0.ph, ptr %101, align 8 + store i64 %.sroa.671.0.ph, ptr %101, align 8 br label %112 102: ; preds = %93 @@ -169826,12 +169826,12 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 %106 = select i1 %103, float 1.000000e+00, float %105 %107 = getelementptr inbounds nuw i8, ptr %15, i64 4 store float %104, ptr %107, align 4 - %.sroa.040.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 8 - store i32 %56, ptr %.sroa.040.sroa.4.0..sroa_idx, align 4 - %.sroa.040.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 12 - store i32 %78, ptr %.sroa.040.sroa.5.0..sroa_idx, align 4 - %.sroa.441.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 16 - store float %106, ptr %.sroa.441.0..sroa_idx, align 4 + %.sroa.038.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 8 + store i32 %56, ptr %.sroa.038.sroa.4.0..sroa_idx, align 4 + %.sroa.038.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 12 + store i32 %78, ptr %.sroa.038.sroa.5.0..sroa_idx, align 4 + %.sroa.439.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 16 + store float %106, ptr %.sroa.439.0..sroa_idx, align 4 store i32 1, ptr %15, align 4 br label %47 @@ -169879,13 +169879,13 @@ define void @_ZN5typst9visualize5color5Color5oklch17h47e1b1df93a0df93E(ptr noali 17: ; preds = %2 %18 = getelementptr inbounds nuw i8, ptr %14, i64 4 - %.sroa.035.0.copyload = load i32, ptr %18, align 4 - %.sroa.436.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 - %.sroa.436.0.copyload = load ptr, ptr %.sroa.436.0..sroa_idx, align 8 + %.sroa.034.0.copyload = load i32, ptr %18, align 4 + %.sroa.435.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 + %.sroa.435.0.copyload = load ptr, ptr %.sroa.435.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 16 %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..sroa_idx, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %14) - %.not = icmp eq i32 %.sroa.035.0.copyload, 8 + %.not = icmp eq i32 %.sroa.034.0.copyload, 8 br i1 %.not, label %27, label %26 19: ; preds = %2 @@ -169901,9 +169901,9 @@ define void @_ZN5typst9visualize5color5Color5oklch17h47e1b1df93a0df93E(ptr noali br label %118 26: ; preds = %17 - store i32 %.sroa.035.0.copyload, ptr %13, align 4 + store i32 %.sroa.034.0.copyload, ptr %13, align 4 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 4 - store ptr %.sroa.436.0.copyload, ptr %.sroa.3.0..sroa_idx, align 4 + store ptr %.sroa.435.0.copyload, ptr %.sroa.3.0..sroa_idx, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 12 store i64 %.sroa.5.0.copyload, ptr %.sroa.4.0..sroa_idx, align 4 call void @_ZN5typst9visualize5color5Color8to_oklch17heafc265185d45ce3E(ptr noalias noundef nonnull sret({ i32, [4 x i32] }) align 4 captures(none) dereferenceable(20) %15, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(20) %13) @@ -169955,7 +169955,7 @@ common.resume: ; preds = %83, %62, %38 %common.resume.op = phi { ptr, i32 } [ %39, %38 ], [ %63, %62 ], [ %84, %83 ] resume { ptr, i32 } %common.resume.op -_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79: ; preds = %36 +_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread78: ; preds = %36 %42 = load ptr, ptr %9, align 8, !noalias !36901, !nonnull !4, !noundef !4 %43 = load double, ptr %37, align 8, !noalias !36901, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !36901 @@ -170013,18 +170013,18 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #55, !noalias !36915 unreachable -"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54": ; preds = %60 +"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i53": ; preds = %60 %66 = load ptr, ptr %6, align 8, !noalias !36912, !nonnull !4, !noundef !4 %67 = load i64, ptr %61, align 8, !noalias !36912, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !36912 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !36905 br label %92 -68: ; preds = %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit +68: ; preds = %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread78, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit %69 = phi double [ %43, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79 ], [ %46, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] - %.sroa.0.082 = phi ptr [ %42, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79 ], [ %44, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] + %.sroa.0.081 = phi ptr [ %42, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit.thread79 ], [ %44, %_ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit ] %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.0.082, ptr %70, align 8 + store ptr %.sroa.0.081, ptr %70, align 8 %71 = getelementptr inbounds nuw i8, ptr %0, i64 16 store double %69, ptr %71, align 8 br label %118 @@ -170033,13 +170033,13 @@ _ZN5typst11foundations4args4Args6expect17hbda5e9339bd4d592E.exit: ; preds = %27 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !36916 call void @_ZN5typst11foundations4args4Args3eat17haf9f8c328f5f41c6E.llvm.3683678558897460461(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull align 8 dereferenceable(24) %1), !noalias !36921 %73 = load i64, ptr %5, align 8, !range !26, !noalias !36916, !noundef !4 - %trunc.i55 = trunc nuw i64 %73 to i1 + %trunc.i54 = trunc nuw i64 %73 to i1 %74 = getelementptr inbounds nuw i8, ptr %5, i64 8 %75 = load i64, ptr %74, align 8, !noalias !36916 %76 = getelementptr inbounds nuw i8, ptr %5, i64 16 %77 = load i64, ptr %76, align 8, !noalias !36916 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !36916 - br i1 %trunc.i55, label %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit, label %78 + br i1 %trunc.i54, label %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit, label %78 78: ; preds = %72 %79 = icmp eq i64 %75, 0 @@ -170071,7 +170071,7 @@ _ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread: ; preds call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #55, !noalias !36926 unreachable -_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93: ; preds = %81 +_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread92: ; preds = %81 %87 = load ptr, ptr %3, align 8, !noalias !36923, !nonnull !4, !noundef !4 %88 = load double, ptr %82, align 8, !noalias !36923, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !36923 @@ -170084,13 +170084,13 @@ _ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit: ; preds = %72 %91 = bitcast i64 %77 to double br i1 %90, label %95, label %102 -92: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54", %49 - %.sroa.660.0.ph = phi i64 [ %57, %49 ], [ %67, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54" ] - %.sroa.059.0.ph = phi ptr [ %51, %49 ], [ %66, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54" ] +92: ; preds = %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i53", %49 + %.sroa.659.0.ph = phi i64 [ %57, %49 ], [ %67, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54" ] + %.sroa.058.0.ph = phi ptr [ %51, %49 ], [ %66, %"_ZN96_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$u5b$T$u3b$$u20$N$u5d$$GT$$GT$4from17haeeccbaf5905b57bE.exit.i54" ] %93 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.059.0.ph, ptr %93, align 8 + store ptr %.sroa.058.0.ph, ptr %93, align 8 %94 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.660.0.ph, ptr %94, align 8 + store i64 %.sroa.659.0.ph, ptr %94, align 8 br label %118 95: ; preds = %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit @@ -170098,19 +170098,19 @@ _ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit: ; preds = %72 call void @llvm.lifetime.start.p0(ptr nonnull %12) call void @_ZN5typst11foundations4args4Args3eat17hfb18ecea20e575e8E(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %12, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) %97 = load i64, ptr %12, align 8, !range !26, !noundef !4 - %trunc48 = trunc nuw i64 %97 to i1 + %trunc47 = trunc nuw i64 %97 to i1 %98 = getelementptr inbounds nuw i8, ptr %12, i64 8 %99 = load i64, ptr %98, align 8 %100 = getelementptr inbounds nuw i8, ptr %12, i64 16 %101 = load double, ptr %100, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %12) - br i1 %trunc48, label %114, label %106 + br i1 %trunc47, label %114, label %106 -102: ; preds = %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit +102: ; preds = %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread92, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit %103 = phi double [ %88, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93 ], [ %91, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit ] - %.sroa.062.096 = phi ptr [ %87, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93 ], [ %89, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit ] + %.sroa.061.095 = phi ptr [ %87, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit.thread93 ], [ %89, %_ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit ] %104 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.062.096, ptr %104, align 8 + store ptr %.sroa.061.095, ptr %104, align 8 %105 = getelementptr inbounds nuw i8, ptr %0, i64 16 store double %103, ptr %105, align 8 br label %118 @@ -170124,12 +170124,12 @@ _ZN5typst11foundations4args4Args6expect17hc80b218e45ae4d3eE.exit: ; preds = %72 %112 = select i1 %107, float 1.000000e+00, float %111 %113 = getelementptr inbounds nuw i8, ptr %15, i64 4 store float %108, ptr %113, align 4 - %.sroa.4.0..sroa_idx66 = getelementptr inbounds nuw i8, ptr %15, i64 8 - store float %56, ptr %.sroa.4.0..sroa_idx66, align 4 - %.sroa.5.0..sroa_idx67 = getelementptr inbounds nuw i8, ptr %15, i64 12 - store float %110, ptr %.sroa.5.0..sroa_idx67, align 4 - %.sroa.669.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 16 - store float %112, ptr %.sroa.669.0..sroa_idx, align 4 + %.sroa.4.0..sroa_idx65 = getelementptr inbounds nuw i8, ptr %15, i64 8 + store float %56, ptr %.sroa.4.0..sroa_idx65, align 4 + %.sroa.5.0..sroa_idx66 = getelementptr inbounds nuw i8, ptr %15, i64 12 + store float %110, ptr %.sroa.5.0..sroa_idx66, align 4 + %.sroa.668.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 16 + store float %112, ptr %.sroa.668.0..sroa_idx, align 4 store i32 2, ptr %15, align 4 br label %47 diff --git a/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll b/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll index 121f03c168f..6f31b55e2e9 100644 --- a/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll +++ b/bench/wasmtime-rs/optimized/4ab4rlryc5h7bf6z.ll @@ -6920,7 +6920,7 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT br i1 %.not.not.not34, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %2 - %.sroa.10.0.lcssa = phi i64 [ %1, %2 ], [ %41, %.lr.ph ] + %.sroa.10.0.lcssa = phi i64 [ %1, %2 ], [ %40, %.lr.ph ] %.0.in.lcssa = phi i64 [ %.0.in32, %2 ], [ %.0.in, %.lr.ph ] %.0.lcssa = phi i64 [ %.033, %2 ], [ %.0, %.lr.ph ] %10 = add i64 %4, -2 @@ -6939,69 +6939,69 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %.sroa.17, i64 12, i1 false) %17 = icmp ult i64 %.sroa.10.1, %4 tail call void @llvm.assume(i1 %17) - %.sroa.024.0.copyload.i = load i32, ptr %16, align 4, !noalias !1355 + %.sroa.026.0.copyload.i = load i32, ptr %16, align 4, !noalias !1355 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 4 %.sroa.4.0.copyload.i = load i32, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !1355 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 8 - %18 = load i32, ptr %.sroa.5.0..sroa_idx.i, align 4, !noalias !1355 - %19 = icmp ugt i64 %.sroa.10.1, %1 - br i1 %19, label %.lr.ph.i, label %.loopexit + %.sroa.5.0.copyload.i = load i32, ptr %.sroa.5.0..sroa_idx.i, align 4, !noalias !1355 + %18 = icmp ugt i64 %.sroa.10.1, %1 + br i1 %18, label %.lr.ph.i, label %.loopexit .lr.ph.i: ; preds = %15 - %20 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i, i32 2147483647) - br label %21 + %19 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i, i32 2147483647) + br label %20 -21: ; preds = %28, %.lr.ph.i - %.sroa.9.025.i = phi i64 [ %.sroa.10.1, %.lr.ph.i ], [ %23, %28 ] - %22 = add i64 %.sroa.9.025.i, -1 - %23 = lshr i64 %22, 1 - %24 = icmp ult i64 %23, %4 - tail call void @llvm.assume(i1 %24) - %25 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %6, i64 %23 - %26 = getelementptr i8, ptr %25, i64 4 - %.val10.i = load i32, ptr %26, align 4, !alias.scope !1358, !noalias !1363, !noundef !4 - %27 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i, i32 2147483647) - %switch.i.not.i = icmp ugt i32 %27, %20 - br i1 %switch.i.not.i, label %28, label %.loopexit +20: ; preds = %27, %.lr.ph.i + %.sroa.9.027.i = phi i64 [ %.sroa.10.1, %.lr.ph.i ], [ %22, %27 ] + %21 = add i64 %.sroa.9.027.i, -1 + %22 = lshr i64 %21, 1 + %23 = icmp ult i64 %22, %4 + tail call void @llvm.assume(i1 %23) + %24 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %6, i64 %22 + %25 = getelementptr i8, ptr %24, i64 4 + %.val10.i = load i32, ptr %25, align 4, !alias.scope !1358, !noalias !1363, !noundef !4 + %26 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i, i32 2147483647) + %switch.i.not.i = icmp ugt i32 %26, %19 + br i1 %switch.i.not.i, label %27, label %.loopexit -28: ; preds = %21 - %29 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.9.025.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 4 dereferenceable(12) %25, i64 12, i1 false), !noalias !1355 - %30 = icmp ugt i64 %23, %1 - br i1 %30, label %21, label %.loopexit - -.loopexit: ; preds = %28, %21, %15 - %.sroa.9.0.lcssa.i = phi i64 [ %.sroa.10.1, %15 ], [ %23, %28 ], [ %.sroa.9.025.i, %21 ] - %31 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.9.0.lcssa.i - store i32 %.sroa.024.0.copyload.i, ptr %31, align 4, !noalias !1355 - %.sroa.19.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %31, i64 4 +27: ; preds = %20 + %28 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.9.027.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %28, ptr noundef nonnull align 4 dereferenceable(12) %24, i64 12, i1 false), !noalias !1355 + %29 = icmp ugt i64 %22, %1 + br i1 %29, label %20, label %.loopexit + +.loopexit: ; preds = %27, %20, %15 + %.sroa.9.0.lcssa.i = phi i64 [ %.sroa.10.1, %15 ], [ %22, %27 ], [ %.sroa.9.027.i, %20 ] + %30 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.9.0.lcssa.i + store i32 %.sroa.026.0.copyload.i, ptr %30, align 4, !noalias !1355 + %.sroa.19.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %30, i64 4 store i32 %.sroa.4.0.copyload.i, ptr %.sroa.19.24..sroa_idx.i, align 4, !noalias !1355 - %.sroa.20.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %31, i64 8 - store i32 %18, ptr %.sroa.20.24..sroa_idx.i, align 4, !noalias !1355 + %.sroa.20.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %30, i64 8 + store i32 %.sroa.5.0.copyload.i, ptr %.sroa.20.24..sroa_idx.i, align 4, !noalias !1355 ret void .lr.ph: ; preds = %2, %.lr.ph %.037 = phi i64 [ %.0, %.lr.ph ], [ %.033, %2 ] %.0.in36 = phi i64 [ %.0.in, %.lr.ph ], [ %.0.in32, %2 ] - %.sroa.10.035 = phi i64 [ %41, %.lr.ph ], [ %1, %2 ] - %32 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.037 - %33 = add nuw i64 %.0.in36, 2 - %34 = icmp ult i64 %33, %4 - tail call void @llvm.assume(i1 %34) - %35 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %33 - %36 = getelementptr i8, ptr %32, i64 4 - %.val = load i32, ptr %36, align 4, !alias.scope !1366, !noalias !1371, !noundef !4 - %37 = getelementptr i8, ptr %35, i64 4 - %.val24 = load i32, ptr %37, align 4, !alias.scope !1371, !noalias !1366, !noundef !4 - %38 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24, i32 2147483647) - %39 = tail call i32 @llvm.uadd.sat.i32(i32 %.val, i32 2147483647) - %switch.i = icmp ule i32 %38, %39 - %40 = zext i1 %switch.i to i64 - %41 = add nuw i64 %.037, %40 - %42 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %41 - %43 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.10.035 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %43, ptr noundef nonnull align 4 dereferenceable(12) %42, i64 12, i1 false) - %.0.in = shl i64 %41, 1 + %.sroa.10.035 = phi i64 [ %40, %.lr.ph ], [ %1, %2 ] + %31 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.037 + %32 = add nuw i64 %.0.in36, 2 + %33 = icmp ult i64 %32, %4 + tail call void @llvm.assume(i1 %33) + %34 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %32 + %35 = getelementptr i8, ptr %31, i64 4 + %.val = load i32, ptr %35, align 4, !alias.scope !1366, !noalias !1371, !noundef !4 + %36 = getelementptr i8, ptr %34, i64 4 + %.val24 = load i32, ptr %36, align 4, !alias.scope !1371, !noalias !1366, !noundef !4 + %37 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24, i32 2147483647) + %38 = tail call i32 @llvm.uadd.sat.i32(i32 %.val, i32 2147483647) + %switch.i = icmp ule i32 %37, %38 + %39 = zext i1 %switch.i to i64 + %40 = add nuw i64 %.037, %39 + %41 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %40 + %42 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %6, i64 %.sroa.10.035 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %42, ptr noundef nonnull align 4 dereferenceable(12) %41, i64 12, i1 false) + %.0.in = shl i64 %40, 1 %.0 = or disjoint i64 %.0.in, 1 %.not.not.not = icmp ult i64 %.0.in, %9 br i1 %.not.not.not, label %.lr.ph, label %._crit_edge @@ -7232,7 +7232,7 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT "_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit.thread": ; preds = %2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit" %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i8 2, ptr %14, align 4 - br label %55 + br label %54 15: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit" %.sroa.6.0..sroa_idx4 = getelementptr inbounds nuw i8, ptr %12, i64 9 @@ -7265,7 +7265,7 @@ _ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.e br i1 %.not.not.not34.i.not.i, label %._crit_edge.i.i, label %.lr.ph.i5.i ._crit_edge.i.i: ; preds = %.lr.ph.i5.i, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i - %.sroa.10.0.lcssa.i.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ], [ %51, %.lr.ph.i5.i ] + %.sroa.10.0.lcssa.i.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ], [ %50, %.lr.ph.i5.i ] %.0.in.lcssa.i.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ], [ %.0.in.i.i, %.lr.ph.i5.i ] %.0.lcssa.i.i = phi i64 [ 1, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ], [ %.0.i.i, %.lr.ph.i5.i ] %23 = add i64 %5, -3 @@ -7284,19 +7284,19 @@ _ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.e call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 8 dereferenceable(12) %.sroa.17.i.i, i64 12, i1 false), !noalias !1418 %30 = icmp ult i64 %.sroa.10.1.i.i, %7 tail call void @llvm.assume(i1 %30) - %.sroa.024.0.copyload.i.i.i = load i32, ptr %29, align 4, !noalias !1421 + %.sroa.026.0.copyload.i.i.i = load i32, ptr %29, align 4, !noalias !1421 %.sroa.4.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %29, i64 4 %.sroa.4.0.copyload.i.i.i = load i32, ptr %.sroa.4.0..sroa_idx.i.i.i, align 4, !noalias !1421 %.sroa.5.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %29, i64 8 - %31 = load i32, ptr %.sroa.5.0..sroa_idx.i.i.i, align 4, !noalias !1421 + %.sroa.5.0.copyload.i.i.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i.i, align 4, !noalias !1421 %.not.i = icmp eq i64 %.sroa.10.1.i.i, 0 br i1 %.not.i, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i", label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %28 - %32 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i.i.i, i32 2147483647) - br label %33 + %31 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i.i.i, i32 2147483647) + br label %32 -33: ; preds = %40, %.lr.ph.i.i.i +39: ; preds = %39, %.lr.ph.i.i.i %.sroa.9.025.i.i.i = phi i64 [ %.sroa.10.1.i.i, %.lr.ph.i.i.i ], [ %35, %40 ] %34 = add i64 %.sroa.9.025.i.i.i, -1 %35 = lshr i64 %34, 1 @@ -7318,45 +7318,45 @@ _ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.e .lr.ph.i5.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i, %.lr.ph.i5.i %.037.i.i = phi i64 [ %.0.i.i, %.lr.ph.i5.i ], [ 1, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ] %.0.in36.i.i = phi i64 [ %.0.in.i.i, %.lr.ph.i5.i ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ] - %.sroa.10.035.i.i = phi i64 [ %51, %.lr.ph.i5.i ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ] - %42 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.037.i.i - %43 = add nuw i64 %.0.in36.i.i, 2 - %44 = icmp ult i64 %43, %7 - tail call void @llvm.assume(i1 %44) - %45 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %43 - %46 = getelementptr i8, ptr %42, i64 4 - %.val.i.i = load i32, ptr %46, align 4, !alias.scope !1432, !noalias !1437, !noundef !4 - %47 = getelementptr i8, ptr %45, i64 4 - %.val24.i.i = load i32, ptr %47, align 4, !alias.scope !1440, !noalias !1441, !noundef !4 - %48 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24.i.i, i32 2147483647) - %49 = tail call i32 @llvm.uadd.sat.i32(i32 %.val.i.i, i32 2147483647) - %switch.i.i.i = icmp ule i32 %48, %49 - %50 = zext i1 %switch.i.i.i to i64 - %51 = add nuw i64 %.037.i.i, %50 - %52 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %51 - %53 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.10.035.i.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %53, ptr noundef nonnull align 4 dereferenceable(12) %52, i64 12, i1 false), !noalias !1418 - %.0.in.i.i = shl i64 %51, 1 + %.sroa.10.035.i.i = phi i64 [ %50, %.lr.ph.i5.i ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit.i ] + %41 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.037.i.i + %42 = add nuw i64 %.0.in36.i.i, 2 + %43 = icmp ult i64 %42, %7 + tail call void @llvm.assume(i1 %43) + %44 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %42 + %45 = getelementptr i8, ptr %41, i64 4 + %.val.i.i = load i32, ptr %45, align 4, !alias.scope !1432, !noalias !1437, !noundef !4 + %46 = getelementptr i8, ptr %44, i64 4 + %.val24.i.i = load i32, ptr %46, align 4, !alias.scope !1440, !noalias !1441, !noundef !4 + %47 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24.i.i, i32 2147483647) + %48 = tail call i32 @llvm.uadd.sat.i32(i32 %.val.i.i, i32 2147483647) + %switch.i.i.i = icmp ule i32 %47, %48 + %49 = zext i1 %switch.i.i.i to i64 + %50 = add nuw i64 %.037.i.i, %49 + %51 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %50 + %52 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.10.035.i.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %52, ptr noundef nonnull align 4 dereferenceable(12) %51, i64 12, i1 false), !noalias !1418 + %.0.in.i.i = shl i64 %50, 1 %.0.i.i = or disjoint i64 %.0.in.i.i, 1 %.not.not.not.i.i = icmp ult i64 %.0.in.i.i, %22 br i1 %.not.not.not.i.i, label %.lr.ph.i5.i, label %._crit_edge.i.i -"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i": ; preds = %40, %33, %28 - %.sroa.9.0.lcssa.i.i.i = phi i64 [ 0, %28 ], [ 0, %40 ], [ %.sroa.9.025.i.i.i, %33 ] - %54 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.9.0.lcssa.i.i.i - store i32 %.sroa.024.0.copyload.i.i.i, ptr %54, align 4, !noalias !1421 - %.sroa.19.24..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %54, i64 4 +"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i": ; preds = %39, %32, %28 + %.sroa.9.0.lcssa.i.i.i = phi i64 [ 0, %28 ], [ 0, %39 ], [ %.sroa.9.025.i.i.i, %32 ] + %53 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %11, i64 %.sroa.9.0.lcssa.i.i.i + store i32 %.sroa.026.0.copyload.i.i.i, ptr %53, align 4, !noalias !1421 + %.sroa.19.24..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %53, i64 4 store i32 %.sroa.4.0.copyload.i.i.i, ptr %.sroa.19.24..sroa_idx.i.i.i, align 4, !noalias !1421 - %.sroa.20.24..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %54, i64 8 - store i32 %31, ptr %.sroa.20.24..sroa_idx.i.i.i, align 4, !noalias !1421 + %.sroa.20.24..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %53, i64 8 + store i32 %.sroa.5.0.copyload.i.i.i, ptr %.sroa.20.24..sroa_idx.i.i.i, align 4, !noalias !1421 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.17.i.i) br label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$3pop28_$u7b$$u7b$closure$u7d$$u7d$17hf1bf564457dce586E.llvm.1710812290736639100.exit" "_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$3pop28_$u7b$$u7b$closure$u7d$$u7d$17hf1bf564457dce586E.llvm.1710812290736639100.exit": ; preds = %15, %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit.i" call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, i64 12, i1 false) - br label %55 + br label %54 -55: ; preds = %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$3pop28_$u7b$$u7b$closure$u7d$$u7d$17hf1bf564457dce586E.llvm.1710812290736639100.exit", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit.thread" +54: ; preds = %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$3pop28_$u7b$$u7b$closure$u7d$$u7d$17hf1bf564457dce586E.llvm.1710812290736639100.exit", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17hb9d60dca4c766773E.llvm.1710812290736639100.exit.thread" ret void } @@ -7430,7 +7430,7 @@ _ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.e br i1 %.not.not.not34.i.not, label %._crit_edge.i, label %.lr.ph.i5 ._crit_edge.i: ; preds = %.lr.ph.i5, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit - %.sroa.10.0.lcssa.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ], [ %45, %.lr.ph.i5 ] + %.sroa.10.0.lcssa.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ], [ %44, %.lr.ph.i5 ] %.0.in.lcssa.i = phi i64 [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ], [ %.0.in.i, %.lr.ph.i5 ] %.0.lcssa.i = phi i64 [ 1, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ], [ %.0.i, %.lr.ph.i5 ] %17 = add i64 %5, -2 @@ -7449,71 +7449,71 @@ _ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.e call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %23, ptr noundef nonnull align 8 dereferenceable(12) %.sroa.17.i, i64 12, i1 false), !noalias !1442 %24 = icmp ult i64 %.sroa.10.1.i, %5 tail call void @llvm.assume(i1 %24) - %.sroa.024.0.copyload.i.i = load i32, ptr %23, align 4, !noalias !1445 + %.sroa.026.0.copyload.i.i = load i32, ptr %23, align 4, !noalias !1445 %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %23, i64 4 %.sroa.4.0.copyload.i.i = load i32, ptr %.sroa.4.0..sroa_idx.i.i, align 4, !noalias !1445 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %23, i64 8 - %25 = load i32, ptr %.sroa.5.0..sroa_idx.i.i, align 4, !noalias !1445 + %.sroa.5.0.copyload.i.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i, align 4, !noalias !1445 %.not = icmp eq i64 %.sroa.10.1.i, 0 br i1 %.not, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit", label %.lr.ph.i.i .lr.ph.i.i: ; preds = %22 - %26 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i.i, i32 2147483647) - br label %27 - -27: ; preds = %34, %.lr.ph.i.i - %.sroa.9.025.i.i = phi i64 [ %.sroa.10.1.i, %.lr.ph.i.i ], [ %29, %34 ] - %28 = add i64 %.sroa.9.025.i.i, -1 - %29 = lshr i64 %28, 1 - %30 = icmp ult i64 %29, %5 - tail call void @llvm.assume(i1 %30) - %31 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %10, i64 %29 - %32 = getelementptr i8, ptr %31, i64 4 - %.val10.i.i = load i32, ptr %32, align 4, !alias.scope !1448, !noalias !1453, !noundef !4 - %33 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i.i, i32 2147483647) - %switch.i.not.i.i = icmp ugt i32 %33, %26 - br i1 %switch.i.not.i.i, label %34, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit" + %25 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i.i, i32 2147483647) + br label %26 -34: ; preds = %27 - %35 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.9.025.i.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %35, ptr noundef nonnull align 4 dereferenceable(12) %31, i64 12, i1 false), !noalias !1445 - %.not6 = icmp eq i64 %29, 0 - br i1 %.not6, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit", label %27 +26: ; preds = %33, %.lr.ph.i.i + %.sroa.9.027.i.i = phi i64 [ %.sroa.10.1.i, %.lr.ph.i.i ], [ %28, %33 ] + %27 = add i64 %.sroa.9.027.i.i, -1 + %28 = lshr i64 %27, 1 + %29 = icmp ult i64 %28, %5 + tail call void @llvm.assume(i1 %29) + %30 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %10, i64 %28 + %31 = getelementptr i8, ptr %30, i64 4 + %.val10.i.i = load i32, ptr %31, align 4, !alias.scope !1448, !noalias !1453, !noundef !4 + %32 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i.i, i32 2147483647) + %switch.i.not.i.i = icmp ugt i32 %32, %25 + br i1 %switch.i.not.i.i, label %33, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit" + +33: ; preds = %26 + %34 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.9.027.i.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %34, ptr noundef nonnull align 4 dereferenceable(12) %30, i64 12, i1 false), !noalias !1445 + %.not6 = icmp eq i64 %28, 0 + br i1 %.not6, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit", label %26 .lr.ph.i5: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit, %.lr.ph.i5 %.037.i = phi i64 [ %.0.i, %.lr.ph.i5 ], [ 1, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ] %.0.in36.i = phi i64 [ %.0.in.i, %.lr.ph.i5 ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ] - %.sroa.10.035.i = phi i64 [ %45, %.lr.ph.i5 ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ] - %36 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.037.i - %37 = add nuw i64 %.0.in36.i, 2 - %38 = icmp ult i64 %37, %5 - tail call void @llvm.assume(i1 %38) - %39 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %37 - %40 = getelementptr i8, ptr %36, i64 4 - %.val.i = load i32, ptr %40, align 4, !alias.scope !1456, !noalias !1461, !noundef !4 - %41 = getelementptr i8, ptr %39, i64 4 - %.val24.i = load i32, ptr %41, align 4, !alias.scope !1464, !noalias !1465, !noundef !4 - %42 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24.i, i32 2147483647) - %43 = tail call i32 @llvm.uadd.sat.i32(i32 %.val.i, i32 2147483647) - %switch.i.i = icmp ule i32 %42, %43 - %44 = zext i1 %switch.i.i to i64 - %45 = add nuw i64 %.037.i, %44 - %46 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %45 - %47 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.10.035.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %47, ptr noundef nonnull align 4 dereferenceable(12) %46, i64 12, i1 false), !noalias !1442 - %.0.in.i = shl i64 %45, 1 + %.sroa.10.035.i = phi i64 [ %44, %.lr.ph.i5 ], [ 0, %_ZN4core3ptr19swap_nonoverlapping17h3c315fd4d9141eaeE.llvm.1710812290736639100.exit ] + %35 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.037.i + %36 = add nuw i64 %.0.in36.i, 2 + %37 = icmp ult i64 %36, %5 + tail call void @llvm.assume(i1 %37) + %38 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %36 + %39 = getelementptr i8, ptr %35, i64 4 + %.val.i = load i32, ptr %39, align 4, !alias.scope !1456, !noalias !1461, !noundef !4 + %40 = getelementptr i8, ptr %38, i64 4 + %.val24.i = load i32, ptr %40, align 4, !alias.scope !1464, !noalias !1465, !noundef !4 + %41 = tail call i32 @llvm.uadd.sat.i32(i32 %.val24.i, i32 2147483647) + %42 = tail call i32 @llvm.uadd.sat.i32(i32 %.val.i, i32 2147483647) + %switch.i.i = icmp ule i32 %41, %42 + %43 = zext i1 %switch.i.i to i64 + %44 = add nuw i64 %.037.i, %43 + %45 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %44 + %46 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.10.035.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %46, ptr noundef nonnull align 4 dereferenceable(12) %45, i64 12, i1 false), !noalias !1442 + %.0.in.i = shl i64 %44, 1 %.0.i = or disjoint i64 %.0.in.i, 1 %.not.not.not.i = icmp ult i64 %.0.in.i, %16 br i1 %.not.not.not.i, label %.lr.ph.i5, label %._crit_edge.i -"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit": ; preds = %27, %34, %22 - %.sroa.9.0.lcssa.i.i = phi i64 [ 0, %22 ], [ %.sroa.9.025.i.i, %27 ], [ 0, %34 ] - %48 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.9.0.lcssa.i.i - store i32 %.sroa.024.0.copyload.i.i, ptr %48, align 4, !noalias !1445 - %.sroa.19.24..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %48, i64 4 +"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$19sift_down_to_bottom17h7efd0383f7120568E.llvm.1710812290736639100.exit": ; preds = %26, %33, %22 + %.sroa.9.0.lcssa.i.i = phi i64 [ 0, %22 ], [ %.sroa.9.027.i.i, %26 ], [ 0, %33 ] + %47 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %10, i64 %.sroa.9.0.lcssa.i.i + store i32 %.sroa.026.0.copyload.i.i, ptr %47, align 4, !noalias !1445 + %.sroa.19.24..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %47, i64 4 store i32 %.sroa.4.0.copyload.i.i, ptr %.sroa.19.24..sroa_idx.i.i, align 4, !noalias !1445 - %.sroa.20.24..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %48, i64 8 - store i32 %25, ptr %.sroa.20.24..sroa_idx.i.i, align 4, !noalias !1445 + %.sroa.20.24..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %47, i64 8 + store i32 %.sroa.5.0.copyload.i.i, ptr %.sroa.20.24..sroa_idx.i.i, align 4, !noalias !1445 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.17.i) br label %7 } @@ -7635,45 +7635,45 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT %15 = icmp ult i64 %4, %13 tail call void @llvm.assume(i1 %15) %16 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %4 - %.sroa.024.0.copyload.i = load i32, ptr %16, align 4, !noalias !1487 + %.sroa.026.0.copyload.i = load i32, ptr %16, align 4, !noalias !1487 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 4 %.sroa.4.0.copyload.i = load i32, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !1487 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 8 - %17 = load i32, ptr %.sroa.5.0..sroa_idx.i, align 4, !noalias !1487 + %.sroa.5.0.copyload.i = load i32, ptr %.sroa.5.0..sroa_idx.i, align 4, !noalias !1487 %.not = icmp eq i64 %4, 0 br i1 %.not, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit", label %.lr.ph.i .lr.ph.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" - %18 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i, i32 2147483647) - br label %19 + %17 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload.i, i32 2147483647) + br label %18 -19: ; preds = %26, %.lr.ph.i - %.sroa.9.025.i = phi i64 [ %4, %.lr.ph.i ], [ %21, %26 ] - %20 = add i64 %.sroa.9.025.i, -1 - %21 = lshr i64 %20, 1 - %22 = icmp ult i64 %21, %13 - tail call void @llvm.assume(i1 %22) - %23 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %14, i64 %21 - %24 = getelementptr i8, ptr %23, i64 4 - %.val10.i = load i32, ptr %24, align 4, !alias.scope !1490, !noalias !1495, !noundef !4 - %25 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i, i32 2147483647) - %switch.i.not.i = icmp ugt i32 %25, %18 - br i1 %switch.i.not.i, label %26, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit" - -26: ; preds = %19 - %27 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %.sroa.9.025.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %27, ptr noundef nonnull align 4 dereferenceable(12) %23, i64 12, i1 false), !noalias !1487 - %.not1 = icmp eq i64 %21, 0 - br i1 %.not1, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit", label %19 - -"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit": ; preds = %19, %26, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" - %.sroa.9.0.lcssa.i = phi i64 [ 0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" ], [ 0, %26 ], [ %.sroa.9.025.i, %19 ] - %28 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %.sroa.9.0.lcssa.i - store i32 %.sroa.024.0.copyload.i, ptr %28, align 4, !noalias !1487 - %.sroa.19.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %28, i64 4 +18: ; preds = %25, %.lr.ph.i + %.sroa.9.027.i = phi i64 [ %4, %.lr.ph.i ], [ %20, %25 ] + %19 = add i64 %.sroa.9.027.i, -1 + %20 = lshr i64 %19, 1 + %21 = icmp ult i64 %20, %13 + tail call void @llvm.assume(i1 %21) + %22 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %14, i64 %20 + %23 = getelementptr i8, ptr %22, i64 4 + %.val10.i = load i32, ptr %23, align 4, !alias.scope !1490, !noalias !1495, !noundef !4 + %24 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10.i, i32 2147483647) + %switch.i.not.i = icmp ugt i32 %24, %17 + br i1 %switch.i.not.i, label %25, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit" + +25: ; preds = %18 + %26 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %.sroa.9.027.i + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(12) %22, i64 12, i1 false), !noalias !1487 + %.not1 = icmp eq i64 %20, 0 + br i1 %.not1, label %"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit", label %18 + +"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$7sift_up17hf282fc65d8908616E.llvm.1710812290736639100.exit": ; preds = %18, %25, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" + %.sroa.9.0.lcssa.i = phi i64 [ 0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h921968be62e7d2b6E.llvm.1710812290736639100.exit" ], [ 0, %25 ], [ %.sroa.9.027.i, %18 ] + %27 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %14, i64 %.sroa.9.0.lcssa.i + store i32 %.sroa.026.0.copyload.i, ptr %27, align 4, !noalias !1487 + %.sroa.19.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %27, i64 4 store i32 %.sroa.4.0.copyload.i, ptr %.sroa.19.24..sroa_idx.i, align 4, !noalias !1487 - %.sroa.20.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %28, i64 8 - store i32 %17, ptr %.sroa.20.24..sroa_idx.i, align 4, !noalias !1487 + %.sroa.20.24..sroa_idx.i = getelementptr inbounds nuw i8, ptr %27, i64 8 + store i32 %.sroa.5.0.copyload.i, ptr %.sroa.20.24..sroa_idx.i, align 4, !noalias !1487 ret void } @@ -7758,46 +7758,46 @@ define hidden noundef range(i64 0, -1) i64 @"_ZN5alloc11collections11binary_heap %8 = icmp ult i64 %2, %7 tail call void @llvm.assume(i1 %8) %9 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %2 - %.sroa.024.0.copyload = load i32, ptr %9, align 4 + %.sroa.026.0.copyload = load i32, ptr %9, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 4 %.sroa.4.0.copyload = load i32, ptr %.sroa.4.0..sroa_idx, align 4 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 - %10 = load i32, ptr %.sroa.5.0..sroa_idx, align 4 - %11 = icmp ugt i64 %2, %1 - br i1 %11, label %.lr.ph, label %._crit_edge + %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4 + %10 = icmp ugt i64 %2, %1 + br i1 %10, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %3 - %12 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload, i32 2147483647) - br label %14 + %11 = tail call i32 @llvm.uadd.sat.i32(i32 %.sroa.4.0.copyload, i32 2147483647) + br label %13 -._crit_edge: ; preds = %21, %14, %3 - %.sroa.9.0.lcssa = phi i64 [ %2, %3 ], [ %.sroa.9.025, %14 ], [ %16, %21 ] - %13 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %.sroa.9.0.lcssa - store i32 %.sroa.024.0.copyload, ptr %13, align 4 - %.sroa.19.24..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 4 +._crit_edge: ; preds = %20, %13, %3 + %.sroa.9.0.lcssa = phi i64 [ %2, %3 ], [ %.sroa.9.027, %14 ], [ %15, %20 ] + %12 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %.sroa.9.0.lcssa + store i32 %.sroa.026.0.copyload, ptr %12, align 4 + %.sroa.19.24..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 4 store i32 %.sroa.4.0.copyload, ptr %.sroa.19.24..sroa_idx, align 4 - %.sroa.20.24..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 8 - store i32 %10, ptr %.sroa.20.24..sroa_idx, align 4 + %.sroa.20.24..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 8 + store i32 %.sroa.5.0.copyload, ptr %.sroa.20.24..sroa_idx, align 4 ret i64 %.sroa.9.0.lcssa -14: ; preds = %.lr.ph, %21 - %.sroa.9.025 = phi i64 [ %2, %.lr.ph ], [ %16, %21 ] - %15 = add i64 %.sroa.9.025, -1 - %16 = lshr i64 %15, 1 - %17 = icmp ult i64 %16, %7 - tail call void @llvm.assume(i1 %17) - %18 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %5, i64 %16 - %19 = getelementptr i8, ptr %18, i64 4 - %.val10 = load i32, ptr %19, align 4, !alias.scope !1371, !noalias !1366, !noundef !4 - %20 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10, i32 2147483647) - %switch.i.not = icmp ugt i32 %20, %12 - br i1 %switch.i.not, label %21, label %._crit_edge - -21: ; preds = %14 - %22 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %.sroa.9.025 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %22, ptr noundef nonnull align 4 dereferenceable(12) %18, i64 12, i1 false) - %23 = icmp ugt i64 %16, %1 - br i1 %23, label %14, label %._crit_edge +13: ; preds = %.lr.ph, %20 + %.sroa.9.027 = phi i64 [ %2, %.lr.ph ], [ %15, %20 ] + %14 = add i64 %.sroa.9.027, -1 + %15 = lshr i64 %14, 1 + %16 = icmp ult i64 %15, %7 + tail call void @llvm.assume(i1 %16) + %17 = getelementptr inbounds nuw { i32, i32, i8, [3 x i8] }, ptr %5, i64 %15 + %18 = getelementptr i8, ptr %17, i64 4 + %.val10 = load i32, ptr %18, align 4, !alias.scope !1371, !noalias !1366, !noundef !4 + %19 = tail call i32 @llvm.uadd.sat.i32(i32 %.val10, i32 2147483647) + %switch.i.not = icmp ugt i32 %19, %11 + br i1 %switch.i.not, label %20, label %._crit_edge + +20: ; preds = %13 + %21 = getelementptr inbounds { i32, i32, i8, [3 x i8] }, ptr %5, i64 %.sroa.9.027 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %21, ptr noundef nonnull align 4 dereferenceable(12) %17, i64 12, i1 false) + %22 = icmp ugt i64 %15, %1 + br i1 %22, label %13, label %._crit_edge } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable