From b5635d7d41507374452e6495282a2fe2d3007d7b Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Mon, 28 Apr 2025 22:22:10 +0800 Subject: [PATCH 1/3] pre-commit: PR137604 --- 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 c5409e09ef4..3362e94289b 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/137604 export COMPTIME_MODE=0 # Please rebase manually From 649e2f94575476db4490a3b89ab0b4e687618b74 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 14:43:15 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/eastl/optimized/TestBitset.ll | 12 +- bench/hyperscan/optimized/buildstate.ll | 163 ++-- .../influxdb-rs/optimized/4bpmt5749p4g145g.ll | 3 +- bench/openjdk/optimized/hb-face.ll | 772 +++++++++--------- bench/openjdk/optimized/hb-ot-font.ll | 668 +++++++-------- 5 files changed, 830 insertions(+), 788 deletions(-) diff --git a/bench/eastl/optimized/TestBitset.ll b/bench/eastl/optimized/TestBitset.ll index 372ded868cc..1447ff85d46 100644 --- a/bench/eastl/optimized/TestBitset.ll +++ b/bench/eastl/optimized/TestBitset.ll @@ -17555,10 +17555,11 @@ for.end2135: ; preds = %for.body2131, %_ZNK br i1 %cmp2159.not6296, label %for.end2164, label %for.body2160 for.body2160: ; preds = %for.end2135, %for.body2160 - %j.56298 = phi i64 [ %call.i3732, %for.body2160 ], [ %call.i3730, %for.end2135 ] + %j.56298 = phi i64 [ %call..i3733, %for.body2160 ], [ %call.i3730, %for.end2135 ] %i.56297 = phi i64 [ %inc2161, %for.body2160 ], [ 0, %for.end2135 ] %inc2161 = add i64 %i.56297, 1 %call.i3732 = call noundef i64 @_ZNK5eastl10BitsetBaseILm2EmE10DoFindNextEm(ptr noundef nonnull align 8 dereferenceable(16) %b79, i64 noundef %j.56298) + %call..i3733 = call noundef i64 @llvm.umin.i64(i64 %call.i3732, i64 79) %cmp2159.not = icmp ugt i64 %call.i3732, 78 br i1 %cmp2159.not, label %for.end2164.loopexit, label %for.body2160, !llvm.loop !149 @@ -17605,10 +17606,11 @@ for.end2164: ; preds = %for.end2164.loopexi br i1 %cmp2192.not6299, label %for.end2197, label %for.body2193 for.body2193: ; preds = %for.end2164, %for.body2193 - %j.66301 = phi i64 [ %call.i3760, %for.body2193 ], [ %call.i3758, %for.end2164 ] + %j.66301 = phi i64 [ %call..i3761, %for.body2193 ], [ %call.i3758, %for.end2164 ] %i.66300 = phi i64 [ %inc2194, %for.body2193 ], [ 0, %for.end2164 ] %inc2194 = add i64 %i.66300, 1 %call.i3760 = call noundef i64 @_ZNK5eastl10BitsetBaseILm2EmE10DoFindNextEm(ptr noundef nonnull align 8 dereferenceable(16) %b128, i64 noundef %j.66301) + %call..i3761 = call noundef i64 @llvm.umin.i64(i64 %call.i3760, i64 128) %cmp2192.not = icmp ugt i64 %call.i3760, 127 br i1 %cmp2192.not, label %for.end2197.loopexit, label %for.body2193, !llvm.loop !150 @@ -18556,10 +18558,11 @@ for.end2374: ; preds = %for.body2370, %_ZNK br i1 %cmp2399.not6315, label %for.end2404, label %for.body2400 for.body2400: ; preds = %for.end2374, %for.body2400 - %j2242.56317 = phi i64 [ %call.i5494, %for.body2400 ], [ %call.i5492, %for.end2374 ] + %j2242.56317 = phi i64 [ %call..i5495, %for.body2400 ], [ %call.i5492, %for.end2374 ] %i2241.56316 = phi i64 [ %inc2401, %for.body2400 ], [ 0, %for.end2374 ] %inc2401 = add i64 %i2241.56316, 1 %call.i5494 = call noundef i64 @_ZNK5eastl10BitsetBaseILm2EmE10DoFindPrevEm(ptr noundef nonnull align 8 dereferenceable(16) %b792377, i64 noundef %j2242.56317) + %call..i5495 = call noundef i64 @llvm.umin.i64(i64 %call.i5494, i64 79) %cmp2399.not = icmp ugt i64 %call.i5494, 78 br i1 %cmp2399.not, label %for.end2404.loopexit, label %for.body2400, !llvm.loop !158 @@ -18606,10 +18609,11 @@ for.end2404: ; preds = %for.end2404.loopexi br i1 %cmp2433.not6319, label %for.end2438, label %for.body2434 for.body2434: ; preds = %for.end2404, %for.body2434 - %j2242.66321 = phi i64 [ %call.i5522, %for.body2434 ], [ %call.i5520, %for.end2404 ] + %j2242.66321 = phi i64 [ %call..i5523, %for.body2434 ], [ %call.i5520, %for.end2404 ] %i2241.66320 = phi i64 [ %inc2435, %for.body2434 ], [ 0, %for.end2404 ] %inc2435 = add i64 %i2241.66320, 1 %call.i5522 = call noundef i64 @_ZNK5eastl10BitsetBaseILm2EmE10DoFindPrevEm(ptr noundef nonnull align 8 dereferenceable(16) %b1282407, i64 noundef %j2242.66321) + %call..i5523 = call noundef i64 @llvm.umin.i64(i64 %call.i5522, i64 128) %cmp2433.not = icmp ugt i64 %call.i5522, 127 br i1 %cmp2433.not, label %for.end2438.loopexit, label %for.body2434, !llvm.loop !159 diff --git a/bench/hyperscan/optimized/buildstate.ll b/bench/hyperscan/optimized/buildstate.ll index cbab905cae8..5e649dee16e 100644 --- a/bench/hyperscan/optimized/buildstate.ll +++ b/bench/hyperscan/optimized/buildstate.ll @@ -1893,20 +1893,20 @@ _ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pa %.not6970 = icmp eq i64 %33, 0 br i1 %.not6970, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %136, %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit +._crit_edge: ; preds = %137, %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit %35 = load i32, ptr %9, align 4 %36 = add i32 %35, 1 store i32 %36, ptr %9, align 4 %.not = icmp ugt i32 %36, %2 br i1 %.not, label %._crit_edge76, label %19, !llvm.loop !51 -.lr.ph: ; preds = %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit, %136 - %.sroa.064.071 = phi ptr [ %137, %136 ], [ %31, %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit ] +.lr.ph: ; preds = %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit, %137 + %.sroa.064.071 = phi ptr [ %138, %137 ], [ %31, %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit ] %37 = load i32, ptr %.sroa.064.071, align 4 %.not15 = icmp ult i32 %37, %1 %.not16 = icmp ugt i32 %37, %2 %or.cond = or i1 %.not15, %.not16 - br i1 %or.cond, label %136, label %38 + br i1 %or.cond, label %137, label %38 38: ; preds = %.lr.ph %39 = load i64, ptr %.sroa.064.071, align 4 @@ -1994,7 +1994,7 @@ _ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212PositionInfoELb0EEES4_ %75 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i27, i64 56 %76 = load i64, ptr %75, align 8, !noalias !70 %.not.i.i.i.i31 = icmp eq i64 %76, %56 - br i1 %.not.i.i.i.i31, label %79, label %122 + br i1 %.not.i.i.i.i31, label %79, label %123 .critedge.thread.i: ; preds = %72 %77 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i27, i64 56 @@ -2024,132 +2024,133 @@ _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212Po %88 = udiv i64 %87, 5 %89 = call i64 @llvm.umin.i64(i64 %88, i64 2305843009213693951) %90 = call noundef i64 @llvm.umax.i64(i64 %reass.sub, i64 %89) - br label %97 + br label %98 _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i: ; preds = %85 %91 = icmp ugt i64 %56, -6917529027641081857 %92 = shl i64 %56, 3 %93 = call i64 @llvm.umin.i64(i64 %92, i64 2305843009213693951) %94 = select i1 %91, i64 2305843009213693951, i64 %93 - %95 = icmp ugt i64 %reass.sub, 2305843009213693951 - br i1 %95, label %96, label %97 + %95 = call noundef i64 @llvm.umax.i64(i64 %reass.sub, i64 %94) + %96 = icmp ugt i64 %reass.sub, 2305843009213693951 + br i1 %96, label %97, label %98 -96: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i +97: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i call void @_ZN5boost9container18throw_length_errorEPKc(ptr noundef nonnull @.str.3) #27, !noalias !81 unreachable -97: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i - %98 = phi i64 [ %90, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread ], [ %94, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i ] - %99 = icmp samesign ugt i64 %98, 1152921504606846975 - br i1 %99, label %100, label %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i, !prof !22 +98: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i + %99 = phi i64 [ %90, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread ], [ %95, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i ] + %100 = icmp samesign ugt i64 %99, 1152921504606846975 + br i1 %100, label %101, label %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i, !prof !22 -100: ; preds = %97 +101: ; preds = %98 call void @_ZSt17__throw_bad_allocv() #27, !noalias !81 unreachable -_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i: ; preds = %97 - %101 = shl nuw nsw i64 %98, 3 - %102 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %101) #24, !noalias !81 +_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i: ; preds = %98 + %102 = shl nuw nsw i64 %99, 3 + %103 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %102) #24, !noalias !81 %.not.i.i = icmp eq ptr %54, null - br i1 %.not.i.i, label %.thread.i.i, label %104 + br i1 %.not.i.i, label %.thread.i.i, label %105 .thread.i.i: ; preds = %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i %.sroa.032.0.insert.ext45 = zext i32 %40 to i64 %.sroa.032.0.insert.insert47 = or disjoint i64 %.sroa.11.0.extract.shift, %.sroa.032.0.insert.ext45 - store i64 %.sroa.032.0.insert.insert47, ptr %102, align 4, !noalias !81 - %103 = getelementptr inbounds nuw i8, ptr %102, i64 8 + store i64 %.sroa.032.0.insert.insert47, ptr %103, align 4, !noalias !81 + %104 = getelementptr inbounds nuw i8, ptr %103, i64 8 br label %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit -104: ; preds = %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i +105: ; preds = %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i %.not.i = icmp eq ptr %54, %.sroa.067.0 - br i1 %.not.i, label %107, label %105, !prof !22 + br i1 %.not.i, label %108, label %106, !prof !22 -105: ; preds = %104 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %102, ptr nonnull align 4 %54, i64 %81, i1 false), !noalias !81 - %106 = getelementptr inbounds i8, ptr %102, i64 %81 - br label %107 +106: ; preds = %105 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %103, ptr nonnull align 4 %54, i64 %81, i1 false), !noalias !81 + %107 = getelementptr inbounds i8, ptr %103, i64 %81 + br label %108 -107: ; preds = %105, %104 - %.0.i.i.i.i = phi ptr [ %106, %105 ], [ %102, %104 ] +108: ; preds = %106, %105 + %.0.i.i.i.i = phi ptr [ %107, %106 ], [ %103, %105 ] %.sroa.032.0.insert.ext41 = zext i32 %40 to i64 %.sroa.032.0.insert.insert43 = or disjoint i64 %.sroa.11.0.extract.shift, %.sroa.032.0.insert.ext41 store i64 %.sroa.032.0.insert.insert43, ptr %.0.i.i.i.i, align 4, !noalias !81 - %108 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 8 - %109 = icmp ne ptr %.sroa.067.0, %57 - %110 = icmp ne ptr %.sroa.067.0, null - %spec.select.i.i21.i.i = and i1 %110, %109 - br i1 %spec.select.i.i21.i.i, label %111, label %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i, !prof !84 - -111: ; preds = %107 - %112 = ptrtoint ptr %57 to i64 - %113 = sub i64 %112, %80 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %108, ptr nonnull align 4 %.sroa.067.0, i64 %113, i1 false), !noalias !81 - %114 = getelementptr inbounds i8, ptr %108, i64 %113 + %109 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 8 + %110 = icmp ne ptr %.sroa.067.0, %57 + %111 = icmp ne ptr %.sroa.067.0, null + %spec.select.i.i21.i.i = and i1 %111, %110 + br i1 %spec.select.i.i21.i.i, label %112, label %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i, !prof !84 + +112: ; preds = %108 + %113 = ptrtoint ptr %57 to i64 + %114 = sub i64 %113, %80 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %109, ptr nonnull align 4 %.sroa.067.0, i64 %114, i1 false), !noalias !81 + %115 = getelementptr inbounds i8, ptr %109, i64 %114 br label %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i -_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i: ; preds = %111, %107 - %.0.i.i22.i.i = phi ptr [ %114, %111 ], [ %108, %107 ] - %115 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i27, i64 64 - %116 = icmp eq ptr %115, %54 - br i1 %116, label %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit, label %117 +_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i: ; preds = %112, %108 + %.0.i.i22.i.i = phi ptr [ %115, %112 ], [ %109, %108 ] + %116 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i27, i64 64 + %117 = icmp eq ptr %116, %54 + br i1 %117, label %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit, label %118 -117: ; preds = %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i +118: ; preds = %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i call void @_ZdlPv(ptr noundef nonnull %54) #26, !noalias !81 br label %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit -_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit: ; preds = %.thread.i.i, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i, %117 - %.1.i.i = phi ptr [ %103, %.thread.i.i ], [ %.0.i.i22.i.i, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i ], [ %.0.i.i22.i.i, %117 ] - store ptr %102, ptr %53, align 8, !noalias !81 - %118 = ptrtoint ptr %.1.i.i to i64 - %119 = ptrtoint ptr %102 to i64 - %120 = sub i64 %118, %119 - %121 = ashr exact i64 %120, 3 - store i64 %121, ptr %55, align 8, !noalias !81 - store i64 %98, ptr %82, align 8, !noalias !81 +_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit: ; preds = %.thread.i.i, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i, %118 + %.1.i.i = phi ptr [ %104, %.thread.i.i ], [ %.0.i.i22.i.i, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i ], [ %.0.i.i22.i.i, %118 ] + store ptr %103, ptr %53, align 8, !noalias !81 + %119 = ptrtoint ptr %.1.i.i to i64 + %120 = ptrtoint ptr %103 to i64 + %121 = sub i64 %119, %120 + %122 = ashr exact i64 %121, 3 + store i64 %122, ptr %55, align 8, !noalias !81 + store i64 %99, ptr %82, align 8, !noalias !81 br label %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit -122: ; preds = %.critedge.i30 +123: ; preds = %.critedge.i30 %.sroa.032.0.insert.ext37 = zext i32 %40 to i64 %.sroa.032.0.insert.insert39 = or disjoint i64 %.sroa.11.0.extract.shift, %.sroa.032.0.insert.ext37 store i64 %.sroa.032.0.insert.insert39, ptr %57, align 4, !noalias !70 - %123 = load i64, ptr %55, align 8, !noalias !70 - %124 = add i64 %123, 1 - store i64 %124, ptr %55, align 8, !noalias !70 + %124 = load i64, ptr %55, align 8, !noalias !70 + %125 = add i64 %124, 1 + store i64 %125, ptr %55, align 8, !noalias !70 br label %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit _ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i: ; preds = %.critedge.thread.i - %125 = getelementptr inbounds i8, ptr %57, i64 -8 - %126 = load i64, ptr %125, align 4, !noalias !70 - store i64 %126, ptr %57, align 4, !noalias !70 - %127 = load i64, ptr %55, align 8, !noalias !70 - %128 = add i64 %127, 1 - store i64 %128, ptr %55, align 8, !noalias !70 - %.not.i.i.i.i.i.i = icmp eq ptr %125, %70 - br i1 %.not.i.i.i.i.i.i, label %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i, label %129, !prof !22 - -129: ; preds = %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i - %130 = ptrtoint ptr %70 to i64 - %131 = ptrtoint ptr %125 to i64 - %132 = sub i64 %131, %130 - %133 = ashr exact i64 %132, 3 - %134 = sub nsw i64 0, %133 - %135 = getelementptr inbounds %"class.ue2::PositionInfo", ptr %57, i64 %134 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %135, ptr nonnull align 4 %70, i64 %132, i1 false), !noalias !70 + %126 = getelementptr inbounds i8, ptr %57, i64 -8 + %127 = load i64, ptr %126, align 4, !noalias !70 + store i64 %127, ptr %57, align 4, !noalias !70 + %128 = load i64, ptr %55, align 8, !noalias !70 + %129 = add i64 %128, 1 + store i64 %129, ptr %55, align 8, !noalias !70 + %.not.i.i.i.i.i.i = icmp eq ptr %126, %70 + br i1 %.not.i.i.i.i.i.i, label %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i, label %130, !prof !22 + +130: ; preds = %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i + %131 = ptrtoint ptr %70 to i64 + %132 = ptrtoint ptr %126 to i64 + %133 = sub i64 %132, %131 + %134 = ashr exact i64 %133, 3 + %135 = sub nsw i64 0, %134 + %136 = getelementptr inbounds %"class.ue2::PositionInfo", ptr %57, i64 %135 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %136, ptr nonnull align 4 %70, i64 %133, i1 false), !noalias !70 br label %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i -_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i: ; preds = %129, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i +_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i: ; preds = %130, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i %.sroa.032.0.insert.ext = zext i32 %40 to i64 %.sroa.032.0.insert.insert = or disjoint i64 %.sroa.11.0.extract.shift, %.sroa.032.0.insert.ext store i64 %.sroa.032.0.insert.insert, ptr %70, align 4, !noalias !70 br label %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit -_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit: ; preds = %122, %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i, %72, %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit +_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit: ; preds = %123, %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i, %72, %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #25 - br label %136 + br label %137 -136: ; preds = %.lr.ph, %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit - %137 = getelementptr inbounds nuw i8, ptr %.sroa.064.071, i64 8 - %.not69 = icmp eq ptr %137, %34 +137: ; preds = %.lr.ph, %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit + %138 = getelementptr inbounds nuw i8, ptr %.sroa.064.071, i64 8 + %.not69 = icmp eq ptr %138, %34 br i1 %.not69, label %._crit_edge, label %.lr.ph } diff --git a/bench/influxdb-rs/optimized/4bpmt5749p4g145g.ll b/bench/influxdb-rs/optimized/4bpmt5749p4g145g.ll index 535e702aef0..badaf5d704d 100644 --- a/bench/influxdb-rs/optimized/4bpmt5749p4g145g.ll +++ b/bench/influxdb-rs/optimized/4bpmt5749p4g145g.ll @@ -1208,6 +1208,7 @@ _ZN3std2io4Read8read_buf17hb4f514663453a8f5E.exit56.i: ; preds = %"_ZN106_$LT$co .loopexit: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6a1f383bd0398e44E.exit.i.i.i" %.cast.i.i.i = ptrtoint ptr %25 to i64 + %.0.sroa.speculated.i.i.i.i = call noundef i64 @llvm.umax.i64(i64 %.cast.i.i.i, i64 8192) %40 = load i64, ptr %8, align 8, !alias.scope !282, !noalias !280, !noundef !4 %41 = sub i64 %40, %.cast.i.i.i store i64 %41, ptr %8, align 8, !alias.scope !282, !noalias !280 @@ -1219,7 +1220,7 @@ _ZN3std2io4Read8read_buf17hb4f514663453a8f5E.exit56.i: ; preds = %"_ZN106_$LT$co unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h815e98f9379c482dE.exit": ; preds = %.loopexit.thread124, %.loopexit - %.sroa.23.3.ph123 = phi i64 [ 8192, %.loopexit ], [ %.0.sroa.speculated.i59.i, %.loopexit.thread124 ] + %.sroa.23.3.ph123 = phi i64 [ %.0.sroa.speculated.i.i.i.i, %.loopexit ], [ %.0.sroa.speculated.i59.i, %.loopexit.thread124 ] %.sroa.14.3.ph122 = phi i64 [ %.cast.i.i.i, %.loopexit ], [ %.sroa.9.0707579.i, %.loopexit.thread124 ] %44 = icmp eq i64 %.sroa.14.3.ph122, 0 br i1 %44, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h815e98f9379c482dE.exit.thread", label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h815e98f9379c482dE.exit22" diff --git a/bench/openjdk/optimized/hb-face.ll b/bench/openjdk/optimized/hb-face.ll index 7467d77bb9a..d24f56f0668 100644 --- a/bench/openjdk/optimized/hb-face.ll +++ b/bench/openjdk/optimized/hb-face.ll @@ -8605,7 +8605,7 @@ define linkonce_odr hidden void @_ZN2OT4cmap13accelerator_tC2EP9hb_face_t(ptr no 17: ; preds = %2 %18 = invoke noundef i32 @_ZNK9hb_face_t15load_num_glyphsEv(ptr noundef nonnull align 8 dereferenceable(416) %1) - to label %19 unwind label %116 + to label %19 unwind label %120 19: ; preds = %2, %17 %.0.i.i.i = phi i32 [ %15, %2 ], [ %18, %17 ] @@ -8620,7 +8620,7 @@ define linkonce_odr hidden void @_ZN2OT4cmap13accelerator_tC2EP9hb_face_t(ptr no %23 = getelementptr inbounds nuw i8, ptr %1, i64 24 %24 = load ptr, ptr %23, align 8 %25 = invoke noundef ptr %21(ptr noundef nonnull align 8 dereferenceable(416) %1, i32 noundef 1668112752, ptr noundef %24) - to label %.noexc7 unwind label %116 + to label %.noexc7 unwind label %120 .noexc7: ; preds = %22 %.not6.i.i.i = icmp eq ptr %25, null @@ -8628,12 +8628,12 @@ define linkonce_odr hidden void @_ZN2OT4cmap13accelerator_tC2EP9hb_face_t(ptr no _ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i: ; preds = %.noexc7, %19 %26 = invoke ptr @hb_blob_get_empty() - to label %hb_face_reference_table.exit.i unwind label %116 + to label %hb_face_reference_table.exit.i unwind label %120 hb_face_reference_table.exit.i: ; preds = %_ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i, %.noexc7 %.0.i.i = phi ptr [ %25, %.noexc7 ], [ %26, %_ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i ] %27 = invoke noundef ptr @_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4cmapEEEP9hb_blob_tS4_(ptr noundef nonnull align 8 dereferenceable(62) %3, ptr noundef %.0.i.i) - to label %28 unwind label %116 + to label %28 unwind label %120 28: ; preds = %hb_face_reference_table.exit.i store ptr %27, ptr %7, align 8 @@ -8696,9 +8696,9 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %28, %_ZN21hb_saniti %55 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 br label %56 -56: ; preds = %82, %.lr.ph.i.i.i.i.i.i - %.0193.i.i.i.i.i.i = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i ], [ %.1.i.i.i.i.i.i, %82 ] - %.0202.i.i.i.i.i.i = phi i32 [ %55, %.lr.ph.i.i.i.i.i.i ], [ %.121.i.i.i.i.i.i, %82 ] +56: ; preds = %86, %.lr.ph.i.i.i.i.i.i + %.0193.i.i.i.i.i.i = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i ], [ %.1.i.i.i.i.i.i, %86 ] + %.0202.i.i.i.i.i.i = phi i32 [ %55, %.lr.ph.i.i.i.i.i.i ], [ %.121.i.i.i.i.i.i, %86 ] %57 = add i32 %.0202.i.i.i.i.i.i, %.0193.i.i.i.i.i.i %58 = lshr i32 %57, 1 %59 = zext nneg i32 %58 to i64 @@ -8711,271 +8711,277 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %28, %_ZN21hb_saniti %66 = load i8, ptr %65, align 1 %67 = zext i8 %66 to i32 %68 = or disjoint i32 %64, %67 + %69 = call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %68) %.not.i.i.i.i.i.i.i.i = icmp eq i32 %68, 0 - br i1 %.not.i.i.i.i.i.i.i.i, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread + br i1 %.not.i.i.i.i.i.i.i.i, label %70, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; preds = %56 - %69 = getelementptr inbounds nuw i8, ptr %61, i64 2 - %70 = load i8, ptr %69, align 1 - %71 = zext i8 %70 to i32 - %72 = shl nuw nsw i32 %71, 8 - %73 = getelementptr inbounds nuw i8, ptr %61, i64 3 - %74 = load i8, ptr %73, align 1 - %75 = zext i8 %74 to i32 - %76 = or disjoint i32 %72, %75 - %77 = icmp samesign ugt i32 %76, 5 - br i1 %77, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread, label %79 +70: ; preds = %56 + %71 = getelementptr inbounds nuw i8, ptr %61, i64 2 + %72 = load i8, ptr %71, align 1 + %73 = zext i8 %72 to i32 + %74 = shl nuw nsw i32 %73, 8 + %75 = getelementptr inbounds nuw i8, ptr %61, i64 3 + %76 = load i8, ptr %75, align 1 + %77 = zext i8 %76 to i32 + %78 = or disjoint i32 %74, %77 + %79 = call noundef i32 @llvm.ucmp.i32.i32(i32 5, i32 %78) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread: ; preds = %56, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i - %78 = add nsw i32 %58, -1 - br label %82 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; preds = %70, %56 + %.0.i.i.i.i.i.i.i.i = phi i32 [ %69, %56 ], [ %79, %70 ] + %80 = icmp slt i32 %.0.i.i.i.i.i.i.i.i, 0 + br i1 %80, label %81, label %83 -79: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i - %.not23.i.i.i.i.i.i = icmp eq i32 %76, 5 - br i1 %.not23.i.i.i.i.i.i, label %83, label %80 +81: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i + %82 = add nsw i32 %58, -1 + br label %86 -80: ; preds = %79 - %81 = add nuw nsw i32 %58, 1 - br label %82 +83: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i + %.not23.i.i.i.i.i.i = icmp eq i32 %.0.i.i.i.i.i.i.i.i, 0 + br i1 %.not23.i.i.i.i.i.i, label %87, label %84 + +84: ; preds = %83 + %85 = add nuw nsw i32 %58, 1 + br label %86 -82: ; preds = %80, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread - %.121.i.i.i.i.i.i = phi i32 [ %78, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread ], [ %.0202.i.i.i.i.i.i, %80 ] - %.1.i.i.i.i.i.i = phi i32 [ %.0193.i.i.i.i.i.i, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread ], [ %81, %80 ] +86: ; preds = %84, %81 + %.121.i.i.i.i.i.i = phi i32 [ %82, %81 ], [ %.0202.i.i.i.i.i.i, %84 ] + %.1.i.i.i.i.i.i = phi i32 [ %.0193.i.i.i.i.i.i, %81 ], [ %85, %84 ] %.not.not.i.i.i.i.i.i = icmp sgt i32 %.1.i.i.i.i.i.i, %.121.i.i.i.i.i.i br i1 %.not.not.i.i.i.i.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit, label %56, !llvm.loop !58 -83: ; preds = %79 - %84 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %48, i64 %59 +87: ; preds = %83 + %88 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %48, i64 %59 br label %_ZNK2OT4cmap13find_subtableEjj.exit -_ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %82, %_ZN21hb_sanitize_context_tD2Ev.exit, %83 - %85 = phi ptr [ %84, %83 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %82 ] - %86 = getelementptr inbounds nuw i8, ptr %85, i64 4 - %87 = load i8, ptr %86, align 1 - %88 = zext i8 %87 to i32 - %89 = shl nuw i32 %88, 24 - %90 = getelementptr inbounds nuw i8, ptr %85, i64 5 +_ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %86, %_ZN21hb_sanitize_context_tD2Ev.exit, %87 + %89 = phi ptr [ %88, %87 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %86 ] + %90 = getelementptr inbounds nuw i8, ptr %89, i64 4 %91 = load i8, ptr %90, align 1 %92 = zext i8 %91 to i32 - %93 = shl nuw nsw i32 %92, 16 - %94 = or disjoint i32 %93, %89 - %95 = getelementptr inbounds nuw i8, ptr %85, i64 6 - %96 = load i8, ptr %95, align 1 - %97 = zext i8 %96 to i32 - %98 = shl nuw nsw i32 %97, 8 - %99 = or disjoint i32 %94, %98 - %100 = getelementptr inbounds nuw i8, ptr %85, i64 7 - %101 = load i8, ptr %100, align 1 - %102 = zext i8 %101 to i32 - %103 = or disjoint i32 %99, %102 - %.not.i13 = icmp eq i32 %103, 0 - %104 = zext i32 %103 to i64 - %105 = getelementptr inbounds nuw i8, ptr %spec.select.i.i1.i.i12, i64 %104 - br i1 %.not.i13, label %118, label %106 - -106: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit - %107 = load i8, ptr %105, align 1 - %108 = zext i8 %107 to i32 - %109 = shl nuw nsw i32 %108, 8 - %110 = getelementptr inbounds nuw i8, ptr %105, i64 1 - %111 = load i8, ptr %110, align 1 + %93 = shl nuw i32 %92, 24 + %94 = getelementptr inbounds nuw i8, ptr %89, i64 5 + %95 = load i8, ptr %94, align 1 + %96 = zext i8 %95 to i32 + %97 = shl nuw nsw i32 %96, 16 + %98 = or disjoint i32 %97, %93 + %99 = getelementptr inbounds nuw i8, ptr %89, i64 6 + %100 = load i8, ptr %99, align 1 + %101 = zext i8 %100 to i32 + %102 = shl nuw nsw i32 %101, 8 + %103 = or disjoint i32 %98, %102 + %104 = getelementptr inbounds nuw i8, ptr %89, i64 7 + %105 = load i8, ptr %104, align 1 + %106 = zext i8 %105 to i32 + %107 = or disjoint i32 %103, %106 + %.not.i13 = icmp eq i32 %107, 0 + %108 = zext i32 %107 to i64 + %109 = getelementptr inbounds nuw i8, ptr %spec.select.i.i1.i.i12, i64 %108 + br i1 %.not.i13, label %122, label %110 + +110: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit + %111 = load i8, ptr %109, align 1 %112 = zext i8 %111 to i32 - %113 = or disjoint i32 %109, %112 - %114 = icmp eq i32 %113, 14 - br i1 %114, label %115, label %118 + %113 = shl nuw nsw i32 %112, 8 + %114 = getelementptr inbounds nuw i8, ptr %109, i64 1 + %115 = load i8, ptr %114, align 1 + %116 = zext i8 %115 to i32 + %117 = or disjoint i32 %113, %116 + %118 = icmp eq i32 %117, 14 + br i1 %118, label %119, label %122 -115: ; preds = %106 - store ptr %105, ptr %5, align 8 - br label %118 +119: ; preds = %110 + store ptr %109, ptr %5, align 8 + br label %122 -116: ; preds = %hb_face_reference_table.exit.i, %_ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i, %22, %17 - %117 = landingpad { ptr, i32 } +120: ; preds = %hb_face_reference_table.exit.i, %_ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i, %22, %17 + %121 = landingpad { ptr, i32 } cleanup call void @_ZN21hb_sanitize_context_tD2Ev(ptr noundef nonnull align 8 dereferenceable(62) %3) #19 - resume { ptr, i32 } %117 + resume { ptr, i32 } %121 -118: ; preds = %115, %106, %_ZNK2OT4cmap13find_subtableEjj.exit +122: ; preds = %119, %110, %_ZNK2OT4cmap13find_subtableEjj.exit %.not.i.i = icmp eq ptr %40, null %spec.select.i.i = select i1 %.not.i.i, ptr @_hb_NullPool, ptr %40 - %119 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %spec.select.i.i, ptr %119, align 8 - %120 = load i8, ptr %4, align 1 - %121 = trunc i8 %120 to i1 - br i1 %121, label %122, label %166 - -122: ; preds = %118 - %123 = getelementptr inbounds nuw i8, ptr %1, i64 128 - %124 = load atomic i64, ptr %123 acquire, align 8 - %.not14.i.i.i = icmp eq i64 %124, 0 + %123 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %spec.select.i.i, ptr %123, align 8 + %124 = load i8, ptr %4, align 1 + %125 = trunc i8 %124 to i1 + br i1 %125, label %126, label %170 + +126: ; preds = %122 + %127 = getelementptr inbounds nuw i8, ptr %1, i64 128 + %128 = load atomic i64, ptr %127 acquire, align 8 + %.not14.i.i.i = icmp eq i64 %128, 0 br i1 %.not14.i.i.i, label %.lr.ph.i.i.i, label %.loopexit.split.loop.exit12.i.i.i -.lr.ph.i.i.i: ; preds = %122 - %125 = getelementptr inbounds nuw i8, ptr %1, i64 80 - br label %126 +.lr.ph.i.i.i: ; preds = %126 + %129 = getelementptr inbounds nuw i8, ptr %1, i64 80 + br label %130 -126: ; preds = %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, %.lr.ph.i.i.i - %127 = load ptr, ptr %125, align 8 - %.not.i.i.i.i14 = icmp eq ptr %127, null - br i1 %.not.i.i.i.i14, label %128, label %130 +130: ; preds = %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, %.lr.ph.i.i.i + %131 = load ptr, ptr %129, align 8 + %.not.i.i.i.i14 = icmp eq ptr %131, null + br i1 %.not.i.i.i.i14, label %132, label %134 -128: ; preds = %126 - %129 = call noundef ptr @hb_blob_get_empty() +132: ; preds = %130 + %133 = call noundef ptr @hb_blob_get_empty() br label %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit -130: ; preds = %126 - %131 = call noundef ptr @_ZN22hb_table_lazy_loader_tIN2OT3OS2ELj6ELb1EE6createEP9hb_face_t(ptr noundef nonnull %127) - %.not10.i.i.i = icmp eq ptr %131, null - br i1 %.not10.i.i.i, label %132, label %134 +134: ; preds = %130 + %135 = call noundef ptr @_ZN22hb_table_lazy_loader_tIN2OT3OS2ELj6ELb1EE6createEP9hb_face_t(ptr noundef nonnull %131) + %.not10.i.i.i = icmp eq ptr %135, null + br i1 %.not10.i.i.i, label %136, label %138 -132: ; preds = %130 - %133 = call noundef ptr @hb_blob_get_empty() - br label %134 +136: ; preds = %134 + %137 = call noundef ptr @hb_blob_get_empty() + br label %138 -134: ; preds = %132, %130 - %.1.i.i.i = phi ptr [ %131, %130 ], [ %133, %132 ] - %135 = ptrtoint ptr %.1.i.i.i to i64 - %136 = cmpxchg weak ptr %123, i64 0, i64 %135 acq_rel monotonic, align 8 - %137 = extractvalue { i64, i1 } %136, 1 - br i1 %137, label %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit, label %138 +138: ; preds = %136, %134 + %.1.i.i.i = phi ptr [ %135, %134 ], [ %137, %136 ] + %139 = ptrtoint ptr %.1.i.i.i to i64 + %140 = cmpxchg weak ptr %127, i64 0, i64 %139 acq_rel monotonic, align 8 + %141 = extractvalue { i64, i1 } %140, 1 + br i1 %141, label %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit, label %142 -138: ; preds = %134 +142: ; preds = %138 %.not.i11.i.i.i = icmp eq ptr %.1.i.i.i, null - br i1 %.not.i11.i.i.i, label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, label %139 + br i1 %.not.i11.i.i.i, label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, label %143 -139: ; preds = %138 - %140 = call noundef ptr @hb_blob_get_empty() - %.not3.i.i.i.i = icmp eq ptr %.1.i.i.i, %140 - br i1 %.not3.i.i.i.i, label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, label %141 +143: ; preds = %142 + %144 = call noundef ptr @hb_blob_get_empty() + %.not3.i.i.i.i = icmp eq ptr %.1.i.i.i, %144 + br i1 %.not3.i.i.i.i, label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, label %145 -141: ; preds = %139 +145: ; preds = %143 call void @hb_blob_destroy(ptr noundef nonnull %.1.i.i.i) br label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i -_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i: ; preds = %141, %139, %138 - %142 = load atomic i64, ptr %123 acquire, align 8 - %.not.i.i.i15 = icmp eq i64 %142, 0 - br i1 %.not.i.i.i15, label %126, label %.loopexit.split.loop.exit12.i.i.i +_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i: ; preds = %145, %143, %142 + %146 = load atomic i64, ptr %127 acquire, align 8 + %.not.i.i.i15 = icmp eq i64 %146, 0 + br i1 %.not.i.i.i15, label %130, label %.loopexit.split.loop.exit12.i.i.i -.loopexit.split.loop.exit12.i.i.i: ; preds = %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, %122 - %.lcssa.i.i.i = phi i64 [ %124, %122 ], [ %142, %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i ] - %143 = inttoptr i64 %.lcssa.i.i.i to ptr +.loopexit.split.loop.exit12.i.i.i: ; preds = %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, %126 + %.lcssa.i.i.i = phi i64 [ %128, %126 ], [ %146, %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i ] + %147 = inttoptr i64 %.lcssa.i.i.i to ptr br label %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit -_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit: ; preds = %134, %128, %.loopexit.split.loop.exit12.i.i.i - %.07.i.i.i = phi ptr [ %129, %128 ], [ %143, %.loopexit.split.loop.exit12.i.i.i ], [ %.1.i.i.i, %134 ] - %144 = getelementptr inbounds nuw i8, ptr %.07.i.i.i, i64 16 - %145 = load ptr, ptr %144, align 8 - %146 = getelementptr inbounds nuw i8, ptr %.07.i.i.i, i64 24 - %147 = load i32, ptr %146, align 8 - %148 = icmp ult i32 %147, 78 - %spec.select.i.i.i.i.i = select i1 %148, ptr @_hb_NullPool, ptr %145 - %149 = load i8, ptr %spec.select.i.i.i.i.i, align 1 - %150 = zext i8 %149 to i32 - %151 = shl nuw nsw i32 %150, 8 - %152 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 1 - %153 = load i8, ptr %152, align 1 +_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit: ; preds = %138, %132, %.loopexit.split.loop.exit12.i.i.i + %.07.i.i.i = phi ptr [ %133, %132 ], [ %147, %.loopexit.split.loop.exit12.i.i.i ], [ %.1.i.i.i, %138 ] + %148 = getelementptr inbounds nuw i8, ptr %.07.i.i.i, i64 16 + %149 = load ptr, ptr %148, align 8 + %150 = getelementptr inbounds nuw i8, ptr %.07.i.i.i, i64 24 + %151 = load i32, ptr %150, align 8 + %152 = icmp ult i32 %151, 78 + %spec.select.i.i.i.i.i = select i1 %152, ptr @_hb_NullPool, ptr %149 + %153 = load i8, ptr %spec.select.i.i.i.i.i, align 1 %154 = zext i8 %153 to i32 - %155 = or disjoint i32 %151, %154 - %156 = icmp eq i32 %155, 0 - %157 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 62 - %158 = load i8, ptr %157, align 1 - %159 = zext i8 %158 to i16 - %160 = shl nuw i16 %159, 8 - %trunc21 = select i1 %156, i16 %160, i16 0 - %161 = getelementptr inbounds nuw i8, ptr %0, i64 16 - switch i16 %trunc21, label %165 [ - i16 0, label %162 - i16 -19968, label %163 - i16 -19712, label %164 + %155 = shl nuw nsw i32 %154, 8 + %156 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 1 + %157 = load i8, ptr %156, align 1 + %158 = zext i8 %157 to i32 + %159 = or disjoint i32 %155, %158 + %160 = icmp eq i32 %159, 0 + %161 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 62 + %162 = load i8, ptr %161, align 1 + %163 = zext i8 %162 to i16 + %164 = shl nuw i16 %163, 8 + %trunc21 = select i1 %160, i16 %164, i16 0 + %165 = getelementptr inbounds nuw i8, ptr %0, i64 16 + switch i16 %trunc21, label %169 [ + i16 0, label %166 + i16 -19968, label %167 + i16 -19712, label %168 ] -162: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit - store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZNS_L18_hb_symbol_pua_mapEjEEEEbPKvjPj, ptr %161, align 8 - br label %212 +166: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit + store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZNS_L18_hb_symbol_pua_mapEjEEEEbPKvjPj, ptr %165, align 8 + br label %216 -163: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit - store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_simp_mapjEEEEbPKvjPj, ptr %161, align 8 - br label %212 +167: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit + store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_simp_mapjEEEEbPKvjPj, ptr %165, align 8 + br label %216 -164: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit - store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_trad_mapjEEEEbPKvjPj, ptr %161, align 8 - br label %212 +168: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit + store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_trad_mapjEEEEbPKvjPj, ptr %165, align 8 + br label %216 -165: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %161, align 8 - br label %212 +169: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %165, align 8 + br label %216 -166: ; preds = %118 - %167 = load i8, ptr %spec.select.i.i, align 1 - %168 = zext i8 %167 to i16 - %169 = shl nuw i16 %168, 8 - %170 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 1 - %171 = load i8, ptr %170, align 1 +170: ; preds = %122 + %171 = load i8, ptr %spec.select.i.i, align 1 %172 = zext i8 %171 to i16 - %trunc = or disjoint i16 %169, %172 - switch i16 %trunc, label %173 [ - i16 12, label %175 - i16 4, label %177 + %173 = shl nuw i16 %172, 8 + %174 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 1 + %175 = load i8, ptr %174, align 1 + %176 = zext i8 %175 to i16 + %trunc = or disjoint i16 %173, %176 + switch i16 %trunc, label %177 [ + i16 12, label %179 + i16 4, label %181 ] -173: ; preds = %166 - %174 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %174, align 8 - br label %212 +177: ; preds = %170 + %178 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %178, align 8 + br label %216 -175: ; preds = %166 - %176 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_20CmapSubtableFormat12EEEbPKvjPj, ptr %176, align 8 - br label %212 +179: ; preds = %170 + %180 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_20CmapSubtableFormat12EEEbPKvjPj, ptr %180, align 8 + br label %216 -177: ; preds = %166 - %178 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 6 - %179 = load i8, ptr %178, align 1 - %180 = zext i8 %179 to i32 - %181 = shl nuw nsw i32 %180, 8 - %182 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 7 +181: ; preds = %170 + %182 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 6 %183 = load i8, ptr %182, align 1 %184 = zext i8 %183 to i32 - %185 = or disjoint i32 %181, %184 - %186 = lshr i32 %185, 1 - %187 = getelementptr inbounds nuw i8, ptr %0, i64 72 - store i32 %186, ptr %187, align 8 - %188 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 14 - store ptr %188, ptr %6, align 8 - %189 = zext nneg i32 %186 to i64 - %190 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %188, i64 %189 - %191 = getelementptr inbounds nuw i8, ptr %190, i64 2 - %192 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store ptr %191, ptr %192, align 8 - %193 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %191, i64 %189 - %194 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store ptr %193, ptr %194, align 8 - %195 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %193, i64 %189 - %196 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %185 = shl nuw nsw i32 %184, 8 + %186 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 7 + %187 = load i8, ptr %186, align 1 + %188 = zext i8 %187 to i32 + %189 = or disjoint i32 %185, %188 + %190 = lshr i32 %189, 1 + %191 = getelementptr inbounds nuw i8, ptr %0, i64 72 + store i32 %190, ptr %191, align 8 + %192 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 14 + store ptr %192, ptr %6, align 8 + %193 = zext nneg i32 %190 to i64 + %194 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %192, i64 %193 + %195 = getelementptr inbounds nuw i8, ptr %194, i64 2 + %196 = getelementptr inbounds nuw i8, ptr %0, i64 40 store ptr %195, ptr %196, align 8 - %197 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %195, i64 %189 - %198 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %197 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %195, i64 %193 + %198 = getelementptr inbounds nuw i8, ptr %0, i64 48 store ptr %197, ptr %198, align 8 - %199 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 2 - %200 = load i8, ptr %199, align 1 - %201 = zext i8 %200 to i32 - %202 = shl nuw nsw i32 %201, 8 - %203 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 3 + %199 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %197, i64 %193 + %200 = getelementptr inbounds nuw i8, ptr %0, i64 56 + store ptr %199, ptr %200, align 8 + %201 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %199, i64 %193 + %202 = getelementptr inbounds nuw i8, ptr %0, i64 64 + store ptr %201, ptr %202, align 8 + %203 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 2 %204 = load i8, ptr %203, align 1 %205 = zext i8 %204 to i32 - %206 = or disjoint i32 %202, %205 - %207 = shl nuw nsw i32 %186, 3 - %reass.sub = sub nsw i32 %206, %207 - %208 = add nsw i32 %reass.sub, -16 - %209 = lshr i32 %208, 1 - %210 = getelementptr inbounds nuw i8, ptr %0, i64 76 - store i32 %209, ptr %210, align 4 - store ptr %6, ptr %119, align 8 - %211 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT19CmapSubtableFormat413accelerator_t14get_glyph_funcEPKvjPj, ptr %211, align 8 - br label %212 - -212: ; preds = %173, %175, %177, %162, %163, %164, %165 + %206 = shl nuw nsw i32 %205, 8 + %207 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 3 + %208 = load i8, ptr %207, align 1 + %209 = zext i8 %208 to i32 + %210 = or disjoint i32 %206, %209 + %211 = shl nuw nsw i32 %190, 3 + %reass.sub = sub nsw i32 %210, %211 + %212 = add nsw i32 %reass.sub, -16 + %213 = lshr i32 %212, 1 + %214 = getelementptr inbounds nuw i8, ptr %0, i64 76 + store i32 %213, ptr %214, align 4 + store ptr %6, ptr %123, align 8 + %215 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT19CmapSubtableFormat413accelerator_t14get_glyph_funcEPKvjPj, ptr %215, align 8 + br label %216 + +216: ; preds = %177, %179, %181, %166, %167, %168, %169 ret void } @@ -9089,11 +9095,11 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %44, %4, %45 br i1 %.not.i, label %70, label %68 68: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit - br i1 %.not, label %240, label %69 + br i1 %.not, label %248, label %69 69: ; preds = %68 store i8 1, ptr %1, align 1 - br label %240 + br label %248 70: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit48, label %.lr.ph.i.i.i.i.i.i36 @@ -9183,7 +9189,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %.not.i46 = icmp eq i32 %123, 0 %124 = zext i32 %123 to i64 %125 = getelementptr inbounds nuw i8, ptr %0, i64 %124 - br i1 %.not.i46, label %126, label %240 + br i1 %.not.i46, label %126, label %248 126: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit48 br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit63, label %.lr.ph.i.i.i.i.i.i51 @@ -9192,9 +9198,9 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %127 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 br label %128 -128: ; preds = %154, %.lr.ph.i.i.i.i.i.i51 - %.0193.i.i.i.i.i.i52 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i51 ], [ %.1.i.i.i.i.i.i59, %154 ] - %.0202.i.i.i.i.i.i53 = phi i32 [ %127, %.lr.ph.i.i.i.i.i.i51 ], [ %.121.i.i.i.i.i.i58, %154 ] +128: ; preds = %158, %.lr.ph.i.i.i.i.i.i51 + %.0193.i.i.i.i.i.i52 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i51 ], [ %.1.i.i.i.i.i.i59, %158 ] + %.0202.i.i.i.i.i.i53 = phi i32 [ %127, %.lr.ph.i.i.i.i.i.i51 ], [ %.121.i.i.i.i.i.i58, %158 ] %129 = add i32 %.0202.i.i.i.i.i.i53, %.0193.i.i.i.i.i.i52 %130 = lshr i32 %129, 1 %131 = zext nneg i32 %130 to i64 @@ -9207,180 +9213,192 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %138 = load i8, ptr %137, align 1 %139 = zext i8 %138 to i32 %140 = or disjoint i32 %136, %139 + %141 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %140) %.not.i.i.i.i.i.i.i.i54 = icmp eq i32 %140, 0 - br i1 %.not.i.i.i.i.i.i.i.i54, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread - -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: ; preds = %128 - %141 = getelementptr inbounds nuw i8, ptr %133, i64 2 - %142 = load i8, ptr %141, align 1 - %143 = zext i8 %142 to i32 - %144 = shl nuw nsw i32 %143, 8 - %145 = getelementptr inbounds nuw i8, ptr %133, i64 3 - %146 = load i8, ptr %145, align 1 - %147 = zext i8 %146 to i32 - %148 = or disjoint i32 %144, %147 - %149 = icmp samesign ugt i32 %148, 6 - br i1 %149, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread, label %151 - -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread: ; preds = %128, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 - %150 = add nsw i32 %130, -1 - br label %154 - -151: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 - %.not23.i.i.i.i.i.i57 = icmp eq i32 %148, 6 - br i1 %.not23.i.i.i.i.i.i57, label %155, label %152 - -152: ; preds = %151 - %153 = add nuw nsw i32 %130, 1 - br label %154 - -154: ; preds = %152, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread - %.121.i.i.i.i.i.i58 = phi i32 [ %150, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread ], [ %.0202.i.i.i.i.i.i53, %152 ] - %.1.i.i.i.i.i.i59 = phi i32 [ %.0193.i.i.i.i.i.i52, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread ], [ %153, %152 ] + br i1 %.not.i.i.i.i.i.i.i.i54, label %142, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 + +142: ; preds = %128 + %143 = getelementptr inbounds nuw i8, ptr %133, i64 2 + %144 = load i8, ptr %143, align 1 + %145 = zext i8 %144 to i32 + %146 = shl nuw nsw i32 %145, 8 + %147 = getelementptr inbounds nuw i8, ptr %133, i64 3 + %148 = load i8, ptr %147, align 1 + %149 = zext i8 %148 to i32 + %150 = or disjoint i32 %146, %149 + %151 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 6, i32 %150) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 + +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: ; preds = %142, %128 + %.0.i.i.i.i.i.i.i.i56 = phi i32 [ %141, %128 ], [ %151, %142 ] + %152 = icmp slt i32 %.0.i.i.i.i.i.i.i.i56, 0 + br i1 %152, label %153, label %155 + +153: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 + %154 = add nsw i32 %130, -1 + br label %158 + +155: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 + %.not23.i.i.i.i.i.i57 = icmp eq i32 %.0.i.i.i.i.i.i.i.i56, 0 + br i1 %.not23.i.i.i.i.i.i57, label %159, label %156 + +156: ; preds = %155 + %157 = add nuw nsw i32 %130, 1 + br label %158 + +158: ; preds = %156, %153 + %.121.i.i.i.i.i.i58 = phi i32 [ %154, %153 ], [ %.0202.i.i.i.i.i.i53, %156 ] + %.1.i.i.i.i.i.i59 = phi i32 [ %.0193.i.i.i.i.i.i52, %153 ], [ %157, %156 ] %.not.not.i.i.i.i.i.i60 = icmp sgt i32 %.1.i.i.i.i.i.i59, %.121.i.i.i.i.i.i58 br i1 %.not.not.i.i.i.i.i.i60, label %_ZNK2OT4cmap13find_subtableEjj.exit63, label %128, !llvm.loop !58 -155: ; preds = %151 - %156 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %131 +159: ; preds = %155 + %160 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %131 br label %_ZNK2OT4cmap13find_subtableEjj.exit63 -_ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %154, %126, %155 - %157 = phi ptr [ %156, %155 ], [ @_hb_NullPool, %126 ], [ @_hb_NullPool, %154 ] - %158 = getelementptr inbounds nuw i8, ptr %157, i64 4 - %159 = load i8, ptr %158, align 1 - %160 = zext i8 %159 to i32 - %161 = shl nuw i32 %160, 24 - %162 = getelementptr inbounds nuw i8, ptr %157, i64 5 +_ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 + %161 = phi ptr [ %160, %159 ], [ @_hb_NullPool, %126 ], [ @_hb_NullPool, %158 ] + %162 = getelementptr inbounds nuw i8, ptr %161, i64 4 %163 = load i8, ptr %162, align 1 %164 = zext i8 %163 to i32 - %165 = shl nuw nsw i32 %164, 16 - %166 = or disjoint i32 %165, %161 - %167 = getelementptr inbounds nuw i8, ptr %157, i64 6 - %168 = load i8, ptr %167, align 1 - %169 = zext i8 %168 to i32 - %170 = shl nuw nsw i32 %169, 8 - %171 = or disjoint i32 %166, %170 - %172 = getelementptr inbounds nuw i8, ptr %157, i64 7 - %173 = load i8, ptr %172, align 1 - %174 = zext i8 %173 to i32 - %175 = or disjoint i32 %171, %174 - %.not.i61 = icmp eq i32 %175, 0 - %176 = zext i32 %175 to i64 - %177 = getelementptr inbounds nuw i8, ptr %0, i64 %176 - br i1 %.not.i61, label %178, label %240 - -178: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit63 + %165 = shl nuw i32 %164, 24 + %166 = getelementptr inbounds nuw i8, ptr %161, i64 5 + %167 = load i8, ptr %166, align 1 + %168 = zext i8 %167 to i32 + %169 = shl nuw nsw i32 %168, 16 + %170 = or disjoint i32 %169, %165 + %171 = getelementptr inbounds nuw i8, ptr %161, i64 6 + %172 = load i8, ptr %171, align 1 + %173 = zext i8 %172 to i32 + %174 = shl nuw nsw i32 %173, 8 + %175 = or disjoint i32 %170, %174 + %176 = getelementptr inbounds nuw i8, ptr %161, i64 7 + %177 = load i8, ptr %176, align 1 + %178 = zext i8 %177 to i32 + %179 = or disjoint i32 %175, %178 + %.not.i61 = icmp eq i32 %179, 0 + %180 = zext i32 %179 to i64 + %181 = getelementptr inbounds nuw i8, ptr %0, i64 %180 + br i1 %.not.i61, label %182, label %248 + +182: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit63 br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %.lr.ph.i.i.i.i.i.i66 -.lr.ph.i.i.i.i.i.i66: ; preds = %178 - %179 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 - br label %180 - -180: ; preds = %206, %.lr.ph.i.i.i.i.i.i66 - %.0193.i.i.i.i.i.i67 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i66 ], [ %.1.i.i.i.i.i.i74, %206 ] - %.0202.i.i.i.i.i.i68 = phi i32 [ %179, %.lr.ph.i.i.i.i.i.i66 ], [ %.121.i.i.i.i.i.i73, %206 ] - %181 = add i32 %.0202.i.i.i.i.i.i68, %.0193.i.i.i.i.i.i67 - %182 = lshr i32 %181, 1 - %183 = zext nneg i32 %182 to i64 - %184 = shl nuw nsw i64 %183, 3 - %185 = getelementptr inbounds nuw i8, ptr %6, i64 %184 - %186 = load i8, ptr %185, align 1 - %187 = zext i8 %186 to i32 - %188 = shl nuw nsw i32 %187, 8 - %189 = getelementptr inbounds nuw i8, ptr %185, i64 1 +.lr.ph.i.i.i.i.i.i66: ; preds = %182 + %183 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 + br label %184 + +184: ; preds = %214, %.lr.ph.i.i.i.i.i.i66 + %.0193.i.i.i.i.i.i67 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i66 ], [ %.1.i.i.i.i.i.i74, %214 ] + %.0202.i.i.i.i.i.i68 = phi i32 [ %183, %.lr.ph.i.i.i.i.i.i66 ], [ %.121.i.i.i.i.i.i73, %214 ] + %185 = add i32 %.0202.i.i.i.i.i.i68, %.0193.i.i.i.i.i.i67 + %186 = lshr i32 %185, 1 + %187 = zext nneg i32 %186 to i64 + %188 = shl nuw nsw i64 %187, 3 + %189 = getelementptr inbounds nuw i8, ptr %6, i64 %188 %190 = load i8, ptr %189, align 1 %191 = zext i8 %190 to i32 - %192 = or disjoint i32 %188, %191 - %.not.i.i.i.i.i.i.i.i69 = icmp eq i32 %192, 0 - br i1 %.not.i.i.i.i.i.i.i.i69, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread - -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70: ; preds = %180 - %193 = getelementptr inbounds nuw i8, ptr %185, i64 2 + %192 = shl nuw nsw i32 %191, 8 + %193 = getelementptr inbounds nuw i8, ptr %189, i64 1 %194 = load i8, ptr %193, align 1 %195 = zext i8 %194 to i32 - %196 = shl nuw nsw i32 %195, 8 - %197 = getelementptr inbounds nuw i8, ptr %185, i64 3 - %198 = load i8, ptr %197, align 1 - %199 = zext i8 %198 to i32 - %200 = or disjoint i32 %196, %199 - %201 = icmp samesign ugt i32 %200, 4 - br i1 %201, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread, label %203 - -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread: ; preds = %180, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 - %202 = add nsw i32 %182, -1 - br label %206 - -203: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 - %.not23.i.i.i.i.i.i72 = icmp eq i32 %200, 4 - br i1 %.not23.i.i.i.i.i.i72, label %207, label %204 - -204: ; preds = %203 - %205 = add nuw nsw i32 %182, 1 - br label %206 - -206: ; preds = %204, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread - %.121.i.i.i.i.i.i73 = phi i32 [ %202, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread ], [ %.0202.i.i.i.i.i.i68, %204 ] - %.1.i.i.i.i.i.i74 = phi i32 [ %.0193.i.i.i.i.i.i67, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread ], [ %205, %204 ] + %196 = or disjoint i32 %192, %195 + %197 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %196) + %.not.i.i.i.i.i.i.i.i69 = icmp eq i32 %196, 0 + br i1 %.not.i.i.i.i.i.i.i.i69, label %198, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 + +198: ; preds = %184 + %199 = getelementptr inbounds nuw i8, ptr %189, i64 2 + %200 = load i8, ptr %199, align 1 + %201 = zext i8 %200 to i32 + %202 = shl nuw nsw i32 %201, 8 + %203 = getelementptr inbounds nuw i8, ptr %189, i64 3 + %204 = load i8, ptr %203, align 1 + %205 = zext i8 %204 to i32 + %206 = or disjoint i32 %202, %205 + %207 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 4, i32 %206) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 + +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70: ; preds = %198, %184 + %.0.i.i.i.i.i.i.i.i71 = phi i32 [ %197, %184 ], [ %207, %198 ] + %208 = icmp slt i32 %.0.i.i.i.i.i.i.i.i71, 0 + br i1 %208, label %209, label %211 + +209: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 + %210 = add nsw i32 %186, -1 + br label %214 + +211: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 + %.not23.i.i.i.i.i.i72 = icmp eq i32 %.0.i.i.i.i.i.i.i.i71, 0 + br i1 %.not23.i.i.i.i.i.i72, label %215, label %212 + +212: ; preds = %211 + %213 = add nuw nsw i32 %186, 1 + br label %214 + +214: ; preds = %212, %209 + %.121.i.i.i.i.i.i73 = phi i32 [ %210, %209 ], [ %.0202.i.i.i.i.i.i68, %212 ] + %.1.i.i.i.i.i.i74 = phi i32 [ %.0193.i.i.i.i.i.i67, %209 ], [ %213, %212 ] %.not.not.i.i.i.i.i.i75 = icmp sgt i32 %.1.i.i.i.i.i.i74, %.121.i.i.i.i.i.i73 - br i1 %.not.not.i.i.i.i.i.i75, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %180, !llvm.loop !58 + br i1 %.not.not.i.i.i.i.i.i75, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %184, !llvm.loop !58 -207: ; preds = %203 - %208 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %183 +215: ; preds = %211 + %216 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %187 br label %_ZNK2OT4cmap13find_subtableEjj.exit78 -_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %206, %178, %207 - %209 = phi ptr [ %208, %207 ], [ @_hb_NullPool, %178 ], [ @_hb_NullPool, %206 ] - %210 = getelementptr inbounds nuw i8, ptr %209, i64 4 - %211 = load i8, ptr %210, align 1 - %212 = zext i8 %211 to i32 - %213 = shl nuw i32 %212, 24 - %214 = getelementptr inbounds nuw i8, ptr %209, i64 5 - %215 = load i8, ptr %214, align 1 - %216 = zext i8 %215 to i32 - %217 = shl nuw nsw i32 %216, 16 - %218 = or disjoint i32 %217, %213 - %219 = getelementptr inbounds nuw i8, ptr %209, i64 6 - %220 = load i8, ptr %219, align 1 - %221 = zext i8 %220 to i32 - %222 = shl nuw nsw i32 %221, 8 - %223 = or disjoint i32 %218, %222 - %224 = getelementptr inbounds nuw i8, ptr %209, i64 7 - %225 = load i8, ptr %224, align 1 - %226 = zext i8 %225 to i32 - %227 = or disjoint i32 %223, %226 - %.not.i76 = icmp eq i32 %227, 0 - %228 = zext i32 %227 to i64 - %229 = getelementptr inbounds nuw i8, ptr %0, i64 %228 - br i1 %.not.i76, label %230, label %240 - -230: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit78 - %231 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 3, i32 noundef 1) - %.not29 = icmp eq ptr %231, null - br i1 %.not29, label %232, label %240 - -232: ; preds = %230 - %233 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 3) - %.not30 = icmp eq ptr %233, null - br i1 %.not30, label %234, label %240 - -234: ; preds = %232 - %235 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 2) - %.not31 = icmp eq ptr %235, null - br i1 %.not31, label %236, label %240 - -236: ; preds = %234 - %237 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 1) - %.not32 = icmp eq ptr %237, null - br i1 %.not32, label %238, label %240 - -238: ; preds = %236 - %239 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 0) - %.not33 = icmp eq ptr %239, null - %spec.select = select i1 %.not33, ptr @_hb_NullPool, ptr %239 - br label %240 - -240: ; preds = %238, %236, %234, %232, %230, %_ZNK2OT4cmap13find_subtableEjj.exit78, %_ZNK2OT4cmap13find_subtableEjj.exit63, %_ZNK2OT4cmap13find_subtableEjj.exit48, %68, %69 - %.0 = phi ptr [ %67, %69 ], [ %67, %68 ], [ %125, %_ZNK2OT4cmap13find_subtableEjj.exit48 ], [ %177, %_ZNK2OT4cmap13find_subtableEjj.exit63 ], [ %229, %_ZNK2OT4cmap13find_subtableEjj.exit78 ], [ %231, %230 ], [ %233, %232 ], [ %235, %234 ], [ %237, %236 ], [ %spec.select, %238 ] +_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %214, %182, %215 + %217 = phi ptr [ %216, %215 ], [ @_hb_NullPool, %182 ], [ @_hb_NullPool, %214 ] + %218 = getelementptr inbounds nuw i8, ptr %217, i64 4 + %219 = load i8, ptr %218, align 1 + %220 = zext i8 %219 to i32 + %221 = shl nuw i32 %220, 24 + %222 = getelementptr inbounds nuw i8, ptr %217, i64 5 + %223 = load i8, ptr %222, align 1 + %224 = zext i8 %223 to i32 + %225 = shl nuw nsw i32 %224, 16 + %226 = or disjoint i32 %225, %221 + %227 = getelementptr inbounds nuw i8, ptr %217, i64 6 + %228 = load i8, ptr %227, align 1 + %229 = zext i8 %228 to i32 + %230 = shl nuw nsw i32 %229, 8 + %231 = or disjoint i32 %226, %230 + %232 = getelementptr inbounds nuw i8, ptr %217, i64 7 + %233 = load i8, ptr %232, align 1 + %234 = zext i8 %233 to i32 + %235 = or disjoint i32 %231, %234 + %.not.i76 = icmp eq i32 %235, 0 + %236 = zext i32 %235 to i64 + %237 = getelementptr inbounds nuw i8, ptr %0, i64 %236 + br i1 %.not.i76, label %238, label %248 + +238: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit78 + %239 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 3, i32 noundef 1) + %.not29 = icmp eq ptr %239, null + br i1 %.not29, label %240, label %248 + +240: ; preds = %238 + %241 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 3) + %.not30 = icmp eq ptr %241, null + br i1 %.not30, label %242, label %248 + +242: ; preds = %240 + %243 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 2) + %.not31 = icmp eq ptr %243, null + br i1 %.not31, label %244, label %248 + +244: ; preds = %242 + %245 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 1) + %.not32 = icmp eq ptr %245, null + br i1 %.not32, label %246, label %248 + +246: ; preds = %244 + %247 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 0) + %.not33 = icmp eq ptr %247, null + %spec.select = select i1 %.not33, ptr @_hb_NullPool, ptr %247 + br label %248 + +248: ; preds = %246, %244, %242, %240, %238, %_ZNK2OT4cmap13find_subtableEjj.exit78, %_ZNK2OT4cmap13find_subtableEjj.exit63, %_ZNK2OT4cmap13find_subtableEjj.exit48, %68, %69 + %.0 = phi ptr [ %67, %69 ], [ %67, %68 ], [ %125, %_ZNK2OT4cmap13find_subtableEjj.exit48 ], [ %181, %_ZNK2OT4cmap13find_subtableEjj.exit63 ], [ %237, %_ZNK2OT4cmap13find_subtableEjj.exit78 ], [ %239, %238 ], [ %241, %240 ], [ %243, %242 ], [ %245, %244 ], [ %spec.select, %246 ] ret ptr %.0 } diff --git a/bench/openjdk/optimized/hb-ot-font.ll b/bench/openjdk/optimized/hb-ot-font.ll index f80067a0fdb..dab04e3674b 100644 --- a/bench/openjdk/optimized/hb-ot-font.ll +++ b/bench/openjdk/optimized/hb-ot-font.ll @@ -3445,17 +3445,17 @@ define linkonce_odr hidden void @_ZN2OT4cmap13accelerator_tC2EP9hb_face_t(ptr no %13 = getelementptr inbounds nuw i8, ptr %3, i64 61 store i8 0, ptr %13, align 1 %14 = invoke i32 @hb_face_get_glyph_count(ptr noundef %1) - to label %15 unwind label %106 + to label %15 unwind label %110 15: ; preds = %2 store i32 %14, ptr %11, align 8 store i8 1, ptr %12, align 4 %16 = invoke ptr @hb_face_reference_table(ptr noundef %1, i32 noundef 1668112752) - to label %.noexc7 unwind label %106 + to label %.noexc7 unwind label %110 .noexc7: ; preds = %15 %17 = invoke noundef ptr @_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4cmapEEEP9hb_blob_tS4_(ptr noundef nonnull align 8 dereferenceable(62) %3, ptr noundef %16) - to label %18 unwind label %106 + to label %18 unwind label %110 18: ; preds = %.noexc7 store ptr %17, ptr %7, align 8 @@ -3518,9 +3518,9 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %18, %_ZN21hb_saniti %45 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 br label %46 -46: ; preds = %72, %.lr.ph.i.i.i.i.i.i - %.0193.i.i.i.i.i.i = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i ], [ %.1.i.i.i.i.i.i, %72 ] - %.0202.i.i.i.i.i.i = phi i32 [ %45, %.lr.ph.i.i.i.i.i.i ], [ %.121.i.i.i.i.i.i, %72 ] +46: ; preds = %76, %.lr.ph.i.i.i.i.i.i + %.0193.i.i.i.i.i.i = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i ], [ %.1.i.i.i.i.i.i, %76 ] + %.0202.i.i.i.i.i.i = phi i32 [ %45, %.lr.ph.i.i.i.i.i.i ], [ %.121.i.i.i.i.i.i, %76 ] %47 = add i32 %.0202.i.i.i.i.i.i, %.0193.i.i.i.i.i.i %48 = lshr i32 %47, 1 %49 = zext nneg i32 %48 to i64 @@ -3533,214 +3533,220 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %18, %_ZN21hb_saniti %56 = load i8, ptr %55, align 1 %57 = zext i8 %56 to i32 %58 = or disjoint i32 %54, %57 + %59 = call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %58) %.not.i.i.i.i.i.i.i.i = icmp eq i32 %58, 0 - br i1 %.not.i.i.i.i.i.i.i.i, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread + br i1 %.not.i.i.i.i.i.i.i.i, label %60, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; preds = %46 - %59 = getelementptr inbounds nuw i8, ptr %51, i64 2 - %60 = load i8, ptr %59, align 1 - %61 = zext i8 %60 to i32 - %62 = shl nuw nsw i32 %61, 8 - %63 = getelementptr inbounds nuw i8, ptr %51, i64 3 - %64 = load i8, ptr %63, align 1 - %65 = zext i8 %64 to i32 - %66 = or disjoint i32 %62, %65 - %67 = icmp samesign ugt i32 %66, 5 - br i1 %67, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread, label %69 +60: ; preds = %46 + %61 = getelementptr inbounds nuw i8, ptr %51, i64 2 + %62 = load i8, ptr %61, align 1 + %63 = zext i8 %62 to i32 + %64 = shl nuw nsw i32 %63, 8 + %65 = getelementptr inbounds nuw i8, ptr %51, i64 3 + %66 = load i8, ptr %65, align 1 + %67 = zext i8 %66 to i32 + %68 = or disjoint i32 %64, %67 + %69 = call noundef i32 @llvm.ucmp.i32.i32(i32 5, i32 %68) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread: ; preds = %46, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i - %68 = add nsw i32 %48, -1 - br label %72 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; preds = %60, %46 + %.0.i.i.i.i.i.i.i.i = phi i32 [ %59, %46 ], [ %69, %60 ] + %70 = icmp slt i32 %.0.i.i.i.i.i.i.i.i, 0 + br i1 %70, label %71, label %73 -69: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i - %.not23.i.i.i.i.i.i = icmp eq i32 %66, 5 - br i1 %.not23.i.i.i.i.i.i, label %73, label %70 +71: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i + %72 = add nsw i32 %48, -1 + br label %76 -70: ; preds = %69 - %71 = add nuw nsw i32 %48, 1 - br label %72 +73: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i + %.not23.i.i.i.i.i.i = icmp eq i32 %.0.i.i.i.i.i.i.i.i, 0 + br i1 %.not23.i.i.i.i.i.i, label %77, label %74 + +74: ; preds = %73 + %75 = add nuw nsw i32 %48, 1 + br label %76 -72: ; preds = %70, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread - %.121.i.i.i.i.i.i = phi i32 [ %68, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread ], [ %.0202.i.i.i.i.i.i, %70 ] - %.1.i.i.i.i.i.i = phi i32 [ %.0193.i.i.i.i.i.i, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread ], [ %71, %70 ] +76: ; preds = %74, %71 + %.121.i.i.i.i.i.i = phi i32 [ %72, %71 ], [ %.0202.i.i.i.i.i.i, %74 ] + %.1.i.i.i.i.i.i = phi i32 [ %.0193.i.i.i.i.i.i, %71 ], [ %75, %74 ] %.not.not.i.i.i.i.i.i = icmp sgt i32 %.1.i.i.i.i.i.i, %.121.i.i.i.i.i.i br i1 %.not.not.i.i.i.i.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit, label %46, !llvm.loop !17 -73: ; preds = %69 - %74 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %38, i64 %49 +77: ; preds = %73 + %78 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %38, i64 %49 br label %_ZNK2OT4cmap13find_subtableEjj.exit -_ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %72, %_ZN21hb_sanitize_context_tD2Ev.exit, %73 - %75 = phi ptr [ %74, %73 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %72 ] - %76 = getelementptr inbounds nuw i8, ptr %75, i64 4 - %77 = load i8, ptr %76, align 1 - %78 = zext i8 %77 to i32 - %79 = shl nuw i32 %78, 24 - %80 = getelementptr inbounds nuw i8, ptr %75, i64 5 +_ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %76, %_ZN21hb_sanitize_context_tD2Ev.exit, %77 + %79 = phi ptr [ %78, %77 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %76 ] + %80 = getelementptr inbounds nuw i8, ptr %79, i64 4 %81 = load i8, ptr %80, align 1 %82 = zext i8 %81 to i32 - %83 = shl nuw nsw i32 %82, 16 - %84 = or disjoint i32 %83, %79 - %85 = getelementptr inbounds nuw i8, ptr %75, i64 6 - %86 = load i8, ptr %85, align 1 - %87 = zext i8 %86 to i32 - %88 = shl nuw nsw i32 %87, 8 - %89 = or disjoint i32 %84, %88 - %90 = getelementptr inbounds nuw i8, ptr %75, i64 7 - %91 = load i8, ptr %90, align 1 - %92 = zext i8 %91 to i32 - %93 = or disjoint i32 %89, %92 - %.not.i12 = icmp eq i32 %93, 0 - %94 = zext i32 %93 to i64 - %95 = getelementptr inbounds nuw i8, ptr %spec.select.i.i1.i.i11, i64 %94 - br i1 %.not.i12, label %108, label %96 + %83 = shl nuw i32 %82, 24 + %84 = getelementptr inbounds nuw i8, ptr %79, i64 5 + %85 = load i8, ptr %84, align 1 + %86 = zext i8 %85 to i32 + %87 = shl nuw nsw i32 %86, 16 + %88 = or disjoint i32 %87, %83 + %89 = getelementptr inbounds nuw i8, ptr %79, i64 6 + %90 = load i8, ptr %89, align 1 + %91 = zext i8 %90 to i32 + %92 = shl nuw nsw i32 %91, 8 + %93 = or disjoint i32 %88, %92 + %94 = getelementptr inbounds nuw i8, ptr %79, i64 7 + %95 = load i8, ptr %94, align 1 + %96 = zext i8 %95 to i32 + %97 = or disjoint i32 %93, %96 + %.not.i12 = icmp eq i32 %97, 0 + %98 = zext i32 %97 to i64 + %99 = getelementptr inbounds nuw i8, ptr %spec.select.i.i1.i.i11, i64 %98 + br i1 %.not.i12, label %112, label %100 -96: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit - %97 = load i8, ptr %95, align 1 - %98 = zext i8 %97 to i32 - %99 = shl nuw nsw i32 %98, 8 - %100 = getelementptr inbounds nuw i8, ptr %95, i64 1 - %101 = load i8, ptr %100, align 1 +100: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit + %101 = load i8, ptr %99, align 1 %102 = zext i8 %101 to i32 - %103 = or disjoint i32 %99, %102 - %104 = icmp eq i32 %103, 14 - br i1 %104, label %105, label %108 + %103 = shl nuw nsw i32 %102, 8 + %104 = getelementptr inbounds nuw i8, ptr %99, i64 1 + %105 = load i8, ptr %104, align 1 + %106 = zext i8 %105 to i32 + %107 = or disjoint i32 %103, %106 + %108 = icmp eq i32 %107, 14 + br i1 %108, label %109, label %112 -105: ; preds = %96 - store ptr %95, ptr %5, align 8 - br label %108 +109: ; preds = %100 + store ptr %99, ptr %5, align 8 + br label %112 -106: ; preds = %.noexc7, %15, %2 - %107 = landingpad { ptr, i32 } +110: ; preds = %.noexc7, %15, %2 + %111 = landingpad { ptr, i32 } cleanup call void @_ZN21hb_sanitize_context_tD2Ev(ptr noundef nonnull align 8 dereferenceable(62) %3) #23 - resume { ptr, i32 } %107 + resume { ptr, i32 } %111 -108: ; preds = %105, %96, %_ZNK2OT4cmap13find_subtableEjj.exit +112: ; preds = %109, %100, %_ZNK2OT4cmap13find_subtableEjj.exit %.not.i.i = icmp eq ptr %30, null %spec.select.i.i = select i1 %.not.i.i, ptr @_hb_NullPool, ptr %30 - %109 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %spec.select.i.i, ptr %109, align 8 - %110 = load i8, ptr %4, align 1 - %111 = trunc i8 %110 to i1 - br i1 %111, label %112, label %137 + %113 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %spec.select.i.i, ptr %113, align 8 + %114 = load i8, ptr %4, align 1 + %115 = trunc i8 %114 to i1 + br i1 %115, label %116, label %141 -112: ; preds = %108 - %113 = getelementptr inbounds nuw i8, ptr %1, i64 128 - %114 = call noundef ptr @_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10get_storedEv(ptr noundef nonnull align 8 dereferenceable(8) %113) - %115 = getelementptr inbounds nuw i8, ptr %114, i64 16 - %116 = load ptr, ptr %115, align 8 - %117 = getelementptr inbounds nuw i8, ptr %114, i64 24 - %118 = load i32, ptr %117, align 8 - %119 = icmp ult i32 %118, 78 - %spec.select.i.i.i.i.i = select i1 %119, ptr @_hb_NullPool, ptr %116 - %120 = load i8, ptr %spec.select.i.i.i.i.i, align 1 - %121 = zext i8 %120 to i32 - %122 = shl nuw nsw i32 %121, 8 - %123 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 1 - %124 = load i8, ptr %123, align 1 +116: ; preds = %112 + %117 = getelementptr inbounds nuw i8, ptr %1, i64 128 + %118 = call noundef ptr @_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10get_storedEv(ptr noundef nonnull align 8 dereferenceable(8) %117) + %119 = getelementptr inbounds nuw i8, ptr %118, i64 16 + %120 = load ptr, ptr %119, align 8 + %121 = getelementptr inbounds nuw i8, ptr %118, i64 24 + %122 = load i32, ptr %121, align 8 + %123 = icmp ult i32 %122, 78 + %spec.select.i.i.i.i.i = select i1 %123, ptr @_hb_NullPool, ptr %120 + %124 = load i8, ptr %spec.select.i.i.i.i.i, align 1 %125 = zext i8 %124 to i32 - %126 = or disjoint i32 %122, %125 - %127 = icmp eq i32 %126, 0 - %128 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 62 - %129 = load i8, ptr %128, align 1 - %130 = zext i8 %129 to i16 - %131 = shl nuw i16 %130, 8 - %trunc18 = select i1 %127, i16 %131, i16 0 - %132 = getelementptr inbounds nuw i8, ptr %0, i64 16 - switch i16 %trunc18, label %136 [ - i16 0, label %133 - i16 -19968, label %134 - i16 -19712, label %135 + %126 = shl nuw nsw i32 %125, 8 + %127 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 1 + %128 = load i8, ptr %127, align 1 + %129 = zext i8 %128 to i32 + %130 = or disjoint i32 %126, %129 + %131 = icmp eq i32 %130, 0 + %132 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 62 + %133 = load i8, ptr %132, align 1 + %134 = zext i8 %133 to i16 + %135 = shl nuw i16 %134, 8 + %trunc18 = select i1 %131, i16 %135, i16 0 + %136 = getelementptr inbounds nuw i8, ptr %0, i64 16 + switch i16 %trunc18, label %140 [ + i16 0, label %137 + i16 -19968, label %138 + i16 -19712, label %139 ] -133: ; preds = %112 - store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZNS_L18_hb_symbol_pua_mapEjEEEEbPKvjPj, ptr %132, align 8 - br label %183 +137: ; preds = %116 + store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZNS_L18_hb_symbol_pua_mapEjEEEEbPKvjPj, ptr %136, align 8 + br label %187 -134: ; preds = %112 - store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_simp_mapjEEEEbPKvjPj, ptr %132, align 8 - br label %183 +138: ; preds = %116 + store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_simp_mapjEEEEbPKvjPj, ptr %136, align 8 + br label %187 -135: ; preds = %112 - store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_trad_mapjEEEEbPKvjPj, ptr %132, align 8 - br label %183 +139: ; preds = %116 + store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_trad_mapjEEEEbPKvjPj, ptr %136, align 8 + br label %187 -136: ; preds = %112 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %132, align 8 - br label %183 +140: ; preds = %116 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %136, align 8 + br label %187 -137: ; preds = %108 - %138 = load i8, ptr %spec.select.i.i, align 1 - %139 = zext i8 %138 to i16 - %140 = shl nuw i16 %139, 8 - %141 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 1 - %142 = load i8, ptr %141, align 1 +141: ; preds = %112 + %142 = load i8, ptr %spec.select.i.i, align 1 %143 = zext i8 %142 to i16 - %trunc = or disjoint i16 %140, %143 - switch i16 %trunc, label %144 [ - i16 12, label %146 - i16 4, label %148 + %144 = shl nuw i16 %143, 8 + %145 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 1 + %146 = load i8, ptr %145, align 1 + %147 = zext i8 %146 to i16 + %trunc = or disjoint i16 %144, %147 + switch i16 %trunc, label %148 [ + i16 12, label %150 + i16 4, label %152 ] -144: ; preds = %137 - %145 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %145, align 8 - br label %183 +148: ; preds = %141 + %149 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %149, align 8 + br label %187 -146: ; preds = %137 - %147 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_20CmapSubtableFormat12EEEbPKvjPj, ptr %147, align 8 - br label %183 +150: ; preds = %141 + %151 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_20CmapSubtableFormat12EEEbPKvjPj, ptr %151, align 8 + br label %187 -148: ; preds = %137 - %149 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 6 - %150 = load i8, ptr %149, align 1 - %151 = zext i8 %150 to i32 - %152 = shl nuw nsw i32 %151, 8 - %153 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 7 +152: ; preds = %141 + %153 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 6 %154 = load i8, ptr %153, align 1 %155 = zext i8 %154 to i32 - %156 = or disjoint i32 %152, %155 - %157 = lshr i32 %156, 1 - %158 = getelementptr inbounds nuw i8, ptr %0, i64 72 - store i32 %157, ptr %158, align 8 - %159 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 14 - store ptr %159, ptr %6, align 8 - %160 = zext nneg i32 %157 to i64 - %161 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %159, i64 %160 - %162 = getelementptr inbounds nuw i8, ptr %161, i64 2 - %163 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store ptr %162, ptr %163, align 8 - %164 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %162, i64 %160 - %165 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store ptr %164, ptr %165, align 8 - %166 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %164, i64 %160 - %167 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %156 = shl nuw nsw i32 %155, 8 + %157 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 7 + %158 = load i8, ptr %157, align 1 + %159 = zext i8 %158 to i32 + %160 = or disjoint i32 %156, %159 + %161 = lshr i32 %160, 1 + %162 = getelementptr inbounds nuw i8, ptr %0, i64 72 + store i32 %161, ptr %162, align 8 + %163 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 14 + store ptr %163, ptr %6, align 8 + %164 = zext nneg i32 %161 to i64 + %165 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %163, i64 %164 + %166 = getelementptr inbounds nuw i8, ptr %165, i64 2 + %167 = getelementptr inbounds nuw i8, ptr %0, i64 40 store ptr %166, ptr %167, align 8 - %168 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %166, i64 %160 - %169 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %168 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %166, i64 %164 + %169 = getelementptr inbounds nuw i8, ptr %0, i64 48 store ptr %168, ptr %169, align 8 - %170 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 2 - %171 = load i8, ptr %170, align 1 - %172 = zext i8 %171 to i32 - %173 = shl nuw nsw i32 %172, 8 - %174 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 3 + %170 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %168, i64 %164 + %171 = getelementptr inbounds nuw i8, ptr %0, i64 56 + store ptr %170, ptr %171, align 8 + %172 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %170, i64 %164 + %173 = getelementptr inbounds nuw i8, ptr %0, i64 64 + store ptr %172, ptr %173, align 8 + %174 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 2 %175 = load i8, ptr %174, align 1 %176 = zext i8 %175 to i32 - %177 = or disjoint i32 %173, %176 - %178 = shl nuw nsw i32 %157, 3 - %reass.sub = sub nsw i32 %177, %178 - %179 = add nsw i32 %reass.sub, -16 - %180 = lshr i32 %179, 1 - %181 = getelementptr inbounds nuw i8, ptr %0, i64 76 - store i32 %180, ptr %181, align 4 - store ptr %6, ptr %109, align 8 - %182 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT19CmapSubtableFormat413accelerator_t14get_glyph_funcEPKvjPj, ptr %182, align 8 - br label %183 - -183: ; preds = %144, %146, %148, %133, %134, %135, %136 + %177 = shl nuw nsw i32 %176, 8 + %178 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 3 + %179 = load i8, ptr %178, align 1 + %180 = zext i8 %179 to i32 + %181 = or disjoint i32 %177, %180 + %182 = shl nuw nsw i32 %161, 3 + %reass.sub = sub nsw i32 %181, %182 + %183 = add nsw i32 %reass.sub, -16 + %184 = lshr i32 %183, 1 + %185 = getelementptr inbounds nuw i8, ptr %0, i64 76 + store i32 %184, ptr %185, align 4 + store ptr %6, ptr %113, align 8 + %186 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT19CmapSubtableFormat413accelerator_t14get_glyph_funcEPKvjPj, ptr %186, align 8 + br label %187 + +187: ; preds = %148, %150, %152, %137, %138, %139, %140 ret void } @@ -3884,11 +3890,11 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %44, %4, %45 br i1 %.not.i, label %70, label %68 68: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit - br i1 %.not, label %240, label %69 + br i1 %.not, label %248, label %69 69: ; preds = %68 store i8 1, ptr %1, align 1 - br label %240 + br label %248 70: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit48, label %.lr.ph.i.i.i.i.i.i36 @@ -3978,7 +3984,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %.not.i46 = icmp eq i32 %123, 0 %124 = zext i32 %123 to i64 %125 = getelementptr inbounds nuw i8, ptr %0, i64 %124 - br i1 %.not.i46, label %126, label %240 + br i1 %.not.i46, label %126, label %248 126: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit48 br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit63, label %.lr.ph.i.i.i.i.i.i51 @@ -3987,9 +3993,9 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %127 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 br label %128 -128: ; preds = %154, %.lr.ph.i.i.i.i.i.i51 - %.0193.i.i.i.i.i.i52 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i51 ], [ %.1.i.i.i.i.i.i59, %154 ] - %.0202.i.i.i.i.i.i53 = phi i32 [ %127, %.lr.ph.i.i.i.i.i.i51 ], [ %.121.i.i.i.i.i.i58, %154 ] +128: ; preds = %158, %.lr.ph.i.i.i.i.i.i51 + %.0193.i.i.i.i.i.i52 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i51 ], [ %.1.i.i.i.i.i.i59, %158 ] + %.0202.i.i.i.i.i.i53 = phi i32 [ %127, %.lr.ph.i.i.i.i.i.i51 ], [ %.121.i.i.i.i.i.i58, %158 ] %129 = add i32 %.0202.i.i.i.i.i.i53, %.0193.i.i.i.i.i.i52 %130 = lshr i32 %129, 1 %131 = zext nneg i32 %130 to i64 @@ -4002,180 +4008,192 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %138 = load i8, ptr %137, align 1 %139 = zext i8 %138 to i32 %140 = or disjoint i32 %136, %139 + %141 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %140) %.not.i.i.i.i.i.i.i.i54 = icmp eq i32 %140, 0 - br i1 %.not.i.i.i.i.i.i.i.i54, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread + br i1 %.not.i.i.i.i.i.i.i.i54, label %142, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: ; preds = %128 - %141 = getelementptr inbounds nuw i8, ptr %133, i64 2 - %142 = load i8, ptr %141, align 1 - %143 = zext i8 %142 to i32 - %144 = shl nuw nsw i32 %143, 8 - %145 = getelementptr inbounds nuw i8, ptr %133, i64 3 - %146 = load i8, ptr %145, align 1 - %147 = zext i8 %146 to i32 - %148 = or disjoint i32 %144, %147 - %149 = icmp samesign ugt i32 %148, 6 - br i1 %149, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread, label %151 +142: ; preds = %128 + %143 = getelementptr inbounds nuw i8, ptr %133, i64 2 + %144 = load i8, ptr %143, align 1 + %145 = zext i8 %144 to i32 + %146 = shl nuw nsw i32 %145, 8 + %147 = getelementptr inbounds nuw i8, ptr %133, i64 3 + %148 = load i8, ptr %147, align 1 + %149 = zext i8 %148 to i32 + %150 = or disjoint i32 %146, %149 + %151 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 6, i32 %150) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread: ; preds = %128, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 - %150 = add nsw i32 %130, -1 - br label %154 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: ; preds = %142, %128 + %.0.i.i.i.i.i.i.i.i56 = phi i32 [ %141, %128 ], [ %151, %142 ] + %152 = icmp slt i32 %.0.i.i.i.i.i.i.i.i56, 0 + br i1 %152, label %153, label %155 -151: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 - %.not23.i.i.i.i.i.i57 = icmp eq i32 %148, 6 - br i1 %.not23.i.i.i.i.i.i57, label %155, label %152 +153: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 + %154 = add nsw i32 %130, -1 + br label %158 -152: ; preds = %151 - %153 = add nuw nsw i32 %130, 1 - br label %154 +155: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 + %.not23.i.i.i.i.i.i57 = icmp eq i32 %.0.i.i.i.i.i.i.i.i56, 0 + br i1 %.not23.i.i.i.i.i.i57, label %159, label %156 -154: ; preds = %152, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread - %.121.i.i.i.i.i.i58 = phi i32 [ %150, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread ], [ %.0202.i.i.i.i.i.i53, %152 ] - %.1.i.i.i.i.i.i59 = phi i32 [ %.0193.i.i.i.i.i.i52, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread ], [ %153, %152 ] +156: ; preds = %155 + %157 = add nuw nsw i32 %130, 1 + br label %158 + +158: ; preds = %156, %153 + %.121.i.i.i.i.i.i58 = phi i32 [ %154, %153 ], [ %.0202.i.i.i.i.i.i53, %156 ] + %.1.i.i.i.i.i.i59 = phi i32 [ %.0193.i.i.i.i.i.i52, %153 ], [ %157, %156 ] %.not.not.i.i.i.i.i.i60 = icmp sgt i32 %.1.i.i.i.i.i.i59, %.121.i.i.i.i.i.i58 br i1 %.not.not.i.i.i.i.i.i60, label %_ZNK2OT4cmap13find_subtableEjj.exit63, label %128, !llvm.loop !17 -155: ; preds = %151 - %156 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %131 +159: ; preds = %155 + %160 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %131 br label %_ZNK2OT4cmap13find_subtableEjj.exit63 -_ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %154, %126, %155 - %157 = phi ptr [ %156, %155 ], [ @_hb_NullPool, %126 ], [ @_hb_NullPool, %154 ] - %158 = getelementptr inbounds nuw i8, ptr %157, i64 4 - %159 = load i8, ptr %158, align 1 - %160 = zext i8 %159 to i32 - %161 = shl nuw i32 %160, 24 - %162 = getelementptr inbounds nuw i8, ptr %157, i64 5 +_ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 + %161 = phi ptr [ %160, %159 ], [ @_hb_NullPool, %126 ], [ @_hb_NullPool, %158 ] + %162 = getelementptr inbounds nuw i8, ptr %161, i64 4 %163 = load i8, ptr %162, align 1 %164 = zext i8 %163 to i32 - %165 = shl nuw nsw i32 %164, 16 - %166 = or disjoint i32 %165, %161 - %167 = getelementptr inbounds nuw i8, ptr %157, i64 6 - %168 = load i8, ptr %167, align 1 - %169 = zext i8 %168 to i32 - %170 = shl nuw nsw i32 %169, 8 - %171 = or disjoint i32 %166, %170 - %172 = getelementptr inbounds nuw i8, ptr %157, i64 7 - %173 = load i8, ptr %172, align 1 - %174 = zext i8 %173 to i32 - %175 = or disjoint i32 %171, %174 - %.not.i61 = icmp eq i32 %175, 0 - %176 = zext i32 %175 to i64 - %177 = getelementptr inbounds nuw i8, ptr %0, i64 %176 - br i1 %.not.i61, label %178, label %240 + %165 = shl nuw i32 %164, 24 + %166 = getelementptr inbounds nuw i8, ptr %161, i64 5 + %167 = load i8, ptr %166, align 1 + %168 = zext i8 %167 to i32 + %169 = shl nuw nsw i32 %168, 16 + %170 = or disjoint i32 %169, %165 + %171 = getelementptr inbounds nuw i8, ptr %161, i64 6 + %172 = load i8, ptr %171, align 1 + %173 = zext i8 %172 to i32 + %174 = shl nuw nsw i32 %173, 8 + %175 = or disjoint i32 %170, %174 + %176 = getelementptr inbounds nuw i8, ptr %161, i64 7 + %177 = load i8, ptr %176, align 1 + %178 = zext i8 %177 to i32 + %179 = or disjoint i32 %175, %178 + %.not.i61 = icmp eq i32 %179, 0 + %180 = zext i32 %179 to i64 + %181 = getelementptr inbounds nuw i8, ptr %0, i64 %180 + br i1 %.not.i61, label %182, label %248 -178: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit63 +182: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit63 br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %.lr.ph.i.i.i.i.i.i66 -.lr.ph.i.i.i.i.i.i66: ; preds = %178 - %179 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 - br label %180 - -180: ; preds = %206, %.lr.ph.i.i.i.i.i.i66 - %.0193.i.i.i.i.i.i67 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i66 ], [ %.1.i.i.i.i.i.i74, %206 ] - %.0202.i.i.i.i.i.i68 = phi i32 [ %179, %.lr.ph.i.i.i.i.i.i66 ], [ %.121.i.i.i.i.i.i73, %206 ] - %181 = add i32 %.0202.i.i.i.i.i.i68, %.0193.i.i.i.i.i.i67 - %182 = lshr i32 %181, 1 - %183 = zext nneg i32 %182 to i64 - %184 = shl nuw nsw i64 %183, 3 - %185 = getelementptr inbounds nuw i8, ptr %6, i64 %184 - %186 = load i8, ptr %185, align 1 - %187 = zext i8 %186 to i32 - %188 = shl nuw nsw i32 %187, 8 - %189 = getelementptr inbounds nuw i8, ptr %185, i64 1 +.lr.ph.i.i.i.i.i.i66: ; preds = %182 + %183 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 + br label %184 + +184: ; preds = %214, %.lr.ph.i.i.i.i.i.i66 + %.0193.i.i.i.i.i.i67 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i66 ], [ %.1.i.i.i.i.i.i74, %214 ] + %.0202.i.i.i.i.i.i68 = phi i32 [ %183, %.lr.ph.i.i.i.i.i.i66 ], [ %.121.i.i.i.i.i.i73, %214 ] + %185 = add i32 %.0202.i.i.i.i.i.i68, %.0193.i.i.i.i.i.i67 + %186 = lshr i32 %185, 1 + %187 = zext nneg i32 %186 to i64 + %188 = shl nuw nsw i64 %187, 3 + %189 = getelementptr inbounds nuw i8, ptr %6, i64 %188 %190 = load i8, ptr %189, align 1 %191 = zext i8 %190 to i32 - %192 = or disjoint i32 %188, %191 - %.not.i.i.i.i.i.i.i.i69 = icmp eq i32 %192, 0 - br i1 %.not.i.i.i.i.i.i.i.i69, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread - -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70: ; preds = %180 - %193 = getelementptr inbounds nuw i8, ptr %185, i64 2 + %192 = shl nuw nsw i32 %191, 8 + %193 = getelementptr inbounds nuw i8, ptr %189, i64 1 %194 = load i8, ptr %193, align 1 %195 = zext i8 %194 to i32 - %196 = shl nuw nsw i32 %195, 8 - %197 = getelementptr inbounds nuw i8, ptr %185, i64 3 - %198 = load i8, ptr %197, align 1 - %199 = zext i8 %198 to i32 - %200 = or disjoint i32 %196, %199 - %201 = icmp samesign ugt i32 %200, 4 - br i1 %201, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread, label %203 + %196 = or disjoint i32 %192, %195 + %197 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %196) + %.not.i.i.i.i.i.i.i.i69 = icmp eq i32 %196, 0 + br i1 %.not.i.i.i.i.i.i.i.i69, label %198, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread: ; preds = %180, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 - %202 = add nsw i32 %182, -1 - br label %206 +198: ; preds = %184 + %199 = getelementptr inbounds nuw i8, ptr %189, i64 2 + %200 = load i8, ptr %199, align 1 + %201 = zext i8 %200 to i32 + %202 = shl nuw nsw i32 %201, 8 + %203 = getelementptr inbounds nuw i8, ptr %189, i64 3 + %204 = load i8, ptr %203, align 1 + %205 = zext i8 %204 to i32 + %206 = or disjoint i32 %202, %205 + %207 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 4, i32 %206) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 -203: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 - %.not23.i.i.i.i.i.i72 = icmp eq i32 %200, 4 - br i1 %.not23.i.i.i.i.i.i72, label %207, label %204 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70: ; preds = %198, %184 + %.0.i.i.i.i.i.i.i.i71 = phi i32 [ %197, %184 ], [ %207, %198 ] + %208 = icmp slt i32 %.0.i.i.i.i.i.i.i.i71, 0 + br i1 %208, label %209, label %211 -204: ; preds = %203 - %205 = add nuw nsw i32 %182, 1 - br label %206 +209: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 + %210 = add nsw i32 %186, -1 + br label %214 + +211: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 + %.not23.i.i.i.i.i.i72 = icmp eq i32 %.0.i.i.i.i.i.i.i.i71, 0 + br i1 %.not23.i.i.i.i.i.i72, label %215, label %212 -206: ; preds = %204, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread - %.121.i.i.i.i.i.i73 = phi i32 [ %202, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread ], [ %.0202.i.i.i.i.i.i68, %204 ] - %.1.i.i.i.i.i.i74 = phi i32 [ %.0193.i.i.i.i.i.i67, %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread ], [ %205, %204 ] +212: ; preds = %211 + %213 = add nuw nsw i32 %186, 1 + br label %214 + +214: ; preds = %212, %209 + %.121.i.i.i.i.i.i73 = phi i32 [ %210, %209 ], [ %.0202.i.i.i.i.i.i68, %212 ] + %.1.i.i.i.i.i.i74 = phi i32 [ %.0193.i.i.i.i.i.i67, %209 ], [ %213, %212 ] %.not.not.i.i.i.i.i.i75 = icmp sgt i32 %.1.i.i.i.i.i.i74, %.121.i.i.i.i.i.i73 - br i1 %.not.not.i.i.i.i.i.i75, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %180, !llvm.loop !17 + br i1 %.not.not.i.i.i.i.i.i75, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %184, !llvm.loop !17 -207: ; preds = %203 - %208 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %183 +215: ; preds = %211 + %216 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %187 br label %_ZNK2OT4cmap13find_subtableEjj.exit78 -_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %206, %178, %207 - %209 = phi ptr [ %208, %207 ], [ @_hb_NullPool, %178 ], [ @_hb_NullPool, %206 ] - %210 = getelementptr inbounds nuw i8, ptr %209, i64 4 - %211 = load i8, ptr %210, align 1 - %212 = zext i8 %211 to i32 - %213 = shl nuw i32 %212, 24 - %214 = getelementptr inbounds nuw i8, ptr %209, i64 5 - %215 = load i8, ptr %214, align 1 - %216 = zext i8 %215 to i32 - %217 = shl nuw nsw i32 %216, 16 - %218 = or disjoint i32 %217, %213 - %219 = getelementptr inbounds nuw i8, ptr %209, i64 6 - %220 = load i8, ptr %219, align 1 - %221 = zext i8 %220 to i32 - %222 = shl nuw nsw i32 %221, 8 - %223 = or disjoint i32 %218, %222 - %224 = getelementptr inbounds nuw i8, ptr %209, i64 7 - %225 = load i8, ptr %224, align 1 - %226 = zext i8 %225 to i32 - %227 = or disjoint i32 %223, %226 - %.not.i76 = icmp eq i32 %227, 0 - %228 = zext i32 %227 to i64 - %229 = getelementptr inbounds nuw i8, ptr %0, i64 %228 - br i1 %.not.i76, label %230, label %240 - -230: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit78 - %231 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 3, i32 noundef 1) - %.not29 = icmp eq ptr %231, null - br i1 %.not29, label %232, label %240 - -232: ; preds = %230 - %233 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 3) - %.not30 = icmp eq ptr %233, null - br i1 %.not30, label %234, label %240 - -234: ; preds = %232 - %235 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 2) - %.not31 = icmp eq ptr %235, null - br i1 %.not31, label %236, label %240 - -236: ; preds = %234 - %237 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 1) - %.not32 = icmp eq ptr %237, null - br i1 %.not32, label %238, label %240 - -238: ; preds = %236 - %239 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 0) - %.not33 = icmp eq ptr %239, null - %spec.select = select i1 %.not33, ptr @_hb_NullPool, ptr %239 - br label %240 - -240: ; preds = %238, %236, %234, %232, %230, %_ZNK2OT4cmap13find_subtableEjj.exit78, %_ZNK2OT4cmap13find_subtableEjj.exit63, %_ZNK2OT4cmap13find_subtableEjj.exit48, %68, %69 - %.0 = phi ptr [ %67, %69 ], [ %67, %68 ], [ %125, %_ZNK2OT4cmap13find_subtableEjj.exit48 ], [ %177, %_ZNK2OT4cmap13find_subtableEjj.exit63 ], [ %229, %_ZNK2OT4cmap13find_subtableEjj.exit78 ], [ %231, %230 ], [ %233, %232 ], [ %235, %234 ], [ %237, %236 ], [ %spec.select, %238 ] +_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %214, %182, %215 + %217 = phi ptr [ %216, %215 ], [ @_hb_NullPool, %182 ], [ @_hb_NullPool, %214 ] + %218 = getelementptr inbounds nuw i8, ptr %217, i64 4 + %219 = load i8, ptr %218, align 1 + %220 = zext i8 %219 to i32 + %221 = shl nuw i32 %220, 24 + %222 = getelementptr inbounds nuw i8, ptr %217, i64 5 + %223 = load i8, ptr %222, align 1 + %224 = zext i8 %223 to i32 + %225 = shl nuw nsw i32 %224, 16 + %226 = or disjoint i32 %225, %221 + %227 = getelementptr inbounds nuw i8, ptr %217, i64 6 + %228 = load i8, ptr %227, align 1 + %229 = zext i8 %228 to i32 + %230 = shl nuw nsw i32 %229, 8 + %231 = or disjoint i32 %226, %230 + %232 = getelementptr inbounds nuw i8, ptr %217, i64 7 + %233 = load i8, ptr %232, align 1 + %234 = zext i8 %233 to i32 + %235 = or disjoint i32 %231, %234 + %.not.i76 = icmp eq i32 %235, 0 + %236 = zext i32 %235 to i64 + %237 = getelementptr inbounds nuw i8, ptr %0, i64 %236 + br i1 %.not.i76, label %238, label %248 + +238: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit78 + %239 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 3, i32 noundef 1) + %.not29 = icmp eq ptr %239, null + br i1 %.not29, label %240, label %248 + +240: ; preds = %238 + %241 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 3) + %.not30 = icmp eq ptr %241, null + br i1 %.not30, label %242, label %248 + +242: ; preds = %240 + %243 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 2) + %.not31 = icmp eq ptr %243, null + br i1 %.not31, label %244, label %248 + +244: ; preds = %242 + %245 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 1) + %.not32 = icmp eq ptr %245, null + br i1 %.not32, label %246, label %248 + +246: ; preds = %244 + %247 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 0) + %.not33 = icmp eq ptr %247, null + %spec.select = select i1 %.not33, ptr @_hb_NullPool, ptr %247 + br label %248 + +248: ; preds = %246, %244, %242, %240, %238, %_ZNK2OT4cmap13find_subtableEjj.exit78, %_ZNK2OT4cmap13find_subtableEjj.exit63, %_ZNK2OT4cmap13find_subtableEjj.exit48, %68, %69 + %.0 = phi ptr [ %67, %69 ], [ %67, %68 ], [ %125, %_ZNK2OT4cmap13find_subtableEjj.exit48 ], [ %181, %_ZNK2OT4cmap13find_subtableEjj.exit63 ], [ %237, %_ZNK2OT4cmap13find_subtableEjj.exit78 ], [ %239, %238 ], [ %241, %240 ], [ %243, %242 ], [ %245, %244 ], [ %spec.select, %246 ] ret ptr %.0 } From 41c2ac9fa3ec88bacb3027b7443b9c8ea6b81a13 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 14:43:16 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/hyperscan/optimized/buildstate.ll | 158 ++++----- bench/openjdk/optimized/hb-face.ll | 410 ++++++++++++------------ bench/openjdk/optimized/hb-ot-font.ll | 358 ++++++++++----------- 3 files changed, 463 insertions(+), 463 deletions(-) diff --git a/bench/hyperscan/optimized/buildstate.ll b/bench/hyperscan/optimized/buildstate.ll index 5e649dee16e..531dd65d87c 100644 --- a/bench/hyperscan/optimized/buildstate.ll +++ b/bench/hyperscan/optimized/buildstate.ll @@ -1893,20 +1893,20 @@ _ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pa %.not6970 = icmp eq i64 %33, 0 br i1 %.not6970, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %137, %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit +._crit_edge: ; preds = %136, %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit %35 = load i32, ptr %9, align 4 %36 = add i32 %35, 1 store i32 %36, ptr %9, align 4 %.not = icmp ugt i32 %36, %2 br i1 %.not, label %._crit_edge76, label %19, !llvm.loop !51 -.lr.ph: ; preds = %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit, %137 - %.sroa.064.071 = phi ptr [ %138, %137 ], [ %31, %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit ] +.lr.ph: ; preds = %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit, %136 + %.sroa.064.071 = phi ptr [ %137, %137 ], [ %31, %_ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pairIKjS6_EEEixERS9_.exit ] %37 = load i32, ptr %.sroa.064.071, align 4 %.not15 = icmp ult i32 %37, %1 %.not16 = icmp ugt i32 %37, %2 %or.cond = or i1 %.not15, %.not16 - br i1 %or.cond, label %137, label %38 + br i1 %or.cond, label %136, label %38 38: ; preds = %.lr.ph %39 = load i64, ptr %.sroa.064.071, align 4 @@ -1994,7 +1994,7 @@ _ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212PositionInfoELb0EEES4_ %75 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i27, i64 56 %76 = load i64, ptr %75, align 8, !noalias !70 %.not.i.i.i.i31 = icmp eq i64 %76, %56 - br i1 %.not.i.i.i.i31, label %79, label %123 + br i1 %.not.i.i.i.i31, label %79, label %122 .critedge.thread.i: ; preds = %72 %77 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i27, i64 56 @@ -2024,7 +2024,7 @@ _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212Po %88 = udiv i64 %87, 5 %89 = call i64 @llvm.umin.i64(i64 %88, i64 2305843009213693951) %90 = call noundef i64 @llvm.umax.i64(i64 %reass.sub, i64 %89) - br label %98 + br label %97 _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i: ; preds = %85 %91 = icmp ugt i64 %56, -6917529027641081857 @@ -2035,122 +2035,122 @@ _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212Po %96 = icmp ugt i64 %reass.sub, 2305843009213693951 br i1 %96, label %97, label %98 -97: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i +96: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i call void @_ZN5boost9container18throw_length_errorEPKc(ptr noundef nonnull @.str.3) #27, !noalias !81 unreachable -98: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i - %99 = phi i64 [ %90, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread ], [ %95, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i ] - %100 = icmp samesign ugt i64 %99, 1152921504606846975 - br i1 %100, label %101, label %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i, !prof !22 +97: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i + %98 = phi i64 [ %90, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread ], [ %95, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i ] + %99 = icmp samesign ugt i64 %98, 1152921504606846975 + br i1 %99, label %100, label %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i, !prof !22 -101: ; preds = %98 +100: ; preds = %97 call void @_ZSt17__throw_bad_allocv() #27, !noalias !81 unreachable -_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i: ; preds = %98 - %102 = shl nuw nsw i64 %99, 3 - %103 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %102) #24, !noalias !81 +_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i: ; preds = %97 + %101 = shl nuw nsw i64 %98, 3 + %102 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %101) #24, !noalias !81 %.not.i.i = icmp eq ptr %54, null - br i1 %.not.i.i, label %.thread.i.i, label %105 + br i1 %.not.i.i, label %.thread.i.i, label %104 .thread.i.i: ; preds = %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i %.sroa.032.0.insert.ext45 = zext i32 %40 to i64 %.sroa.032.0.insert.insert47 = or disjoint i64 %.sroa.11.0.extract.shift, %.sroa.032.0.insert.ext45 - store i64 %.sroa.032.0.insert.insert47, ptr %103, align 4, !noalias !81 - %104 = getelementptr inbounds nuw i8, ptr %103, i64 8 + store i64 %.sroa.032.0.insert.insert47, ptr %102, align 4, !noalias !81 + %103 = getelementptr inbounds nuw i8, ptr %102, i64 8 br label %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit -105: ; preds = %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i +104: ; preds = %_ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE8allocateEm.exit.i %.not.i = icmp eq ptr %54, %.sroa.067.0 - br i1 %.not.i, label %108, label %106, !prof !22 + br i1 %.not.i, label %107, label %105, !prof !22 -106: ; preds = %105 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %103, ptr nonnull align 4 %54, i64 %81, i1 false), !noalias !81 - %107 = getelementptr inbounds i8, ptr %103, i64 %81 - br label %108 +105: ; preds = %104 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %102, ptr nonnull align 4 %54, i64 %81, i1 false), !noalias !81 + %106 = getelementptr inbounds i8, ptr %102, i64 %81 + br label %107 -108: ; preds = %106, %105 - %.0.i.i.i.i = phi ptr [ %107, %106 ], [ %103, %105 ] +107: ; preds = %105, %104 + %.0.i.i.i.i = phi ptr [ %106, %106 ], [ %102, %105 ] %.sroa.032.0.insert.ext41 = zext i32 %40 to i64 %.sroa.032.0.insert.insert43 = or disjoint i64 %.sroa.11.0.extract.shift, %.sroa.032.0.insert.ext41 store i64 %.sroa.032.0.insert.insert43, ptr %.0.i.i.i.i, align 4, !noalias !81 - %109 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 8 - %110 = icmp ne ptr %.sroa.067.0, %57 - %111 = icmp ne ptr %.sroa.067.0, null - %spec.select.i.i21.i.i = and i1 %111, %110 - br i1 %spec.select.i.i21.i.i, label %112, label %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i, !prof !84 - -112: ; preds = %108 - %113 = ptrtoint ptr %57 to i64 - %114 = sub i64 %113, %80 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %109, ptr nonnull align 4 %.sroa.067.0, i64 %114, i1 false), !noalias !81 - %115 = getelementptr inbounds i8, ptr %109, i64 %114 + %108 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 8 + %109 = icmp ne ptr %.sroa.067.0, %57 + %110 = icmp ne ptr %.sroa.067.0, null + %spec.select.i.i21.i.i = and i1 %110, %109 + br i1 %spec.select.i.i21.i.i, label %111, label %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i, !prof !84 + +111: ; preds = %107 + %112 = ptrtoint ptr %57 to i64 + %113 = sub i64 %112, %80 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %108, ptr nonnull align 4 %.sroa.067.0, i64 %113, i1 false), !noalias !81 + %114 = getelementptr inbounds i8, ptr %108, i64 %113 br label %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i -_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i: ; preds = %112, %108 - %.0.i.i22.i.i = phi ptr [ %115, %112 ], [ %109, %108 ] - %116 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i27, i64 64 - %117 = icmp eq ptr %116, %54 - br i1 %117, label %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit, label %118 +_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i: ; preds = %111, %107 + %.0.i.i22.i.i = phi ptr [ %114, %112 ], [ %108, %108 ] + %115 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i27, i64 64 + %116 = icmp eq ptr %115, %54 + br i1 %116, label %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit, label %117 -118: ; preds = %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i +117: ; preds = %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i call void @_ZdlPv(ptr noundef nonnull %54) #26, !noalias !81 br label %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit -_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit: ; preds = %.thread.i.i, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i, %118 - %.1.i.i = phi ptr [ %104, %.thread.i.i ], [ %.0.i.i22.i.i, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i ], [ %.0.i.i22.i.i, %118 ] - store ptr %103, ptr %53, align 8, !noalias !81 - %119 = ptrtoint ptr %.1.i.i to i64 - %120 = ptrtoint ptr %103 to i64 - %121 = sub i64 %119, %120 - %122 = ashr exact i64 %121, 3 - store i64 %122, ptr %55, align 8, !noalias !81 - store i64 %99, ptr %82, align 8, !noalias !81 +_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit: ; preds = %.thread.i.i, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i, %117 + %.1.i.i = phi ptr [ %103, %.thread.i.i ], [ %.0.i.i22.i.i, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit23.i.i ], [ %.0.i.i22.i.i, %118 ] + store ptr %102, ptr %53, align 8, !noalias !81 + %118 = ptrtoint ptr %.1.i.i to i64 + %119 = ptrtoint ptr %102 to i64 + %120 = sub i64 %118, %119 + %121 = ashr exact i64 %120, 3 + store i64 %121, ptr %55, align 8, !noalias !81 + store i64 %98, ptr %82, align 8, !noalias !81 br label %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit -123: ; preds = %.critedge.i30 +122: ; preds = %.critedge.i30 %.sroa.032.0.insert.ext37 = zext i32 %40 to i64 %.sroa.032.0.insert.insert39 = or disjoint i64 %.sroa.11.0.extract.shift, %.sroa.032.0.insert.ext37 store i64 %.sroa.032.0.insert.insert39, ptr %57, align 4, !noalias !70 - %124 = load i64, ptr %55, align 8, !noalias !70 - %125 = add i64 %124, 1 - store i64 %125, ptr %55, align 8, !noalias !70 + %123 = load i64, ptr %55, align 8, !noalias !70 + %124 = add i64 %123, 1 + store i64 %124, ptr %55, align 8, !noalias !70 br label %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit _ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i: ; preds = %.critedge.thread.i - %126 = getelementptr inbounds i8, ptr %57, i64 -8 - %127 = load i64, ptr %126, align 4, !noalias !70 - store i64 %127, ptr %57, align 4, !noalias !70 - %128 = load i64, ptr %55, align 8, !noalias !70 - %129 = add i64 %128, 1 - store i64 %129, ptr %55, align 8, !noalias !70 - %.not.i.i.i.i.i.i = icmp eq ptr %126, %70 - br i1 %.not.i.i.i.i.i.i, label %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i, label %130, !prof !22 - -130: ; preds = %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i - %131 = ptrtoint ptr %70 to i64 - %132 = ptrtoint ptr %126 to i64 - %133 = sub i64 %132, %131 - %134 = ashr exact i64 %133, 3 - %135 = sub nsw i64 0, %134 - %136 = getelementptr inbounds %"class.ue2::PositionInfo", ptr %57, i64 %135 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %136, ptr nonnull align 4 %70, i64 %133, i1 false), !noalias !70 + %125 = getelementptr inbounds i8, ptr %57, i64 -8 + %126 = load i64, ptr %125, align 4, !noalias !70 + store i64 %126, ptr %57, align 4, !noalias !70 + %127 = load i64, ptr %55, align 8, !noalias !70 + %128 = add i64 %127, 1 + store i64 %128, ptr %55, align 8, !noalias !70 + %.not.i.i.i.i.i.i = icmp eq ptr %125, %70 + br i1 %.not.i.i.i.i.i.i, label %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i, label %129, !prof !22 + +129: ; preds = %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i + %130 = ptrtoint ptr %70 to i64 + %131 = ptrtoint ptr %125 to i64 + %132 = sub i64 %131, %130 + %133 = ashr exact i64 %132, 3 + %134 = sub nsw i64 0, %133 + %135 = getelementptr inbounds %"class.ue2::PositionInfo", ptr %57, i64 %134 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %135, ptr nonnull align 4 %70, i64 %132, i1 false), !noalias !70 br label %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i -_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i: ; preds = %130, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i +_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i: ; preds = %129, %_ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue212PositionInfoESaIvEvEEPS4_S7_EENS0_3dtl40enable_if_memtransfer_copy_constructibleIT0_T1_SB_E4typeERT_SA_SA_SB_.exit.i.i.i.i.i %.sroa.032.0.insert.ext = zext i32 %40 to i64 %.sroa.032.0.insert.insert = or disjoint i64 %.sroa.11.0.extract.shift, %.sroa.032.0.insert.ext store i64 %.sroa.032.0.insert.insert, ptr %70, align 4, !noalias !70 br label %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit -_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit: ; preds = %123, %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i, %72, %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit +_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit: ; preds = %122, %_ZN5boost9container13move_backwardIPN3ue212PositionInfoES4_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S8_E4typeES7_S7_S8_.exit.i.i.i.i.i, %72, %_ZN5boost9container6vectorIN3ue212PositionInfoENS0_22small_vector_allocatorIS3_SaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS6_PS3_EEEENS0_12vec_iteratorISB_Lb0EEERKSB_mT_NS_11move_detail17integral_constantIjLj1EEE.exit call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #25 - br label %137 + br label %136 -137: ; preds = %.lr.ph, %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit - %138 = getelementptr inbounds nuw i8, ptr %.sroa.064.071, i64 8 - %.not69 = icmp eq ptr %138, %34 +136: ; preds = %.lr.ph, %_ZN3ue28flat_setINS_12PositionInfoESt4lessIS1_ESaIS1_EE6insertERKS1_.exit + %137 = getelementptr inbounds nuw i8, ptr %.sroa.064.071, i64 8 + %.not69 = icmp eq ptr %137, %34 br i1 %.not69, label %._crit_edge, label %.lr.ph } diff --git a/bench/openjdk/optimized/hb-face.ll b/bench/openjdk/optimized/hb-face.ll index d24f56f0668..f5ebd5c9409 100644 --- a/bench/openjdk/optimized/hb-face.ll +++ b/bench/openjdk/optimized/hb-face.ll @@ -8605,7 +8605,7 @@ define linkonce_odr hidden void @_ZN2OT4cmap13accelerator_tC2EP9hb_face_t(ptr no 17: ; preds = %2 %18 = invoke noundef i32 @_ZNK9hb_face_t15load_num_glyphsEv(ptr noundef nonnull align 8 dereferenceable(416) %1) - to label %19 unwind label %120 + to label %19 unwind label %116 19: ; preds = %2, %17 %.0.i.i.i = phi i32 [ %15, %2 ], [ %18, %17 ] @@ -8620,7 +8620,7 @@ define linkonce_odr hidden void @_ZN2OT4cmap13accelerator_tC2EP9hb_face_t(ptr no %23 = getelementptr inbounds nuw i8, ptr %1, i64 24 %24 = load ptr, ptr %23, align 8 %25 = invoke noundef ptr %21(ptr noundef nonnull align 8 dereferenceable(416) %1, i32 noundef 1668112752, ptr noundef %24) - to label %.noexc7 unwind label %120 + to label %.noexc7 unwind label %116 .noexc7: ; preds = %22 %.not6.i.i.i = icmp eq ptr %25, null @@ -8628,12 +8628,12 @@ define linkonce_odr hidden void @_ZN2OT4cmap13accelerator_tC2EP9hb_face_t(ptr no _ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i: ; preds = %.noexc7, %19 %26 = invoke ptr @hb_blob_get_empty() - to label %hb_face_reference_table.exit.i unwind label %120 + to label %hb_face_reference_table.exit.i unwind label %116 hb_face_reference_table.exit.i: ; preds = %_ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i, %.noexc7 %.0.i.i = phi ptr [ %25, %.noexc7 ], [ %26, %_ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i ] %27 = invoke noundef ptr @_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4cmapEEEP9hb_blob_tS4_(ptr noundef nonnull align 8 dereferenceable(62) %3, ptr noundef %.0.i.i) - to label %28 unwind label %120 + to label %28 unwind label %116 28: ; preds = %hb_face_reference_table.exit.i store ptr %27, ptr %7, align 8 @@ -8696,7 +8696,7 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %28, %_ZN21hb_saniti %55 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 br label %56 -56: ; preds = %86, %.lr.ph.i.i.i.i.i.i +56: ; preds = %82, %.lr.ph.i.i.i.i.i.i %.0193.i.i.i.i.i.i = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i ], [ %.1.i.i.i.i.i.i, %86 ] %.0202.i.i.i.i.i.i = phi i32 [ %55, %.lr.ph.i.i.i.i.i.i ], [ %.121.i.i.i.i.i.i, %86 ] %57 = add i32 %.0202.i.i.i.i.i.i, %.0193.i.i.i.i.i.i @@ -8713,30 +8713,30 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %28, %_ZN21hb_saniti %68 = or disjoint i32 %64, %67 %69 = call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %68) %.not.i.i.i.i.i.i.i.i = icmp eq i32 %68, 0 - br i1 %.not.i.i.i.i.i.i.i.i, label %70, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i + br i1 %.not.i.i.i.i.i.i.i.i, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread -70: ; preds = %56 - %71 = getelementptr inbounds nuw i8, ptr %61, i64 2 - %72 = load i8, ptr %71, align 1 - %73 = zext i8 %72 to i32 - %74 = shl nuw nsw i32 %73, 8 - %75 = getelementptr inbounds nuw i8, ptr %61, i64 3 - %76 = load i8, ptr %75, align 1 - %77 = zext i8 %76 to i32 - %78 = or disjoint i32 %74, %77 - %79 = call noundef i32 @llvm.ucmp.i32.i32(i32 5, i32 %78) - br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; preds = %56 + %69 = getelementptr inbounds nuw i8, ptr %61, i64 2 + %70 = load i8, ptr %69, align 1 + %71 = zext i8 %70 to i32 + %72 = shl nuw nsw i32 %71, 8 + %73 = getelementptr inbounds nuw i8, ptr %61, i64 3 + %74 = load i8, ptr %73, align 1 + %75 = zext i8 %74 to i32 + %76 = or disjoint i32 %72, %75 + %79 = call noundef i32 @llvm.ucmp.i32.i32(i32 5, i32 %76) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; preds = %70, %56 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i, %56 %.0.i.i.i.i.i.i.i.i = phi i32 [ %69, %56 ], [ %79, %70 ] %80 = icmp slt i32 %.0.i.i.i.i.i.i.i.i, 0 br i1 %80, label %81, label %83 -81: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i +79: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i %82 = add nsw i32 %58, -1 br label %86 -83: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i +80: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i %.not23.i.i.i.i.i.i = icmp eq i32 %.0.i.i.i.i.i.i.i.i, 0 br i1 %.not23.i.i.i.i.i.i, label %87, label %84 @@ -8744,19 +8744,19 @@ _ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; %85 = add nuw nsw i32 %58, 1 br label %86 -86: ; preds = %84, %81 +82: ; preds = %84, %81 %.121.i.i.i.i.i.i = phi i32 [ %82, %81 ], [ %.0202.i.i.i.i.i.i, %84 ] %.1.i.i.i.i.i.i = phi i32 [ %.0193.i.i.i.i.i.i, %81 ], [ %85, %84 ] %.not.not.i.i.i.i.i.i = icmp sgt i32 %.1.i.i.i.i.i.i, %.121.i.i.i.i.i.i br i1 %.not.not.i.i.i.i.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit, label %56, !llvm.loop !58 -87: ; preds = %83 - %88 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %48, i64 %59 +83: ; preds = %83 + %84 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %48, i64 %59 br label %_ZNK2OT4cmap13find_subtableEjj.exit -_ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %86, %_ZN21hb_sanitize_context_tD2Ev.exit, %87 - %89 = phi ptr [ %88, %87 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %86 ] - %90 = getelementptr inbounds nuw i8, ptr %89, i64 4 +_ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %82, %_ZN21hb_sanitize_context_tD2Ev.exit, %83 + %85 = phi ptr [ %84, %87 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %86 ] + %86 = getelementptr inbounds nuw i8, ptr %85, i64 4 %91 = load i8, ptr %90, align 1 %92 = zext i8 %91 to i32 %93 = shl nuw i32 %92, 24 @@ -8777,9 +8777,9 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %86, %_ZN21hb_saniti %.not.i13 = icmp eq i32 %107, 0 %108 = zext i32 %107 to i64 %109 = getelementptr inbounds nuw i8, ptr %spec.select.i.i1.i.i12, i64 %108 - br i1 %.not.i13, label %122, label %110 + br i1 %.not.i13, label %118, label %110 -110: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit +110: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit %111 = load i8, ptr %109, align 1 %112 = zext i8 %111 to i32 %113 = shl nuw nsw i32 %112, 8 @@ -8790,92 +8790,92 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %86, %_ZN21hb_saniti %118 = icmp eq i32 %117, 14 br i1 %118, label %119, label %122 -119: ; preds = %110 +115: ; preds = %110 store ptr %109, ptr %5, align 8 - br label %122 + br label %118 -120: ; preds = %hb_face_reference_table.exit.i, %_ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i, %22, %17 - %121 = landingpad { ptr, i32 } +116: ; preds = %hb_face_reference_table.exit.i, %_ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i, %22, %17 + %117 = landingpad { ptr, i32 } cleanup call void @_ZN21hb_sanitize_context_tD2Ev(ptr noundef nonnull align 8 dereferenceable(62) %3) #19 - resume { ptr, i32 } %121 + resume { ptr, i32 } %117 -122: ; preds = %119, %110, %_ZNK2OT4cmap13find_subtableEjj.exit +118: ; preds = %115, %110, %_ZNK2OT4cmap13find_subtableEjj.exit %.not.i.i = icmp eq ptr %40, null %spec.select.i.i = select i1 %.not.i.i, ptr @_hb_NullPool, ptr %40 - %123 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %spec.select.i.i, ptr %123, align 8 - %124 = load i8, ptr %4, align 1 - %125 = trunc i8 %124 to i1 - br i1 %125, label %126, label %170 - -126: ; preds = %122 - %127 = getelementptr inbounds nuw i8, ptr %1, i64 128 - %128 = load atomic i64, ptr %127 acquire, align 8 - %.not14.i.i.i = icmp eq i64 %128, 0 + %119 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %spec.select.i.i, ptr %119, align 8 + %120 = load i8, ptr %4, align 1 + %121 = trunc i8 %120 to i1 + br i1 %121, label %122, label %166 + +122: ; preds = %118 + %123 = getelementptr inbounds nuw i8, ptr %1, i64 128 + %124 = load atomic i64, ptr %123 acquire, align 8 + %.not14.i.i.i = icmp eq i64 %124, 0 br i1 %.not14.i.i.i, label %.lr.ph.i.i.i, label %.loopexit.split.loop.exit12.i.i.i -.lr.ph.i.i.i: ; preds = %126 - %129 = getelementptr inbounds nuw i8, ptr %1, i64 80 - br label %130 +.lr.ph.i.i.i: ; preds = %122 + %125 = getelementptr inbounds nuw i8, ptr %1, i64 80 + br label %126 -130: ; preds = %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, %.lr.ph.i.i.i - %131 = load ptr, ptr %129, align 8 - %.not.i.i.i.i14 = icmp eq ptr %131, null - br i1 %.not.i.i.i.i14, label %132, label %134 +126: ; preds = %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, %.lr.ph.i.i.i + %127 = load ptr, ptr %125, align 8 + %.not.i.i.i.i14 = icmp eq ptr %127, null + br i1 %.not.i.i.i.i14, label %128, label %130 -132: ; preds = %130 - %133 = call noundef ptr @hb_blob_get_empty() +128: ; preds = %126 + %129 = call noundef ptr @hb_blob_get_empty() br label %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit -134: ; preds = %130 - %135 = call noundef ptr @_ZN22hb_table_lazy_loader_tIN2OT3OS2ELj6ELb1EE6createEP9hb_face_t(ptr noundef nonnull %131) - %.not10.i.i.i = icmp eq ptr %135, null - br i1 %.not10.i.i.i, label %136, label %138 +130: ; preds = %126 + %131 = call noundef ptr @_ZN22hb_table_lazy_loader_tIN2OT3OS2ELj6ELb1EE6createEP9hb_face_t(ptr noundef nonnull %127) + %.not10.i.i.i = icmp eq ptr %131, null + br i1 %.not10.i.i.i, label %132, label %134 -136: ; preds = %134 - %137 = call noundef ptr @hb_blob_get_empty() - br label %138 +132: ; preds = %130 + %133 = call noundef ptr @hb_blob_get_empty() + br label %134 -138: ; preds = %136, %134 - %.1.i.i.i = phi ptr [ %135, %134 ], [ %137, %136 ] - %139 = ptrtoint ptr %.1.i.i.i to i64 - %140 = cmpxchg weak ptr %127, i64 0, i64 %139 acq_rel monotonic, align 8 - %141 = extractvalue { i64, i1 } %140, 1 - br i1 %141, label %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit, label %142 +134: ; preds = %132, %130 + %.1.i.i.i = phi ptr [ %131, %134 ], [ %133, %136 ] + %135 = ptrtoint ptr %.1.i.i.i to i64 + %136 = cmpxchg weak ptr %123, i64 0, i64 %135 acq_rel monotonic, align 8 + %137 = extractvalue { i64, i1 } %136, 1 + br i1 %137, label %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit, label %138 -142: ; preds = %138 +138: ; preds = %134 %.not.i11.i.i.i = icmp eq ptr %.1.i.i.i, null - br i1 %.not.i11.i.i.i, label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, label %143 + br i1 %.not.i11.i.i.i, label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, label %139 -143: ; preds = %142 - %144 = call noundef ptr @hb_blob_get_empty() - %.not3.i.i.i.i = icmp eq ptr %.1.i.i.i, %144 - br i1 %.not3.i.i.i.i, label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, label %145 +139: ; preds = %138 + %140 = call noundef ptr @hb_blob_get_empty() + %.not3.i.i.i.i = icmp eq ptr %.1.i.i.i, %140 + br i1 %.not3.i.i.i.i, label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, label %141 -145: ; preds = %143 +141: ; preds = %139 call void @hb_blob_destroy(ptr noundef nonnull %.1.i.i.i) br label %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i -_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i: ; preds = %145, %143, %142 - %146 = load atomic i64, ptr %127 acquire, align 8 - %.not.i.i.i15 = icmp eq i64 %146, 0 - br i1 %.not.i.i.i15, label %130, label %.loopexit.split.loop.exit12.i.i.i +_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i: ; preds = %141, %139, %138 + %142 = load atomic i64, ptr %123 acquire, align 8 + %.not.i.i.i15 = icmp eq i64 %142, 0 + br i1 %.not.i.i.i15, label %126, label %.loopexit.split.loop.exit12.i.i.i -.loopexit.split.loop.exit12.i.i.i: ; preds = %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, %126 - %.lcssa.i.i.i = phi i64 [ %128, %126 ], [ %146, %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i ] - %147 = inttoptr i64 %.lcssa.i.i.i to ptr +.loopexit.split.loop.exit12.i.i.i: ; preds = %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i, %122 + %.lcssa.i.i.i = phi i64 [ %124, %126 ], [ %142, %_ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10do_destroyEPS5_.exit.i.i.i ] + %143 = inttoptr i64 %.lcssa.i.i.i to ptr br label %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit -_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit: ; preds = %138, %132, %.loopexit.split.loop.exit12.i.i.i - %.07.i.i.i = phi ptr [ %133, %132 ], [ %147, %.loopexit.split.loop.exit12.i.i.i ], [ %.1.i.i.i, %138 ] - %148 = getelementptr inbounds nuw i8, ptr %.07.i.i.i, i64 16 - %149 = load ptr, ptr %148, align 8 - %150 = getelementptr inbounds nuw i8, ptr %.07.i.i.i, i64 24 - %151 = load i32, ptr %150, align 8 - %152 = icmp ult i32 %151, 78 - %spec.select.i.i.i.i.i = select i1 %152, ptr @_hb_NullPool, ptr %149 - %153 = load i8, ptr %spec.select.i.i.i.i.i, align 1 +_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit: ; preds = %134, %128, %.loopexit.split.loop.exit12.i.i.i + %.07.i.i.i = phi ptr [ %129, %132 ], [ %143, %.loopexit.split.loop.exit12.i.i.i ], [ %.1.i.i.i, %138 ] + %144 = getelementptr inbounds nuw i8, ptr %.07.i.i.i, i64 16 + %145 = load ptr, ptr %144, align 8 + %146 = getelementptr inbounds nuw i8, ptr %.07.i.i.i, i64 24 + %147 = load i32, ptr %146, align 8 + %148 = icmp ult i32 %147, 78 + %spec.select.i.i.i.i.i = select i1 %148, ptr @_hb_NullPool, ptr %145 + %149 = load i8, ptr %spec.select.i.i.i.i.i, align 1 %154 = zext i8 %153 to i32 %155 = shl nuw nsw i32 %154, 8 %156 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 1 @@ -8884,7 +8884,7 @@ _ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tL %159 = or disjoint i32 %155, %158 %160 = icmp eq i32 %159, 0 %161 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 62 - %162 = load i8, ptr %161, align 1 + %162 = load i8, ptr %157, align 1 %163 = zext i8 %162 to i16 %164 = shl nuw i16 %163, 8 %trunc21 = select i1 %160, i16 %164, i16 0 @@ -8895,24 +8895,24 @@ _ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tL i16 -19712, label %168 ] -166: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit +162: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZNS_L18_hb_symbol_pua_mapEjEEEEbPKvjPj, ptr %165, align 8 br label %216 -167: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit +163: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_simp_mapjEEEEbPKvjPj, ptr %165, align 8 br label %216 -168: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit +164: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_trad_mapjEEEEbPKvjPj, ptr %165, align 8 br label %216 -169: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit +165: ; preds = %_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tEptEv.exit store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %165, align 8 br label %216 -170: ; preds = %122 - %171 = load i8, ptr %spec.select.i.i, align 1 +166: ; preds = %118 + %167 = load i8, ptr %spec.select.i.i, align 1 %172 = zext i8 %171 to i16 %173 = shl nuw i16 %172, 8 %174 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 1 @@ -8924,33 +8924,33 @@ _ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tL i16 4, label %181 ] -177: ; preds = %170 - %178 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %178, align 8 +173: ; preds = %166 + %174 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %174, align 8 br label %216 -179: ; preds = %170 - %180 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_20CmapSubtableFormat12EEEbPKvjPj, ptr %180, align 8 +175: ; preds = %166 + %176 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_20CmapSubtableFormat12EEEbPKvjPj, ptr %176, align 8 br label %216 -181: ; preds = %170 - %182 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 6 +179: ; preds = %166 + %178 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 6 %183 = load i8, ptr %182, align 1 %184 = zext i8 %183 to i32 %185 = shl nuw nsw i32 %184, 8 %186 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 7 %187 = load i8, ptr %186, align 1 %188 = zext i8 %187 to i32 - %189 = or disjoint i32 %185, %188 + %189 = or disjoint i32 %185, %184 %190 = lshr i32 %189, 1 %191 = getelementptr inbounds nuw i8, ptr %0, i64 72 store i32 %190, ptr %191, align 8 - %192 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 14 + %191 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 14 store ptr %192, ptr %6, align 8 %193 = zext nneg i32 %190 to i64 - %194 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %192, i64 %193 - %195 = getelementptr inbounds nuw i8, ptr %194, i64 2 + %193 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %191, i64 %193 + %194 = getelementptr inbounds nuw i8, ptr %194, i64 2 %196 = getelementptr inbounds nuw i8, ptr %0, i64 40 store ptr %195, ptr %196, align 8 %197 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %195, i64 %193 @@ -8960,7 +8960,7 @@ _ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tL %200 = getelementptr inbounds nuw i8, ptr %0, i64 56 store ptr %199, ptr %200, align 8 %201 = getelementptr inbounds nuw %"struct.OT::IntType.0", ptr %199, i64 %193 - %202 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %203 = getelementptr inbounds nuw i8, ptr %0, i64 64 store ptr %201, ptr %202, align 8 %203 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 2 %204 = load i8, ptr %203, align 1 @@ -9095,11 +9095,11 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %44, %4, %45 br i1 %.not.i, label %70, label %68 68: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit - br i1 %.not, label %248, label %69 + br i1 %.not, label %240, label %69 69: ; preds = %68 store i8 1, ptr %1, align 1 - br label %248 + br label %240 70: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit48, label %.lr.ph.i.i.i.i.i.i36 @@ -9189,7 +9189,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %.not.i46 = icmp eq i32 %123, 0 %124 = zext i32 %123 to i64 %125 = getelementptr inbounds nuw i8, ptr %0, i64 %124 - br i1 %.not.i46, label %126, label %248 + br i1 %.not.i46, label %126, label %240 126: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit48 br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit63, label %.lr.ph.i.i.i.i.i.i51 @@ -9215,34 +9215,34 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %140 = or disjoint i32 %136, %139 %141 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %140) %.not.i.i.i.i.i.i.i.i54 = icmp eq i32 %140, 0 - br i1 %.not.i.i.i.i.i.i.i.i54, label %142, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 - -142: ; preds = %128 - %143 = getelementptr inbounds nuw i8, ptr %133, i64 2 - %144 = load i8, ptr %143, align 1 - %145 = zext i8 %144 to i32 - %146 = shl nuw nsw i32 %145, 8 - %147 = getelementptr inbounds nuw i8, ptr %133, i64 3 - %148 = load i8, ptr %147, align 1 - %149 = zext i8 %148 to i32 - %150 = or disjoint i32 %146, %149 - %151 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 6, i32 %150) - br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 + br i1 %.not.i.i.i.i.i.i.i.i54, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: ; preds = %142, %128 - %.0.i.i.i.i.i.i.i.i56 = phi i32 [ %141, %128 ], [ %151, %142 ] +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: ; preds = %128 + %141 = getelementptr inbounds nuw i8, ptr %133, i64 2 + %142 = load i8, ptr %141, align 1 + %143 = zext i8 %142 to i32 + %144 = shl nuw nsw i32 %143, 8 + %145 = getelementptr inbounds nuw i8, ptr %133, i64 3 + %146 = load i8, ptr %145, align 1 + %147 = zext i8 %146 to i32 + %148 = or disjoint i32 %144, %147 + %147 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 6, i32 %146) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread + +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55, %124 + %.0.i.i.i.i.i.i.i.i56 = phi i32 [ %137, %128 ], [ %151, %142 ] %152 = icmp slt i32 %.0.i.i.i.i.i.i.i.i56, 0 br i1 %152, label %153, label %155 -153: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 - %154 = add nsw i32 %130, -1 +153:; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread + %154 = add nsw i32 %126, -1 br label %158 -155: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 +155:; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 %.not23.i.i.i.i.i.i57 = icmp eq i32 %.0.i.i.i.i.i.i.i.i56, 0 br i1 %.not23.i.i.i.i.i.i57, label %159, label %156 -156: ; preds = %155 +156: ; preds = %155 %157 = add nuw nsw i32 %130, 1 br label %158 @@ -9252,13 +9252,13 @@ _ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: %.not.not.i.i.i.i.i.i60 = icmp sgt i32 %.1.i.i.i.i.i.i59, %.121.i.i.i.i.i.i58 br i1 %.not.not.i.i.i.i.i.i60, label %_ZNK2OT4cmap13find_subtableEjj.exit63, label %128, !llvm.loop !58 -159: ; preds = %155 - %160 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %131 +155: ; preds = %155 + %156 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %131 br label %_ZNK2OT4cmap13find_subtableEjj.exit63 -_ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 - %161 = phi ptr [ %160, %159 ], [ @_hb_NullPool, %126 ], [ @_hb_NullPool, %158 ] - %162 = getelementptr inbounds nuw i8, ptr %161, i64 4 +_ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %155 + %157 = phi ptr [ %156, %159 ], [ @_hb_NullPool, %126 ], [ @_hb_NullPool, %158 ] + %158 = getelementptr inbounds nuw i8, ptr %157, i64 4 %163 = load i8, ptr %162, align 1 %164 = zext i8 %163 to i32 %165 = shl nuw i32 %164, 24 @@ -9284,18 +9284,18 @@ _ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 182: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit63 br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %.lr.ph.i.i.i.i.i.i66 -.lr.ph.i.i.i.i.i.i66: ; preds = %182 - %183 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 - br label %184 +.lr.ph.i.i.i.i.i.i66: ; preds = %178 + %179 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 + br label %180 -184: ; preds = %214, %.lr.ph.i.i.i.i.i.i66 +180: ; preds = %214, %.lr.ph.i.i.i.i.i.i66 %.0193.i.i.i.i.i.i67 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i66 ], [ %.1.i.i.i.i.i.i74, %214 ] - %.0202.i.i.i.i.i.i68 = phi i32 [ %183, %.lr.ph.i.i.i.i.i.i66 ], [ %.121.i.i.i.i.i.i73, %214 ] - %185 = add i32 %.0202.i.i.i.i.i.i68, %.0193.i.i.i.i.i.i67 - %186 = lshr i32 %185, 1 - %187 = zext nneg i32 %186 to i64 - %188 = shl nuw nsw i64 %187, 3 - %189 = getelementptr inbounds nuw i8, ptr %6, i64 %188 + %.0202.i.i.i.i.i.i68 = phi i32 [ %179, %.lr.ph.i.i.i.i.i.i66 ], [ %.121.i.i.i.i.i.i73, %214 ] + %181 = add i32 %.0202.i.i.i.i.i.i68, %.0193.i.i.i.i.i.i67 + %182 = lshr i32 %181, 1 + %183 = zext nneg i32 %182 to i64 + %184 = shl nuw nsw i64 %183, 3 + %185 = getelementptr inbounds nuw i8, ptr %6, i64 %184 %190 = load i8, ptr %189, align 1 %191 = zext i8 %190 to i32 %192 = shl nuw nsw i32 %191, 8 @@ -9307,7 +9307,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 %.not.i.i.i.i.i.i.i.i69 = icmp eq i32 %196, 0 br i1 %.not.i.i.i.i.i.i.i.i69, label %198, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 -198: ; preds = %184 +198:; preds = %184 %199 = getelementptr inbounds nuw i8, ptr %189, i64 2 %200 = load i8, ptr %199, align 1 %201 = zext i8 %200 to i32 @@ -9319,12 +9319,12 @@ _ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 %207 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 4, i32 %206) br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70: ; preds = %198, %184 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70:; preds = %198, %184 %.0.i.i.i.i.i.i.i.i71 = phi i32 [ %197, %184 ], [ %207, %198 ] %208 = icmp slt i32 %.0.i.i.i.i.i.i.i.i71, 0 br i1 %208, label %209, label %211 -209: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 +209: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 %210 = add nsw i32 %186, -1 br label %214 @@ -9340,65 +9340,65 @@ _ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70: %.121.i.i.i.i.i.i73 = phi i32 [ %210, %209 ], [ %.0202.i.i.i.i.i.i68, %212 ] %.1.i.i.i.i.i.i74 = phi i32 [ %.0193.i.i.i.i.i.i67, %209 ], [ %213, %212 ] %.not.not.i.i.i.i.i.i75 = icmp sgt i32 %.1.i.i.i.i.i.i74, %.121.i.i.i.i.i.i73 - br i1 %.not.not.i.i.i.i.i.i75, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %184, !llvm.loop !58 + br i1 %.not.not.i.i.i.i.i.i75, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %180, !llvm.loop !58 -215: ; preds = %211 - %216 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %187 +207: ; preds = %211 + %208 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %183 br label %_ZNK2OT4cmap13find_subtableEjj.exit78 -_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %214, %182, %215 - %217 = phi ptr [ %216, %215 ], [ @_hb_NullPool, %182 ], [ @_hb_NullPool, %214 ] - %218 = getelementptr inbounds nuw i8, ptr %217, i64 4 - %219 = load i8, ptr %218, align 1 - %220 = zext i8 %219 to i32 - %221 = shl nuw i32 %220, 24 - %222 = getelementptr inbounds nuw i8, ptr %217, i64 5 - %223 = load i8, ptr %222, align 1 - %224 = zext i8 %223 to i32 - %225 = shl nuw nsw i32 %224, 16 - %226 = or disjoint i32 %225, %221 - %227 = getelementptr inbounds nuw i8, ptr %217, i64 6 - %228 = load i8, ptr %227, align 1 - %229 = zext i8 %228 to i32 - %230 = shl nuw nsw i32 %229, 8 - %231 = or disjoint i32 %226, %230 - %232 = getelementptr inbounds nuw i8, ptr %217, i64 7 - %233 = load i8, ptr %232, align 1 - %234 = zext i8 %233 to i32 - %235 = or disjoint i32 %231, %234 - %.not.i76 = icmp eq i32 %235, 0 - %236 = zext i32 %235 to i64 - %237 = getelementptr inbounds nuw i8, ptr %0, i64 %236 - br i1 %.not.i76, label %238, label %248 - -238: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit78 - %239 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 3, i32 noundef 1) - %.not29 = icmp eq ptr %239, null - br i1 %.not29, label %240, label %248 - -240: ; preds = %238 - %241 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 3) - %.not30 = icmp eq ptr %241, null - br i1 %.not30, label %242, label %248 - -242: ; preds = %240 - %243 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 2) - %.not31 = icmp eq ptr %243, null - br i1 %.not31, label %244, label %248 - -244: ; preds = %242 - %245 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 1) - %.not32 = icmp eq ptr %245, null - br i1 %.not32, label %246, label %248 - -246: ; preds = %244 - %247 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 0) - %.not33 = icmp eq ptr %247, null - %spec.select = select i1 %.not33, ptr @_hb_NullPool, ptr %247 - br label %248 - -248: ; preds = %246, %244, %242, %240, %238, %_ZNK2OT4cmap13find_subtableEjj.exit78, %_ZNK2OT4cmap13find_subtableEjj.exit63, %_ZNK2OT4cmap13find_subtableEjj.exit48, %68, %69 - %.0 = phi ptr [ %67, %69 ], [ %67, %68 ], [ %125, %_ZNK2OT4cmap13find_subtableEjj.exit48 ], [ %181, %_ZNK2OT4cmap13find_subtableEjj.exit63 ], [ %237, %_ZNK2OT4cmap13find_subtableEjj.exit78 ], [ %239, %238 ], [ %241, %240 ], [ %243, %242 ], [ %245, %244 ], [ %spec.select, %246 ] +_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %214, %178, %207 + %209 = phi ptr [ %208, %215 ], [ @_hb_NullPool, %178 ], [ @_hb_NullPool, %214 ] + %210 = getelementptr inbounds nuw i8, ptr %209, i64 4 + %211 = load i8, ptr %210, align 1 + %212 = zext i8 %211 to i32 + %213 = shl nuw i32 %212, 24 + %214 = getelementptr inbounds nuw i8, ptr %209, i64 5 + %215 = load i8, ptr %214, align 1 + %216 = zext i8 %215 to i32 + %217 = shl nuw nsw i32 %216, 16 + %218 = or disjoint i32 %217, %213 + %219 = getelementptr inbounds nuw i8, ptr %209, i64 6 + %220 = load i8, ptr %219, align 1 + %221 = zext i8 %220 to i32 + %222 = shl nuw nsw i32 %221, 8 + %223 = or disjoint i32 %218, %222 + %224 = getelementptr inbounds nuw i8, ptr %209, i64 7 + %225 = load i8, ptr %224, align 1 + %226 = zext i8 %225 to i32 + %227 = or disjoint i32 %223, %226 + %.not.i76 = icmp eq i32 %227, 0 + %228 = zext i32 %227 to i64 + %229 = getelementptr inbounds nuw i8, ptr %0, i64 %228 + br i1 %.not.i76, label %230, label %240 + +230: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit78 + %231 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 3, i32 noundef 1) + %.not29 = icmp eq ptr %231, null + br i1 %.not29, label %232, label %240 + +232: ; preds = %230 + %233 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 3) + %.not30 = icmp eq ptr %233, null + br i1 %.not30, label %234, label %240 + +234: ; preds = %232 + %235 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 2) + %.not31 = icmp eq ptr %235, null + br i1 %.not31, label %236, label %240 + +236: ; preds = %234 + %237 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 1) + %.not32 = icmp eq ptr %237, null + br i1 %.not32, label %238, label %240 + +238: ; preds = %236 + %239 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 0) + %.not33 = icmp eq ptr %239, null + %spec.select = select i1 %.not33, ptr @_hb_NullPool, ptr %239 + br label %240 + +240: ; preds = %238, %236, %234, %232, %230, %_ZNK2OT4cmap13find_subtableEjj.exit78, %_ZNK2OT4cmap13find_subtableEjj.exit63, %_ZNK2OT4cmap13find_subtableEjj.exit48, %68, %69 + %.0 = phi ptr [ %67, %69 ], [ %67, %68 ], [ %125, %_ZNK2OT4cmap13find_subtableEjj.exit48 ], [ %179, %_ZNK2OT4cmap13find_subtableEjj.exit63 ], [ %229, %_ZNK2OT4cmap13find_subtableEjj.exit78 ], [ %231, %238 ], [ %241, %240 ], [ %235, %242 ], [ %245, %244 ], [ %spec.select, %246 ] ret ptr %.0 } diff --git a/bench/openjdk/optimized/hb-ot-font.ll b/bench/openjdk/optimized/hb-ot-font.ll index dab04e3674b..38b0c84bed1 100644 --- a/bench/openjdk/optimized/hb-ot-font.ll +++ b/bench/openjdk/optimized/hb-ot-font.ll @@ -3445,17 +3445,17 @@ define linkonce_odr hidden void @_ZN2OT4cmap13accelerator_tC2EP9hb_face_t(ptr no %13 = getelementptr inbounds nuw i8, ptr %3, i64 61 store i8 0, ptr %13, align 1 %14 = invoke i32 @hb_face_get_glyph_count(ptr noundef %1) - to label %15 unwind label %110 + to label %15 unwind label %106 15: ; preds = %2 store i32 %14, ptr %11, align 8 store i8 1, ptr %12, align 4 %16 = invoke ptr @hb_face_reference_table(ptr noundef %1, i32 noundef 1668112752) - to label %.noexc7 unwind label %110 + to label %.noexc7 unwind label %106 .noexc7: ; preds = %15 %17 = invoke noundef ptr @_ZN21hb_sanitize_context_t13sanitize_blobIN2OT4cmapEEEP9hb_blob_tS4_(ptr noundef nonnull align 8 dereferenceable(62) %3, ptr noundef %16) - to label %18 unwind label %110 + to label %18 unwind label %106 18: ; preds = %.noexc7 store ptr %17, ptr %7, align 8 @@ -3518,7 +3518,7 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %18, %_ZN21hb_saniti %45 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 br label %46 -46: ; preds = %76, %.lr.ph.i.i.i.i.i.i +46: ; preds = %72, %.lr.ph.i.i.i.i.i.i %.0193.i.i.i.i.i.i = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i ], [ %.1.i.i.i.i.i.i, %76 ] %.0202.i.i.i.i.i.i = phi i32 [ %45, %.lr.ph.i.i.i.i.i.i ], [ %.121.i.i.i.i.i.i, %76 ] %47 = add i32 %.0202.i.i.i.i.i.i, %.0193.i.i.i.i.i.i @@ -3535,30 +3535,30 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %18, %_ZN21hb_saniti %58 = or disjoint i32 %54, %57 %59 = call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %58) %.not.i.i.i.i.i.i.i.i = icmp eq i32 %58, 0 - br i1 %.not.i.i.i.i.i.i.i.i, label %60, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i + br i1 %.not.i.i.i.i.i.i.i.i, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread -60: ; preds = %46 - %61 = getelementptr inbounds nuw i8, ptr %51, i64 2 - %62 = load i8, ptr %61, align 1 - %63 = zext i8 %62 to i32 - %64 = shl nuw nsw i32 %63, 8 - %65 = getelementptr inbounds nuw i8, ptr %51, i64 3 - %66 = load i8, ptr %65, align 1 - %67 = zext i8 %66 to i32 - %68 = or disjoint i32 %64, %67 - %69 = call noundef i32 @llvm.ucmp.i32.i32(i32 5, i32 %68) - br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; preds = %46 + %59 = getelementptr inbounds nuw i8, ptr %51, i64 2 + %60 = load i8, ptr %59, align 1 + %61 = zext i8 %60 to i32 + %62 = shl nuw nsw i32 %61, 8 + %63 = getelementptr inbounds nuw i8, ptr %51, i64 3 + %64 = load i8, ptr %63, align 1 + %65 = zext i8 %64 to i32 + %66 = or disjoint i32 %62, %65 + %69 = call noundef i32 @llvm.ucmp.i32.i32(i32 5, i32 %66) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; preds = %60, %46 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i.thread: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i, %46 %.0.i.i.i.i.i.i.i.i = phi i32 [ %59, %46 ], [ %69, %60 ] %70 = icmp slt i32 %.0.i.i.i.i.i.i.i.i, 0 br i1 %70, label %71, label %73 -71: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i +69: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i %72 = add nsw i32 %48, -1 br label %76 -73: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i +70: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i %.not23.i.i.i.i.i.i = icmp eq i32 %.0.i.i.i.i.i.i.i.i, 0 br i1 %.not23.i.i.i.i.i.i, label %77, label %74 @@ -3566,19 +3566,19 @@ _ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; %75 = add nuw nsw i32 %48, 1 br label %76 -76: ; preds = %74, %71 +72: ; preds = %74, %71 %.121.i.i.i.i.i.i = phi i32 [ %72, %71 ], [ %.0202.i.i.i.i.i.i, %74 ] %.1.i.i.i.i.i.i = phi i32 [ %.0193.i.i.i.i.i.i, %71 ], [ %75, %74 ] %.not.not.i.i.i.i.i.i = icmp sgt i32 %.1.i.i.i.i.i.i, %.121.i.i.i.i.i.i br i1 %.not.not.i.i.i.i.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit, label %46, !llvm.loop !17 -77: ; preds = %73 - %78 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %38, i64 %49 +73: ; preds = %73 + %74 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %38, i64 %49 br label %_ZNK2OT4cmap13find_subtableEjj.exit -_ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %76, %_ZN21hb_sanitize_context_tD2Ev.exit, %77 - %79 = phi ptr [ %78, %77 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %76 ] - %80 = getelementptr inbounds nuw i8, ptr %79, i64 4 +_ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %72, %_ZN21hb_sanitize_context_tD2Ev.exit, %73 + %75 = phi ptr [ %74, %77 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %76 ] + %76 = getelementptr inbounds nuw i8, ptr %75, i64 4 %81 = load i8, ptr %80, align 1 %82 = zext i8 %81 to i32 %83 = shl nuw i32 %82, 24 @@ -3601,8 +3601,8 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %76, %_ZN21hb_saniti %99 = getelementptr inbounds nuw i8, ptr %spec.select.i.i1.i.i11, i64 %98 br i1 %.not.i12, label %112, label %100 -100: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit - %101 = load i8, ptr %99, align 1 +96: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit + %97 = load i8, ptr %99, align 1 %102 = zext i8 %101 to i32 %103 = shl nuw nsw i32 %102, 8 %104 = getelementptr inbounds nuw i8, ptr %99, i64 1 @@ -3612,35 +3612,35 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %76, %_ZN21hb_saniti %108 = icmp eq i32 %107, 14 br i1 %108, label %109, label %112 -109: ; preds = %100 +105: ; preds = %96 store ptr %99, ptr %5, align 8 - br label %112 + br label %108 -110: ; preds = %.noexc7, %15, %2 - %111 = landingpad { ptr, i32 } +106: ; preds = %.noexc7, %15, %2 + %107 = landingpad { ptr, i32 } cleanup call void @_ZN21hb_sanitize_context_tD2Ev(ptr noundef nonnull align 8 dereferenceable(62) %3) #23 - resume { ptr, i32 } %111 + resume { ptr, i32 } %107 -112: ; preds = %109, %100, %_ZNK2OT4cmap13find_subtableEjj.exit +108: ; preds = %105, %96, %_ZNK2OT4cmap13find_subtableEjj.exit %.not.i.i = icmp eq ptr %30, null %spec.select.i.i = select i1 %.not.i.i, ptr @_hb_NullPool, ptr %30 - %113 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %spec.select.i.i, ptr %113, align 8 - %114 = load i8, ptr %4, align 1 - %115 = trunc i8 %114 to i1 - br i1 %115, label %116, label %141 + %109 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %spec.select.i.i, ptr %109, align 8 + %110 = load i8, ptr %4, align 1 + %111 = trunc i8 %110 to i1 + br i1 %111, label %112, label %137 -116: ; preds = %112 - %117 = getelementptr inbounds nuw i8, ptr %1, i64 128 - %118 = call noundef ptr @_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10get_storedEv(ptr noundef nonnull align 8 dereferenceable(8) %117) - %119 = getelementptr inbounds nuw i8, ptr %118, i64 16 - %120 = load ptr, ptr %119, align 8 - %121 = getelementptr inbounds nuw i8, ptr %118, i64 24 - %122 = load i32, ptr %121, align 8 - %123 = icmp ult i32 %122, 78 - %spec.select.i.i.i.i.i = select i1 %123, ptr @_hb_NullPool, ptr %120 - %124 = load i8, ptr %spec.select.i.i.i.i.i, align 1 +112: ; preds = %108 + %113 = getelementptr inbounds nuw i8, ptr %1, i64 128 + %114 = call noundef ptr @_ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj6E9hb_blob_tE10get_storedEv(ptr noundef nonnull align 8 dereferenceable(8) %113) + %115 = getelementptr inbounds nuw i8, ptr %114, i64 16 + %116 = load ptr, ptr %115, align 8 + %117 = getelementptr inbounds nuw i8, ptr %114, i64 24 + %118 = load i32, ptr %117, align 8 + %119 = icmp ult i32 %118, 78 + %spec.select.i.i.i.i.i = select i1 %119, ptr @_hb_NullPool, ptr %116 + %120 = load i8, ptr %spec.select.i.i.i.i.i, align 1 %125 = zext i8 %124 to i32 %126 = shl nuw nsw i32 %125, 8 %127 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i.i.i, i64 1 @@ -3660,24 +3660,24 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %76, %_ZN21hb_saniti i16 -19712, label %139 ] -137: ; preds = %116 +133: ; preds = %112 store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZNS_L18_hb_symbol_pua_mapEjEEEEbPKvjPj, ptr %136, align 8 - br label %187 + br label %183 -138: ; preds = %116 +134: ; preds = %112 store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_simp_mapjEEEEbPKvjPj, ptr %136, align 8 - br label %187 + br label %183 -139: ; preds = %116 +135: ; preds = %112 store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_trad_mapjEEEEbPKvjPj, ptr %136, align 8 - br label %187 + br label %183 -140: ; preds = %116 +136: ; preds = %112 store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %136, align 8 - br label %187 + br label %183 -141: ; preds = %112 - %142 = load i8, ptr %spec.select.i.i, align 1 +137: ; preds = %108 + %138 = load i8, ptr %spec.select.i.i, align 1 %143 = zext i8 %142 to i16 %144 = shl nuw i16 %143, 8 %145 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 1 @@ -3689,33 +3689,33 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %76, %_ZN21hb_saniti i16 4, label %152 ] -148: ; preds = %141 - %149 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %149, align 8 - br label %187 +144: ; preds = %137 + %145 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %145, align 8 + br label %183 -150: ; preds = %141 - %151 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_20CmapSubtableFormat12EEEbPKvjPj, ptr %151, align 8 - br label %187 +146: ; preds = %137 + %147 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_20CmapSubtableFormat12EEEbPKvjPj, ptr %147, align 8 + br label %183 -152: ; preds = %141 - %153 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 6 +148: ; preds = %137 + %149 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 6 %154 = load i8, ptr %153, align 1 %155 = zext i8 %154 to i32 - %156 = shl nuw nsw i32 %155, 8 + %156 = shl nuw nsw i32 %152, 8 %157 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 7 %158 = load i8, ptr %157, align 1 %159 = zext i8 %158 to i32 - %160 = or disjoint i32 %156, %159 - %161 = lshr i32 %160, 1 - %162 = getelementptr inbounds nuw i8, ptr %0, i64 72 - store i32 %161, ptr %162, align 8 - %163 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 14 + %156 = or disjoint i32 %156, %155 + %157 = lshr i32 %160, 1 + %158 = getelementptr inbounds nuw i8, ptr %0, i64 72 + store i32 %157, ptr %158, align 8 + %162 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 14 store ptr %163, ptr %6, align 8 %164 = zext nneg i32 %161 to i64 - %165 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %163, i64 %164 - %166 = getelementptr inbounds nuw i8, ptr %165, i64 2 + %164 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %162, i64 %164 + %165 = getelementptr inbounds nuw i8, ptr %165, i64 2 %167 = getelementptr inbounds nuw i8, ptr %0, i64 40 store ptr %166, ptr %167, align 8 %168 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %166, i64 %164 @@ -3725,7 +3725,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %76, %_ZN21hb_saniti %171 = getelementptr inbounds nuw i8, ptr %0, i64 56 store ptr %170, ptr %171, align 8 %172 = getelementptr inbounds nuw %"struct.OT::IntType", ptr %170, i64 %164 - %173 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %174 = getelementptr inbounds nuw i8, ptr %0, i64 64 store ptr %172, ptr %173, align 8 %174 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 2 %175 = load i8, ptr %174, align 1 @@ -3737,7 +3737,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %76, %_ZN21hb_saniti %181 = or disjoint i32 %177, %180 %182 = shl nuw nsw i32 %161, 3 %reass.sub = sub nsw i32 %181, %182 - %183 = add nsw i32 %reass.sub, -16 + %179 = add nsw i32 %reass.sub, -16 %184 = lshr i32 %183, 1 %185 = getelementptr inbounds nuw i8, ptr %0, i64 76 store i32 %184, ptr %185, align 4 @@ -3890,11 +3890,11 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %44, %4, %45 br i1 %.not.i, label %70, label %68 68: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit - br i1 %.not, label %248, label %69 + br i1 %.not, label %240, label %69 69: ; preds = %68 store i8 1, ptr %1, align 1 - br label %248 + br label %240 70: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit48, label %.lr.ph.i.i.i.i.i.i36 @@ -3984,7 +3984,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %.not.i46 = icmp eq i32 %123, 0 %124 = zext i32 %123 to i64 %125 = getelementptr inbounds nuw i8, ptr %0, i64 %124 - br i1 %.not.i46, label %126, label %248 + br i1 %.not.i46, label %126, label %240 126: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit48 br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit63, label %.lr.ph.i.i.i.i.i.i51 @@ -4010,34 +4010,34 @@ _ZNK2OT4cmap13find_subtableEjj.exit48: ; preds = %102, %70, %103 %140 = or disjoint i32 %136, %139 %141 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %140) %.not.i.i.i.i.i.i.i.i54 = icmp eq i32 %140, 0 - br i1 %.not.i.i.i.i.i.i.i.i54, label %142, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 + br i1 %.not.i.i.i.i.i.i.i.i54, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread -142: ; preds = %128 - %143 = getelementptr inbounds nuw i8, ptr %133, i64 2 - %144 = load i8, ptr %143, align 1 - %145 = zext i8 %144 to i32 - %146 = shl nuw nsw i32 %145, 8 - %147 = getelementptr inbounds nuw i8, ptr %133, i64 3 - %148 = load i8, ptr %147, align 1 - %149 = zext i8 %148 to i32 - %150 = or disjoint i32 %146, %149 - %151 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 6, i32 %150) - br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: ; preds = %128 + %141 = getelementptr inbounds nuw i8, ptr %133, i64 2 + %142 = load i8, ptr %141, align 1 + %143 = zext i8 %142 to i32 + %144 = shl nuw nsw i32 %143, 8 + %145 = getelementptr inbounds nuw i8, ptr %133, i64 3 + %146 = load i8, ptr %145, align 1 + %147 = zext i8 %146 to i32 + %148 = or disjoint i32 %144, %147 + %147 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 6, i32 %146) + br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: ; preds = %142, %128 - %.0.i.i.i.i.i.i.i.i56 = phi i32 [ %141, %128 ], [ %151, %142 ] +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55.thread: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55, %128 + %.0.i.i.i.i.i.i.i.i56 = phi i32 [ %137, %128 ], [ %151, %142 ] %152 = icmp slt i32 %.0.i.i.i.i.i.i.i.i56, 0 br i1 %152, label %153, label %155 -153: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 +151: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 %154 = add nsw i32 %130, -1 br label %158 -155: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 +152: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55 %.not23.i.i.i.i.i.i57 = icmp eq i32 %.0.i.i.i.i.i.i.i.i56, 0 - br i1 %.not23.i.i.i.i.i.i57, label %159, label %156 + br i1 %.not23.i.i.i.i.i.i57, label %159, label %154 -156: ; preds = %155 +154: ; preds = %155 %157 = add nuw nsw i32 %130, 1 br label %158 @@ -4047,18 +4047,18 @@ _ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: %.not.not.i.i.i.i.i.i60 = icmp sgt i32 %.1.i.i.i.i.i.i59, %.121.i.i.i.i.i.i58 br i1 %.not.not.i.i.i.i.i.i60, label %_ZNK2OT4cmap13find_subtableEjj.exit63, label %128, !llvm.loop !17 -159: ; preds = %155 - %160 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %131 +155: ; preds = %155 + %156 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %131 br label %_ZNK2OT4cmap13find_subtableEjj.exit63 -_ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 - %161 = phi ptr [ %160, %159 ], [ @_hb_NullPool, %126 ], [ @_hb_NullPool, %158 ] - %162 = getelementptr inbounds nuw i8, ptr %161, i64 4 +_ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %155 + %157 = phi ptr [ %156, %159 ], [ @_hb_NullPool, %126 ], [ @_hb_NullPool, %158 ] + %158 = getelementptr inbounds nuw i8, ptr %157, i64 4 %163 = load i8, ptr %162, align 1 %164 = zext i8 %163 to i32 %165 = shl nuw i32 %164, 24 %166 = getelementptr inbounds nuw i8, ptr %161, i64 5 - %167 = load i8, ptr %166, align 1 + %167 = load i8, ptr %165, align 1 %168 = zext i8 %167 to i32 %169 = shl nuw nsw i32 %168, 16 %170 = or disjoint i32 %169, %165 @@ -4076,21 +4076,21 @@ _ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 %181 = getelementptr inbounds nuw i8, ptr %0, i64 %180 br i1 %.not.i61, label %182, label %248 -182: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit63 +178: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit63 br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %.lr.ph.i.i.i.i.i.i66 -.lr.ph.i.i.i.i.i.i66: ; preds = %182 - %183 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 - br label %184 +.lr.ph.i.i.i.i.i.i66: ; preds = %178 + %179 = add nsw i32 %.sroa.2.8.insert.ext.i.i.i.i, -1 + br label %180 -184: ; preds = %214, %.lr.ph.i.i.i.i.i.i66 +180: ; preds = %214, %.lr.ph.i.i.i.i.i.i66 %.0193.i.i.i.i.i.i67 = phi i32 [ 0, %.lr.ph.i.i.i.i.i.i66 ], [ %.1.i.i.i.i.i.i74, %214 ] - %.0202.i.i.i.i.i.i68 = phi i32 [ %183, %.lr.ph.i.i.i.i.i.i66 ], [ %.121.i.i.i.i.i.i73, %214 ] - %185 = add i32 %.0202.i.i.i.i.i.i68, %.0193.i.i.i.i.i.i67 - %186 = lshr i32 %185, 1 - %187 = zext nneg i32 %186 to i64 - %188 = shl nuw nsw i64 %187, 3 - %189 = getelementptr inbounds nuw i8, ptr %6, i64 %188 + %.0202.i.i.i.i.i.i68 = phi i32 [ %179, %.lr.ph.i.i.i.i.i.i66 ], [ %.121.i.i.i.i.i.i73, %214 ] + %181 = add i32 %.0202.i.i.i.i.i.i68, %.0193.i.i.i.i.i.i67 + %182 = lshr i32 %181, 1 + %183 = zext nneg i32 %182 to i64 + %184 = shl nuw nsw i64 %183, 3 + %185 = getelementptr inbounds nuw i8, ptr %6, i64 %184 %190 = load i8, ptr %189, align 1 %191 = zext i8 %190 to i32 %192 = shl nuw nsw i32 %191, 8 @@ -4100,9 +4100,9 @@ _ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 %196 = or disjoint i32 %192, %195 %197 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 0, i32 %196) %.not.i.i.i.i.i.i.i.i69 = icmp eq i32 %196, 0 - br i1 %.not.i.i.i.i.i.i.i.i69, label %198, label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 + br i1 %.not.i.i.i.i.i.i.i.i69, label %198, label %203 -198: ; preds = %184 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70.thread: ; preds = %184 %199 = getelementptr inbounds nuw i8, ptr %189, i64 2 %200 = load i8, ptr %199, align 1 %201 = zext i8 %200 to i32 @@ -4114,86 +4114,86 @@ _ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %158, %126, %159 %207 = tail call noundef i32 @llvm.ucmp.i32.i32(i32 4, i32 %206) br label %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 -_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70: ; preds = %198, %184 +_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70:; preds = %198, %184 %.0.i.i.i.i.i.i.i.i71 = phi i32 [ %197, %184 ], [ %207, %198 ] %208 = icmp slt i32 %.0.i.i.i.i.i.i.i.i71, 0 br i1 %208, label %209, label %211 -209: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 - %210 = add nsw i32 %186, -1 +204: ; preds = %203 + %205 = add nsw i32 %182, -1 br label %214 211: ; preds = %_ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i70 %.not23.i.i.i.i.i.i72 = icmp eq i32 %.0.i.i.i.i.i.i.i.i71, 0 br i1 %.not23.i.i.i.i.i.i72, label %215, label %212 -212: ; preds = %211 - %213 = add nuw nsw i32 %186, 1 +206: ; preds = %211 + %213 = add nuw nsw i32 %178, 1 br label %214 214: ; preds = %212, %209 %.121.i.i.i.i.i.i73 = phi i32 [ %210, %209 ], [ %.0202.i.i.i.i.i.i68, %212 ] %.1.i.i.i.i.i.i74 = phi i32 [ %.0193.i.i.i.i.i.i67, %209 ], [ %213, %212 ] %.not.not.i.i.i.i.i.i75 = icmp sgt i32 %.1.i.i.i.i.i.i74, %.121.i.i.i.i.i.i73 - br i1 %.not.not.i.i.i.i.i.i75, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %184, !llvm.loop !17 + br i1 %.not.not.i.i.i.i.i.i75, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %180, !llvm.loop !17 -215: ; preds = %211 - %216 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %187 +207: ; preds = %211 + %208 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %183 br label %_ZNK2OT4cmap13find_subtableEjj.exit78 -_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %214, %182, %215 - %217 = phi ptr [ %216, %215 ], [ @_hb_NullPool, %182 ], [ @_hb_NullPool, %214 ] - %218 = getelementptr inbounds nuw i8, ptr %217, i64 4 - %219 = load i8, ptr %218, align 1 - %220 = zext i8 %219 to i32 - %221 = shl nuw i32 %220, 24 - %222 = getelementptr inbounds nuw i8, ptr %217, i64 5 - %223 = load i8, ptr %222, align 1 - %224 = zext i8 %223 to i32 - %225 = shl nuw nsw i32 %224, 16 - %226 = or disjoint i32 %225, %221 - %227 = getelementptr inbounds nuw i8, ptr %217, i64 6 - %228 = load i8, ptr %227, align 1 - %229 = zext i8 %228 to i32 - %230 = shl nuw nsw i32 %229, 8 - %231 = or disjoint i32 %226, %230 - %232 = getelementptr inbounds nuw i8, ptr %217, i64 7 - %233 = load i8, ptr %232, align 1 - %234 = zext i8 %233 to i32 - %235 = or disjoint i32 %231, %234 - %.not.i76 = icmp eq i32 %235, 0 - %236 = zext i32 %235 to i64 - %237 = getelementptr inbounds nuw i8, ptr %0, i64 %236 - br i1 %.not.i76, label %238, label %248 - -238: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit78 - %239 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 3, i32 noundef 1) - %.not29 = icmp eq ptr %239, null - br i1 %.not29, label %240, label %248 - -240: ; preds = %238 - %241 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 3) - %.not30 = icmp eq ptr %241, null - br i1 %.not30, label %242, label %248 - -242: ; preds = %240 - %243 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 2) - %.not31 = icmp eq ptr %243, null - br i1 %.not31, label %244, label %248 - -244: ; preds = %242 - %245 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 1) - %.not32 = icmp eq ptr %245, null - br i1 %.not32, label %246, label %248 - -246: ; preds = %244 - %247 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 0) - %.not33 = icmp eq ptr %247, null - %spec.select = select i1 %.not33, ptr @_hb_NullPool, ptr %247 - br label %248 - -248: ; preds = %246, %244, %242, %240, %238, %_ZNK2OT4cmap13find_subtableEjj.exit78, %_ZNK2OT4cmap13find_subtableEjj.exit63, %_ZNK2OT4cmap13find_subtableEjj.exit48, %68, %69 - %.0 = phi ptr [ %67, %69 ], [ %67, %68 ], [ %125, %_ZNK2OT4cmap13find_subtableEjj.exit48 ], [ %181, %_ZNK2OT4cmap13find_subtableEjj.exit63 ], [ %237, %_ZNK2OT4cmap13find_subtableEjj.exit78 ], [ %239, %238 ], [ %241, %240 ], [ %243, %242 ], [ %245, %244 ], [ %spec.select, %246 ] +_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %214, %178, %207 + %209 = phi ptr [ %208, %215 ], [ @_hb_NullPool, %182 ], [ @_hb_NullPool, %214 ] + %210 = getelementptr inbounds nuw i8, ptr %209, i64 4 + %211 = load i8, ptr %210, align 1 + %212 = zext i8 %211 to i32 + %213 = shl nuw i32 %212, 24 + %214 = getelementptr inbounds nuw i8, ptr %209, i64 5 + %215 = load i8, ptr %214, align 1 + %216 = zext i8 %215 to i32 + %217 = shl nuw nsw i32 %216, 16 + %218 = or disjoint i32 %217, %213 + %219 = getelementptr inbounds nuw i8, ptr %209, i64 6 + %220 = load i8, ptr %219, align 1 + %221 = zext i8 %220 to i32 + %222 = shl nuw nsw i32 %221, 8 + %223 = or disjoint i32 %218, %222 + %224 = getelementptr inbounds nuw i8, ptr %209, i64 7 + %225 = load i8, ptr %224, align 1 + %226 = zext i8 %225 to i32 + %227 = or disjoint i32 %223, %226 + %.not.i76 = icmp eq i32 %227, 0 + %228 = zext i32 %227 to i64 + %229 = getelementptr inbounds nuw i8, ptr %0, i64 %228 + br i1 %.not.i76, label %230, label %240 + +230: ; preds = %_ZNK2OT4cmap13find_subtableEjj.exit78 + %231 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 3, i32 noundef 1) + %.not29 = icmp eq ptr %231, null + br i1 %.not29, label %232, label %240 + +232: ; preds = %230 + %233 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 3) + %.not30 = icmp eq ptr %233, null + br i1 %.not30, label %234, label %240 + +234: ; preds = %232 + %235 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 2) + %.not31 = icmp eq ptr %235, null + br i1 %.not31, label %236, label %240 + +236: ; preds = %234 + %237 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 1) + %.not32 = icmp eq ptr %237, null + br i1 %.not32, label %238, label %240 + +238: ; preds = %236 + %239 = tail call noundef ptr @_ZNK2OT4cmap13find_subtableEjj(ptr noundef nonnull align 1 dereferenceable(12) %0, i32 noundef 0, i32 noundef 0) + %.not33 = icmp eq ptr %239, null + %spec.select = select i1 %.not33, ptr @_hb_NullPool, ptr %239 + br label %240 + +240: ; preds = %238, %236, %234, %232, %230, %_ZNK2OT4cmap13find_subtableEjj.exit78, %_ZNK2OT4cmap13find_subtableEjj.exit63, %_ZNK2OT4cmap13find_subtableEjj.exit48, %68, %69 + %.0 = phi ptr [ %67, %69 ], [ %67, %68 ], [ %125, %_ZNK2OT4cmap13find_subtableEjj.exit48 ], [ %181, %_ZNK2OT4cmap13find_subtableEjj.exit63 ], [ %229, %_ZNK2OT4cmap13find_subtableEjj.exit78 ], [ %231, %238 ], [ %241, %240 ], [ %235, %242 ], [ %245, %244 ], [ %spec.select, %246 ] ret ptr %.0 }