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..531dd65d87c 100644 --- a/bench/hyperscan/optimized/buildstate.ll +++ b/bench/hyperscan/optimized/buildstate.ll @@ -1901,7 +1901,7 @@ _ZNSt3mapIjN3ue28flat_setINS0_12PositionInfoESt4lessIS2_ESaIS2_EEES3_IjESaISt4pa 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 ] + %.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 @@ -2031,15 +2031,16 @@ _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212Po %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 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 ] + %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 @@ -2070,7 +2071,7 @@ _ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212Pos br label %107 107: ; preds = %105, %104 - %.0.i.i.i.i = phi ptr [ %106, %105 ], [ %102, %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 @@ -2088,7 +2089,7 @@ _ZN5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIN3ue212Pos 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 ] + %.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 @@ -2098,7 +2099,7 @@ _ZN5boost9container24uninitialized_move_allocINS0_22small_vector_allocatorIN3ue2 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 ] + %.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 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..f5ebd5c9409 100644 --- a/bench/openjdk/optimized/hb-face.ll +++ b/bench/openjdk/optimized/hb-face.ll @@ -8697,8 +8697,8 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %28, %_ZN21hb_saniti 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 ] + %.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,6 +8711,7 @@ _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 @@ -8723,69 +8724,74 @@ _ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; %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 + %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.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.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 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 + %82 = add nsw i32 %58, -1 + br label %86 -80: ; preds = %79 - %81 = add nuw nsw i32 %58, 1 - br label %82 +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 + +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 ] +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 -83: ; preds = %79 +83: ; preds = %83 %84 = 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 ] + %85 = phi ptr [ %84, %87 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %86 ] %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 %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 %118, 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 +115: ; preds = %110 + store ptr %109, ptr %5, align 8 br label %118 116: ; preds = %hb_face_reference_table.exit.i, %_ZNK9hb_face_t15reference_tableEj.exit.sink.split.i.i, %22, %17 @@ -8794,7 +8800,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %82, %_ZN21hb_saniti call void @_ZN21hb_sanitize_context_tD2Ev(ptr noundef nonnull align 8 dereferenceable(62) %3) #19 resume { ptr, i32 } %117 -118: ; preds = %115, %106, %_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 %119 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -8832,7 +8838,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %82, %_ZN21hb_saniti br label %134 134: ; preds = %132, %130 - %.1.i.i.i = phi ptr [ %131, %130 ], [ %133, %132 ] + %.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 @@ -8857,12 +8863,12 @@ _ZN16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tLj 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, %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 ] + %.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 = %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 ] + %.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 @@ -8870,112 +8876,112 @@ _ZNK16hb_lazy_loader_tIN2OT3OS2E22hb_table_lazy_loader_tIS1_Lj6ELb1EE9hb_face_tL %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 %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 %157, 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 + 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 + 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 + 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 + 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 %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 + 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 + br label %216 -177: ; preds = %166 +179: ; 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 %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, %184 + %190 = lshr i32 %189, 1 + %191 = getelementptr inbounds nuw i8, ptr %0, i64 72 + store i32 %190, ptr %191, align 8 + %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 + %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 %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 + %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 %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 } @@ -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,6 +9213,7 @@ _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 @@ -9219,117 +9226,128 @@ _ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: %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 + %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 = %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.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 -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.thread + %154 = add nsw i32 %126, -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 !58 -155: ; preds = %151 +155: ; preds = %155 %156 = 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 ] +_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 - %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 %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 ] +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 [ %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 - %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 %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 -207: ; preds = %203 +207: ; preds = %211 %208 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %183 br label %_ZNK2OT4cmap13find_subtableEjj.exit78 -_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %206, %178, %207 - %209 = phi ptr [ %208, %207 ], [ @_hb_NullPool, %178 ], [ @_hb_NullPool, %206 ] +_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 @@ -9380,7 +9398,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %206, %178, %207 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 ] + %.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 f80067a0fdb..38b0c84bed1 100644 --- a/bench/openjdk/optimized/hb-ot-font.ll +++ b/bench/openjdk/optimized/hb-ot-font.ll @@ -3519,8 +3519,8 @@ _ZN21hb_sanitize_context_tD2Ev.exit: ; preds = %18, %_ZN21hb_saniti 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 ] + %.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,6 +3533,7 @@ _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 @@ -3545,69 +3546,74 @@ _ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i: ; %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 + %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.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.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 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 + %72 = add nsw i32 %48, -1 + br label %76 -70: ; preds = %69 - %71 = add nuw nsw i32 %48, 1 - br label %72 +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 + +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 ] +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 -73: ; preds = %69 +73: ; preds = %73 %74 = 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 ] + %75 = phi ptr [ %74, %77 ], [ @_hb_NullPool, %_ZN21hb_sanitize_context_tD2Ev.exit ], [ @_hb_NullPool, %76 ] %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 %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 + %97 = 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 + store ptr %99, ptr %5, align 8 br label %108 106: ; preds = %.noexc7, %15, %2 @@ -3635,52 +3641,52 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %72, %_ZN21hb_saniti %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 %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 + store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZNS_L18_hb_symbol_pua_mapEjEEEEbPKvjPj, ptr %136, align 8 br label %183 134: ; preds = %112 - store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_simp_mapjEEEEbPKvjPj, ptr %132, align 8 + store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_simp_mapjEEEEbPKvjPj, ptr %136, align 8 br label %183 135: ; preds = %112 - store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_trad_mapjEEEEbPKvjPj, ptr %132, align 8 + store ptr @_ZN2OT4cmap13accelerator_t21get_glyph_from_symbolINS_12CmapSubtableEXadL_ZL23_hb_arabic_pua_trad_mapjEEEEbPKvjPj, ptr %136, align 8 br label %183 136: ; preds = %112 - store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %132, align 8 + store ptr @_ZN2OT4cmap13accelerator_t14get_glyph_fromINS_12CmapSubtableEEEbPKvjPj, ptr %136, align 8 br label %183 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 %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 @@ -3695,52 +3701,52 @@ _ZNK2OT4cmap13find_subtableEjj.exit: ; preds = %72, %_ZN21hb_saniti 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 %154 = load i8, ptr %153, align 1 %155 = zext i8 %154 to i32 - %156 = or disjoint i32 %152, %155 - %157 = lshr i32 %156, 1 + %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 + %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 - %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 + %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 + %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 %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 + %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 %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 + %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 %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 + %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 } @@ -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,6 +4008,7 @@ _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 @@ -4014,55 +4021,60 @@ _ZL14_hb_cmp_methodIN2OT14EncodingRecordEKS1_JEEiPKvS4_DpT1_.exit.i.i.i.i.i.i55: %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 + %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 = %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.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 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 + %154 = add nsw i32 %130, -1 + br label %158 + +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 %154 -152: ; preds = %151 - %153 = add nuw nsw i32 %130, 1 - br label %154 +154: ; preds = %155 + %157 = add nuw nsw i32 %130, 1 + br label %158 -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 ] +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 +155: ; preds = %155 %156 = 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 ] +_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 - %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 %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 %165, 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 br i1 %.not1.i.i.i.i.not.i.i, label %_ZNK2OT4cmap13find_subtableEjj.exit78, label %.lr.ph.i.i.i.i.i.i66 @@ -4071,60 +4083,66 @@ _ZNK2OT4cmap13find_subtableEjj.exit63: ; preds = %154, %126, %155 %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 ] +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 [ %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 - %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 %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 %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 +_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 + %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 + %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 + +206: ; preds = %211 + %213 = add nuw nsw i32 %178, 1 + br label %214 -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 ] +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 -207: ; preds = %203 +207: ; preds = %211 %208 = getelementptr inbounds nuw %"struct.OT::EncodingRecord", ptr %6, i64 %183 br label %_ZNK2OT4cmap13find_subtableEjj.exit78 -_ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %206, %178, %207 - %209 = phi ptr [ %208, %207 ], [ @_hb_NullPool, %178 ], [ @_hb_NullPool, %206 ] +_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 @@ -4175,7 +4193,7 @@ _ZNK2OT4cmap13find_subtableEjj.exit78: ; preds = %206, %178, %207 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 ] + %.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 } 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