diff --git a/bench/abc/optimized/wlnNtk.ll b/bench/abc/optimized/wlnNtk.ll index cdb273cbd7b..75a4dc1ccbd 100644 --- a/bench/abc/optimized/wlnNtk.ll +++ b/bench/abc/optimized/wlnNtk.ll @@ -1777,7 +1777,7 @@ Wln_NtkIncrementTravId.exit156: ; preds = %Wln_NtkIncrementTra %155 = icmp slt i64 %indvars.iv.next215, %154 br i1 %155, label %139, label %.loopexit, !llvm.loop !89 -.loopexit: ; preds = %153, %91, %.critedge2.preheader, %135, %149, %62, %77, %.critedge2._crit_edge +.loopexit: ; preds = %153, %91, %.critedge2.preheader, %135, %62, %77, %.critedge2._crit_edge, %149 %.099 = phi i32 [ 0, %62 ], [ 0, %77 ], [ 1, %.critedge2._crit_edge ], [ 0, %149 ], [ 1, %135 ], [ 1, %.critedge2.preheader ], [ 1, %91 ], [ 1, %153 ] ret i32 %.099 } diff --git a/bench/arrow/optimized/expression.ll b/bench/arrow/optimized/expression.ll index 4efd31824b4..c4d27439a77 100644 --- a/bench/arrow/optimized/expression.ll +++ b/bench/arrow/optimized/expression.ll @@ -22639,17 +22639,15 @@ _ZN5arrow6ResultINS_7compute10ExpressionEED2Ev.exit153: ; preds = %450, %_ZN5arr 478: ; preds = %323, %_ZN5arrow6ResultINS_7compute10ExpressionEED2Ev.exit153 %.348 = phi i32 [ %.853, %_ZN5arrow6ResultINS_7compute10ExpressionEED2Ev.exit153 ], [ %.449, %323 ] - switch i32 %.348, label %.loopexit [ - i32 13, label %.thread195 - i32 12, label %.thread197 - ] + %cond = icmp eq i32 %.348, 13 + br i1 %cond, label %.thread195, label %.loopexit .thread195: ; preds = %478, %_ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i116, %_ZN5arrow6ResultINS_7compute10ExpressionEED2Ev.exit153, %128, %_ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i %479 = getelementptr inbounds nuw i8, ptr %.sroa.0168.0201, i64 16 %.not = icmp eq ptr %479, %117 br i1 %.not, label %.thread197, label %128 -.thread197: ; preds = %.thread195, %478, %_ZN5arrow6StatusD2Ev.exit87 +.thread197: ; preds = %.thread195, %_ZN5arrow6StatusD2Ev.exit87 store ptr null, ptr %0, align 8, !tbaa !266 %480 = getelementptr inbounds nuw i8, ptr %0, i64 8 %481 = load ptr, ptr %1, align 8, !tbaa !62 diff --git a/bench/assimp/optimized/IFCOpenings.ll b/bench/assimp/optimized/IFCOpenings.ll index 400d74ab363..98a07d13ede 100644 --- a/bench/assimp/optimized/IFCOpenings.ll +++ b/bench/assimp/optimized/IFCOpenings.ll @@ -10270,14 +10270,13 @@ _ZSt8_DestroyIPSt6vectorIN10ClipperLib8IntPointESaIS2_EES4_EvT_S6_RSaIT0_E.exit. 523: ; preds = %516, %_ZSt8_DestroyIPSt6vectorIN10ClipperLib8IntPointESaIS2_EES4_EvT_S6_RSaIT0_E.exit.i call void @llvm.lifetime.end.p0(ptr nonnull %20) switch i32 %.8140, label %_ZNSt6vectorIN6Assimp3IFC22ProjectedWindowContourESaIS2_EE12emplace_backIJRS_I10aiVector2tIdESaIS7_EERSt4pairIS7_S7_ERbEEERS2_DpOT_.exit [ - i32 0, label %.backedge - i32 11, label %.backedge i32 10, label %.thread435.loopexit + i32 11, label %.backedge ] -.backedge: ; preds = %.thread847, %523, %523 - %.10852 = phi i1 [ %.7621, %.thread847 ], [ %.9, %523 ], [ %.9, %523 ] - %.sroa.0294.2851 = phi ptr [ %522, %.thread847 ], [ %.sroa.0294.1, %523 ], [ %.sroa.0294.1, %523 ] +.backedge: ; preds = %.thread847, %523 + %.10852 = phi i1 [ %.7621, %.thread847 ], [ %.9, %523 ] + %.sroa.0294.2851 = phi ptr [ %522, %.thread847 ], [ %.sroa.0294.1, %523 ] %524 = load ptr, ptr %49, align 8 %.not447 = icmp eq ptr %.sroa.0294.2851, %524 br i1 %.not447, label %.thread435.loopexit, label %.lr.ph623 diff --git a/bench/boost/optimized/get_turns_linear_areal.ll b/bench/boost/optimized/get_turns_linear_areal.ll index 00966fe98b2..6b5115d9335 100644 --- a/bench/boost/optimized/get_turns_linear_areal.ll +++ b/bench/boost/optimized/get_turns_linear_areal.ll @@ -203325,10 +203325,10 @@ _ZNK5boost8geometry6detail7overlay26get_turn_info_linear_arealINS2_18assign_null %96 = load i64, ptr %95, align 8, !tbaa !24 %97 = getelementptr inbounds nuw i8, ptr %4, i64 88 %.sroa.19.80..sroa_idx79162 = getelementptr inbounds nuw i8, ptr %.sroa.19, i64 44 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.19.80..sroa_idx79162, ptr noundef nonnull align 8 dereferenceable(12) %97, i64 12, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.19.80..sroa_idx79162, ptr noundef nonnull align 8 dereferenceable(12) %97, i64 12, i1 false), !tbaa.struct !2614 %98 = getelementptr inbounds nuw i8, ptr %4, i64 100 %.sroa.31.152..sroa_idx117163 = getelementptr inbounds nuw i8, ptr %.sroa.31, i64 44 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.31.152..sroa_idx117163, ptr noundef nonnull align 4 dereferenceable(12) %98, i64 12, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.31.152..sroa_idx117163, ptr noundef nonnull align 4 dereferenceable(12) %98, i64 12, i1 false), !tbaa.struct !2614 %.sroa.0.0.copyload.i32 = load ptr, ptr %3, align 8 %99 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i32, i64 8 %100 = load ptr, ptr %99, align 8, !tbaa !2421 @@ -226612,14 +226612,12 @@ _ZNSt6vectorIN5boost8geometry6detail7overlay9turn_infoINS1_5model5pointIdLm2ENS1 define linkonce_odr hidden void @_ZN5boost8geometry6detail7overlay18collinear_oppositeINS2_9turn_infoINS0_5model5pointIdLm2ENS0_2cs9cartesianEEENS0_13segment_ratioIdEENS2_21turn_operation_linearIS9_SB_EESt5arrayISD_Lm2EEEENS2_18assign_null_policyEE5applyINS1_9get_turns29unique_sub_range_from_sectionILb0ENS0_7sectionINS5_3boxIS9_EELm2EEES9_NS0_22ever_circling_iteratorIN9__gnu_cxx17__normal_iteratorIPKS9_St6vectorIS9_SaIS9_EEEEEENS0_10strategies6relate9cartesianIvEENS1_17no_rescale_policyEEENSL_ILb1ESP_S9_SZ_S13_S14_EESt20back_insert_iteratorISV_ISG_SaISG_EEENS2_17intersection_infoIS15_S16_S9_S13_S14_EENS2_15side_calculatorIS15_S16_S13_EENS2_26get_turn_info_linear_arealISH_E19turn_transformer_ecILb0EEEEEvRKT_RKT0_RKSG_RT1_RKT2_RKT3_T4_(ptr noundef nonnull align 8 dereferenceable(67) %0, ptr noundef nonnull align 8 dereferenceable(67) %1, ptr noundef nonnull align 8 dereferenceable(216) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, i32 %6) local_unnamed_addr #4 comdat align 2 { %8 = alloca %"struct.boost::geometry::strategy::side::side_by_triangle<>::eps_policy", align 8 %9 = alloca %"struct.boost::geometry::strategy::side::side_by_triangle<>::eps_policy", align 8 - %.sroa.048 = alloca [2 x double], align 8 %.sroa.13 = alloca [20 x i8], align 4 %.sroa.19 = alloca [68 x i8], align 4 %.sroa.21 = alloca [12 x i8], align 8 %.sroa.23 = alloca [3 x i8], align 1 %.sroa.31 = alloca [68 x i8], align 4 %.sroa.33 = alloca [16 x i8], align 8 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.048) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.13) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.19) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.21) @@ -226709,7 +226707,6 @@ _ZNK5boost8geometry6detail7overlay15side_calculatorINS1_9get_turns29unique_sub_r call void @llvm.lifetime.end.p0(ptr nonnull %9) %.132 = select i1 %43, i32 2, i32 1 %44 = getelementptr inbounds nuw i8, ptr %4, i64 88 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.048, ptr noundef nonnull align 8 dereferenceable(16) %44, i64 16, i1 false), !tbaa.struct !1701 %45 = getelementptr inbounds nuw i8, ptr %4, i64 160 %.sroa.19.88..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.19, i64 44 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %.sroa.19.88..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %45, i64 24, i1 false), !tbaa.struct !3231 @@ -226875,13 +226872,12 @@ _ZNK5boost8geometry6detail7overlay15side_calculatorINS1_9get_turns29unique_sub_r _ZNK5boost8geometry6detail7overlay26get_turn_info_linear_arealINS2_18assign_null_policyEE19turn_transformer_ecILb0EEclINS2_9turn_infoINS0_5model5pointIdLm2ENS0_2cs9cartesianEEENS0_13segment_ratioIdEENS2_21turn_operation_linearISE_SG_EESt5arrayISI_Lm2EEEEEEvRT_.exit31: ; preds = %_ZN5boost8geometry4math6detail16equals_by_policyIddNS2_20equals_factor_policyIdLb1EEEEEbRKT_RKT0_RKT1_.exit.i.i18, %88 call void @llvm.lifetime.end.p0(ptr nonnull %8) %94 = getelementptr inbounds nuw i8, ptr %4, i64 72 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.048, ptr noundef nonnull align 8 dereferenceable(16) %94, i64 16, i1 false) %95 = getelementptr inbounds nuw i8, ptr %4, i64 104 %.sroa.19.88..sroa_idx75152 = getelementptr inbounds nuw i8, ptr %.sroa.19, i64 44 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %.sroa.19.88..sroa_idx75152, ptr noundef nonnull align 8 dereferenceable(24) %95, i64 24, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %.sroa.19.88..sroa_idx75152, ptr noundef nonnull align 8 dereferenceable(24) %95, i64 24, i1 false), !tbaa.struct !3231 %96 = getelementptr inbounds nuw i8, ptr %4, i64 128 %.sroa.31.176..sroa_idx109153 = getelementptr inbounds nuw i8, ptr %.sroa.31, i64 44 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %.sroa.31.176..sroa_idx109153, ptr noundef nonnull align 8 dereferenceable(24) %96, i64 24, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %.sroa.31.176..sroa_idx109153, ptr noundef nonnull align 8 dereferenceable(24) %96, i64 24, i1 false), !tbaa.struct !3231 %.sroa.0.0.copyload.i32 = load ptr, ptr %3, align 8 %97 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i32, i64 8 %98 = load ptr, ptr %97, align 8, !tbaa !3020 @@ -226891,7 +226887,7 @@ _ZNK5boost8geometry6detail7overlay26get_turn_info_linear_arealINS2_18assign_null br i1 %.not.i.i33, label %104, label %101 101: ; preds = %_ZNK5boost8geometry6detail7overlay26get_turn_info_linear_arealINS2_18assign_null_policyEE19turn_transformer_ecILb0EEclINS2_9turn_infoINS0_5model5pointIdLm2ENS0_2cs9cartesianEEENS0_13segment_ratioIdEENS2_21turn_operation_linearISE_SG_EESt5arrayISI_Lm2EEEEEEvRT_.exit31 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %98, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.048, i64 16, i1 false), !tbaa.struct !3047 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %98, ptr noundef nonnull align 8 dereferenceable(16) %94, i64 16, i1 false) %.sroa.9.0..sroa_idx53 = getelementptr inbounds nuw i8, ptr %98, i64 16 store i32 %6, ptr %.sroa.9.0..sroa_idx53, align 8, !tbaa !2449 %.sroa.13.0..sroa_idx59 = getelementptr inbounds nuw i8, ptr %98, i64 20 @@ -226941,7 +226937,7 @@ _ZNKSt6vectorIN5boost8geometry6detail7overlay9turn_infoINS1_5model5pointIdLm2ENS %116 = mul nuw nsw i64 %115, 216 %117 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %116) #59 %118 = getelementptr inbounds nuw i8, ptr %117, i64 %108 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %118, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.048, i64 16, i1 false), !tbaa.struct !3047 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %118, ptr noundef nonnull align 8 dereferenceable(16) %94, i64 16, i1 false) %.sroa.9.0..sroa_idx55 = getelementptr inbounds nuw i8, ptr %118, i64 16 store i32 %6, ptr %.sroa.9.0..sroa_idx55, align 8, !tbaa !2449 %.sroa.13.0..sroa_idx60 = getelementptr inbounds nuw i8, ptr %118, i64 20 @@ -226992,7 +226988,6 @@ _ZNSt6vectorIN5boost8geometry6detail7overlay9turn_infoINS1_5model5pointIdLm2ENS1 br label %_ZNSt20back_insert_iteratorISt6vectorIN5boost8geometry6detail7overlay9turn_infoINS2_5model5pointIdLm2ENS2_2cs9cartesianEEENS2_13segment_ratioIdEENS4_21turn_operation_linearISA_SC_EESt5arrayISE_Lm2EEEESaISH_EEEaSERKSH_.exit46 _ZNSt20back_insert_iteratorISt6vectorIN5boost8geometry6detail7overlay9turn_infoINS2_5model5pointIdLm2ENS2_2cs9cartesianEEENS2_13segment_ratioIdEENS4_21turn_operation_linearISA_SC_EESt5arrayISE_Lm2EEEESaISH_EEEaSERKSH_.exit46: ; preds = %_ZNK5boost8geometry6detail7overlay15side_calculatorINS1_9get_turns29unique_sub_range_from_sectionILb0ENS0_7sectionINS0_5model3boxINS7_5pointIdLm2ENS0_2cs9cartesianEEEEELm2EEESC_NS0_22ever_circling_iteratorIN9__gnu_cxx17__normal_iteratorIPKSC_St6vectorISC_SaISC_EEEEEENS0_10strategies6relate9cartesianIvEENS1_17no_rescale_policyEEENS5_ILb1ESE_SC_SO_SS_ST_EESS_E9qk_wrt_q1Ev.exit.thread126, %_ZNSt6vectorIN5boost8geometry6detail7overlay9turn_infoINS1_5model5pointIdLm2ENS1_2cs9cartesianEEENS1_13segment_ratioIdEENS3_21turn_operation_linearIS9_SB_EESt5arrayISD_Lm2EEEESaISG_EE17_M_realloc_insertIJRKSG_EEEvN9__gnu_cxx17__normal_iteratorIPSG_SI_EEDpOT_.exit.i.i45, %101, %_ZNSt20back_insert_iteratorISt6vectorIN5boost8geometry6detail7overlay9turn_infoINS2_5model5pointIdLm2ENS2_2cs9cartesianEEENS2_13segment_ratioIdEENS4_21turn_operation_linearISA_SC_EESt5arrayISE_Lm2EEEESaISH_EEEaSERKSH_.exit - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.048) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.13) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.19) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.21) @@ -247015,14 +247010,12 @@ _ZNSt6vectorIN5boost8geometry6detail7overlay9turn_infoINS1_5model5pointIeLm2ENS1 define linkonce_odr hidden void @_ZN5boost8geometry6detail7overlay18collinear_oppositeINS2_9turn_infoINS0_5model5pointIeLm2ENS0_2cs9cartesianEEENS0_13segment_ratioIeEENS2_21turn_operation_linearIS9_SB_EESt5arrayISD_Lm2EEEENS2_18assign_null_policyEE5applyINS1_9get_turns29unique_sub_range_from_sectionILb0ENS0_7sectionINS5_3boxIS9_EELm2EEES9_NS0_22ever_circling_iteratorIN9__gnu_cxx17__normal_iteratorIPKS9_St6vectorIS9_SaIS9_EEEEEENS0_10strategies6relate9cartesianIvEENS1_17no_rescale_policyEEENSL_ILb1ESP_S9_SZ_S13_S14_EESt20back_insert_iteratorISV_ISG_SaISG_EEENS2_17intersection_infoIS15_S16_S9_S13_S14_EENS2_15side_calculatorIS15_S16_S13_EENS2_26get_turn_info_linear_arealISH_E19turn_transformer_ecILb0EEEEEvRKT_RKT0_RKSG_RT1_RKT2_RKT3_T4_(ptr noundef nonnull align 8 dereferenceable(67) %0, ptr noundef nonnull align 8 dereferenceable(67) %1, ptr noundef nonnull align 16 dereferenceable(320) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 16 dereferenceable(432) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, i32 %6) local_unnamed_addr #4 comdat align 2 { %8 = alloca %"struct.boost::geometry::strategy::side::side_by_triangle<>::eps_policy.1322", align 16 %9 = alloca %"struct.boost::geometry::strategy::side::side_by_triangle<>::eps_policy.1322", align 16 - %.sroa.048 = alloca [2 x x86_fp80], align 16 %.sroa.13 = alloca [28 x i8], align 4 %.sroa.19 = alloca [92 x i8], align 4 %.sroa.21 = alloca [20 x i8], align 16 %.sroa.23 = alloca [11 x i8], align 1 %.sroa.31 = alloca [92 x i8], align 4 %.sroa.33 = alloca [32 x i8], align 16 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.048) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.13) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.19) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.21) @@ -247112,7 +247105,6 @@ _ZNK5boost8geometry6detail7overlay15side_calculatorINS1_9get_turns29unique_sub_r call void @llvm.lifetime.end.p0(ptr nonnull %9) %.132 = select i1 %43, i32 2, i32 1 %44 = getelementptr inbounds nuw i8, ptr %4, i64 112 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.048, ptr noundef nonnull align 16 dereferenceable(32) %44, i64 32, i1 false), !tbaa.struct !3726 %45 = getelementptr inbounds nuw i8, ptr %4, i64 256 %.sroa.19.112..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.19, i64 44 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(48) %.sroa.19.112..sroa_idx, ptr noundef nonnull align 16 dereferenceable(48) %45, i64 48, i1 false), !tbaa.struct !3727 @@ -247278,13 +247270,12 @@ _ZNK5boost8geometry6detail7overlay15side_calculatorINS1_9get_turns29unique_sub_r _ZNK5boost8geometry6detail7overlay26get_turn_info_linear_arealINS2_18assign_null_policyEE19turn_transformer_ecILb0EEclINS2_9turn_infoINS0_5model5pointIeLm2ENS0_2cs9cartesianEEENS0_13segment_ratioIeEENS2_21turn_operation_linearISE_SG_EESt5arrayISI_Lm2EEEEEEvRT_.exit31: ; preds = %_ZN5boost8geometry4math6detail16equals_by_policyIeeNS2_20equals_factor_policyIeLb1EEEEEbRKT_RKT0_RKT1_.exit.i.i18, %88 call void @llvm.lifetime.end.p0(ptr nonnull %8) %94 = getelementptr inbounds nuw i8, ptr %4, i64 80 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.048, ptr noundef nonnull align 16 dereferenceable(32) %94, i64 32, i1 false) %95 = getelementptr inbounds nuw i8, ptr %4, i64 144 %.sroa.19.112..sroa_idx75152 = getelementptr inbounds nuw i8, ptr %.sroa.19, i64 44 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(48) %.sroa.19.112..sroa_idx75152, ptr noundef nonnull align 16 dereferenceable(48) %95, i64 48, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(48) %.sroa.19.112..sroa_idx75152, ptr noundef nonnull align 16 dereferenceable(48) %95, i64 48, i1 false), !tbaa.struct !3727 %96 = getelementptr inbounds nuw i8, ptr %4, i64 192 %.sroa.31.240..sroa_idx109153 = getelementptr inbounds nuw i8, ptr %.sroa.31, i64 44 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(48) %.sroa.31.240..sroa_idx109153, ptr noundef nonnull align 16 dereferenceable(48) %96, i64 48, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(48) %.sroa.31.240..sroa_idx109153, ptr noundef nonnull align 16 dereferenceable(48) %96, i64 48, i1 false), !tbaa.struct !3727 %.sroa.0.0.copyload.i32 = load ptr, ptr %3, align 8 %97 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i32, i64 8 %98 = load ptr, ptr %97, align 8, !tbaa !3513 @@ -247294,7 +247285,7 @@ _ZNK5boost8geometry6detail7overlay26get_turn_info_linear_arealINS2_18assign_null br i1 %.not.i.i33, label %104, label %101 101: ; preds = %_ZNK5boost8geometry6detail7overlay26get_turn_info_linear_arealINS2_18assign_null_policyEE19turn_transformer_ecILb0EEclINS2_9turn_infoINS0_5model5pointIeLm2ENS0_2cs9cartesianEEENS0_13segment_ratioIeEENS2_21turn_operation_linearISE_SG_EESt5arrayISI_Lm2EEEEEEvRT_.exit31 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %98, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.048, i64 32, i1 false), !tbaa.struct !3540 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %98, ptr noundef nonnull align 16 dereferenceable(32) %94, i64 32, i1 false) %.sroa.9.0..sroa_idx53 = getelementptr inbounds nuw i8, ptr %98, i64 32 store i32 %6, ptr %.sroa.9.0..sroa_idx53, align 16, !tbaa !2449 %.sroa.13.0..sroa_idx59 = getelementptr inbounds nuw i8, ptr %98, i64 36 @@ -247344,7 +247335,7 @@ _ZNKSt6vectorIN5boost8geometry6detail7overlay9turn_infoINS1_5model5pointIeLm2ENS %116 = mul nuw nsw i64 %115, 320 %117 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %116) #59 %118 = getelementptr inbounds nuw i8, ptr %117, i64 %108 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %118, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.048, i64 32, i1 false), !tbaa.struct !3540 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %118, ptr noundef nonnull align 16 dereferenceable(32) %94, i64 32, i1 false) %.sroa.9.0..sroa_idx55 = getelementptr inbounds nuw i8, ptr %118, i64 32 store i32 %6, ptr %.sroa.9.0..sroa_idx55, align 16, !tbaa !2449 %.sroa.13.0..sroa_idx60 = getelementptr inbounds nuw i8, ptr %118, i64 36 @@ -247395,7 +247386,6 @@ _ZNSt6vectorIN5boost8geometry6detail7overlay9turn_infoINS1_5model5pointIeLm2ENS1 br label %_ZNSt20back_insert_iteratorISt6vectorIN5boost8geometry6detail7overlay9turn_infoINS2_5model5pointIeLm2ENS2_2cs9cartesianEEENS2_13segment_ratioIeEENS4_21turn_operation_linearISA_SC_EESt5arrayISE_Lm2EEEESaISH_EEEaSERKSH_.exit46 _ZNSt20back_insert_iteratorISt6vectorIN5boost8geometry6detail7overlay9turn_infoINS2_5model5pointIeLm2ENS2_2cs9cartesianEEENS2_13segment_ratioIeEENS4_21turn_operation_linearISA_SC_EESt5arrayISE_Lm2EEEESaISH_EEEaSERKSH_.exit46: ; preds = %_ZNK5boost8geometry6detail7overlay15side_calculatorINS1_9get_turns29unique_sub_range_from_sectionILb0ENS0_7sectionINS0_5model3boxINS7_5pointIeLm2ENS0_2cs9cartesianEEEEELm2EEESC_NS0_22ever_circling_iteratorIN9__gnu_cxx17__normal_iteratorIPKSC_St6vectorISC_SaISC_EEEEEENS0_10strategies6relate9cartesianIvEENS1_17no_rescale_policyEEENS5_ILb1ESE_SC_SO_SS_ST_EESS_E9qk_wrt_q1Ev.exit.thread126, %_ZNSt6vectorIN5boost8geometry6detail7overlay9turn_infoINS1_5model5pointIeLm2ENS1_2cs9cartesianEEENS1_13segment_ratioIeEENS3_21turn_operation_linearIS9_SB_EESt5arrayISD_Lm2EEEESaISG_EE17_M_realloc_insertIJRKSG_EEEvN9__gnu_cxx17__normal_iteratorIPSG_SI_EEDpOT_.exit.i.i45, %101, %_ZNSt20back_insert_iteratorISt6vectorIN5boost8geometry6detail7overlay9turn_infoINS2_5model5pointIeLm2ENS2_2cs9cartesianEEENS2_13segment_ratioIeEENS4_21turn_operation_linearISA_SC_EESt5arrayISE_Lm2EEEESaISH_EEEaSERKSH_.exit - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.048) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.13) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.19) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.21) diff --git a/bench/casadi/optimized/integrator.ll b/bench/casadi/optimized/integrator.ll index f1527402e1a..851b69fd65d 100644 --- a/bench/casadi/optimized/integrator.ll +++ b/bench/casadi/optimized/integrator.ll @@ -9963,24 +9963,17 @@ define void @_ZN6casadi14integrator_outB5cxx11Ev(ptr dead_on_unwind noalias writ br label %_ZN6casadi14integrator_outB5cxx11Ex.exit _ZN6casadi14integrator_outB5cxx11Ex.exit: ; preds = %21, %._crit_edge.i.i24.i, %._crit_edge.i.i20.i, %._crit_edge.i.i16.i, %._crit_edge.i.i12.i, %._crit_edge.i.i8.i, %._crit_edge.i.i4.i, %._crit_edge.i.i.i - %22 = phi i8 [ 0, %21 ], [ 97, %._crit_edge.i.i24.i ], [ 97, %._crit_edge.i.i20.i ], [ 97, %._crit_edge.i.i16.i ], [ 97, %._crit_edge.i.i12.i ], [ 113, %._crit_edge.i.i8.i ], [ 122, %._crit_edge.i.i4.i ], [ 120, %._crit_edge.i.i.i ] + %22 = phi i1 [ true, %21 ], [ false, %._crit_edge.i.i24.i ], [ false, %._crit_edge.i.i20.i ], [ false, %._crit_edge.i.i16.i ], [ false, %._crit_edge.i.i12.i ], [ false, %._crit_edge.i.i8.i ], [ false, %._crit_edge.i.i4.i ], [ false, %._crit_edge.i.i.i ] %23 = phi i64 [ 0, %21 ], [ 5, %._crit_edge.i.i24.i ], [ 5, %._crit_edge.i.i20.i ], [ 6, %._crit_edge.i.i16.i ], [ 6, %._crit_edge.i.i12.i ], [ 2, %._crit_edge.i.i8.i ], [ 2, %._crit_edge.i.i4.i ], [ 2, %._crit_edge.i.i.i ] %24 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %2, i64 %.09 - %25 = load ptr, ptr %24, align 8, !tbaa !11 - switch i64 %23, label %27 [ - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit - i64 1, label %26 - ] + br i1 %cond, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit, label %24 -26: ; preds = %_ZN6casadi14integrator_outB5cxx11Ex.exit - store i8 %22, ptr %25, align 1, !tbaa !13 - br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit - -27: ; preds = %_ZN6casadi14integrator_outB5cxx11Ex.exit - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %25, ptr nonnull align 8 %14, i64 %23, i1 false) +24: ; preds = %_ZN6casadi14integrator_outB5cxx11Ex.exit + %25 = load ptr, ptr %23, align 8, !tbaa !11 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %25, ptr nonnull align 8 %14, i64 %22, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit: ; preds = %_ZN6casadi14integrator_outB5cxx11Ex.exit, %26, %27 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.exit: ; preds = %_ZN6casadi14integrator_outB5cxx11Ex.exit, %24 %28 = load i64, ptr %15, align 8, !tbaa !14 %29 = getelementptr inbounds nuw i8, ptr %24, i64 8 store i64 %28, ptr %29, align 8, !tbaa !14 diff --git a/bench/clamav/optimized/hwp.ll b/bench/clamav/optimized/hwp.ll index c06fc6f937e..aaf984c9392 100644 --- a/bench/clamav/optimized/hwp.ll +++ b/bench/clamav/optimized/hwp.ll @@ -1997,7 +1997,7 @@ define internal i32 @hwpml_binary_cb(i32 noundef %0, ptr noundef %1, ptr noundef %98 = call i32 @cli_magic_scan_desc(i32 noundef %.153121, ptr noundef %1, ptr noundef nonnull %2, ptr noundef null, i32 noundef 0) #10 br label %hwpml_scan_cb.exit -hwpml_scan_cb.exit: ; preds = %97, %96, %93, %92, %87, %72 +hwpml_scan_cb.exit: ; preds = %97, %96, %93, %92, %72, %87 %.155 = phi i32 [ %.256, %87 ], [ 14, %72 ], [ %95, %93 ], [ 2, %92 ], [ %98, %97 ], [ 2, %96 ] %99 = load i32, ptr %7, align 4, !tbaa !26 %.not77 = icmp eq i32 %99, 0 diff --git a/bench/cmake/optimized/archive_read_support_format_cab.ll b/bench/cmake/optimized/archive_read_support_format_cab.ll index da23962dd98..014ac81f905 100644 --- a/bench/cmake/optimized/archive_read_support_format_cab.ll +++ b/bench/cmake/optimized/archive_read_support_format_cab.ll @@ -5143,7 +5143,7 @@ lzx_read_pre_tree.exit320.thread.i.i.i: ; preds = %lzx_read_pre_tree.e %.8318.i.i.i = sub nsw i32 %.7317.i.i.i, %1214 %.8274.i.i.i = select i1 %.not367.i.i.i, i32 %.7273..i.i.i, i32 %.7273.i.i.i %.1262.i.i.i = select i1 %.not367.i.i.i, i32 %.374.i.i.i, i32 10 - switch i32 %.1262.i.i.i, label %lzx_decode_blocks.exit.i.i [ + switch i32 %.1262.i.i.i, label %.unreachabledefault375.i.i.i [ i32 0, label %1179 i32 10, label %.outer.i.i.i.outer i32 7, label %.thread395.i.i.i @@ -5152,6 +5152,7 @@ lzx_read_pre_tree.exit320.thread.i.i.i: ; preds = %lzx_read_pre_tree.e .thread.i30.i.i: ; preds = %1114, %1081, %1039, %982, %1159, %1097 %1215 = getelementptr inbounds nuw i8, ptr %879, i64 540 store i32 -25, ptr %1215, align 4, !tbaa !158 + %.pre838.i.i = load i64, ptr %399, align 8, !tbaa !198 br label %lzx_decode_blocks.exit.i.i .thread395.i.i.i: ; preds = %1113, %.loopexit.i26.i.i, %1038, %944, %.lr.ph.split.us.i.i.i, %.lr.ph.split.i.i.i, %1159, %1097 @@ -5184,10 +5185,13 @@ lzx_read_pre_tree.exit320.thread.i.i.i: ; preds = %lzx_read_pre_tree.e store i64 %1217, ptr %399, align 8, !tbaa !198 br label %lzx_decode_blocks.exit.i.i -lzx_decode_blocks.exit.i.i: ; preds = %.loopexit.i26.i.i, %.thread395.i.i.i, %.thread.i30.i.i, %.preheader._crit_edge.i.i.i - %.0248.i.i.i = phi i32 [ 1, %.preheader._crit_edge.i.i.i ], [ 0, %.thread395.i.i.i ], [ -25, %.thread.i30.i.i ], [ undef, %.loopexit.i26.i.i ] +lzx_decode_blocks.exit.i.i: ; preds = %.loopexit.i26.i.i + unreachable + +lzx_decode_blocks.exit.i.i: ; preds = %.thread396.i.i.i, %.thread.i30.i.i, %.preheader._crit_edge.i.i.i + %1218 = phi i64 [ %977, %.preheader._crit_edge.i.i.i ], [ %1217, %.thread396.i.i.i ], [ %.pre838.i.i, %.thread.i30.i.i ] + %.0248.i.i.i = phi i32 [ 1, %.preheader._crit_edge.i.i.i ], [ 0, %.thread396.i.i.i ], [ -25, %.thread.i30.i.i ] call void @llvm.lifetime.end.p0(ptr nonnull %3) - %1218 = load i64, ptr %399, align 8, !tbaa !198 %1219 = sub nsw i64 %880, %1218 %1220 = load ptr, ptr %398, align 8, !tbaa !199 %1221 = getelementptr inbounds i8, ptr %1220, i64 %1219 diff --git a/bench/cpp-httplib/optimized/httplib.ll b/bench/cpp-httplib/optimized/httplib.ll index 5e88ee08312..81a9a8e81a6 100644 --- a/bench/cpp-httplib/optimized/httplib.ll +++ b/bench/cpp-httplib/optimized/httplib.ll @@ -77081,42 +77081,40 @@ define noundef zeroext i1 @_ZNK7httplib9SSLClient33verify_host_with_subject_alt_ br i1 %15, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %13 - switch i32 %.025, label %.lr.ph.split [ - i32 2, label %.lr.ph.split.us - i32 7, label %.lr.ph.split.us46 - ] - -.lr.ph.split.us: ; preds = %.lr.ph, %27 - %.02743.us = phi i32 [ %28, %27 ], [ 0, %.lr.ph ] - %16 = call ptr @OPENSSL_sk_value(ptr noundef nonnull %12, i32 noundef %.02743.us) - %17 = load i32, ptr %16, align 8, !tbaa !1124 - %18 = icmp eq i32 %17, 2 - br i1 %18, label %19, label %27 - -19: ; preds = %.lr.ph.split.us - %20 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %21 = load ptr, ptr %20, align 8, !tbaa !14 - %22 = call ptr @ASN1_STRING_get0_data(ptr noundef %21) - %23 = load ptr, ptr %20, align 8, !tbaa !14 - %24 = call i32 @ASN1_STRING_length(ptr noundef %23) - %25 = sext i32 %24 to i64 - %26 = call noundef zeroext i1 @_ZNK7httplib9SSLClient15check_host_nameEPKcm(ptr noundef nonnull align 8 dereferenceable(1136) %0, ptr noundef %22, i64 noundef %25) - br label %27 + %16 = icmp eq i32 %.025, 2 + br i1 %16, label %.lr.ph.split.us, label %.lr.ph.split + +.lr.ph.split.us: ; preds = %.lr.ph, %28 + %.02744.us = phi i32 [ %29, %28 ], [ 0, %.lr.ph ] + %17 = call ptr @OPENSSL_sk_value(ptr noundef nonnull %12, i32 noundef %.02744.us) + %18 = load i32, ptr %17, align 8, !tbaa !1124 + %19 = icmp eq i32 %18, 2 + br i1 %19, label %20, label %28 + +20:; preds = %.lr.ph.split.us + %21 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %22 = load ptr, ptr %21, align 8, !tbaa !14 + %23 = call ptr @ASN1_STRING_get0_data(ptr noundef %22) + %21 = load ptr, ptr %21, align 8, !tbaa !14 + %22 = call i32 @ASN1_STRING_length(ptr noundef %21) + %26 = sext i32 %25 to i64 + %24 = call noundef zeroext i1 @_ZNK7httplib9SSLClient15check_host_nameEPKcm(ptr noundef nonnull align 8 dereferenceable(1136) %0, ptr noundef %23, i64 noundef %26) + br label %28 -27: ; preds = %19, %.lr.ph.split.us - %.129.us = phi i1 [ false, %.lr.ph.split.us ], [ %26, %19 ] - %28 = add nuw nsw i32 %.02743.us, 1 +27: ; preds = %20, %.lr.ph.split.us + %.129.us = phi i1 [ false, %.lr.ph.split.us ], [ %27, %20 ] + %28 = add nuw nsw i32 %.02744.us, 1 %29 = icmp sge i32 %28, %14 %.not37.us = or i1 %.129.us, %29 br i1 %.not37.us, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !1126 -.lr.ph.split.us46: ; preds = %.lr.ph, %41 - %.02743.us47 = phi i32 [ %42, %41 ], [ 0, %.lr.ph ] - %.03042.us48 = phi i1 [ %.131.us49, %41 ], [ false, %.lr.ph ] +.lr.ph.split.us46: ; preds = %.lr.ph, %42 + %.02743.us47 = phi i32 [ %43, %42 ], [ 0, %.lr.ph ] + %.03042.us48 = phi i1 [ %.131, %42 ], [ false, %.lr.ph ] %30 = call ptr @OPENSSL_sk_value(ptr noundef nonnull %12, i32 noundef %.02743.us47) %31 = load i32, ptr %30, align 8, !tbaa !1124 - %32 = icmp eq i32 %31, 7 - br i1 %32, label %33, label %41 + %32 = icmp eq i32 %31, %.025 + br i1 %32, label %33, label %42 33: ; preds = %.lr.ph.split.us46 %34 = getelementptr inbounds nuw i8, ptr %30, i64 8 @@ -77126,44 +77124,24 @@ define noundef zeroext i1 @_ZNK7httplib9SSLClient33verify_host_with_subject_alt_ %38 = call i32 @ASN1_STRING_length(ptr noundef %37) %bcmp.us = call i32 @bcmp(ptr nonnull %3, ptr %36, i64 %.026) %.not38.us = icmp eq i32 %bcmp.us, 0 - br i1 %.not38.us, label %40, label %39 - -39: ; preds = %33 - %bcmp39.us = call i32 @bcmp(ptr nonnull %4, ptr %36, i64 %.026) - %.not40.us = icmp eq i32 %bcmp39.us, 0 - br i1 %.not40.us, label %40, label %41 + br i1 %.not38.us, label %41, label %40 -40: ; preds = %39, %33 - br label %41 +41: ; preds = %34 + %bcmp39 = call i32 @bcmp(ptr nonnull %4, ptr %37, i64 %.026) + %.not40 = icmp eq i32 %bcmp39, 0 + br i1 %.not40, label %41, label %52 -41: ; preds = %40, %39, %.lr.ph.split.us46 - %.131.us49 = phi i1 [ %.03042.us48, %.lr.ph.split.us46 ], [ %.03042.us48, %39 ], [ true, %40 ] - %42 = add nuw nsw i32 %.02743.us47, 1 - %exitcond.not = icmp eq i32 %42, %14 - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split.us46, !llvm.loop !1126 - -.lr.ph.split: ; preds = %.lr.ph, %52 - %.02743 = phi i32 [ %53, %52 ], [ 0, %.lr.ph ] - %43 = call ptr @OPENSSL_sk_value(ptr noundef nonnull %12, i32 noundef %.02743) - %44 = load i32, ptr %43, align 8, !tbaa !1124 - %45 = icmp eq i32 %44, %.025 - br i1 %45, label %46, label %52 - -46: ; preds = %.lr.ph.split - %47 = getelementptr inbounds nuw i8, ptr %43, i64 8 - %48 = load ptr, ptr %47, align 8, !tbaa !14 - %49 = call ptr @ASN1_STRING_get0_data(ptr noundef %48) - %50 = load ptr, ptr %47, align 8, !tbaa !14 - %51 = call i32 @ASN1_STRING_length(ptr noundef %50) +41: ; preds = %40, %34 br label %52 -52: ; preds = %46, %.lr.ph.split - %53 = add nuw nsw i32 %.02743, 1 - %exitcond60.not = icmp eq i32 %53, %14 - br i1 %exitcond60.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !1126 +52: ; preds = %41, %40, %.lr.ph.split + %.131 = phi i1 [ %.03042.us48, %.lr.ph.split ], [ %.03043, %40 ], [ true, %41 ] + %43 = add nuw nsw i32 %.02743.us47, 1 + %exitcond.not = icmp eq i32 %43, %14 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !1126 -._crit_edge: ; preds = %41, %27, %52, %13, %11 - %.0 = phi i1 [ false, %11 ], [ false, %13 ], [ false, %52 ], [ %.129.us, %27 ], [ %.131.us49, %41 ] +._crit_edge: ; preds = %42, %27, %13, %11 + %.0 = phi i1 [ false, %11 ], [ false, %13 ], [ %.129.us, %28 ], [ %.131, %42 ] call void @GENERAL_NAMES_free(ptr noundef %12) call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) diff --git a/bench/cvc5/optimized/term_database.ll b/bench/cvc5/optimized/term_database.ll index 1eb3236647d..7fdfdb3bfe4 100644 --- a/bench/cvc5/optimized/term_database.ll +++ b/bench/cvc5/optimized/term_database.ll @@ -8571,7 +8571,7 @@ _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit: ; preds = %_ZN4cvc58internal12 br label %1173 185: ; preds = %.lr.ph1458, %.critedge301.thread - %.sroa.01283.01452 = phi ptr [ %151, %.lr.ph1458 ], [ %1164, %.critedge301.thread ] + %.sroa.01283.01452 = phi ptr [ %151, %.lr.ph1628 ], [ %1164, %.critedge301.thread ] %186 = load ptr, ptr %.sroa.01283.01452, align 8, !tbaa !366 call void @llvm.lifetime.start.p0(ptr nonnull %25) store ptr %186, ptr %25, align 8, !tbaa !123 @@ -9345,7 +9345,7 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit _ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit: ; preds = %503, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.loopexit.split.loop.exit, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.loopexit.split.loop.exit1573, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.loopexit.split.loop.exit1575, %._crit_edge._crit_edge57.i.i.i, %._crit_edge._crit_edge.i.i.i, %523 - %.sroa.08.0.in.sroa.speculated.i.i.i = phi ptr [ %.sroa.032.0.lcssa.i.i.i, %523 ], [ %.sroa.032.1.i.i.i, %._crit_edge._crit_edge.i.i.i ], [ %spec.select.i.i.i, %._crit_edge._crit_edge57.i.i.i ], [ %534, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.loopexit.split.loop.exit ], [ %535, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.loopexit.split.loop.exit1573 ], [ %536, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.loopexit.split.loop.exit1575 ], [ %.sroa.032.051.i.i.i, %503 ] + %.sroa.08.0.in.sroa.speculated.i.i.i = phi ptr [ %.sroa.032.0.lcssa.i.i.i, %523 ], [ %.sroa.032.1.i.i.i, %._crit_edge._crit_edge.i.i.i ], [ %spec.select.i.i.i, %._crit_edge._crit_edge57.i.i.i ], [ %534, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.loopexit.split.loop.exit ], [ %535, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.loopexit.split.loop.exit1743 ], [ %536, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.loopexit.split.loop.exit1745 ], [ %.sroa.032.051.i.i.i, %503 ] %537 = icmp eq ptr %.sroa.08.0.in.sroa.speculated.i.i.i, %496 br i1 %537, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb0EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread, label %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE9push_backERKS3_.exit @@ -10792,7 +10792,6 @@ _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377: ; preds = %1151, %1145, %_ZN switch i32 %.4207, label %.loopexit1358thread-pre-split [ i32 0, label %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377.thread i32 5, label %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377.thread - i32 3, label %.critedge301.thread ] _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377.thread: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit382, %302, %280, %_ZNKSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_bESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS5_.exit.i.i13.i, %.noexc352, %_ZNK4cvc58internal6theory11quantifiers6TermDb14hasTermCurrentERKNS0_12NodeTemplateILb1EEEb.exit, %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377, %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377 @@ -10832,7 +10831,7 @@ _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377.thread: ; preds = %_ZN4cvc58i call void @llvm.lifetime.end.p0(ptr nonnull %31) br label %1173 -.critedge301.thread: ; preds = %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377.thread, %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377, %260, %253 +.critedge301.thread: ; preds = %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit377.thread, %260, %253 %1164 = getelementptr inbounds nuw i8, ptr %.sroa.01283.01452, i64 8 %.not = icmp eq ptr %1164, %153 br i1 %.not, label %.loopexit1358thread-pre-split, label %185 diff --git a/bench/cvc5/optimized/theory_fp.ll b/bench/cvc5/optimized/theory_fp.ll index 61082af8b01..72c6dbaef37 100644 --- a/bench/cvc5/optimized/theory_fp.ll +++ b/bench/cvc5/optimized/theory_fp.ll @@ -16096,8 +16096,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit252: ; preds = %_ZN4cvc58internal1 br label %.body171 864: ; preds = %608, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEEixERS9_.exit188, %626, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit252 - %865 = phi ptr [ %319, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit252 ], [ %319, %626 ], [ %523, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEEixERS9_.exit188 ], [ %319, %608 ] - %.258.ph = phi i32 [ 0, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit252 ], [ 0, %626 ], [ 3, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEEixERS9_.exit188 ], [ 0, %608 ] + %865 = phi ptr [ %319, %608 ], [ %523, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEEixERS9_.exit188 ], [ %319, %626 ], [ %319, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit252 ] %866 = load i64, ptr %865, align 8 %867 = and i64 %866, 1152920405095219200 %.not.i.i253 = icmp eq i64 %867, 1152920405095219200 @@ -16114,7 +16113,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit252: ; preds = %_ZN4cvc58internal1 874: ; preds = %868 invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(24) %865) - to label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255 unwind label %875 + to label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255.thread unwind label %875 875: ; preds = %874 %876 = landingpad { ptr, i32 } @@ -16123,13 +16122,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit252: ; preds = %_ZN4cvc58internal1 call void @__clang_call_terminate(ptr %877) #28 unreachable -_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255: ; preds = %864, %868, %874 - switch i32 %.258.ph, label %_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit [ - i32 0, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255.thread - i32 3, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255.thread - ] - -_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255.thread: ; preds = %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEE4findERS9_.exit, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEEixERS9_.exit, %189, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255 +_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255: ; preds = %874, %868, %864, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEE4findERS9_.exit, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEEixERS9_.exit, %189 %878 = load ptr, ptr %5, align 8, !tbaa !297 %879 = load ptr, ptr %71, align 8, !tbaa !297 %880 = icmp eq ptr %878, %879 @@ -16320,7 +16313,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit273: ; preds = %_ZNSt13unordered_m cleanup br label %.body -_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit: ; preds = %496, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit255, %961, %953, %959 +_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit: ; preds = %496, %961, %953, %959 call void @llvm.lifetime.end.p0(ptr nonnull %7) %970 = load ptr, ptr %56, align 8, !tbaa !685 %.not5.i.i.i.i = icmp eq ptr %970, null diff --git a/bench/darktable/optimized/introspection_temperature.ll b/bench/darktable/optimized/introspection_temperature.ll index 887411f6ca0..2140a5edb36 100644 --- a/bench/darktable/optimized/introspection_temperature.ll +++ b/bench/darktable/optimized/introspection_temperature.ll @@ -145,6 +145,7 @@ target triple = "x86_64-pc-linux-gnu" @.str.108 = private unnamed_addr constant [28 x i8] c"dt_iop_temperature_params_t\00", align 1 @introspection_linear = internal global <{ { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] }, [8 x i8] }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] }, [8 x i8] }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] }, [8 x i8] }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] }, [8 x i8] }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, i32, i32, i32, [4 x i8] }, [8 x i8] }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, i64, ptr }, [8 x i8] }, { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, [24 x i8] } }> <{ { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] }, [8 x i8] } { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] } { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr } { i32 2, [4 x i8] zeroinitializer, ptr @.str.105, ptr @.str.54, ptr @.str.54, ptr @.str.106, i64 4, i64 0, ptr null }, float 0.000000e+00, float 8.000000e+00, float 0.000000e+00, [4 x i8] zeroinitializer }, [8 x i8] zeroinitializer }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] }, [8 x i8] } { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] } { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr } { i32 2, [4 x i8] zeroinitializer, ptr @.str.105, ptr @.str.55, ptr @.str.55, ptr @.str.106, i64 4, i64 4, ptr null }, float 0.000000e+00, float 8.000000e+00, float 0.000000e+00, [4 x i8] zeroinitializer }, [8 x i8] zeroinitializer }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] }, [8 x i8] } { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] } { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr } { i32 2, [4 x i8] zeroinitializer, ptr @.str.105, ptr @.str.56, ptr @.str.56, ptr @.str.106, i64 4, i64 8, ptr null }, float 0.000000e+00, float 8.000000e+00, float 0.000000e+00, [4 x i8] zeroinitializer }, [8 x i8] zeroinitializer }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] }, [8 x i8] } { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, float, float, float, [4 x i8] } { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr } { i32 2, [4 x i8] zeroinitializer, ptr @.str.105, ptr @.str.57, ptr @.str.57, ptr @.str.106, i64 4, i64 12, ptr null }, float 0.000000e+00, float 8.000000e+00, float 0.000000e+00, [4 x i8] zeroinitializer }, [8 x i8] zeroinitializer }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, i32, i32, i32, [4 x i8] }, [8 x i8] } { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, i32, i32, i32, [4 x i8] } { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr } { i32 10, [4 x i8] zeroinitializer, ptr @.str.107, ptr @.str.64, ptr @.str.64, ptr @.str.106, i64 4, i64 16, ptr null }, i32 -2147483648, i32 2147483647, i32 0, [4 x i8] zeroinitializer }, [8 x i8] zeroinitializer }, { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, i64, ptr }, [8 x i8] } { { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, i64, ptr } { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr } { i32 17, [4 x i8] zeroinitializer, ptr @.str.108, ptr @.str.106, ptr @.str.106, ptr @.str.106, i64 20, i64 0, ptr null }, i64 5, ptr null }, [8 x i8] zeroinitializer }, { { i32, [4 x i8], ptr, ptr, ptr, ptr, i64, i64, ptr }, [24 x i8] } zeroinitializer }>, align 16 @switch.table._btn_toggled = private unnamed_addr constant [5 x ptr] [ptr @.str.28, ptr @.str.65, ptr @.str.66, ptr @.str.35, ptr @.str.37], align 8 +@switch.table._btn_toggled = private unnamed_addr constant [5 x ptr] [ptr @.str.28, ptr poison, ptr @.str.66, ptr @.str.35, ptr @.str.37], align 8 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef i32 @dt_module_dt_version() local_unnamed_addr #0 { diff --git a/bench/duckdb/optimized/aes.ll b/bench/duckdb/optimized/aes.ll index 5c827404d8c..d61acf5cc94 100644 --- a/bench/duckdb/optimized/aes.ll +++ b/bench/duckdb/optimized/aes.ll @@ -280,29 +280,17 @@ define hidden range(i32 -32, 1) i32 @mbedtls_aes_setkey_enc(ptr noundef %0, ptr ._crit_edge: ; preds = %.lr.ph, %128 %138 = phi ptr [ %129, %128 ], [ %131, %.lr.ph ] + %.pre129 = load i32, ptr %138, align 4, !tbaa !11 switch i32 %.sink, label %._crit_edge.unreachabledefault [ - i32 10, label %.preheader.preheader - i32 12, label %.preheader102.preheader - i32 14, label %.preheader104.preheader - i32 8, label %.loopexit + i32 10, label %.preheader104.preheader + i32 12, label %.preheader102 + i32 14, label %.preheader104 ] -.preheader104.preheader: ; preds = %._crit_edge - %.pre = load i32, ptr %138, align 4, !tbaa !11 - br label %.preheader104 - -.preheader102.preheader: ; preds = %._crit_edge - %.pre128 = load i32, ptr %138, align 4, !tbaa !11 - br label %.preheader102 - -.preheader.preheader: ; preds = %._crit_edge - %.pre129 = load i32, ptr %138, align 4, !tbaa !11 - br label %.preheader - -.preheader: ; preds = %.preheader.preheader, %.preheader - %139 = phi i32 [ %.pre129, %.preheader.preheader ], [ %173, %.preheader ] - %indvars.iv124 = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next125, %.preheader ] - %.0112 = phi ptr [ %138, %.preheader.preheader ], [ %174, %.preheader ] +.preheader104.preheader: ; preds = %._crit_edge, %.preheader + %139 = phi i32 [ %173, %.preheader ], [ %.pre129, %._crit_edge ] + %indvars.iv124 = phi i64 [ %indvars.iv.next125, %.preheader ], [ 0, %._crit_edge ] + %.0112 = phi ptr [ %174, %.preheader ], [ %138, %._crit_edge ] %140 = getelementptr inbounds nuw i32, ptr @_ZL4RCON, i64 %indvars.iv124 %141 = load i32, ptr %140, align 4, !tbaa !11 %142 = xor i32 %141, %139 @@ -356,10 +344,10 @@ define hidden range(i32 -32, 1) i32 @mbedtls_aes_setkey_enc(ptr noundef %0, ptr %exitcond127.not = icmp eq i64 %indvars.iv.next125, 10 br i1 %exitcond127.not, label %.loopexit, label %.preheader, !llvm.loop !19 -.preheader102: ; preds = %.preheader102.preheader, %.preheader102 - %185 = phi i32 [ %.pre128, %.preheader102.preheader ], [ %219, %.preheader102 ] - %indvars.iv120 = phi i64 [ 0, %.preheader102.preheader ], [ %indvars.iv.next121, %.preheader102 ] - %.1110 = phi ptr [ %138, %.preheader102.preheader ], [ %220, %.preheader102 ] +.preheader102: ; preds = %._crit_edge, %.preheader102 + %185 = phi i32 [ %219, %.preheader102 ], [ %.pre129, %._crit_edge ] + %indvars.iv120 = phi i64 [ %indvars.iv.next121, %.preheader102 ], [ 0, %._crit_edge ] + %.1110 = phi ptr [ %220, %.preheader102 ], [ %138, %._crit_edge ] %186 = getelementptr inbounds nuw i32, ptr @_ZL4RCON, i64 %indvars.iv120 %187 = load i32, ptr %186, align 4, !tbaa !11 %188 = xor i32 %187, %185 @@ -423,10 +411,10 @@ define hidden range(i32 -32, 1) i32 @mbedtls_aes_setkey_enc(ptr noundef %0, ptr %exitcond123.not = icmp eq i64 %indvars.iv.next121, 8 br i1 %exitcond123.not, label %.loopexit, label %.preheader102, !llvm.loop !20 -.preheader104: ; preds = %.preheader104.preheader, %.preheader104 - %239 = phi i32 [ %.pre, %.preheader104.preheader ], [ %273, %.preheader104 ] - %indvars.iv116 = phi i64 [ 0, %.preheader104.preheader ], [ %indvars.iv.next117, %.preheader104 ] - %.2108 = phi ptr [ %138, %.preheader104.preheader ], [ %274, %.preheader104 ] +.preheader104: ; preds = %._crit_edge, %.preheader104 + %239 = phi i32 [ %273, %.preheader104 ], [ %.pre129, %._crit_edge ] + %indvars.iv116 = phi i64 [ %indvars.iv.next117, %.preheader104 ], [ 0, %._crit_edge ] + %.2108 = phi ptr [ %274, %.preheader104 ], [ %138, %._crit_edge ] %240 = getelementptr inbounds nuw i32, ptr @_ZL4RCON, i64 %indvars.iv116 %241 = load i32, ptr %240, align 4, !tbaa !11 %242 = xor i32 %241, %239 @@ -531,8 +519,8 @@ define hidden range(i32 -32, 1) i32 @mbedtls_aes_setkey_enc(ptr noundef %0, ptr ._crit_edge.unreachabledefault: ; preds = %._crit_edge unreachable -.loopexit: ; preds = %.preheader104, %.preheader102, %.preheader, %._crit_edge, %3 - %.0101 = phi i32 [ -32, %3 ], [ 0, %._crit_edge ], [ 0, %.preheader ], [ 0, %.preheader102 ], [ 0, %.preheader104 ] +.loopexit: ; preds = %.preheader104, %.preheader102, %.preheader, %3 + %.0101 = phi i32 [ -32, %3 ], [ 0, %.preheader ], [ 0, %.preheader102 ], [ 0, %.preheader104 ] ret i32 %.0101 } diff --git a/bench/entt/optimized/meta_factory.ll b/bench/entt/optimized/meta_factory.ll index 7dae1e284ac..bcd7b1427cd 100644 --- a/bench/entt/optimized/meta_factory.ll +++ b/bench/entt/optimized/meta_factory.ll @@ -8462,7 +8462,7 @@ _ZNK7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsI unreachable _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; preds = %36, %_ZNK7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8IsSharedEv.exit.i.i, %41, %46 - br i1 %35, label %56, label %.thread + br i1 %35, label %56, label %167 54: ; preds = %34 %55 = landingpad { ptr, i32 } @@ -8473,7 +8473,7 @@ _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIc 56: ; preds = %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit %57 = load ptr, ptr %4, align 8, !tbaa !211 %.not = icmp eq ptr %57, null - br i1 %.not, label %167, label %58 + br i1 %.not, label %.thread, label %58 58: ; preds = %56 %59 = load ptr, ptr %57, align 8, !tbaa !4 @@ -8683,14 +8683,14 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit %159 = getelementptr inbounds nuw i8, ptr %158, i64 8 %160 = load ptr, ptr %159, align 8 call void %160(ptr noundef nonnull align 8 dereferenceable(8) %57) #28 - br label %167 + br label %.thread _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit: ; preds = %79 %161 = load ptr, ptr %57, align 8, !tbaa !4 %162 = getelementptr inbounds nuw i8, ptr %161, i64 8 %163 = load ptr, ptr %162, align 8 call void %163(ptr noundef nonnull align 8 dereferenceable(8) %57) #28 - br label %.thread + br label %167 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit44: ; preds = %151, %64 %.pn21 = phi { ptr, i32 } [ %65, %64 ], [ %.pn19, %151 ] @@ -8700,20 +8700,20 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void %166(ptr noundef nonnull align 8 dereferenceable(8) %57) #28 br label %168 -.thread: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit, %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit +.thread: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit.thread, %56 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %169 + br label %187 -167: ; preds = %56, %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit.thread +167: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit, %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %187 + br label %169 168: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit44, %54 %.pn21.pn = phi { ptr, i32 } [ %.pn21, %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit44 ], [ %55, %54 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %188 -169: ; preds = %.thread, %_ZN4entt12meta_factoryIiE4typeEj.exit +169: ; preds = %167, %_ZN4entt12meta_factoryIiE4typeEj.exit call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -8775,7 +8775,7 @@ _ZN7testing7MessageD2Ev.exit48: ; preds = %182, %_ZNKSt14defau call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %188 -187: ; preds = %167, %_ZN7testing7MessageD2Ev.exit +187: ; preds = %.thread, %_ZN7testing7MessageD2Ev.exit call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) ret void diff --git a/bench/ffmpeg/optimized/dxv.ll b/bench/ffmpeg/optimized/dxv.ll index ba73d66169f..44d14bfaea2 100644 --- a/bench/ffmpeg/optimized/dxv.ll +++ b/bench/ffmpeg/optimized/dxv.ll @@ -441,7 +441,7 @@ bytestream2_get_le32.exit163: ; preds = %123, %122, %78 %195 = sdiv i32 %191, 2 %196 = getelementptr inbounds nuw i8, ptr %6, i64 20 store i32 %195, ptr %196, align 4, !tbaa !59 - switch i32 %.0133, label %247 [ + switch i32 %.0133, label %.unreachabledefault [ i32 1497837872, label %197 i32 1497581366, label %211 i32 1146639409, label %237 @@ -518,7 +518,10 @@ bytestream2_get_le32.exit163: ; preds = %123, %122, %78 %246 = icmp slt i32 %245, 0 br i1 %246, label %.thread, label %247 -247: ; preds = %237, %188 +247: ; preds = %188 + unreachable + +247: ; preds = %237 store i32 1, ptr %2, align 4, !tbaa !61 %248 = load i32, ptr %12, align 8, !tbaa !33 br label %.thread diff --git a/bench/ffmpeg/optimized/sbgdec.ll b/bench/ffmpeg/optimized/sbgdec.ll index b38b9aa668b..586d8e75ec5 100644 --- a/bench/ffmpeg/optimized/sbgdec.ll +++ b/bench/ffmpeg/optimized/sbgdec.ll @@ -2070,7 +2070,7 @@ parse_optarg.exit189.i: ; preds = %203, %197 %230 = phi ptr [ %48, %lex_char.exit.thread.i ], [ %56, %61 ], [ %56, %54 ], [ %48, %lex_char.exit.ithread-pre-split ] %231 = phi ptr [ %49, %lex_char.exit.thread.i ], [ %55, %61 ], [ %55, %54 ], [ %53, %lex_char.exit.ithread-pre-split ] %.076334.i = phi i8 [ %.177.lcssa.i, %lex_char.exit.thread.i ], [ %.076337.i1077, %61 ], [ %.076337.i1077, %54 ], [ %.177.lcssa.i, %lex_char.exit.ithread-pre-split ] - switch i8 %.076334.i, label %parse_options.exit.thread [ + switch i8 %.076334.i, label %.critedge.unreachabledefault.i [ i8 105, label %232 i8 112, label %233 i8 0, label %234 @@ -2139,8 +2139,11 @@ is_space.exit.thread.i.i95: ; preds = %.lr.ph.i.i94, %.lr. %exitcond.not.i.i96 = icmp eq ptr %253, %230 br i1 %exitcond.not.i.i96, label %.loopexit, label %.lr.ph.i.i94, !llvm.loop !161 -parse_options.exit.thread: ; preds = %.critedge.i, %244, %.loopexit261.i, %232, %233, %parse_optarg.exit189.i, %221, %218, %parse_optarg.exit174.i, %196, %193, %parse_optarg.exit159.i, %parse_optarg.exit144.i, %147, %parse_optarg.exit129.i, %125, %parse_optarg.exit.i, %97, %223 - %.0.i.ph = phi i32 [ -1094995529, %223 ], [ -1094995529, %97 ], [ -1094995529, %parse_optarg.exit.i ], [ -1094995529, %125 ], [ -1094995529, %parse_optarg.exit129.i ], [ -1094995529, %147 ], [ -1094995529, %parse_optarg.exit144.i ], [ -1094995529, %parse_optarg.exit159.i ], [ -1094995529, %193 ], [ -1163346256, %196 ], [ -1094995529, %parse_optarg.exit174.i ], [ -1094995529, %218 ], [ -1163346256, %221 ], [ -1094995529, %parse_optarg.exit189.i ], [ -1163346256, %233 ], [ -1163346256, %232 ], [ -12, %.loopexit261.i ], [ -558323010, %.critedge.i ], [ -1094995529, %244 ] +parse_options.exit.thread: ; preds = %.critedge.i + unreachable + +parse_options.exit.thread: ; preds = %244, %.loopexit261.i, %232, %233, %parse_optarg.exit189.i, %221, %218, %parse_optarg.exit174.i, %196, %193, %parse_optarg.exit159.i, %parse_optarg.exit144.i, %147, %parse_optarg.exit129.i, %125, %parse_optarg.exit.i, %97, %223 + %.0.i.ph = phi i32 [ -1094995529, %223 ], [ -1094995529, %97 ], [ -1094995529, %parse_optarg.exit.i ], [ -1094995529, %125 ], [ -1094995529, %parse_optarg.exit129.i ], [ -1094995529, %147 ], [ -1094995529, %parse_optarg.exit144.i ], [ -1094995529, %parse_optarg.exit159.i ], [ -1094995529, %193 ], [ -1163346256, %196 ], [ -1094995529, %parse_optarg.exit174.i ], [ -1094995529, %218 ], [ -1163346256, %221 ], [ -1094995529, %parse_optarg.exit189.i ], [ -1163346256, %233 ], [ -1163346256, %232 ], [ -12, %.loopexit261.i ], [ -1094995529, %244 ] call void @llvm.lifetime.end.p0(ptr nonnull %15) br label %lex_line_end.exit88.thread116 diff --git a/bench/freetype/optimized/ftgzip.ll b/bench/freetype/optimized/ftgzip.ll index c4d059e49fe..43d08c792d1 100644 --- a/bench/freetype/optimized/ftgzip.ll +++ b/bench/freetype/optimized/ftgzip.ll @@ -172,7 +172,7 @@ ft_gzip_get_uncompressed_size.exit: ; preds = %40 br label %76 71: ; preds = %58, %.thread73, %59 - %.sink = phi i64 [ 2147483647, %59 ], [ %spec.store.select.i, %.thread73 ], [ %spec.store.select.i, %58 ] + %.sink = phi i64 [ 2147483647, %59 ], [ %spec.store.select.i, %.thread74 ], [ %spec.store.select.i, %58 ] %72 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink, ptr %72, align 8, !tbaa !31 %73 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -184,7 +184,7 @@ ft_gzip_get_uncompressed_size.exit: ; preds = %40 store ptr @ft_gzip_stream_close, ptr %75, align 8, !tbaa !36 br label %76 -76: ; preds = %7, %37, %71, %8, %60 +76: ; preds = %60, %8, %71, %37, %7 %77 = load i32, ptr %4, align 4, !tbaa !3 call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %77 @@ -263,11 +263,10 @@ define internal fastcc i32 @ft_gzip_check_header(ptr noundef nonnull %0) unnamed %35 = icmp eq i8 %33, 0 %. = select i1 %35, i32 3, i32 0 %.1 = select i1 %.not28, i32 %., i32 2 - switch i32 %.1, label %default.unreachable [ + switch i32 %.1, label %.unreachabledefault [ i32 0, label %.preheader36 i32 3, label %.loopexit37.loopexit i32 2, label %.loopexit - i32 1, label %.loopexit ] .loopexit37.loopexit: ; preds = %.preheader36 @@ -288,9 +287,10 @@ define internal fastcc i32 @ft_gzip_check_header(ptr noundef nonnull %0) unnamed %41 = icmp eq i8 %39, 0 %.33 = select i1 %41, i32 5, i32 0 %.2 = select i1 %.not30, i32 %.33, i32 2 - switch i32 %.2, label %.loopexit [ + switch i32 %.2, label %.unreachabledefault34 [ i32 0, label %.preheader i32 5, label %.loopexit35.loopexit + i32 2, label %.thread ] .loopexit35.loopexit: ; preds = %.preheader @@ -298,8 +298,8 @@ define internal fastcc i32 @ft_gzip_check_header(ptr noundef nonnull %0) unnamed br label %.loopexit35 .loopexit35: ; preds = %.loopexit35.loopexit, %.loopexit37 - %42 = phi i32 [ %40, %.loopexit35.loopexit ], [ %36, %.loopexit37 ] - %43 = phi i8 [ %.pre43, %.loopexit35.loopexit ], [ %37, %.loopexit37 ] + %42 = phi i32 [ %40, %.loopexit.loopexit ], [ %36, %.loopexit37 ] + %43 = phi i8 [ %.pre43, %.loopexit.loopexit ], [ %37, %.loopexit37 ] %44 = and i8 %43, 2 %.not31 = icmp eq i8 %44, 0 br i1 %.not31, label %.loopexit, label %45 @@ -308,14 +308,17 @@ define internal fastcc i32 @ft_gzip_check_header(ptr noundef nonnull %0) unnamed %46 = call i32 @FT_Stream_Skip(ptr noundef nonnull %0, i64 noundef 2) #6 br label %.loopexit -default.unreachable: ; preds = %.preheader36 - unreachable - -.loopexit: ; preds = %.preheader36, %.preheader36, %.preheader, %7, %16, %5, %1, %.loopexit35, %45, %23, %26 - %.0 = phi i32 [ %28, %26 ], [ %25, %23 ], [ %46, %45 ], [ %42, %.loopexit35 ], [ %4, %1 ], [ %6, %5 ], [ 3, %16 ], [ 3, %7 ], [ %40, %.preheader ], [ %34, %.preheader36 ], [ %34, %.preheader36 ] +.loopexit: ; preds = %.preheader36, %.preheader, %7, %16, %26, %23, %45, %.loopexit35, %1, %5 + %.0 = phi i32 [ %28, %26 ], [ %25, %23 ], [ %46, %45 ], [ %42, %.loopexit ], [ %4, %1 ], [ %6, %5 ], [ 3, %16 ], [ 3, %7 ], [ %40, %.preheader ], [ %34, %.preheader36 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 %.0 + +.unreachabledefault: ; preds = %.preheader36 + unreachable + +.unreachabledefault34: ; preds = %.preheader + unreachable } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) diff --git a/bench/freetype/optimized/type42.ll b/bench/freetype/optimized/type42.ll index 7c2506dd974..19997f427e0 100644 --- a/bench/freetype/optimized/type42.ll +++ b/bench/freetype/optimized/type42.ll @@ -961,7 +961,7 @@ T42_Open_Face.exit: ; preds = %t42_loader_done.exi call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %387 -387: ; preds = %T42_Open_Face.exit.thread, %.thread, %T42_Open_Face.exit, %312, %364, %5, %256 +387: ; preds = %T42_Open_Face.exit.thread, %T42_Open_Face.exit, %312, %364, %5, %256, %.thread %.0109 = phi i32 [ 0, %T42_Open_Face.exit ], [ %316, %312 ], [ %.1114, %.thread ], [ 0, %364 ], [ 11, %5 ], [ 6, %256 ], [ %.062.i, %T42_Open_Face.exit.thread ] ret i32 %.0109 } @@ -2387,15 +2387,15 @@ define internal void @t42_parse_sfnts(ptr noundef captures(none) initializes((80 br i1 %29, label %.lr.ph711, label %._crit_edge712 .lr.ph711: ; preds = %.preheader290, %.thread - %30 = phi ptr [ %154, %.thread ], [ %28, %.preheader290 ] - %.0710 = phi i32 [ %.5, %.thread ], [ 0, %.preheader290 ] - %.0143709 = phi i64 [ %.3146, %.thread ], [ 0, %.preheader290 ] - %.0147708 = phi i64 [ %.5152, %.thread ], [ 12, %.preheader290 ] - %.0160707 = phi i64 [ %.4164233, %.thread ], [ 0, %.preheader290 ] - %.0165706 = phi i64 [ %.2167228, %.thread ], [ 0, %.preheader290 ] - %.0168705 = phi i32 [ %.5173, %.thread ], [ 0, %.preheader290 ] - %.1176704 = phi i8 [ %.3178227, %.thread ], [ 0, %.preheader290 ] - %.1181703 = phi ptr [ %.4184226, %.thread ], [ null, %.preheader290 ] + %30 = phi ptr [ %154, %.thread ], [ %28, %.preheader292 ] + %.0710 = phi i32 [ %.5, %.thread ], [ 0, %.preheader292 ] + %.0143709 = phi i64 [ %.3146, %.thread ], [ 0, %.preheader292 ] + %.0147708 = phi i64 [ %.5152, %.thread ], [ 12, %.preheader292 ] + %.0160707 = phi i64 [ %.4164233, %.thread ], [ 0, %.preheader292 ] + %.0165706 = phi i64 [ %.2167228, %.thread ], [ 0, %.preheader292 ] + %.0168705 = phi i32 [ %.5173, %.thread ], [ 0, %.preheader292 ] + %.1176704 = phi i8 [ %.3178227, %.thread ], [ 0, %.preheader292 ] + %.1181703 = phi ptr [ %.4184226, %.thread ], [ null, %.preheader292 ] %31 = load i8, ptr %30, align 1, !tbaa !89 switch i8 %31, label %56 [ i8 93, label %32 @@ -2548,12 +2548,12 @@ select.unfold: ; preds = %81, %79 br label %.lr.ph405 .lr.ph405: ; preds = %.lr.ph405.preheader, %147 - %.2404 = phi i32 [ %.5, %147 ], [ %.0710, %.lr.ph405.preheader ] - %.2145401 = phi i64 [ %.3146, %147 ], [ %.0143709, %.lr.ph405.preheader ] - %.2149400 = phi i64 [ %.5152, %147 ], [ %.0147708, %.lr.ph405.preheader ] - %.0154399 = phi i64 [ %152, %147 ], [ 0, %.lr.ph405.preheader ] - %.2170398 = phi i32 [ %.5173, %147 ], [ %.0168705, %.lr.ph405.preheader ] - switch i32 %.2170398, label %default.unreachable515 [ + %.2404 = phi i32 [ %.5, %147 ], [ %.0710, %.lr.ph416.preheader ] + %.2145401 = phi i64 [ %.3146, %147 ], [ %.0143709, %.lr.ph416.preheader ] + %.2149400 = phi i64 [ %.5152, %147 ], [ %.0147708, %.lr.ph416.preheader ] + %.0154399 = phi i64 [ %152, %147 ], [ 0, %.lr.ph416.preheader ] + %.2170398 = phi i32 [ %.5173, %147 ], [ %.0168705, %.lr.ph416.preheader ] + switch i32 %.2170398, label %default.unreachable526 [ i32 0, label %91 i32 1, label %110 i32 2, label %145 @@ -2591,8 +2591,8 @@ select.unfold: ; preds = %81, %79 br i1 %.not207, label %110, label %.thread..thread250.loopexit412_crit_edge 110: ; preds = %107, %.lr.ph405 - %.3150 = phi i64 [ %105, %107 ], [ %.2149400, %.lr.ph405 ] - %.3 = phi i32 [ %102, %107 ], [ %.2404, %.lr.ph405 ] + %.3150 = phi i64 [ %105, %107 ], [ %.2149400, %.lr.ph416 ] + %.3 = phi i32 [ %102, %107 ], [ %.2404, %.lr.ph416 ] %111 = icmp slt i64 %.2145401, %.3150 br i1 %111, label %147, label %.preheader @@ -2656,8 +2656,8 @@ select.unfold: ; preds = %81, %79 br i1 %.not208, label %145, label %.thread250 145: ; preds = %._crit_edge, %.lr.ph405 - %.4151 = phi i64 [ %.2149400, %.lr.ph405 ], [ %142, %._crit_edge ] - %.4 = phi i32 [ %.2404, %.lr.ph405 ], [ %.3, %._crit_edge ] + %.4151 = phi i64 [ %.2149400, %.lr.ph416 ], [ %142, %._crit_edge ] + %.4 = phi i32 [ %.2404, %.lr.ph416 ], [ %.3, %._crit_edge ] %.not209 = icmp slt i64 %.2145401, %.4151 br i1 %.not209, label %147, label %146 @@ -2691,18 +2691,18 @@ default.unreachable515: ; preds = %.lr.ph405 .thread..thread250.loopexit412_crit_edge: ; preds = %107 %.pre501.pre = load i32, ptr %3, align 4, !tbaa !74 - br label %.thread250, !llvm.loop !268 + br label %.thread250 ._crit_edge712: ; preds = %.thread, %.preheader290 - %.1181.lcssa = phi ptr [ null, %.preheader290 ], [ %.4184226, %.thread ] - %.1176.lcssa = phi i8 [ 0, %.preheader290 ], [ %.3178227, %.thread ] + %.1181.lcssa = phi ptr [ null, %.preheader292 ], [ %.4184226, %.thread ] + %.1176.lcssa = phi i8 [ 0, %.preheader292 ], [ %.3178227, %.thread ] store i32 3, ptr %3, align 4, !tbaa !74 br label %.thread250 .thread250: ; preds = %49, %._crit_edge, %.thread..thread250.loopexit412_crit_edge, %60, %65, %74, %137, %.thread234, %37, %48, %78, %87, %146, %19, %._crit_edge712, %18 - %156 = phi i32 [ 3, %18 ], [ %22, %19 ], [ 3, %._crit_edge712 ], [ 3, %.thread234 ], [ 3, %37 ], [ 3, %48 ], [ 3, %78 ], [ 3, %87 ], [ 3, %146 ], [ 3, %137 ], [ 3, %60 ], [ 3, %65 ], [ 3, %74 ], [ %.pre501.pre, %.thread..thread250.loopexit412_crit_edge ], [ %144, %._crit_edge ], [ %51, %49 ] - %.0180 = phi ptr [ null, %18 ], [ null, %19 ], [ %.1181.lcssa, %._crit_edge712 ], [ %.4184226, %.thread234 ], [ %.1181703, %37 ], [ %.1181703, %48 ], [ null, %78 ], [ %.4184226, %87 ], [ %.4184226, %146 ], [ %.4184226, %137 ], [ %.1181703, %60 ], [ %.1181703, %65 ], [ %71, %74 ], [ %.4184226, %.thread..thread250.loopexit412_crit_edge ], [ %.4184226, %._crit_edge ], [ %50, %49 ] - %.0175 = phi i8 [ 0, %18 ], [ 0, %19 ], [ %.1176.lcssa, %._crit_edge712 ], [ %.3178227, %.thread234 ], [ 0, %37 ], [ %.1176704, %48 ], [ %.3178, %78 ], [ %.3178227, %87 ], [ %.3178227, %146 ], [ %.3178227, %137 ], [ 1, %60 ], [ 0, %65 ], [ 0, %74 ], [ %.3178227, %.thread..thread250.loopexit412_crit_edge ], [ %.3178227, %._crit_edge ], [ %.1176704, %49 ] + %156 = phi i32 [ 3, %18 ], [ %22, %19 ], [ 3, %._crit_edge723 ], [ 3, %.thread234 ], [ 3, %37 ], [ 3, %48 ], [ 3, %78 ], [ 3, %87 ], [ 3, %146 ], [ 3, %137 ], [ 3, %60 ], [ 3, %65 ], [ 3, %74 ], [ %.pre501.pre, %.thread..thread250.loopexit423_crit_edge ], [ %144, %._crit_edge ], [ %51, %49 ] + %.0180 = phi ptr [ null, %18 ], [ null, %19 ], [ %.1181.lcssa, %._crit_edge723 ], [ %.4184226, %.thread234 ], [ %.1181703, %37 ], [ %.1181703, %48 ], [ null, %78 ], [ %.4184226, %87 ], [ %.4184226, %146 ], [ %.4184226, %137 ], [ %.1181703, %60 ], [ %.1181703, %65 ], [ %71, %74 ], [ %.4184226, %.thread..thread250.loopexit423_crit_edge ], [ %.4184226, %._crit_edge ], [ %50, %49 ] + %.0175 = phi i8 [ 0, %18 ], [ 0, %19 ], [ %.1176.lcssa, %._crit_edge723 ], [ %.3178227, %.thread234 ], [ 0, %37 ], [ %.1176704, %48 ], [ %.3178, %78 ], [ %.3178227, %87 ], [ %.3178227, %146 ], [ %.3178227, %137 ], [ 1, %60 ], [ 0, %65 ], [ 0, %74 ], [ %.3178227, %.thread..thread250.loopexit423_crit_edge ], [ %.3178227, %._crit_edge ], [ %.1176704, %49 ] %157 = getelementptr inbounds nuw i8, ptr %1, i64 24 store i32 %156, ptr %157, align 8, !tbaa !87 br label %.thread261 @@ -3068,4 +3068,3 @@ attributes #14 = { nounwind willreturn memory(read) } !265 = !{!72, !6, i64 88} !266 = distinct !{!266, !92} !267 = distinct !{!267, !92} -!268 = distinct !{!268, !92} diff --git a/bench/git/optimized/tree-walk.ll b/bench/git/optimized/tree-walk.ll index 4572e9bf532..cf768bd105e 100644 --- a/bench/git/optimized/tree-walk.ll +++ b/bench/git/optimized/tree-walk.ll @@ -1689,15 +1689,21 @@ define dso_local range(i32 -6, 1) i32 @get_tree_entry_follow_symlinks(ptr nounde %29 = getelementptr inbounds nuw i8, ptr %12, i64 16 %30 = getelementptr inbounds nuw i8, ptr %12, i64 8 %31 = getelementptr inbounds nuw i8, ptr %3, i64 32 + br label %.outer + +.outer: ; preds = %195, %6 + %.0108.ph = phi i32 [ %152, %195 ], [ 40, %6 ] + %.0103.ph = phi i64 [ %.1104, %195 ], [ 0, %6 ] + %.091.ph = phi i64 [ %.192, %195 ], [ 0, %6 ] + %.085.ph = phi ptr [ %.186, %195 ], [ null, %6 ] + %.084.ph = phi i32 [ -4, %195 ], [ -1, %6 ] br label %32 -32: ; preds = %.backedge, %6 - %33 = phi ptr [ null, %6 ], [ %.pre, %.backedge ] - %.0108 = phi i32 [ 40, %6 ], [ %.1109, %.backedge ] - %.0103 = phi i64 [ 0, %6 ], [ %.3106, %.backedge ] - %.091 = phi i64 [ 0, %6 ], [ %.192, %.backedge ] - %.085 = phi ptr [ null, %6 ], [ %.186, %.backedge ] - %.084 = phi i32 [ -1, %6 ], [ %.3, %.backedge ] +32: ; preds = %.backedge, %.outer + %33 = phi i64 [ %.0103.ph, %.outer ], [ %.0103.be, %.backedge ] + %.0108 = phi i64 [ %.091.ph, %.outer ], [ %.192, %.backedge ] + %.0103 = phi ptr [ %.085.ph, %.outer ], [ %.186, %.backedge ] + %33 = load ptr, ptr %21, align 8, !tbaa !35 %.not = icmp eq ptr %33, null br i1 %.not, label %34, label %74 @@ -1795,7 +1801,7 @@ init_tree_desc_internal.exit.i: ; preds = %60, %63 .thread: ; preds = %34, %57, %56 %.2105.ph = phi i64 [ %37, %56 ], [ %.0103, %34 ], [ %37, %57 ] %.287.ph = phi ptr [ %.388, %56 ], [ %.085, %34 ], [ %.388, %57 ] - %.2.ph = phi i32 [ 0, %56 ], [ %.084, %57 ], [ %.084, %34 ] + %.2.ph = phi i32 [ 0, %56 ], [ %.084.ph, %57 ], [ %.084.ph, %34 ] call void @llvm.lifetime.end.p0(ptr nonnull %15) call void @llvm.lifetime.end.p0(ptr nonnull %14) br label %.preheader @@ -1839,7 +1845,7 @@ init_tree_desc_internal.exit.i: ; preds = %60, %63 sub_0: ; preds = %83, %._crit_edge %84 = phi i8 [ %.pre175, %83 ], [ %81, %._crit_edge ] %85 = phi ptr [ %.pre174, %83 ], [ %.lcssa, %._crit_edge ] - switch i8 %84, label %.thread192 [ + switch i8 %84, label %.thread178 [ i8 46, label %sub_1 i8 0, label %125 ] @@ -1873,7 +1879,7 @@ sub_1: ; preds = %sub_0 %96 = load i64, ptr %30, align 8, !tbaa !57 call void @strbuf_add(ptr noundef %4, ptr noundef %95, i64 noundef %96) #15 store i16 0, ptr %5, align 2, !tbaa !93 - br label %.lr.ph160.preheader + br label %.lr.ph155.preheader 97: ; preds = %91 %98 = getelementptr %struct.dir_state, ptr %.186, i64 %.1104 @@ -1975,6 +1981,10 @@ init_tree_desc.exit133: ; preds = %117, %init_tree_des call void @strbuf_remove(ptr noundef nonnull %12, i64 noundef 0, i64 noundef %143) #15 br label %.backedge +.backedge: ; preds = %138, %149, %init_tree_desc.exit134 + %.0103.be = phi i64 [ %101, %init_tree_desc.exit134 ], [ %.1104, %138 ], [ %.1104, %149 ] + br label %32 + 144: ; preds = %131 %145 = icmp slt i16 %132, -28672 br i1 %145, label %146, label %149 @@ -1995,8 +2005,8 @@ init_tree_desc.exit133: ; preds = %117, %init_tree_des 151: ; preds = %149 call void @llvm.lifetime.start.p0(ptr nonnull %16) call void @llvm.lifetime.start.p0(ptr nonnull %17) - %152 = add nsw i32 %.0108, -1 - %153 = icmp eq i32 %.0108, 0 + %152 = add nsw i32 %.0108.ph, -1 + %153 = icmp eq i32 %.0108.ph, 0 br i1 %153, label %.thread147, label %154 154: ; preds = %151 @@ -2096,40 +2106,33 @@ init_tree_desc.exit139: ; preds = %183, %init_tree_des call void @free(ptr noundef nonnull %155) #15 call void @llvm.lifetime.end.p0(ptr nonnull %17) call void @llvm.lifetime.end.p0(ptr nonnull %16) - br label %.backedge - -.backedge: ; preds = %init_tree_desc.exit133, %149, %138, %195 - %.1109 = phi i32 [ %.0108, %init_tree_desc.exit133 ], [ %.0108, %138 ], [ %.0108, %149 ], [ %152, %195 ] - %.3106 = phi i64 [ %101, %init_tree_desc.exit133 ], [ %.1104, %138 ], [ %.1104, %149 ], [ %.1104, %195 ] - %.3 = phi i32 [ %.084, %init_tree_desc.exit133 ], [ %.084, %138 ], [ %.084, %149 ], [ -4, %195 ] - %.pre = load ptr, ptr %21, align 8, !tbaa !35 - br label %32 - -.preheader: ; preds = %.thread192, %125, %136, %146, %147, %.thread, %.thread147 - %.3106.ph = phi i64 [ %.1104, %.thread147 ], [ %.2105.ph, %.thread ], [ %.1104, %147 ], [ %.1104, %146 ], [ %.1104, %136 ], [ %.1104, %125 ], [ %.1104, %.thread192 ] - %.489.ph = phi ptr [ %.186, %.thread147 ], [ %.287.ph, %.thread ], [ %.186, %147 ], [ %.186, %146 ], [ %.186, %136 ], [ %.186, %125 ], [ %.186, %.thread192 ] - %.3.ph = phi i32 [ %.7.ph, %.thread147 ], [ %.2.ph, %.thread ], [ 0, %147 ], [ -6, %146 ], [ 0, %136 ], [ 0, %125 ], [ %.084, %.thread192 ] - %.not164 = icmp eq i64 %.3106.ph, 0 - br i1 %.not164, label %.loopexit, label %.lr.ph160.preheader - -.lr.ph160.preheader: ; preds = %.preheader.thread, %.preheader - %.3.ph210 = phi i32 [ 0, %.preheader.thread ], [ %.3.ph, %.preheader ] - %.489.ph208 = phi ptr [ %.186, %.preheader.thread ], [ %.489.ph, %.preheader ] - %.3106.ph207 = phi i64 [ 1, %.preheader.thread ], [ %.3106.ph, %.preheader ] - br label %.lr.ph160 - -.lr.ph160: ; preds = %.lr.ph160.preheader, %.lr.ph160 - %.0101159 = phi i64 [ %198, %.lr.ph160 ], [ 0, %.lr.ph160.preheader ] - %196 = getelementptr inbounds nuw %struct.dir_state, ptr %.489.ph208, i64 %.0101159 + br label %.outer + +.backedge: ; preds = %.thread192, %125, %136, %146, %147, %.thread, %.thread148 + %.1109 = phi i64 [ %.1104, %.thread148 ], [ %.2105.ph, %.thread ], [ %.1104, %147 ], [ %.1104, %146 ], [ %.1104, %136 ], [ %.1104, %125 ], [ %.1104, %.thread178 ] + %.3106 = phi ptr [ %.186, %.thread148 ], [ %.287.ph, %.thread ], [ %.186, %147 ], [ %.186, %146 ], [ %.186, %136 ], [ %.186, %125 ], [ %.186, %.thread178 ] + %.3 = phi i32 [ %.7.ph, %.thread148 ], [ %.2.ph, %.thread ], [ 0, %147 ], [ -6, %146 ], [ 0, %136 ], [ 0, %125 ], [ %.084.ph, %.thread178 ] + %.not159 = icmp eq i64 %.1109, 0 + br i1 %.not159, label %.loopexit, label %.lr.ph155.backedge + +.preheader: ; preds = %.preheader.thread, %.preheader + %.3106.ph = phi i32 [ 0, %.preheader.thread ], [ %.3.ph, %.preheader ] + %.489.ph = phi ptr [ %.186, %.preheader.thread ], [ %.3106, %.preheader ] + %.3.ph = phi i64 [ 1, %.preheader.thread ], [ %.1109, %.preheader ] + br label %.lr.ph155 + +.lr.ph155: ; preds = %.lr.ph155.preheader, %.lr.ph155 + %.0101154 = phi i64 [ %198, %.lr.ph155 ], [ 0, %.lr.ph155.preheader ] + %196 = getelementptr inbounds nuw %struct.dir_state, ptr %.3106, i64 %.0101154 %197 = load ptr, ptr %196, align 8, !tbaa !96 call void @free(ptr noundef %197) #15 - %198 = add nuw i64 %.0101159, 1 - %exitcond.not = icmp eq i64 %198, %.3106.ph207 - br i1 %exitcond.not, label %.loopexit, label %.lr.ph160, !llvm.loop !100 + %198 = add nuw i64 %.0101154, 1 + %exitcond.not = icmp eq i64 %198, %.3106.ph192 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph155, !llvm.loop !100 -.loopexit: ; preds = %.lr.ph160, %.preheader - %.3.ph211 = phi i32 [ %.3.ph, %.preheader ], [ %.3.ph210, %.lr.ph160 ] - %.489.ph209 = phi ptr [ %.489.ph, %.preheader ], [ %.489.ph208, %.lr.ph160 ] +.loopexit: ; preds = %.lr.ph155, %.preheader + %.3.ph211 = phi i32 [ %.3.ph, %.preheader ], [ %.3.ph195, %.lr.ph155 ] + %.489.ph209 = phi ptr [ %.489.ph, %.preheader ], [ %.489.ph, %.lr.ph155 ] call void @free(ptr noundef %.489.ph209) #15 call void @strbuf_release(ptr noundef nonnull %12) #15 call void @llvm.lifetime.end.p0(ptr nonnull %13) diff --git a/bench/git/optimized/unpack-trees.ll b/bench/git/optimized/unpack-trees.ll index fa16c4f6483..b341a2933e6 100644 --- a/bench/git/optimized/unpack-trees.ll +++ b/bench/git/optimized/unpack-trees.ll @@ -643,8 +643,8 @@ update_sparsity_for_prefix.exit: ; preds = %52, %90 br label %populate_from_existing_patterns.exit populate_from_existing_patterns.exit: ; preds = %.thread302, %105, %104, %98 - %106 = phi ptr [ %97, %.thread302 ], [ %100, %105 ], [ %100, %104 ], [ %100, %98 ] - %.not158.not304 = phi i1 [ false, %.thread302 ], [ true, %105 ], [ true, %104 ], [ false, %98 ] + %106 = phi ptr [ %97, %.thread308 ], [ %100, %105 ], [ %100, %104 ], [ %100, %98 ] + %.not158.not304 = phi i1 [ false, %.thread308 ], [ true, %105 ], [ true, %104 ], [ false, %98 ] %107 = getelementptr inbounds nuw i8, ptr %2, i64 848 %108 = getelementptr inbounds nuw i8, ptr %2, i64 136 %109 = load ptr, ptr %108, align 8, !tbaa !58 @@ -975,13 +975,19 @@ ce_in_traverse_path.exit.thread: ; preds = %247, %242, %do_comp 279: ; preds = %278, %201 %280 = load i32, ptr %2, align 8, !tbaa !119 %.not172 = icmp eq i32 %280, 0 - br i1 %.not172, label %.loopexit, label %.preheader + br i1 %.not172, label %..thread257_crit_edge, label %.preheader + +..thread257_crit_edge: ; preds = %279 + %.pre288 = load ptr, ptr %108, align 8, !tbaa !58 + %.phi.trans.insert289 = getelementptr inbounds nuw i8, ptr %.pre288, i64 12 + %.pre290 = load i32, ptr %.phi.trans.insert289, align 4, !tbaa !94 + br label %.thread257 .preheader: ; preds = %279 %281 = getelementptr i8, ptr %2, i64 240 br label %282 -282: ; preds = %next_cache_entry.exit214.thread, %.preheader +282: ; preds = %.preheader, %next_cache_entry.exit214.thread %.val196 = load ptr, ptr %108, align 8, !tbaa !58 %.val197 = load i32, ptr %281, align 8, !tbaa !109 %283 = getelementptr inbounds nuw i8, ptr %.val196, i64 12 @@ -1008,18 +1014,18 @@ ce_in_traverse_path.exit.thread: ; preds = %247, %242, %do_comp next_cache_entry.exit214.thread: ; preds = %289 %296 = call fastcc i32 @unpack_index_entry(ptr noundef %292, ptr noundef %2) - %297 = icmp sgt i32 %296, -1 - br i1 %297, label %282, label %.loopexit262 - -.loopexit: ; preds = %286, %279 - %298 = load ptr, ptr %108, align 8, !tbaa !58 - %299 = getelementptr inbounds nuw i8, ptr %298, i64 12 - %300 = load i32, ptr %299, align 4, !tbaa !94 - %.not.i215 = icmp eq i32 %300, 0 + %297 = icmp slt i32 %296, 0 + br i1 %297, label %.thread259, label %282 + +.loopexit: ; preds = %286, %..thread257_crit_edge + %298 = phi i32 [ %.pre290, %..thread257_crit_edge ], [ %284, %286 ] + %299 = phi ptr [ %.pre288, %..thread257_crit_edge ], [ %.val196, %286 ] + %300 = getelementptr inbounds nuw i8, ptr %299, i64 12 + %.not.i215 = icmp eq i32 %298, 0 br i1 %.not.i215, label %mark_all_ce_unused.exit220, label %.lr.ph.i216 .lr.ph.i216: ; preds = %.loopexit - %301 = load ptr, ptr %298, align 8, !tbaa !95 + %301 = load ptr, ptr %299, align 8, !tbaa !95 br label %302 302: ; preds = %302, %.lr.ph.i216 @@ -1031,7 +1037,7 @@ next_cache_entry.exit214.thread: ; preds = %289 %307 = and i32 %306, -50855937 store i32 %307, ptr %305, align 8, !tbaa !4 %indvars.iv.next.i218 = add nuw nsw i64 %indvars.iv.i217, 1 - %308 = load i32, ptr %299, align 4, !tbaa !94 + %308 = load i32, ptr %300, align 4, !tbaa !94 %309 = zext i32 %308 to i64 %310 = icmp samesign ult i64 %indvars.iv.next.i218, %309 br i1 %310, label %302, label %mark_all_ce_unused.exit220, !llvm.loop !97 diff --git a/bench/glslang/optimized/hlslParseHelper.ll b/bench/glslang/optimized/hlslParseHelper.ll index bb5420ee132..2527d87f59f 100644 --- a/bench/glslang/optimized/hlslParseHelper.ll +++ b/bench/glslang/optimized/hlslParseHelper.ll @@ -1417,7 +1417,7 @@ $_ZTVN7glslang17TSmallArrayVectorE = comdat any @.str.767 = private unnamed_addr constant [21 x i8] c"basic_string::substr\00", align 1 @switch.table._ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_ = private unnamed_addr constant [5 x ptr] [ptr @.str.451, ptr @.str.449, ptr @.str.452, ptr @.str.450, ptr @.str.453], align 8 @switch.table._ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_.74 = private unnamed_addr constant [4 x ptr] [ptr @.str.5, ptr @.str.501, ptr @.str.502, ptr @.str.503], align 8 -@switch.table._ZN7glslang16HlslParseContext26handleEntryPointAttributesERKNS_10TSourceLocERKNS_5TListINS_14TAttributeArgsEEE.75 = private unnamed_addr constant [9 x ptr] [ptr @.str.666, ptr @.str.454, ptr @.str.454, ptr @.str.669, ptr @.str.670, ptr @.str.454, ptr @.str.454, ptr @.str.673, ptr @.str.674], align 8 +@switch.table._ZN7glslang16HlslParseContext26handleEntryPointAttributesERKNS_10TSourceLocERKNS_5TListINS_14TAttributeArgsEEE.75 = private unnamed_addr constant [5 x ptr] [ptr @.str.670, ptr @.str.454, ptr @.str.454, ptr @.str.673, ptr @.str.674], align 8 @switch.table._ZN7glslang16HlslParseContext26handleEntryPointAttributesERKNS_10TSourceLocERKNS_5TListINS_14TAttributeArgsEEE.76 = private unnamed_addr constant [4 x ptr] [ptr @.str.454, ptr @.str.677, ptr @.str.678, ptr @.str.679], align 8 @switch.table._ZN7glslang16HlslParseContext12declareBlockERKNS_10TSourceLocERNS_5TTypeEPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE = private unnamed_addr constant [4 x i64] [i64 1448, i64 1528, i64 1368, i64 1288], align 8 @switch.table._ZN7glslang16HlslParseContext12declareBlockERKNS_10TSourceLocERNS_5TTypeEPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE.77 = private unnamed_addr constant [4 x i64] [i64 1456, i64 1536, i64 1376, i64 1296], align 8 @@ -24239,8 +24239,8 @@ _ZN7glslang13TIntermediate17setInputPrimitiveENS_15TLayoutGeometryE.exit: ; pred br i1 %161, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit, label %162 162: ; preds = %_ZN7glslang13TIntermediate17setInputPrimitiveENS_15TLayoutGeometryE.exit - %switch.tableidx = add nsw i32 %.039, -1 - %163 = icmp ult i32 %switch.tableidx, 9 + %switch.tableidx = add nsw i32 %.039, -5 + %163 = icmp ult i32 %switch.tableidx, 5 br i1 %163, label %switch.lookup, label %_ZN7glslang10TQualifier17getGeometryStringENS_15TLayoutGeometryE.exit switch.lookup: ; preds = %162 @@ -24272,8 +24272,8 @@ _ZN7glslang13TIntermediate18setOutputPrimitiveENS_15TLayoutGeometryE.exit: ; pre br i1 %171, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit, label %172 172: ; preds = %_ZN7glslang13TIntermediate18setOutputPrimitiveENS_15TLayoutGeometryE.exit - %switch.tableidx221 = add nsw i32 %.039, -1 - %173 = icmp ult i32 %switch.tableidx221, 9 + %switch.tableidx221 = add nsw i32 %.039, -5 + %173 = icmp ult i32 %switch.tableidx221, 5 br i1 %173, label %switch.lookup222, label %_ZN7glslang10TQualifier17getGeometryStringENS_15TLayoutGeometryE.exit65 switch.lookup222: ; preds = %172 diff --git a/bench/graphviz/optimized/exparse.ll b/bench/graphviz/optimized/exparse.ll index 02338436847..265f053371f 100644 --- a/bench/graphviz/optimized/exparse.ll +++ b/bench/graphviz/optimized/exparse.ll @@ -7021,7 +7021,7 @@ agxbputc.exit: ; preds = %.thread35.i, %116 br label %.loopexit164 .loopexit164: ; preds = %62, %62, %62, %.loopexit164.loopexit, %.loopexit366, %.loopexit304 - %.2113 = phi i32 [ 260, %.loopexit304 ], [ 263, %.loopexit366 ], [ 259, %.loopexit164.loopexit ], [ 262, %62 ], [ 262, %62 ], [ 262, %62 ] + %.2113 = phi i32 [ 260, %.loopexit310 ], [ 263, %.loopexit375 ], [ 259, %.loopexit164.loopexit ], [ 262, %62 ], [ 262, %62 ], [ 262, %62 ] %138 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @expr, i64 88), align 8, !tbaa !68 %139 = getelementptr inbounds nuw i8, ptr %138, i64 144 tail call fastcc void @agxbputc(ptr noundef nonnull %139, i8 noundef signext %63) @@ -7070,7 +7070,7 @@ agxbputc.exit: ; preds = %.thread35.i, %116 %154 = load ptr, ptr %153, align 8, !tbaa !27 %155 = getelementptr inbounds nuw i8, ptr %57, i64 40 store ptr %154, ptr %155, align 8, !tbaa !37 - switch i32 %.2113, label %248 [ + switch i32 %.2113, label %.unreachabledefault [ i32 262, label %156 i32 259, label %175 i32 260, label %175 @@ -7198,7 +7198,7 @@ agxbputc.exit: ; preds = %.thread35.i, %116 br label %248 226: ; preds = %._crit_edge287, %207, %204 - %227 = phi ptr [ %.pre288, %._crit_edge287 ], [ %.pre289, %207 ], [ %.pre289, %204 ] + %227 = phi ptr [ %.pre288, %._crit_edge293 ], [ %.pre289, %207 ], [ %.pre289, %204 ] %228 = getelementptr inbounds nuw i8, ptr %227, i64 120 %229 = load ptr, ptr %228, align 8, !tbaa !43 %230 = getelementptr inbounds nuw i8, ptr %229, i64 40 @@ -7242,7 +7242,10 @@ agxbputc.exit: ; preds = %.thread35.i, %116 store ptr %243, ptr %155, align 8, !tbaa !37 br label %248 -248: ; preds = %198, %233, %234, %215, %216, %156, %158, %195, %152 +248: ; preds = %152 + unreachable + +248: ; preds = %198, %233, %234, %215, %216, %156, %158, %195 %249 = getelementptr inbounds nuw i8, ptr %.2, i64 40 %250 = load ptr, ptr %249, align 8, !tbaa !27 br label %251 diff --git a/bench/hdf5/optimized/H5Gdeprec.ll b/bench/hdf5/optimized/H5Gdeprec.ll index 73a875ca457..490b1605c4d 100644 --- a/bench/hdf5/optimized/H5Gdeprec.ll +++ b/bench/hdf5/optimized/H5Gdeprec.ll @@ -430,12 +430,12 @@ define range(i64 -1, -9223372036854775808) i64 @H5Gcreate1(i64 noundef %0, ptr n br i1 %.3, label %.thread109, label %151, !prof !21 .thread109: ; preds = %35, %28, %15, %.thread118, %.thread115, %148 - %.349102113 = phi i64 [ %.248, %148 ], [ -1, %.thread115 ], [ -1, %.thread118 ], [ -1, %15 ], [ -1, %28 ], [ -1, %35 ] + %.349102113 = phi i64 [ %.248, %148 ], [ -1, %.thread116 ], [ -1, %.thread119 ], [ -1, %15 ], [ -1, %28 ], [ -1, %35 ] %150 = call i32 @H5E_dump_api_stack() #6 br label %151 151: ; preds = %148, %.thread109 - %.349102112 = phi i64 [ %.248, %148 ], [ %.349102113, %.thread109 ] + %.349102112 = phi i64 [ %.248, %148 ], [ %.349102113, %.thread110 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i64 %.349102112 @@ -865,7 +865,7 @@ define range(i32 -1, 1) i32 @H5Glink(i64 noundef %0, i32 noundef %1, ptr noundef br label %128 128: ; preds = %117, %125, %.thread58 - %.0 = phi i32 [ -1, %.thread58 ], [ 0, %125 ], [ 0, %117 ] + %.0 = phi i32 [ 0, %125 ], [ -1, %.thread59 ], [ 0, %117 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.0 @@ -1120,7 +1120,7 @@ define range(i32 -1, 1) i32 @H5Glink2(i64 noundef %0, ptr noundef %1, i32 nounde br label %137 137: ; preds = %126, %134, %.thread65 - %.0 = phi i32 [ -1, %.thread65 ], [ 0, %134 ], [ 0, %126 ] + %.0 = phi i32 [ 0, %134 ], [ -1, %.thread66 ], [ 0, %126 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 %.0 @@ -2784,7 +2784,7 @@ define internal range(i32 -1, 1) i32 @H5G__get_objinfo_cb(ptr noundef readonly c %47 = load i64, ptr @H5E_SYM_g, align 8, !tbaa !11 %48 = load i64, ptr @H5E_CANTGET_g, align 8, !tbaa !11 %49 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5G__get_objinfo_cb, i32 noundef 1016, i64 noundef %47, i64 noundef %48, ptr noundef nonnull @.str.54) #6 - br label %.thread + br label %104 50: ; preds = %42 %51 = load ptr, ptr %3, align 8, !tbaa !47 @@ -2796,7 +2796,7 @@ define internal range(i32 -1, 1) i32 @H5G__get_objinfo_cb(ptr noundef readonly c %55 = load i64, ptr @H5E_SYM_g, align 8, !tbaa !11 %56 = load i64, ptr @H5E_CANTGET_g, align 8, !tbaa !11 %57 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5G__get_objinfo_cb, i32 noundef 1018, i64 noundef %55, i64 noundef %56, ptr noundef nonnull @.str.55) #6 - br label %.thread + br label %104 58: ; preds = %50 %59 = getelementptr inbounds nuw i8, ptr %7, i64 24 @@ -2826,12 +2826,6 @@ define internal range(i32 -1, 1) i32 @H5G__get_objinfo_cb(ptr noundef readonly c %79 = load i64, ptr @H5E_SYM_g, align 8, !tbaa !11 %80 = load i64, ptr @H5E_CANTUNSERIALIZE_g, align 8, !tbaa !11 %81 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5G__get_objinfo_cb, i32 noundef 1026, i64 noundef %79, i64 noundef %80, ptr noundef nonnull @.str.56) #6 - br label %.thread - -.thread: ; preds = %46, %54, %78 - call void @llvm.lifetime.end.p0(ptr nonnull %9) - call void @llvm.lifetime.end.p0(ptr nonnull %8) - call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %104 82: ; preds = %58 @@ -2864,18 +2858,22 @@ define internal range(i32 -1, 1) i32 @H5G__get_objinfo_cb(ptr noundef readonly c %102 = load i32, ptr %101, align 8, !tbaa !84 %103 = getelementptr inbounds nuw i8, ptr %24, i64 76 store i32 %102, ptr %103, align 4, !tbaa !85 + br label %104 + +104: ; preds = %82, %78, %54, %46 + %.4 = phi i32 [ -1, %46 ], [ -1, %54 ], [ -1, %78 ], [ 0, %82 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %104 -104: ; preds = %31, %39, %.thread, %82, %23, %19 - %.139 = phi i32 [ -1, %19 ], [ 0, %23 ], [ -1, %31 ], [ 0, %39 ], [ 0, %82 ], [ -1, %.thread ] +104: ; preds = %104, %31, %39, %23, %19 + %.139 = phi i32 [ -1, %19 ], [ 0, %23 ], [ -1, %31 ], [ 0, %39 ], [ %.4, %104 ] store i32 0, ptr %5, align 4, !tbaa !34 br label %105 105: ; preds = %6, %104 - %.037 = phi i32 [ %.139, %104 ], [ 0, %6 ] + %.037 = phi i32 [ %.139, %105 ], [ 0, %6 ] ret i32 %.037 } diff --git a/bench/hdf5/optimized/h5ls.ll b/bench/hdf5/optimized/h5ls.ll index fdf6e1258a0..17e2153c356 100644 --- a/bench/hdf5/optimized/h5ls.ll +++ b/bench/hdf5/optimized/h5ls.ll @@ -3116,7 +3116,7 @@ print_obj_name.exit: ; preds = %27, %28 %34 = call i32 @llvm.smax.i32(i32 %33, i32 0) %35 = call ptr (ptr, ptr, ...) @h5tools_str_append(ptr noundef nonnull %6, ptr noundef nonnull @.str.339, i32 noundef %34, ptr noundef nonnull @.str.50) #20 %36 = load i32, ptr %1, align 8, !tbaa !50 - switch i32 %36, label %.thread86 [ + switch i32 %36, label %.thread [ i32 1, label %37 i32 64, label %93 ] @@ -3221,7 +3221,7 @@ print_obj_name.exit: ; preds = %27, %28 %98 = getelementptr inbounds nuw i8, ptr %5, i64 8 %99 = load ptr, ptr %98, align 8, !tbaa !111 %100 = icmp slt i32 %97, 0 - br i1 %100, label %.thread84, label %101 + br i1 %100, label %.critedge, label %101 101: ; preds = %93 %.b71 = load i1, ptr @no_dangling_link_g, align 1 @@ -3241,7 +3241,7 @@ print_obj_name.exit: ; preds = %27, %28 %109 = load i64, ptr %108, align 8, !tbaa !12 %110 = call i32 @H5Lunpack_elink_val(ptr noundef %99, i64 noundef %109, ptr noundef null, ptr noundef nonnull %8, ptr noundef nonnull %9) #20 %111 = icmp slt i32 %110, 0 - br i1 %111, label %.thread84, label %112 + br i1 %111, label %.critedge, label %112 112: ; preds = %107 %113 = call ptr (ptr, ptr, ...) @h5tools_str_append(ptr noundef nonnull %6, ptr noundef nonnull @.str.365) #20 @@ -3266,7 +3266,7 @@ print_obj_name.exit: ; preds = %27, %28 %126 = load i32, ptr getelementptr inbounds nuw (i8, ptr @ls_dataformat, i64 320), align 8, !tbaa !47 %127 = zext i32 %126 to i64 %128 = call zeroext i1 @h5tools_render_element(ptr noundef %125, ptr noundef nonnull @ls_dataformat, ptr noundef nonnull %7, ptr noundef nonnull %6, ptr noundef nonnull %4, i64 noundef %127, i64 noundef 0, i64 noundef 0) #20 - br i1 %94, label %129, label %162 + br i1 %94, label %129, label %161 129: ; preds = %121 %.b92 = load i1, ptr @grp_literal_g, align 1 @@ -3286,7 +3286,7 @@ print_obj_name.exit: ; preds = %27, %28 %141 = load i32, ptr getelementptr inbounds nuw (i8, ptr @ls_dataformat, i64 320), align 8, !tbaa !47 %142 = zext i32 %141 to i64 %143 = call zeroext i1 @h5tools_render_element(ptr noundef %140, ptr noundef nonnull @ls_dataformat, ptr noundef nonnull %7, ptr noundef nonnull %6, ptr noundef nonnull %4, i64 noundef %142, i64 noundef 0, i64 noundef 0) #20 - br label %.thread84 + br label %.critedge 144: ; preds = %129 %145 = load ptr, ptr @rawoutstream, align 8, !tbaa !26 @@ -3299,7 +3299,7 @@ print_obj_name.exit: ; preds = %27, %28 %152 = load ptr, ptr %9, align 8, !tbaa !19 %153 = call i32 @symlink_visit_add(ptr noundef %149, i32 noundef %150, ptr noundef %151, ptr noundef %152) #20 %154 = icmp slt i32 %153, 0 - br i1 %154, label %.thread84, label %155 + br i1 %154, label %.critedge, label %155 155: ; preds = %144 %156 = getelementptr inbounds nuw i8, ptr %2, i64 24 @@ -3311,28 +3311,22 @@ print_obj_name.exit: ; preds = %27, %28 store i1 true, ptr @grp_literal_g, align 1 br label %158 -158: ; preds = %155, %157 +158: ; preds = %157, %155 %159 = load i64, ptr %95, align 8, !tbaa !40 %160 = call fastcc i32 @visit_obj(i64 noundef %159, ptr noundef %0, ptr noundef nonnull %2) - %161 = icmp sgt i32 %160, -1 - store i1 %.b92, ptr @grp_literal_g, align 1 - br i1 %161, label %.thread84, label %165 - -162: ; preds = %121 - %163 = load ptr, ptr @rawoutstream, align 8, !tbaa !26 - %.not77 = icmp eq ptr %163, null - br i1 %.not77, label %.thread84, label %164 + store i1 %.b86, ptr @grp_literal_g, align 1 + br label %165 -164: ; preds = %162 - %fputc = call i32 @fputc(i32 10, ptr nonnull %163) - br label %.thread84 +164: ; preds = %121 + %162 = load ptr, ptr @rawoutstream, align 8, !tbaa !26 + %.not77 = icmp eq ptr %162, null + br i1 %.not77, label %.critedge, label %163 -.thread84: ; preds = %93, %107, %138, %144, %162, %164, %158 - call void @llvm.lifetime.end.p0(ptr nonnull %9) - call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %select.unfold +.thread84: ; preds = %161 + %fputc = call i32 @fputc(i32 10, ptr nonnull %162) + br label %165 -165: ; preds = %158 +165: ; preds = %158, %138, %144, %163, %161, %107, %93 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %select.unfold @@ -3346,8 +3340,8 @@ print_obj_name.exit: ; preds = %27, %28 call void @h5tools_str_close(ptr noundef nonnull %6) #20 br label %172 -select.unfold: ; preds = %165, %83, %.thread84, %65, %71, %86, %37 - %.0 = phi ptr [ %42, %37 ], [ %42, %86 ], [ %99, %165 ], [ %42, %71 ], [ %42, %65 ], [ %99, %.thread84 ], [ %42, %83 ] +select.unfold: ; preds = %165, %65, %71, %83, %86, %37 + %.0 = phi ptr [ %42, %37 ], [ %42, %86 ], [ %99, %.critedge ], [ %42, %83 ], [ %42, %71 ], [ %42, %65 ] call void @h5tools_str_close(ptr noundef nonnull %6) #20 %.not78 = icmp eq ptr %.0, null br i1 %.not78, label %172, label %171 diff --git a/bench/hermes/optimized/ConvertUTF.ll b/bench/hermes/optimized/ConvertUTF.ll index 84739dc2d34..4b1bf30b3b3 100644 --- a/bench/hermes/optimized/ConvertUTF.ll +++ b/bench/hermes/optimized/ConvertUTF.ll @@ -307,7 +307,7 @@ if.end46.us: ; preds = %if.else36.us, %if.e br i1 %cmp48.us, label %while.end, label %if.end53.us if.end53.us: ; preds = %if.end46.us - switch i16 %bytesToWrite.0.us, label %default.unreachable213 [ + switch i16 %bytesToWrite.0.us, label %if.end53.us.unreachabledefault [ i16 4, label %sw.bb.us i16 3, label %sw.bb57.us i16 2, label %sw.bb63.us @@ -358,6 +358,12 @@ sw.bb69.us: ; preds = %sw.bb63.us, %if.end %cmp.us = icmp ult ptr %source.252.us, %sourceEnd br i1 %cmp.us, label %while.body.us, label %while.end, !llvm.loop !7 +if.end53.us.unreachabledefault: ; preds = %if.end53.us + unreachable + +default.unreachable: ; preds = %if.end53.us124 + unreachable + while.body.us90: ; preds = %while.body.lr.ph, %sw.bb69.us141 %source.063.us91 = phi ptr [ %source.252.us118, %sw.bb69.us141 ], [ %0, %while.body.lr.ph ] %target.061.us92 = phi ptr [ %add.ptr76.us147, %sw.bb69.us141 ], [ %1, %while.body.lr.ph ] @@ -413,7 +419,7 @@ if.end46.us117: ; preds = %if.else36.us112, %i br i1 %cmp48.us123, label %while.end, label %if.end53.us124 if.end53.us124: ; preds = %if.end46.us117 - switch i16 %bytesToWrite.0.us120, label %default.unreachable213 [ + switch i16 %bytesToWrite.0.us120, label %default.unreachable [ i16 4, label %sw.bb.us125 i16 3, label %sw.bb57.us129 i16 2, label %sw.bb63.us135 @@ -464,9 +470,6 @@ sw.bb69.us141: ; preds = %sw.bb63.us135, %if. %cmp.us148 = icmp ult ptr %source.252.us118, %sourceEnd br i1 %cmp.us148, label %while.body.us90, label %while.end, !llvm.loop !7 -default.unreachable213: ; preds = %if.end53.us, %if.end53.us124 - unreachable - while.end: ; preds = %sw.bb69.us, %if.then.us, %if.end46.us, %sw.bb69.us141, %if.then4.us103, %if.then.us101, %while.body.us90, %if.end46.us117, %entry %target.0.lcssa = phi ptr [ %1, %entry ], [ %target.061.us92, %if.end46.us117 ], [ %target.061.us92, %while.body.us90 ], [ %target.061.us92, %if.then.us101 ], [ %target.061.us92, %if.then4.us103 ], [ %add.ptr76.us147, %sw.bb69.us141 ], [ %target.061.us, %if.end46.us ], [ %target.061.us, %if.then.us ], [ %add.ptr76.us, %sw.bb69.us ] %source.0.lcssa = phi ptr [ %0, %entry ], [ %source.063.us91, %if.end46.us117 ], [ %source.063.us91, %while.body.us90 ], [ %source.063.us91, %if.then.us101 ], [ %source.063.us91, %if.then4.us103 ], [ %source.252.us118, %sw.bb69.us141 ], [ %source.063.us, %if.end46.us ], [ %source.063.us, %if.then.us ], [ %source.252.us, %sw.bb69.us ] @@ -522,7 +525,7 @@ if.end21.us: ; preds = %if.else14.us, %if.e br i1 %cmp22.us, label %while.end, label %if.end28.us if.end28.us: ; preds = %if.end21.us - switch i16 %bytesToWrite.0.us, label %default.unreachable61 [ + switch i16 %bytesToWrite.0.us, label %if.end28.us.unreachabledefault [ i16 4, label %sw.bb.us i16 3, label %sw.bb32.us i16 2, label %sw.bb38.us @@ -573,6 +576,12 @@ sw.bb44.us: ; preds = %sw.bb38.us, %if.end %cmp.us = icmp ult ptr %incdec.ptr.us, %sourceEnd br i1 %cmp.us, label %while.body.us, label %while.end, !llvm.loop !8 +if.end28.us.unreachabledefault: ; preds = %if.end28.us + unreachable + +default.unreachable: ; preds = %if.end28 + unreachable + while.body: ; preds = %while.body.lr.ph, %sw.bb44 %result.038 = phi i32 [ %result.2, %sw.bb44 ], [ 0, %while.body.lr.ph ] %source.037 = phi ptr [ %incdec.ptr, %sw.bb44 ], [ %0, %while.body.lr.ph ] @@ -612,7 +621,7 @@ if.end21: ; preds = %if.else14, %if.else br i1 %cmp22, label %while.end, label %if.end28 if.end28: ; preds = %if.end21 - switch i16 %bytesToWrite.0, label %default.unreachable61 [ + switch i16 %bytesToWrite.0, label %default.unreachable [ i16 4, label %sw.bb i16 3, label %sw.bb32 i16 2, label %sw.bb38 @@ -663,9 +672,6 @@ sw.bb44: ; preds = %sw.bb38, %if.end28 %cmp = icmp ult ptr %incdec.ptr, %sourceEnd br i1 %cmp, label %while.body, label %while.end, !llvm.loop !8 -default.unreachable61: ; preds = %if.end28.us, %if.end28 - unreachable - while.end: ; preds = %sw.bb44.us, %if.end21.us, %sw.bb44, %while.body, %if.end21, %entry %target.0.lcssa = phi ptr [ %1, %entry ], [ %target.036, %if.end21 ], [ %target.036, %while.body ], [ %add.ptr51, %sw.bb44 ], [ %target.036.us, %if.end21.us ], [ %add.ptr51.us, %sw.bb44.us ] %source.0.lcssa = phi ptr [ %0, %entry ], [ %source.037, %if.end21 ], [ %source.037, %while.body ], [ %incdec.ptr, %sw.bb44 ], [ %source.037.us, %if.end21.us ], [ %incdec.ptr.us, %sw.bb44.us ] diff --git a/bench/hwloc/optimized/bitmap.ll b/bench/hwloc/optimized/bitmap.ll index 748a8db2395..04231ba60b0 100644 --- a/bench/hwloc/optimized/bitmap.ll +++ b/bench/hwloc/optimized/bitmap.ll @@ -518,7 +518,7 @@ define range(i32 -1, -2147483648) i32 @hwloc_bitmap_asprintf(ptr noundef writeon } ; Function Attrs: nounwind uwtable -define i32 @hwloc_bitmap_sscanf(ptr noundef captures(none) %0, ptr noalias noundef %1) local_unnamed_addr #4 { +define range(i32 -1, 1) i32 @hwloc_bitmap_sscanf(ptr noundef captures(none) %0, ptr noalias noundef %1) local_unnamed_addr #4 { %3 = alloca ptr, align 8 br label %4 @@ -710,7 +710,6 @@ hwloc_flsl_manual.exit.i.i: ; preds = %35, %31 i32 0, label %64 i32 8, label %86 i32 9, label %87 - i32 1, label %hwloc_bitmap_reset_by_ulongs.exit.thread ], !llvm.loop !25 86: ; preds = %80, %64 @@ -757,8 +756,8 @@ hwloc_bitmap_zero.exit: ; preds = %hwloc_bitmap_reset_ .unreachabledefault: ; preds = %80 unreachable -hwloc_bitmap_reset_by_ulongs.exit.thread: ; preds = %80, %54, %hwloc_bitmap_zero.exit, %86, %hwloc_bitmap_fill.exit - %.0 = phi i32 [ 0, %86 ], [ -1, %hwloc_bitmap_zero.exit ], [ 0, %hwloc_bitmap_fill.exit ], [ -1, %54 ], [ undef, %80 ] +hwloc_bitmap_reset_by_ulongs.exit.thread: ; preds = %54, %hwloc_bitmap_zero.exit, %86, %hwloc_bitmap_fill.exit + %.0 = phi i32 [ 0, %86 ], [ -1, %hwloc_bitmap_zero.exit ], [ 0, %hwloc_bitmap_fill.exit ], [ -1, %54 ] ret i32 %.0 } diff --git a/bench/hyperscan/optimized/ng_literal_analysis.ll b/bench/hyperscan/optimized/ng_literal_analysis.ll index f520ed09466..48c70543a52 100644 --- a/bench/hyperscan/optimized/ng_literal_analysis.ll +++ b/bench/hyperscan/optimized/ng_literal_analysis.ll @@ -5491,7 +5491,6 @@ _ZNSt6vectorIN3ue211ue2_literalESaIS1_EE12emplace_backIJRKNSt7__cxx1112basic_str to label %.preheader unwind label %111, !llvm.loop !197 117: ; preds = %_ZNSt6vectorIN3ue211ue2_literalESaIS1_EE12emplace_backIJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEEEvDpOT_.exit, %_ZN3ue29case_iterD2Ev.exit - %.0 = phi i32 [ 4, %_ZN3ue29case_iterD2Ev.exit ], [ 7, %_ZNSt6vectorIN3ue211ue2_literalESaIS1_EE12emplace_backIJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbEEEvDpOT_.exit ] %118 = load ptr, ptr %21, align 8 %.not.i.i.i27 = icmp eq ptr %118, null br i1 %.not.i.i.i27, label %_ZNSt13_Bvector_baseISaIbEED2Ev.exit.i31, label %119 @@ -5532,10 +5531,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1. _ZN3ue29case_iterD2Ev.exit37: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i34 call void @llvm.lifetime.end.p0(ptr nonnull %5) - switch i32 %.0, label %_ZN3ue26insertISt6vectorINS_11ue2_literalESaIS2_EES4_EEvPT_NS5_8iteratorERKT0_.exit [ - i32 4, label %133 - i32 7, label %144 - ] + br i1 %78, label %144, label %133 131: ; preds = %113, %111, %96 %.pn = phi { ptr, i32 } [ %112, %111 ], [ %114, %113 ], [ %97, %96 ] @@ -5576,7 +5572,7 @@ _ZN3ue29case_iterD2Ev.exit37: ; preds = %_ZNSt7__cxx1112basi 148: ; preds = %145 invoke void @_ZN3ue211ue2_literalC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %146, ptr noundef nonnull align 8 dereferenceable(64) %3) - to label %.noexc40 unwind label %142 + to label %.noexc41 unwind label %142 .noexc40: ; preds = %148 %149 = load ptr, ptr %26, align 8 @@ -5588,7 +5584,7 @@ _ZN3ue29case_iterD2Ev.exit37: ; preds = %_ZNSt7__cxx1112basi invoke void @_ZNSt6vectorIN3ue211ue2_literalESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %146, ptr noundef nonnull align 8 dereferenceable(64) %3) to label %_ZN3ue26insertISt6vectorINS_11ue2_literalESaIS2_EES4_EEvPT_NS5_8iteratorERKT0_.exit unwind label %142 -_ZN3ue26insertISt6vectorINS_11ue2_literalESaIS2_EES4_EEvPT_NS5_8iteratorERKT0_.exit: ; preds = %.noexc40, %151, %133, %_ZN3ue29case_iterD2Ev.exit37 +_ZN3ue26insertISt6vectorINS_11ue2_literalESaIS2_EES4_EEvPT_NS5_8iteratorERKT0_.exit: ; preds = %.noexc40, %151, %133 %152 = load ptr, ptr %4, align 8 %153 = load ptr, ptr %19, align 8 %.not4.i.i.i.i = icmp eq ptr %152, %153 @@ -5683,7 +5679,7 @@ _ZN3ue26insertISt3setINS_11ue2_literalESt4lessIS2_ESaIS2_EESt6vectorIS2_S5_EEEvP br i1 %.not4.i.i.i.i46, label %_ZSt8_DestroyIPN3ue211ue2_literalES1_EvT_S3_RSaIT0_E.exit.i56, label %.lr.ph.i.i.i.i47 .lr.ph.i.i.i.i47: ; preds = %170, %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i52 - %.05.i.i.i.i48 = phi ptr [ %179, %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i52 ], [ %171, %170 ] + %.05.i.i.i.i48 = phi ptr [ %179, %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i53 ], [ %171, %170 ] %173 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i48, i64 32 %174 = load ptr, ptr %173, align 8 %.not.i.i.i.i.i.i.i.i.i.i49 = icmp eq ptr %174, null @@ -5713,7 +5709,7 @@ _ZSt8_DestroyIPN3ue211ue2_literalES1_EvT_S3_RSaIT0_E.exitthread-pre-split.i54: ; br label %_ZSt8_DestroyIPN3ue211ue2_literalES1_EvT_S3_RSaIT0_E.exit.i56 _ZSt8_DestroyIPN3ue211ue2_literalES1_EvT_S3_RSaIT0_E.exit.i56: ; preds = %_ZSt8_DestroyIPN3ue211ue2_literalES1_EvT_S3_RSaIT0_E.exitthread-pre-split.i54, %170 - %180 = phi ptr [ %.pr.i55, %_ZSt8_DestroyIPN3ue211ue2_literalES1_EvT_S3_RSaIT0_E.exitthread-pre-split.i54 ], [ %171, %170 ] + %180 = phi ptr [ %.pr.i55, %_ZSt8_DestroyIPN3ue211ue2_literalES1_EvT_S3_RSaIT0_E.exitthread-pre-split.i55 ], [ %171, %170 ] %.not.i.i.i57 = icmp eq ptr %180, null br i1 %.not.i.i.i57, label %_ZNSt6vectorIN3ue211ue2_literalESaIS1_EED2Ev.exit59, label %181 diff --git a/bench/icu/optimized/parse.ll b/bench/icu/optimized/parse.ll index 469f61abce5..ed5acef300e 100644 --- a/bench/icu/optimized/parse.ll +++ b/bench/icu/optimized/parse.ll @@ -5753,39 +5753,34 @@ _ZL22writeCollationDataTOMLPKcS0_S0_PKN6icu_7713CollationDataEaiP10UErrorCode.ex %282 = select i1 %281, i32 24, i32 25 %283 = select i1 %280, i32 16, i32 %282 switch i32 %283, label %.unreachabledefault [ - i32 16, label %289 + i32 16, label %288 i32 25, label %284 i32 24, label %286 - i32 17, label %288 ] 284: ; preds = %271 %285 = or i32 %.5, 1536 - br label %289 + br label %288 286: ; preds = %271 %287 = or i32 %.5, 512 - br label %289 + br label %288 .unreachabledefault: ; preds = %271 unreachable -288: ; preds = %271 - store i32 5, ptr %5, align 4, !tbaa !14 - br label %_ZL26writeCollationMetadataTOMLPKcS0_S0_jP10UErrorCode.exit - -289: ; preds = %271, %286, %284 +288: ; preds = %286, %284, %271 %.6 = phi i32 [ %.5, %271 ], [ %285, %284 ], [ %287, %286 ] %290 = call fastcc noundef ptr @_ZL8openTOMLPKcS0_S0_S0_P10UErrorCode(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull @.str.93, ptr noundef %5) %.not.i140 = icmp eq ptr %290, null br i1 %.not.i140, label %_ZL26writeCollationMetadataTOMLPKcS0_S0_jP10UErrorCode.exit, label %291 -291: ; preds = %289 +291: ; preds = %288 %292 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %290, ptr noundef nonnull @.str.94, i32 noundef %.6) #21 %293 = call i32 @fclose(ptr noundef nonnull %290) br label %_ZL26writeCollationMetadataTOMLPKcS0_S0_jP10UErrorCode.exit -_ZL26writeCollationMetadataTOMLPKcS0_S0_jP10UErrorCode.exit: ; preds = %291, %289, %124, %269, %288, %_ZL22writeCollationDataTOMLPKcS0_S0_PKN6icu_7713CollationDataEaiP10UErrorCode.exit, %_ZL28writeCollationReorderingTOMLPKcS0_S0_PKN6icu_7717CollationSettingsEP10UErrorCode.exit, %_ZL34writeCollationSpecialPrimariesTOMLPKcS0_S0_PKN6icu_7713CollationDataEP10UErrorCode.exit, %_ZL22writeCollationJamoTOMLPKcS0_S0_PKN6icu_7713CollationDataEP10UErrorCode.exit, %23 +_ZL26writeCollationMetadataTOMLPKcS0_S0_jP10UErrorCode.exit: ; preds = %291, %288, %124, %269, %_ZL22writeCollationDataTOMLPKcS0_S0_PKN6icu_7713CollationDataEaiP10UErrorCode.exit, %_ZL28writeCollationReorderingTOMLPKcS0_S0_PKN6icu_7717CollationSettingsEP10UErrorCode.exit, %_ZL34writeCollationSpecialPrimariesTOMLPKcS0_S0_PKN6icu_7713CollationDataEP10UErrorCode.exit, %_ZL22writeCollationJamoTOMLPKcS0_S0_PKN6icu_7713CollationDataEP10UErrorCode.exit, %23 ret void } diff --git a/bench/icu/optimized/tridpars.ll b/bench/icu/optimized/tridpars.ll index e4f935ce1c6..2ed8b70c734 100644 --- a/bench/icu/optimized/tridpars.ll +++ b/bench/icu/optimized/tridpars.ll @@ -1098,7 +1098,7 @@ define noundef ptr @_ZN6icu_7722TransliteratorIDParser13parseFilterIDERKNS_13Uni br i1 %37, label %.thread85, label %38 38: ; preds = %30 - switch i16 %.056.ph.us.us, label %43 [ + switch i16 %.056.ph.us.us, label %.unreachabledefault [ i16 0, label %40 i16 45, label %39 i16 47, label %.invoke @@ -1115,7 +1115,7 @@ define noundef ptr @_ZN6icu_7722TransliteratorIDParser13parseFilterIDERKNS_13Uni %42 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7713UnicodeStringaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %41, ptr noundef nonnull align 8 dereferenceable(64) %12) to label %43 unwind label %.split116.us -43: ; preds = %.invoke, %38 +43: ; preds = %.invoke %44 = add nuw nsw i32 %.054.ph.ph.us, 1 call void @_ZN6icu_7713UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %12) #12 call void @llvm.lifetime.end.p0(ptr nonnull %12) @@ -1401,7 +1401,7 @@ _ZNK6icu_7713UnicodeString6charAtEi.exit.thread.split: ; preds = %125, %_ZNK6icu br label %176 169: ; preds = %158 - switch i16 %.056.ph, label %174 [ + switch i16 %.056.ph, label %.unreachabledefault [ i16 0, label %.invoke159 i16 45, label %170 i16 47, label %171 @@ -1418,7 +1418,10 @@ _ZNK6icu_7713UnicodeString6charAtEi.exit.thread.split: ; preds = %125, %_ZNK6icu %173 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7713UnicodeStringaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %172, ptr noundef nonnull align 8 dereferenceable(64) %12) to label %174 unwind label %.split116 -174: ; preds = %.invoke159, %169 +174: ; preds = %169, %38 + unreachable + +174: ; preds = %.invoke161 %175 = add nuw nsw i32 %.054.ph.ph, 1 call void @_ZN6icu_7713UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %12) #12 call void @llvm.lifetime.end.p0(ptr nonnull %12) diff --git a/bench/jemalloc/optimized/extent.ll b/bench/jemalloc/optimized/extent.ll index 334423d3cb5..7616b63959f 100644 --- a/bench/jemalloc/optimized/extent.ll +++ b/bench/jemalloc/optimized/extent.ll @@ -1190,7 +1190,7 @@ select.unfold: ; preds = %41 tail call void @je_emap_deregister_boundary(ptr noundef %0, ptr noundef %.val, ptr noundef nonnull %.033) #9 br label %.thread46 -.thread46: ; preds = %32, %30, %52, %51 +.thread46: ; preds = %32, %30, %51, %52 %.13443 = phi ptr [ %.033, %51 ], [ %.033, %52 ], [ null, %30 ], [ null, %32 ] %53 = getelementptr inbounds nuw i8, ptr %3, i64 64 store atomic i8 0, ptr %53 monotonic, align 1 diff --git a/bench/libquic/optimized/a_mbstr.ll b/bench/libquic/optimized/a_mbstr.ll index 50ac028008a..08f5779a3d8 100644 --- a/bench/libquic/optimized/a_mbstr.ll +++ b/bench/libquic/optimized/a_mbstr.ll @@ -231,7 +231,7 @@ traverse_string.exit.thread: ; preds = %33, %30 br label %105 84: ; preds = %79 - switch i32 %.054, label %92 [ + switch i32 %.054, label %.unreachabledefault [ i32 4097, label %85 i32 4098, label %86 i32 4100, label %88 @@ -258,9 +258,12 @@ traverse_string.exit.thread: ; preds = %33, %30 %.pre = load i32, ptr %10, align 4, !tbaa !10 br label %92 -92: ; preds = %90, %88, %86, %85, %84 - %93 = phi i32 [ 0, %84 ], [ %.091, %85 ], [ %87, %86 ], [ %89, %88 ], [ %.pre, %90 ] - %.0 = phi ptr [ null, %84 ], [ @cpy_asc, %85 ], [ @cpy_bmp, %86 ], [ @cpy_univ, %88 ], [ @cpy_utf8, %90 ] +92: ; preds = %84 + unreachable + +92: ; preds = %90, %88, %86, %85 + %93 = phi i32 [ %.091, %85 ], [ %87, %86 ], [ %89, %88 ], [ %.pre, %90 ] + %.0 = phi ptr [ @cpy_asc, %85 ], [ @cpy_bmp, %86 ], [ @cpy_univ, %88 ], [ @cpy_utf8, %90 ] %94 = add nsw i32 %93, 1 %95 = sext i32 %94 to i64 %96 = call noalias ptr @malloc(i64 noundef %95) #10 @@ -286,7 +289,7 @@ traverse_string.exit.thread: ; preds = %33, %30 %102 = sext i32 %93 to i64 %103 = getelementptr inbounds i8, ptr %96, i64 %102 store i8 0, ptr %103, align 1, !tbaa !23 - %104 = call fastcc i32 @traverse_string(ptr noundef %1, i32 noundef %.058, i32 noundef %3, ptr noundef %.0, ptr noundef %11) + %104 = call fastcc i32 @traverse_string(ptr noundef %1, i32 noundef %.058, i32 noundef %3, ptr noundef nonnull %.0, ptr noundef %11) br label %105 105: ; preds = %81, %66, %100, %99, %83, %77, %54, %49, %44, %39, %38, %27, %22 diff --git a/bench/libquic/optimized/pcy_tree.ll b/bench/libquic/optimized/pcy_tree.ll index d3caad2b12b..9a5f4cb7527 100644 --- a/bench/libquic/optimized/pcy_tree.ll +++ b/bench/libquic/optimized/pcy_tree.ll @@ -156,7 +156,7 @@ define hidden range(i32 -2, 2) i32 @X509_policy_check(ptr noundef writeonly capt %19 = tail call i32 @X509_check_purpose(ptr noundef %18, i32 noundef -1, i32 noundef -1) #8 %20 = tail call ptr @policy_cache_set(ptr noundef %18) #8 %21 = icmp eq ptr %20, null - br i1 %21, label %tree_init.exit.thread, label %22 + br i1 %21, label %.thread66, label %22 22: ; preds = %.lr.ph.i %23 = getelementptr inbounds nuw i8, ptr %18, i64 64 @@ -217,7 +217,7 @@ define hidden range(i32 -2, 2) i32 @X509_policy_check(ptr noundef writeonly capt %.191.lcssa162.i = phi i32 [ %.393.i, %._crit_edge.i ], [ %.090.i, %13 ] %48 = tail call noalias dereferenceable_or_null(48) ptr @malloc(i64 noundef 48) #9 %.not111.i = icmp eq ptr %48, null - br i1 %.not111.i, label %tree_init.exit.thread, label %49 + br i1 %.not111.i, label %.thread66, label %49 49: ; preds = %._crit_edge.thread.i %50 = getelementptr inbounds nuw i8, ptr %48, i64 40 @@ -235,7 +235,7 @@ define hidden range(i32 -2, 2) i32 @X509_policy_check(ptr noundef writeonly capt 54: ; preds = %49 tail call void @free(ptr noundef nonnull %48) #8 - br label %tree_init.exit.thread + br label %.thread66 55: ; preds = %49 store i32 %8, ptr %52, align 8, !tbaa !16 @@ -353,21 +353,17 @@ define hidden range(i32 -2, 2) i32 @X509_policy_check(ptr noundef writeonly capt 112: ; preds = %58, %55 tail call void @X509_policy_tree_free(ptr noundef nonnull %48) - br label %tree_init.exit.thread + br label %.thread66 tree_init.exit: ; preds = %45 switch i32 %.198.i, label %tree_calculate_user_set.exit [ i32 2, label %.thread66 i32 -1, label %113 - i32 0, label %tree_init.exit.thread ] 113: ; preds = %tree_init.exit br label %.thread66 -tree_init.exit.thread: ; preds = %.lr.ph.i, %._crit_edge.thread.i, %54, %112, %tree_init.exit - br label %.thread66 - tree_init.exit.thread57: ; preds = %45 store i32 1, ptr %1, align 4, !tbaa !38 br label %.thread66 @@ -1012,8 +1008,8 @@ tree_calculate_user_set.exit: ; preds = %223, %144, %170, %1 call void @X509_policy_tree_free(ptr noundef %.04549) br label %.thread66 -.thread66: ; preds = %5, %402, %tree_evaluate.exit, %tree_init.exit, %tree_calculate_user_set.exit, %406, %tree_init.exit.thread57, %tree_init.exit.thread, %113 - %.0 = phi i32 [ 0, %tree_calculate_user_set.exit ], [ 1, %406 ], [ -1, %113 ], [ 0, %tree_init.exit.thread ], [ -2, %tree_init.exit.thread57 ], [ %., %tree_evaluate.exit ], [ -2, %402 ], [ 1, %5 ], [ 1, %tree_init.exit ] +.thread66: ; preds = %.lr.ph.i, %112, %54, %._crit_edge.thread.i, %5, %402, %tree_evaluate.exit, %tree_init.exit, %tree_calculate_user_set.exit, %406, %tree_init.exit.thread57, %113 + %.0 = phi i32 [ 0, %tree_calculate_user_set.exit ], [ 1, %406 ], [ -1, %113 ], [ -2, %tree_init.exit.thread57 ], [ %., %tree_evaluate.exit ], [ -2, %402 ], [ 1, %5 ], [ 1, %tree_init.exit ], [ 0, %._crit_edge.thread.i ], [ 0, %54 ], [ 0, %112 ], [ 0, %.lr.ph.i ] call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 %.0 } diff --git a/bench/lief/optimized/DyldChainedFixupsCreator.ll b/bench/lief/optimized/DyldChainedFixupsCreator.ll index e1f3140afc1..b85efde9ba1 100644 --- a/bench/lief/optimized/DyldChainedFixupsCreator.ll +++ b/bench/lief/optimized/DyldChainedFixupsCreator.ll @@ -678,7 +678,6 @@ $_ZZNSt8__detail18__to_chars_10_implImEEvPcjT_E8__digits = comdat any @.str.133 = private unnamed_addr constant [18 x i8] c"unordered_map::at\00", align 1 @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init, ptr @_ZN3fmt3v1012format_facetISt6localeE2idE }] @llvm.used = appending global [1 x ptr] [ptr @_ZN3fmt3v1012format_facetISt6localeE2idE], section "llvm.metadata" -@switch.table._ZN4LIEF5MachO24DyldChainedFixupsCreator6createERNS0_6BinaryE = private unnamed_addr constant [13 x i64] [i64 8, i64 4, i64 4, i64 4, i64 4, i64 4, i64 4, i64 4, i64 8, i64 4, i64 1, i64 8, i64 8], align 8 ; Function Attrs: mustprogress nounwind uwtable define hidden noundef i64 @_ZNK4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_t4addrEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(12) %0) local_unnamed_addr #0 align 2 { @@ -2564,34 +2563,30 @@ _ZN4LIEF5MachO24DyldChainedFixupsCreator14pointer_formatERKNS0_6BinaryEm.exit: ; %325 = getelementptr inbounds nuw i8, ptr %80, i64 112 %326 = getelementptr inbounds nuw i8, ptr %67, i64 72 %327 = getelementptr inbounds nuw i8, ptr %67, i64 48 - %switch.tableidx = add nsw i32 %.0.i, -1 - %328 = icmp ult i32 %switch.tableidx, 13 - %329 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table._ZN4LIEF5MachO24DyldChainedFixupsCreator6createERNS0_6BinaryE, i64 %329 - br label %366 + br label %364 .lr.ph: ; preds = %141, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit %.sroa.0378.0426 = phi ptr [ %.sroa.0378.0, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit ], [ %.sroa.0378.0424, %141 ] %330 = getelementptr inbounds nuw i8, ptr %.sroa.0378.0426, i64 16 + %329 = load ptr, ptr %328, align 8, !tbaa !244 + %330 = getelementptr inbounds nuw i8, ptr %.sroa.0378.0426, i64 24 %331 = load ptr, ptr %330, align 8, !tbaa !244 - %332 = getelementptr inbounds nuw i8, ptr %.sroa.0378.0426, i64 24 - %333 = load ptr, ptr %332, align 8, !tbaa !244 - %.not.i.i = icmp eq ptr %331, %333 - br i1 %.not.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit, label %334 - -334: ; preds = %.lr.ph - %335 = ptrtoint ptr %333 to i64 - %336 = ptrtoint ptr %331 to i64 - %337 = sub i64 %335, %336 - %338 = ashr exact i64 %337, 4 - %339 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %338, i1 true) - %340 = shl nuw nsw i64 %339, 1 - %341 = xor i64 %340, 126 - call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_less_iterEEvT_SD_T0_T1_(ptr %331, ptr %333, i64 noundef %341) - call void @_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_T0_(ptr %331, ptr %333) + %.not.i.i = icmp eq ptr %329, %331 + br i1 %.not.i.i, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit, label %332 + +332:; preds = %.lr.ph + %333 = ptrtoint ptr %331 to i64 + %334 = ptrtoint ptr %329 to i64 + %335 = sub i64 %333, %334 + %336 = ashr exact i64 %335, 4 + %337 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %336, i1 true) + %338 = shl nuw nsw i64 %337, 1 + %339 = xor i64 %338, 126 + call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_less_iterEEvT_SD_T0_T1_(ptr %329, ptr %331, i64 noundef %339) + call void @_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_T0_(ptr %329, ptr %331) br label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit -_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit: ; preds = %.lr.ph, %334 +_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN4LIEF5MachO24DyldChainedFixupsCreator16binding_rebase_tESt6vectorIS5_SaIS5_EEEEEvT_SB_.exit: ; preds = %.lr.ph, %332 %.sroa.0378.0 = load ptr, ptr %.sroa.0378.0426, align 8, !tbaa !235 %.not404 = icmp eq ptr %.sroa.0378.0, null br i1 %.not404, label %._crit_edge, label %.lr.ph @@ -2624,7 +2619,7 @@ _ZNKSt14default_deleteIN4LIEF5MachO18ChainedBindingInfoEEclEPS2_.exit.i.i.i.i.i. %353 = load ptr, ptr %352, align 8, !tbaa !6 %354 = getelementptr inbounds nuw i8, ptr %353, i64 24 %355 = load ptr, ptr %354, align 8 - call void %355(ptr noundef nonnull align 8 dereferenceable(88) %352) #21 + call void %353(ptr noundef nonnull align 8 dereferenceable(88) %352) #21 br label %_ZSt8_DestroyISt10unique_ptrIN4LIEF5MachO18ChainedBindingInfoESt14default_deleteIS3_EEEvPT_.exit.i.i.i.i.i.i _ZSt8_DestroyISt10unique_ptrIN4LIEF5MachO18ChainedBindingInfoESt14default_deleteIS3_EEEvPT_.exit.i.i.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN4LIEF5MachO18ChainedBindingInfoEEclEPS2_.exit.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i @@ -2655,7 +2650,7 @@ _ZNKSt14default_deleteIN4LIEF5MachO11LoadCommandEEclEPS2_.exit.i: ; preds = %_ZN %363 = load ptr, ptr %362, align 8, !tbaa !6 %364 = getelementptr inbounds nuw i8, ptr %363, i64 24 %365 = load ptr, ptr %364, align 8 - call void %365(ptr noundef nonnull align 8 dereferenceable(56) %362) #21 + call void %363(ptr noundef nonnull align 8 dereferenceable(56) %362) #21 br label %_ZNSt10unique_ptrIN4LIEF5MachO11LoadCommandESt14default_deleteIS2_EED2Ev.exit _ZNSt10unique_ptrIN4LIEF5MachO11LoadCommandESt14default_deleteIS2_EED2Ev.exit: ; preds = %_ZNSt6vectorISt10unique_ptrIN4LIEF5MachO18ChainedBindingInfoESt14default_deleteIS3_EESaIS6_EEaSEOS8_.exit, %_ZNKSt14default_deleteIN4LIEF5MachO11LoadCommandEEclEPS2_.exit.i @@ -2680,14 +2675,20 @@ _ZNSt10unique_ptrIN4LIEF5MachO11LoadCommandESt14default_deleteIS2_EED2Ev.exit: ; store ptr %367, ptr %156, align 8, !tbaa !84 store i16 %157, ptr %154, align 8, !tbaa !259 store i32 %.0.i, ptr %158, align 4, !tbaa !260 - br i1 %328, label %switch.lookup, label %_ZN4LIEF5MachO22ChainedPointerAnalysis6strideENS0_23DYLD_CHAINED_PTR_FORMATE.exit + switch i32 %.0.i, label %370 [ + i32 12, label %_ZN4LIEF5MachO22ChainedPointerAnalysis6strideENS0_23DYLD_CHAINED_PTR_FORMATE.exit + i32 1, label %_ZN4LIEF5MachO22ChainedPointerAnalysis6strideENS0_23DYLD_CHAINED_PTR_FORMATE.exit + i32 2, label %369 + ] + +369: ; preds = %364 + br label %_ZN4LIEF5MachO22ChainedPointerAnalysis6strideENS0_23DYLD_CHAINED_PTR_FORMATE.exit switch.lookup: ; preds = %366 - %switch.load = load i64, ptr %switch.gep, align 8 br label %_ZN4LIEF5MachO22ChainedPointerAnalysis6strideENS0_23DYLD_CHAINED_PTR_FORMATE.exit -_ZN4LIEF5MachO22ChainedPointerAnalysis6strideENS0_23DYLD_CHAINED_PTR_FORMATE.exit: ; preds = %366, %switch.lookup - %.0.i69 = phi i64 [ %switch.load, %switch.lookup ], [ 0, %366 ] +_ZN4LIEF5MachO22ChainedPointerAnalysis6strideENS0_23DYLD_CHAINED_PTR_FORMATE.exit: ; preds = %366, %364, %369, %switch.lookup + %.0.i69 = phi i64 [ 0, %370 ], [ 4, %369 ], [ 8, %364 ], [ 8, %364 ] %371 = load i64, ptr %159, align 8, !tbaa !261 %.not.not.i.i = icmp eq i64 %371, 0 br i1 %.not.not.i.i, label %.preheader, label %376 @@ -2770,7 +2771,7 @@ _ZNSt13unordered_mapIPN4LIEF5MachO14SegmentCommandESt6vectorINS1_24DyldChainedFi br i1 %.not435, label %_ZNSt13unordered_mapIPN4LIEF5MachO14SegmentCommandESt6vectorINS1_24DyldChainedFixupsCreator16binding_rebase_tESaIS6_EESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S8_EEE4findERSE_.exit.thread, label %.lr.ph428 .lr.ph428: ; preds = %_ZNSt13unordered_mapIPN4LIEF5MachO14SegmentCommandESt6vectorINS1_24DyldChainedFixupsCreator16binding_rebase_tESaIS6_EESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S8_EEE4findERSE_.exit - %411 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.0.i69, i1 true) + %411 = call range(i64 2, 65) i64 @llvm.cttz.i64(i64 %.0.i69, i1 true) %412 = getelementptr inbounds nuw i8, ptr %367, i64 104 br label %413 @@ -4331,7 +4332,7 @@ _ZN6spdlog6logger4log_IJRKmEEEvNS_10source_locENS_5level10level_enumEN3fmt3v1017 %992 = sub nsw i64 %824, %614 %993 = and i64 %992, 4294967295 %994 = lshr i64 %993, %411 - %995 = trunc nuw i64 %994 to i32 + %995 = trunc nuw nsw i64 %994 to i32 br label %996 996: ; preds = %_ZN6spdlog6logger4log_IJRKmEEEvNS_10source_locENS_5level10level_enumEN3fmt3v1017basic_string_viewIcEEDpOT_.exit199, %991, %_ZN6spdlog6logger4log_IJRKmEEEvNS_10source_locENS_5level10level_enumEN3fmt3v1017basic_string_viewIcEEDpOT_.exit142 diff --git a/bench/lief/optimized/ssl_tls13_client.ll b/bench/lief/optimized/ssl_tls13_client.ll index 0ddfe784f76..6d6b1f45e08 100644 --- a/bench/lief/optimized/ssl_tls13_client.ll +++ b/bench/lief/optimized/ssl_tls13_client.ll @@ -89,7 +89,6 @@ target triple = "x86_64-pc-linux-gnu" @.str.72 = private unnamed_addr constant [4 x i8] c"psk\00", align 1 @.str.73 = private unnamed_addr constant [10 x i8] c"ephemeral\00", align 1 @.str.74 = private unnamed_addr constant [14 x i8] c"psk_ephemeral\00", align 1 -@.str.75 = private unnamed_addr constant [13 x i8] c"unknown mode\00", align 1 @.str.76 = private unnamed_addr constant [30 x i8] c"=> parse encrypted extensions\00", align 1 @.str.77 = private unnamed_addr constant [30 x i8] c"<= parse encrypted extensions\00", align 1 @__func__.ssl_tls13_parse_encrypted_extensions = private unnamed_addr constant [37 x i8] c"ssl_tls13_parse_encrypted_extensions\00", align 1 @@ -133,7 +132,7 @@ target triple = "x86_64-pc-linux-gnu" @.str.111 = private unnamed_addr constant [19 x i8] c"Ticket-resumed PSK\00", align 1 @switch.table.ssl_tls13_write_binder = private unnamed_addr constant [16 x i8] [i8 16, i8 20, i8 20, i8 poison, i8 poison, i8 28, i8 32, i8 48, i8 64, i8 28, i8 32, i8 poison, i8 poison, i8 28, i8 32, i8 48], align 1 @switch.table.mbedtls_ssl_tls13_write_client_hello_exts.18 = private unnamed_addr constant [8 x i16] [i16 23, i16 24, i16 25, i16 poison, i16 poison, i16 poison, i16 29, i16 30], align 2 -@switch.table.ssl_tls13_postprocess_server_hello.19 = private unnamed_addr constant [4 x ptr] [ptr @.str.72, ptr @.str.73, ptr @.str.75, ptr @.str.74], align 8 +@switch.table.ssl_tls13_postprocess_server_hello.19 = private unnamed_addr constant [4 x ptr] [ptr @.str.72, ptr @.str.73, ptr poison, ptr @.str.74], align 8 ; Function Attrs: nounwind uwtable define hidden range(i32 -27136, 1) i32 @mbedtls_ssl_tls13_write_identities_of_pre_shared_key_ext(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef writeonly captures(none) initializes((0, 8)) %3, ptr noundef writeonly captures(none) initializes((0, 8)) %4) local_unnamed_addr #0 { @@ -2592,38 +2591,37 @@ define internal fastcc i32 @ssl_tls13_postprocess_server_hello(ptr noundef %0) u %14 = and i32 %.val.val, %12 %.not38 = icmp eq i32 %14, 0 %switch.tableidx = add nsw i8 %.sink, -1 - br i1 %.not38, label %switch.lookup, label %switch.lookup42 + %15 = zext nneg i8 %switch.tableidx to i64 + br i1 %.not38, label %switch.lookup, label %switch.lookup44 switch.lookup: ; preds = %10 - %15 = zext nneg i8 %switch.tableidx to i64 %switch.gep = getelementptr inbounds nuw ptr, ptr @switch.table.ssl_tls13_postprocess_server_hello.19, i64 %15 %switch.load = load ptr, ptr %switch.gep, align 8 tail call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1909, ptr noundef nonnull @.str.67, ptr noundef nonnull %switch.load) #12 br label %28 switch.lookup42: ; preds = %10 - %16 = zext nneg i8 %switch.tableidx to i64 - %switch.gep43 = getelementptr inbounds nuw ptr, ptr @switch.table.ssl_tls13_postprocess_server_hello.19, i64 %16 - %switch.load44 = load ptr, ptr %switch.gep43, align 8 - tail call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1915, ptr noundef nonnull @.str.68, ptr noundef nonnull %switch.load44) #12 - %17 = tail call i32 @mbedtls_ssl_tls13_key_schedule_stage_early(ptr noundef nonnull %0) #12 - %.not29 = icmp eq i32 %17, 0 - br i1 %.not29, label %19, label %18 - -18: ; preds = %switch.lookup42 - tail call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1935, ptr noundef nonnull @.str.69, i32 noundef %17) #12 - br label %28 + %switch.gep45 = getelementptr inbounds nuw ptr, ptr @switch.table.ssl_tls13_postprocess_server_hello.19, i64 %15 + %switch.load46 = load ptr, ptr %switch.gep45, align 8 + tail call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1915, ptr noundef nonnull @.str.68, ptr noundef nonnull %switch.load46) #12 + %16 = tail call i32 @mbedtls_ssl_tls13_key_schedule_stage_early(ptr noundef nonnull %0) #12 + %.not29 = icmp eq i32 %16, 0 + br i1 %.not29, label %21, label %17 19: ; preds = %switch.lookup42 - %20 = tail call i32 @mbedtls_ssl_tls13_compute_handshake_transform(ptr noundef nonnull %0) #12 - %.not30 = icmp eq i32 %20, 0 - br i1 %.not30, label %22, label %21 + tail call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1935, ptr noundef nonnull @.str.69, i32 noundef %16) #12 + br label %27 -21: ; preds = %19 - tail call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1944, ptr noundef nonnull @.str.70, i32 noundef %20) #12 - br label %28 +21: ; preds = %switch.lookup44 + %19 = tail call i32 @mbedtls_ssl_tls13_compute_handshake_transform(ptr noundef nonnull %0) #12 + %.not30 = icmp eq i32 %19, 0 + br i1 %.not30, label %21, label %20 + +20: ; preds = %18 + tail call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1944, ptr noundef nonnull @.str.70, i32 noundef %19) #12 + br label %27 -22: ; preds = %19 +22: ; preds = %18 %23 = getelementptr inbounds nuw i8, ptr %3, i64 3296 %24 = load ptr, ptr %23, align 8, !tbaa !96 tail call void @mbedtls_ssl_set_inbound_transform(ptr noundef nonnull %0, ptr noundef %24) #12 @@ -2634,13 +2632,13 @@ switch.lookup42: ; preds = %10 store ptr %26, ptr %27, align 8, !tbaa !106 br label %29 -28: ; preds = %18, %21, %switch.lookup, %9 - %.0.ph = phi i32 [ -28160, %9 ], [ -28160, %switch.lookup ], [ %20, %21 ], [ %17, %18 ] +28: ; preds = %17, %20, %switch.lookup, %9 + %.0.ph = phi i32 [ -28160, %9 ], [ -28160, %switch.lookup ], [ %19, %20 ], [ %16, %17 ] tail call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 40, i32 noundef -28160) #12 br label %29 29: ; preds = %22, %28 - %.037 = phi i32 [ %.0.ph, %28 ], [ 0, %22 ] + %.037 = phi i32 [ %.0.ph, %27 ], [ 0, %21 ] ret i32 %.037 } diff --git a/bench/linux/optimized/dev-ioctl.ll b/bench/linux/optimized/dev-ioctl.ll index 5a9d84bb90e..c304df8a345 100644 --- a/bench/linux/optimized/dev-ioctl.ll +++ b/bench/linux/optimized/dev-ioctl.ll @@ -195,7 +195,7 @@ define internal range(i64 -2147483648, 2147483648) i64 @autofs_dev_ioctl(ptr rea 75: ; preds = %50 %76 = trunc i32 %1 to i8 - switch i8 %76, label %.thread13 [ + switch i8 %76, label %.thread14 [ i8 126, label %.thread15 i8 123, label %.thread15 i8 116, label %.thread15 @@ -225,7 +225,7 @@ define internal range(i64 -2147483648, 2147483648) i64 @autofs_dev_ioctl(ptr rea 90: ; preds = %85 %91 = icmp eq i32 %6, 126 - br i1 %91, label %122, label %.thread15 + br i1 %91, label %.thread24, label %.thread15 92: ; preds = %85 %93 = getelementptr inbounds nuw i8, ptr %88, i64 168 @@ -248,7 +248,7 @@ define internal range(i64 -2147483648, 2147483648) i64 @autofs_dev_ioctl(ptr rea %105 = load i32, ptr %104, align 8 %106 = and i32 %105, 1 %107 = icmp eq i32 %106, 0 - br i1 %107, label %108, label %.thread16 + br i1 %107, label %108, label %.thread17 108: ; preds = %101 %109 = call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #11, !srcloc !5 @@ -262,27 +262,23 @@ define internal range(i64 -2147483648, 2147483648) i64 @autofs_dev_ioctl(ptr rea %117 = icmp ne ptr %114, %116 %118 = icmp ne i32 %6, 121 %119 = and i1 %118, %117 - br i1 %119, label %120, label %.thread16 + br i1 %119, label %120, label %.thread17 120: ; preds = %108 call void @fput(ptr noundef nonnull %88) #10 br label %.thread15 -.thread23: ; preds = %.thread13, %.thread13, %.thread13 +.thread23: ; preds = %.thread13, %.thread13, %.thread13, %90 %121 = call i32 %84(ptr noundef null, ptr noundef null, ptr noundef %26) #10 br label %125 -122: ; preds = %90 - %123 = call i32 %84(ptr noundef null, ptr noundef null, ptr noundef %26) #10 - br label %125 - -.thread16: ; preds = %101, %108 - %124 = call i32 %84(ptr noundef nonnull %88, ptr noundef %103, ptr noundef %26) #10 +122: ; preds = %101, %108 + %123 = call i32 %84(ptr noundef nonnull %88, ptr noundef %103, ptr noundef %26) #10 call void @fput(ptr noundef nonnull %88) #10 br label %125 -125: ; preds = %122, %.thread23, %.thread16 - %126 = phi i32 [ %121, %.thread23 ], [ %124, %.thread16 ], [ %123, %122 ] +125: ; preds = %.thread23, %.thread17 + %126 = phi i32 [ %121, %.thread24 ], [ %122, %.thread17 ] %127 = icmp sgt i32 %126, -1 br i1 %127, label %128, label %.thread15 @@ -292,13 +288,13 @@ define internal range(i64 -2147483648, 2147483648) i64 @autofs_dev_ioctl(ptr rea %131 = select i1 %130, i32 %126, i32 -14 br label %.thread15 -.thread15: ; preds = %75, %75, %75, %69, %60, %40, %100, %120, %90, %128, %125 - %132 = phi i32 [ %126, %125 ], [ %131, %128 ], [ -22, %100 ], [ -13, %120 ], [ -9, %90 ], [ -22, %40 ], [ -22, %60 ], [ -22, %69 ], [ -22, %75 ], [ -22, %75 ], [ -22, %75 ] +.thread15: ; preds = %90, %120, %100, %75, %75, %75, %69, %60, %40, %128, %125 + %132 = phi i32 [ %126, %123 ], [ %131, %126 ], [ -22, %40 ], [ -22, %60 ], [ -22, %69 ], [ -22, %75 ], [ -22, %75 ], [ -22, %75 ], [ -9, %90 ], [ -13, %120 ], [ -22, %100 ] call void @kfree(ptr noundef %26) #10 br label %133 133: ; preds = %.thread15, %.thread32, %13, %3 - %134 = phi i32 [ %30, %.thread32 ], [ %132, %.thread15 ], [ -25, %3 ], [ -1, %13 ] + %134 = phi i32 [ %30, %.thread30 ], [ %132, %.thread16 ], [ -25, %3 ], [ -1, %13 ] %135 = sext i32 %134 to i64 ret i64 %135 } diff --git a/bench/linux/optimized/kernel_read_file.ll b/bench/linux/optimized/kernel_read_file.ll index e7b45774329..77fe0875754 100644 --- a/bench/linux/optimized/kernel_read_file.ll +++ b/bench/linux/optimized/kernel_read_file.ll @@ -200,7 +200,6 @@ define dso_local i64 @kernel_read_file(ptr noundef %0, i64 noundef %1, ptr nound i32 0, label %55 i32 4, label %75 i32 5, label %.loopexit - i32 1, label %.critedge ], !llvm.loop !13 75: ; preds = %59, %55 @@ -252,8 +251,8 @@ define dso_local i64 @kernel_read_file(ptr noundef %0, i64 noundef %1, ptr nound .unreachabledefault: ; preds = %59 unreachable -.critedge: ; preds = %29, %59, %19, %97, %14, %9 - %101 = phi i64 [ %100, %97 ], [ -22, %9 ], [ -22, %14 ], [ -26, %19 ], [ undef, %59 ], [ -26, %29 ] +.critedge: ; preds = %29, %19, %97, %14, %9 + %101 = phi i64 [ %100, %97 ], [ -22, %9 ], [ -22, %14 ], [ -26, %19 ], [ -26, %29 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) ret i64 %101 } diff --git a/bench/linux/optimized/msg.ll b/bench/linux/optimized/msg.ll index 3d5626c679c..b4dfa76d0ad 100644 --- a/bench/linux/optimized/msg.ll +++ b/bench/linux/optimized/msg.ll @@ -959,7 +959,7 @@ define internal fastcc i64 @do_msgsnd(i32 noundef %0, i64 noundef %1, ptr nounde %95 = phi i32 [ %71, %66 ], [ 0, %90 ] %96 = phi i32 [ %72, %66 ], [ 0, %90 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) - switch i32 %96, label %.loopexit24 [ + switch i32 %96, label %.unreachabledefault [ i32 0, label %52 i32 3, label %97 i32 5, label %.loopexit25 @@ -1147,8 +1147,8 @@ define internal fastcc i64 @do_msgsnd(i32 noundef %0, i64 noundef %1, ptr nounde br label %193 193: ; preds = %.loopexit25, %36 - %194 = phi ptr [ %26, %36 ], [ %191, %.loopexit25 ] - %195 = phi i32 [ %38, %36 ], [ %192, %.loopexit25 ] + %194 = phi ptr [ %26, %36 ], [ %191, %.loopexit24 ] + %195 = phi i32 [ %38, %36 ], [ %192, %.loopexit24 ] call void @__rcu_read_unlock() #11 %196 = icmp eq ptr %194, null br i1 %196, label %198, label %197 @@ -1161,8 +1161,11 @@ define internal fastcc i64 @do_msgsnd(i32 noundef %0, i64 noundef %1, ptr nounde %199 = sext i32 %195 to i64 br label %.loopexit24 -.loopexit24: ; preds = %94, %198, %28, %5 - %200 = phi i64 [ %29, %28 ], [ %199, %198 ], [ -22, %5 ], [ undef, %94 ] +.unreachabledefault: ; preds = %94 + unreachable + +.loopexit24: ; preds = %198, %28, %5 + %200 = phi i64 [ %29, %28 ], [ %199, %198 ], [ -22, %5 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i64 %200 } @@ -1457,10 +1460,9 @@ define internal fastcc i64 @do_msgrcv(i32 noundef %0, ptr noundef %1, i64 nounde .preheader29.split.split: ; preds = %.preheader29, %114 %102 = phi ptr [ %115, %114 ], [ %80, %.preheader29 ] - switch i32 %40, label %107 [ + switch i32 %40, label %103 [ i32 1, label %111 - i32 5, label %111 - i32 2, label %103 + i32 3, label %107 ] 103: ; preds = %.preheader29.split.split @@ -1475,7 +1477,7 @@ define internal fastcc i64 @do_msgrcv(i32 noundef %0, ptr noundef %1, i64 nounde %110 = icmp eq i64 %109, %76 br i1 %110, label %114, label %111 -111: ; preds = %107, %103, %.preheader29.split.split, %.preheader29.split.split +111: ; preds = %107, %103, %.preheader29.split.split %112 = call i32 @security_msg_queue_msgrcv(ptr noundef %42, ptr noundef %102, ptr noundef %11, i64 noundef %76, i32 noundef %40) #11 %113 = icmp eq i32 %112, 0 br i1 %113, label %.loopexit30, label %114 @@ -2317,7 +2319,7 @@ define internal fastcc i32 @msgctl_down(ptr noundef %0, i32 noundef %1, i32 noun call void @__rcu_read_unlock() #11 br label %37 -37: ; preds = %18, %35 +37: ; preds = %35, %18 %38 = phi i32 [ %36, %35 ], [ 0, %18 ] call void @up_write(ptr noundef %8) #11 ret i32 %38 diff --git a/bench/linux/optimized/waitwake.ll b/bench/linux/optimized/waitwake.ll index 4ad33db9fbb..338906f82be 100644 --- a/bench/linux/optimized/waitwake.ll +++ b/bench/linux/optimized/waitwake.ll @@ -503,17 +503,15 @@ define dso_local i32 @futex_wake_op(ptr noundef %0, i32 noundef %1, ptr noundef br label %123 123: ; preds = %122, %.thread22 - switch i32 %121, label %.loopexit28 [ - i32 -14, label %124 - i32 -11, label %127 - ] + %cond = icmp eq i32 %121, -14 + br i1 %cond, label %124, label %.loopexit28 124: ; preds = %123 %125 = call i32 @fault_in_user_writeable(ptr noundef %2) #8 %126 = icmp eq i32 %125, 0 br i1 %126, label %127, label %.loopexit28 -127: ; preds = %124, %123 +127: ; preds = %124 %128 = call i32 @__SCT__cond_resched() #8 br i1 %28, label %46, label %29 @@ -670,7 +668,7 @@ define dso_local i32 @futex_wake_op(ptr noundef %0, i32 noundef %1, ptr noundef call void @wake_up_q(ptr noundef nonnull %10) #8 br label %.loopexit28 -.loopexit28: ; preds = %32, %29, %124, %123, %217, %6 +.loopexit28: ; preds = %32, %29, %123, %124, %217, %6 %218 = phi i32 [ %215, %217 ], [ %12, %6 ], [ %125, %124 ], [ %121, %123 ], [ %30, %29 ], [ %33, %32 ] call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) diff --git a/bench/llvm/optimized/CommandLine.ll b/bench/llvm/optimized/CommandLine.ll index 2b8ff61019f..8529009960f 100644 --- a/bench/llvm/optimized/CommandLine.ll +++ b/bench/llvm/optimized/CommandLine.ll @@ -6983,7 +6983,7 @@ _ZN4llvm5TwineC2EPKc.exit116: ; preds = %189, %192 br label %200 200: ; preds = %._crit_edge439, %_ZN4llvm5TwineC2EPKc.exit116 - %201 = phi i8 [ %.pre, %._crit_edge439 ], [ %196, %_ZN4llvm5TwineC2EPKc.exit116 ] + %201 = phi i8 [ %.pre, %._crit_edge438 ], [ %196, %_ZN4llvm5TwineC2EPKc.exit116 ] %202 = trunc i8 %201 to i1 br i1 %202, label %_ZNK4llvm7ErrorOrINS_3vfs6StatusEE8getErrorEv.exit, label %_ZNK4llvm7ErrorOrINS_3vfs6StatusEE8getErrorEv.exit.thread @@ -7556,7 +7556,6 @@ _ZN4llvm7ErrorOrINS_3vfs6StatusEED2Ev.exit: ; preds = %369, %366, %_ZNKSt7 switch i32 %.368, label %.loopexit [ i32 0, label %.backedge i32 3, label %.backedge - i32 2, label %_ZN4llvm5ErrorD2Ev.exit270 ] .backedge: ; preds = %131, %127, %378, %378 @@ -7568,7 +7567,7 @@ _ZN4llvm7ErrorOrINS_3vfs6StatusEED2Ev.exit: ; preds = %369, %366, %_ZNKSt7 %.not = icmp eq i32 %380, %.1487 br i1 %.not, label %_ZN4llvm5ErrorD2Ev.exit270, label %.preheader -_ZN4llvm5ErrorD2Ev.exit270: ; preds = %.backedge, %378, %_ZZN4llvm2cl16ExpansionContext19expandResponseFilesERNS_15SmallVectorImplIPKcEEEN18ResponseFileRecordD2Ev.exit +_ZN4llvm5ErrorD2Ev.exit270: ; preds = %.backedge, %_ZZN4llvm2cl16ExpansionContext19expandResponseFilesERNS_15SmallVectorImplIPKcEEEN18ResponseFileRecordD2Ev.exit store ptr null, ptr %0, align 8, !tbaa !292 br label %.loopexit diff --git a/bench/llvm/optimized/Gnu.ll b/bench/llvm/optimized/Gnu.ll index baf843fcdc5..601800cc39c 100644 --- a/bench/llvm/optimized/Gnu.ll +++ b/bench/llvm/optimized/Gnu.ll @@ -42955,18 +42955,16 @@ _ZNKSt14default_deleteIN4llvm12MemoryBufferEEclEPS1_.exit.i.i: ; preds = %532 _ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i: ; preds = %532, %_ZNKSt14default_deleteIN4llvm12MemoryBufferEEclEPS1_.exit.i.i, %_ZN4llvm11SmallVectorINS_9StringRefELj4EED2Ev.exit call void @llvm.lifetime.end.p0(ptr nonnull %26) call void @llvm.lifetime.end.p0(ptr nonnull %25) - switch i32 %522, label %._crit_edge193.loopexit [ - i32 0, label %537 - i32 3, label %537 - ] + %cond = icmp eq i32 %522, 0 + br i1 %cond, label %537, label %._crit_edge193.loopexit -537: ; preds = %.thread175, %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i, %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i +537: ; preds = %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i, %.thread175 %538 = getelementptr inbounds nuw i8, ptr %.040190, i64 16 %.not = icmp eq ptr %538, %133 br i1 %.not, label %._crit_edge193.loopexit, label %200 -._crit_edge193.loopexit: ; preds = %537, %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i - %.041.ph = phi i32 [ %522, %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i ], [ 2, %537 ] +._crit_edge193.loopexit: ; preds = %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i, %537 + %.041.ph = phi i32 [ 2, %537 ], [ %522, %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i ] %.pre199 = load ptr, ptr %23, align 8, !tbaa !84 %539 = and i32 %.041.ph, -3 %540 = icmp eq i32 %539, 0 diff --git a/bench/llvm/optimized/OptimizePHIs.ll b/bench/llvm/optimized/OptimizePHIs.ll index 30ee555fbe2..9cd077775e6 100644 --- a/bench/llvm/optimized/OptimizePHIs.ll +++ b/bench/llvm/optimized/OptimizePHIs.ll @@ -269,9 +269,9 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_112OptimizePHIs3runER %.not3339.i = icmp eq ptr %23, %24 br i1 %.not3339.i, label %_ZN12_GLOBAL__N_112OptimizePHIs10OptimizeBBERN4llvm17MachineBasicBlockE.exit, label %.lr.ph42.i -.lr.ph42.i: ; preds = %21, %.backedge.i - %.041.i = phi i1 [ %.4.i, %.backedge.i ], [ false, %21 ] - %.sroa.028.040.i = phi ptr [ %.sroa.028.2.i, %.backedge.i ], [ %23, %21 ] +.lr.ph42.i: ; preds = %21, %111 + %.041.i = phi i1 [ %.4.i, %111 ], [ false, %21 ] + %.sroa.028.040.i = phi ptr [ %.sroa.028.2.i, %111 ], [ %23, %21 ] %.0.copyload.i.i.i.i.i.i.i.i.i.i.i = load i64, ptr %.sroa.028.040.i, align 8 %25 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i, 4 %.not.i.i.i.i.i = icmp eq i64 %25, 0 @@ -476,7 +476,6 @@ _ZN4llvm19SmallPtrSetIteratorIPNS_12MachineInstrEEppEv.exit.i: ; preds = %.crite .loopexit.i: ; preds = %_ZN4llvm19SmallPtrSetIteratorIPNS_12MachineInstrEEppEv.exit.i, %_ZNK4llvm15SmallPtrSetImplIPNS_12MachineInstrEE5beginEv.exit.i, %_ZN4llvm19SmallPtrSetImplBase5clearEv.exit.i, %56, %42 %.sroa.028.2.i = phi ptr [ %35, %42 ], [ %35, %56 ], [ %35, %_ZN4llvm19SmallPtrSetImplBase5clearEv.exit.i ], [ %35, %_ZNK4llvm15SmallPtrSetImplIPNS_12MachineInstrEE5beginEv.exit.i ], [ %.sroa.028.4.i, %_ZN4llvm19SmallPtrSetIteratorIPNS_12MachineInstrEEppEv.exit.i ] - %.219.i = phi i32 [ 3, %42 ], [ 3, %56 ], [ 0, %_ZN4llvm19SmallPtrSetImplBase5clearEv.exit.i ], [ 0, %_ZNK4llvm15SmallPtrSetImplIPNS_12MachineInstrEE5beginEv.exit.i ], [ 0, %_ZN4llvm19SmallPtrSetIteratorIPNS_12MachineInstrEEppEv.exit.i ] %.4.i = phi i1 [ %.041.i, %42 ], [ true, %56 ], [ %.041.i, %_ZN4llvm19SmallPtrSetImplBase5clearEv.exit.i ], [ true, %_ZNK4llvm15SmallPtrSetImplIPNS_12MachineInstrEE5beginEv.exit.i ], [ true, %_ZN4llvm19SmallPtrSetIteratorIPNS_12MachineInstrEEppEv.exit.i ] %107 = load i8, ptr %20, align 4, !tbaa !28, !range !33, !noundef !34 %108 = trunc nuw i8 %107 to i1 @@ -490,17 +489,11 @@ _ZN4llvm19SmallPtrSetIteratorIPNS_12MachineInstrEEppEv.exit.i: ; preds = %.crite 111: ; preds = %109, %.loopexit.i call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - switch i32 %.219.i, label %_ZN12_GLOBAL__N_112OptimizePHIs10OptimizeBBERN4llvm17MachineBasicBlockE.exit [ - i32 0, label %.backedge.i - i32 3, label %.backedge.i - ] - -.backedge.i: ; preds = %111, %111 %.not33.i = icmp eq ptr %.sroa.028.2.i, %24 - br i1 %.not33.i, label %_ZN12_GLOBAL__N_112OptimizePHIs10OptimizeBBERN4llvm17MachineBasicBlockE.exit, label %.lr.ph42.i, !llvm.loop !190 + br i1 %.not33.i, label %_ZN12_GLOBAL__N_112OptimizePHIs10OptimizeBBERN4llvm17MachineBasicBlockE.exit, label %.lr.ph42.i -_ZN12_GLOBAL__N_112OptimizePHIs10OptimizeBBERN4llvm17MachineBasicBlockE.exit: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEi.exit.i, %111, %.backedge.i, %21 - %.1.i = phi i1 [ false, %21 ], [ %.4.i, %111 ], [ %.4.i, %.backedge.i ], [ %.041.i, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEi.exit.i ] +_ZN12_GLOBAL__N_112OptimizePHIs10OptimizeBBERN4llvm17MachineBasicBlockE.exit: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEi.exit.i, %111, %21 + %.1.i = phi i1 [ false, %21 ], [ %.4.i, %111 ], [ %.041.i, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEi.exit.i ] %112 = or i1 %.014, %.1.i %113 = getelementptr inbounds nuw i8, ptr %.sroa.08.015, i64 8 %.sroa.08.0 = load ptr, ptr %113, align 8, !tbaa !163 diff --git a/bench/llvm/optimized/StructurizeCFG.ll b/bench/llvm/optimized/StructurizeCFG.ll index d0caa262f72..6a1c4020b55 100644 --- a/bench/llvm/optimized/StructurizeCFG.ll +++ b/bench/llvm/optimized/StructurizeCFG.ll @@ -1649,7 +1649,6 @@ _ZNK4llvm11Instruction11getMetadataEj.exit.thread.i: ; preds = %227, %_ZNK4llvm1 %.pre144.i = phi ptr [ %.pre144.pre.i, %_ZNK4llvm11Instruction11getMetadataEj.exit._ZNK4llvm11Instruction11getMetadataEj.exit.thread_crit_edge.i ], [ %180, %227 ] %231 = load i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN12_GLOBAL__N_121RelaxedUniformRegionsE, i64 120), align 8, !tbaa !34, !range !52, !noundef !53 %232 = trunc nuw i8 %231 to i1 - %spec.select.i = select i1 %232, i32 6, i32 1 %not..i = xor i1 %232, true %spec.select114.i = select i1 %not..i, i1 %.029.i, i1 false br label %_ZNK4llvm11df_iteratorIPNS_10BasicBlockENS_23df_iterator_default_setIS2_Lj8EEELb0ENS_11GraphTraitsIS2_EEEneERKS7_.exit.i @@ -1662,7 +1661,7 @@ _ZNK4llvm11Instruction11getMetadataEj.exit.thread.i: ; preds = %227, %_ZNK4llvm1 _ZNK4llvm11df_iteratorIPNS_10BasicBlockENS_23df_iterator_default_setIS2_Lj8EEELb0ENS_11GraphTraitsIS2_EEEneERKS7_.exit.i: ; preds = %191, %208, %_ZNK4llvm11Instruction11getMetadataEj.exit.thread.i %234 = phi ptr [ %.pre144.i, %_ZNK4llvm11Instruction11getMetadataEj.exit.thread.i ], [ %180, %208 ], [ %180, %191 ] - %.344.i = phi i32 [ %spec.select.i, %_ZNK4llvm11Instruction11getMetadataEj.exit.thread.i ], [ 6, %208 ], [ 6, %191 ] + %.344.i = phi i1 [ %232, %_ZNK4llvm11Instruction11getMetadataEj.exit.thread.i ], [ true, %208 ], [ true, %191 ] %.534.i = phi i1 [ %spec.select114.i, %_ZNK4llvm11Instruction11getMetadataEj.exit.thread.i ], [ %.029.i, %208 ], [ %.029.i, %191 ] %.not.i.i.i.i.i = icmp eq ptr %234, null br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorISt4pairIPN4llvm10BasicBlockESt8optionalINS1_12SuccIteratorINS1_11InstructionES2_EEEESaIS9_EED2Ev.exit.i.i, label %235 @@ -1758,14 +1757,11 @@ _ZNSt6vectorISt4pairIPN4llvm10BasicBlockESt8optionalINS1_12SuccIteratorINS1_11In _ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i: ; preds = %272, %_ZNSt6vectorISt4pairIPN4llvm10BasicBlockESt8optionalINS1_12SuccIteratorINS1_11InstructionES2_EEEESaIS9_EED2Ev.exit.i2.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) - switch i32 %.344.i, label %_ZNK4llvm11df_iteratorIPNS_10RegionNodeENS_23df_iterator_default_setIS2_Lj8EEELb0ENS_11GraphTraitsIS2_EEEneERKS7_.exit.loopexit130.i [ - i32 6, label %.thread101.i - i32 3, label %.thread101.i - ] + br i1 %.344.i, label %.thread101.i, label %_ZNK4llvm11df_iteratorIPNS_10RegionNodeENS_23df_iterator_default_setIS2_Lj8EEELb0ENS_11GraphTraitsIS2_EEEneERKS7_.exit.loopexit130.i -.thread101.i: ; preds = %_ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i, %_ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i, %149, %142, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i - %.231106.i = phi i1 [ %.029.i, %149 ], [ %.534.i, %_ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i ], [ %.029.i, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i ], [ %.029.i, %142 ], [ %.534.i, %_ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i ] - %.339105.i = phi i32 [ %150, %149 ], [ %.036.i, %_ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i ], [ %.036.i, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i ], [ %.036.i, %142 ], [ %.036.i, %_ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i ] +.thread101.i: ; preds = %_ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i, %149, %142, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i + %.231106.i = phi i1 [ %.029.i, %149 ], [ %.029.i, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i ], [ %.029.i, %142 ], [ %.534.i, %_ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i ] + %.339105.i = phi i32 [ %150, %149 ], [ %.036.i, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i ], [ %.036.i, %142 ], [ %.036.i, %_ZN4llvm14iterator_rangeINS_10RegionBaseINS_12RegionTraitsINS_8FunctionEEEE22block_iterator_wrapperILb0EEEED2Ev.exit.i ] call void @_ZN4llvm11df_iteratorIPNS_10RegionNodeENS_23df_iterator_default_setIS2_Lj8EEELb0ENS_11GraphTraitsIS2_EEE6toNextEv(ptr noundef nonnull align 8 dereferenceable(112) %5) %.pre.i = load ptr, ptr %71, align 8, !tbaa !173 %.pre141.i = load ptr, ptr %47, align 8, !tbaa !176 diff --git a/bench/llvm/optimized/Visitor.ll b/bench/llvm/optimized/Visitor.ll index a6b76677977..236dc054e0d 100644 --- a/bench/llvm/optimized/Visitor.ll +++ b/bench/llvm/optimized/Visitor.ll @@ -5281,7 +5281,6 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit138: ; preds = %_Z br label %.thread .thread: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit133, %173, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit117, %124, %238, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit138 - %.483 = phi i32 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit138 ], [ 3, %238 ], [ 3, %124 ], [ 3, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit117 ], [ 3, %173 ], [ 3, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit133 ] %260 = load ptr, ptr %4, align 8, !tbaa !447 %261 = icmp eq ptr %260, %78 br i1 %261, label %263, label %262 @@ -5292,12 +5291,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit138: ; preds = %_Z 263: ; preds = %262, %.thread call void @llvm.lifetime.end.p0(ptr nonnull %4) - switch i32 %.483, label %.thread241 [ - i32 0, label %.thread236 - i32 3, label %.thread236 - ] + br label %.thread236 -.thread236: ; preds = %92, %79, %108, %_ZNK5clang12FunctionDecl14isUserProvidedEv.exit, %87, %81, %263, %263 +.thread236: ; preds = %263, %92, %79, %108, %_ZNK5clang12FunctionDecl14isUserProvidedEv.exit, %87, %81 %264 = getelementptr inbounds nuw i8, ptr %.sroa.0206.0267, i64 8 %.0.copyload.i.i.i.i.i.i = load i64, ptr %264, align 8 %265 = and i64 %.0.copyload.i.i.i.i.i.i, -8 @@ -5575,7 +5571,7 @@ _ZN5clang11DeclContext22specific_decl_iteratorINS_7VarDeclEEppEv.exit: ; preds = call void @llvm.lifetime.end.p0(ptr nonnull %17) br label %.thread241 -.thread241: ; preds = %116, %263, %.thread241.sink.split, %278 +.thread241: ; preds = %116, %.thread241.sink.split, %278 %377 = load ptr, ptr %3, align 8, !tbaa !447 %378 = getelementptr inbounds nuw i8, ptr %3, i64 24 %379 = icmp eq ptr %377, %378 diff --git a/bench/llvm/optimized/X86InstCombineIntrinsic.ll b/bench/llvm/optimized/X86InstCombineIntrinsic.ll index 91354b27037..80c3a6dcd11 100644 --- a/bench/llvm/optimized/X86InstCombineIntrinsic.ll +++ b/bench/llvm/optimized/X86InstCombineIntrinsic.ll @@ -2183,7 +2183,6 @@ _ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit108.sink.split.i: ; pre %.sink265.i = phi i32 [ %941, %_ZNK4llvm5APInt3ugeEm.exit.thread.i ], [ %945, %943 ] %.sink.ph.i = phi i32 [ %910, %_ZNK4llvm5APInt3ugeEm.exit.thread.i ], [ %944, %943 ] %.476.ph.i = phi i1 [ %.065.i, %_ZNK4llvm5APInt3ugeEm.exit.thread.i ], [ %.072158.i, %943 ] - %.371.ph.i = phi i32 [ 5, %_ZNK4llvm5APInt3ugeEm.exit.thread.i ], [ 0, %943 ] %947 = zext i32 %.sink265.i to i64 %948 = add nuw nsw i64 %947, 1 call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %902, i64 noundef %948, i64 noundef 4) #15 @@ -2194,7 +2193,6 @@ _ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit108.i: ; preds = %_ZN4l %.sink250.i = phi i32 [ %941, %_ZNK4llvm5APInt3ugeEm.exit.thread.i ], [ %945, %943 ], [ %.pre.i110.i, %_ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit108.sink.split.i ] %.sink.i1002 = phi i32 [ %910, %_ZNK4llvm5APInt3ugeEm.exit.thread.i ], [ %944, %943 ], [ %.sink.ph.i, %_ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit108.sink.split.i ] %.476.i = phi i1 [ %.065.i, %_ZNK4llvm5APInt3ugeEm.exit.thread.i ], [ %.072158.i, %943 ], [ %.476.ph.i, %_ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit108.sink.split.i ] - %.371.i = phi i32 [ 5, %_ZNK4llvm5APInt3ugeEm.exit.thread.i ], [ 0, %943 ], [ %.371.ph.i, %_ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit108.sink.split.i ] %949 = load ptr, ptr %22, align 8, !tbaa !116 %950 = zext i32 %.sink250.i to i64 %951 = getelementptr inbounds nuw i32, ptr %949, i64 %950 @@ -2217,13 +2215,10 @@ _ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit108.i: ; preds = %_ZN4l 959: ; preds = %958, %955, %_ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit108.i call void @llvm.lifetime.end.p0(ptr nonnull %23) - switch i32 %.371.i, label %.thread147.i [ - i32 0, label %960 - i32 5, label %960 - ] + br label %960 -960: ; preds = %959, %959, %.thread143.i - %.274146.i = phi i1 [ %.072158.i, %.thread143.i ], [ %.476.i, %959 ], [ %.476.i, %959 ] +960: ; preds = %959, %.thread143.i + %.274146.i = phi i1 [ %.072158.i, %.thread143.i ], [ %.476.i, %959 ] %961 = add nuw nsw i32 %.077157.i, 1 %exitcond.not.i = icmp eq i32 %961, %785 br i1 %exitcond.not.i, label %._crit_edge.i, label %911, !llvm.loop !123 @@ -2535,8 +2530,8 @@ _ZN4llvm11SmallVectorIPNS_8ConstantELj8EED2Ev.exit124.i: ; preds = %1066, %1063 call void @llvm.lifetime.end.p0(ptr nonnull %25) br label %.thread147.i -.thread147.i: ; preds = %959, %927, %911, %_ZN4llvm11SmallVectorIPNS_8ConstantELj8EED2Ev.exit124.i, %1025, %_ZN4llvm11SmallVectorIPNS_8ConstantELj8EED2Ev.exit.i - %.6.i = phi ptr [ %1003, %_ZN4llvm11SmallVectorIPNS_8ConstantELj8EED2Ev.exit.i ], [ %.8.i, %_ZN4llvm11SmallVectorIPNS_8ConstantELj8EED2Ev.exit124.i ], [ null, %1025 ], [ null, %911 ], [ null, %927 ], [ null, %959 ] +.thread147.i: ; preds = %927, %911, %_ZN4llvm11SmallVectorIPNS_8ConstantELj8EED2Ev.exit124.i, %1025, %_ZN4llvm11SmallVectorIPNS_8ConstantELj8EED2Ev.exit.i + %.6.i = phi ptr [ %1003, %_ZN4llvm11SmallVectorIPNS_8ConstantELj8EED2Ev.exit.i ], [ %.8.i, %_ZN4llvm11SmallVectorIPNS_8ConstantELj8EED2Ev.exit124.i ], [ null, %1025 ], [ null, %911 ], [ null, %927 ] %1067 = load ptr, ptr %22, align 8, !tbaa !116 %1068 = icmp eq ptr %1067, %902 br i1 %1068, label %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit.i, label %1069 diff --git a/bench/lvgl/optimized/lv_text.ll b/bench/lvgl/optimized/lv_text.ll index 040dc68e571..aaf56cfa6ed 100644 --- a/bench/lvgl/optimized/lv_text.ll +++ b/bench/lvgl/optimized/lv_text.ll @@ -780,7 +780,7 @@ define i32 @lv_text_get_next_line(ptr noundef readonly captures(address_is_null) br i1 %48, label %49, label %50 49: ; preds = %.lr.ph.split.i - switch i32 %44, label %lv_text_is_cmd.exit.i [ + switch i32 %44, label %.unreachabledefault155 [ i32 0, label %.thread17.i.sink.split.i i32 2, label %.thread12.i.i i32 1, label %.thread17.i.i @@ -811,14 +811,17 @@ define i32 @lv_text_get_next_line(ptr noundef readonly captures(address_is_null) %.not82.i = icmp eq i8 %58, 0 br i1 %.not82.i, label %.loopexit.i, label %.lr.ph.split.i, !llvm.loop !20 -lv_text_is_cmd.exit.i: ; preds = %50, %49, %.lr.ph.split.us.i - %.390 = phi i32 [ %.188, %.lr.ph.split.us.i ], [ %.289, %49 ], [ %.289, %50 ] - %.us-phi.i = phi i32 [ %.us-phi171176.i, %.lr.ph.split.us.i ], [ %45, %49 ], [ %45, %50 ] - %.us-phi164.i = phi i32 [ %42, %.lr.ph.split.us.i ], [ %46, %49 ], [ %46, %50 ] - %.us-phi165.i = phi i32 [ %43, %.lr.ph.split.us.i ], [ %47, %49 ], [ %47, %50 ] - %.us-phi166.i = phi i32 [ %.073.ph177.i, %.lr.ph.split.us.i ], [ %.073150.i, %49 ], [ %.073150.i, %50 ] - %.us-phi167.i = phi i32 [ %.072.ph178.i, %.lr.ph.split.us.i ], [ %.072151.i, %50 ], [ 35, %49 ] - %.us-phi168.i = phi i32 [ %.064.ph180.i, %.lr.ph.split.us.i ], [ %.064152.i, %49 ], [ %.064152.i, %50 ] +lv_text_is_cmd.exit.i: ; preds = %49 + unreachable + +lv_text_is_cmd.exit.i:; preds = %50, %.lr.ph.split.us.i + %.us-phi165.i = phi i32 [ %.188, %.lr.ph.split.us.i ], [ %.289, %50 ] + %.us-phi166.i = phi i32 [ %.us-phi171176.i, %.lr.ph.split.us.i ], [ %45, %50 ] + %.us-phi167.i = phi i32 [ %42, %.lr.ph.split.us.i ], [ %46, %50 ] + %.us-phi168.i = phi i32 [ %43, %.lr.ph.split.us.i ], [ %47, %50 ] + %.us-phi166.i = phi i32 [ %.073.ph177.i, %.lr.ph.split.us.i ], [ %.073150.i, %50 ] + %.us-phi167.i = phi i32 [ %.072.ph178.i, %.lr.ph.split.us.i ], [ %.072151.i, %50 ] + %.us-phi168.i = phi i32 [ %.064.ph180.i, %.lr.ph.split.us.i ], [ %.064152.i, %50 ] %59 = call zeroext i16 @lv_font_get_glyph_width(ptr noundef nonnull %2, i32 noundef %.us-phi167.i, i32 noundef %.us-phi164.i) #11 %60 = zext i16 %59 to i32 %.not84.i = icmp eq i16 %59, 0 diff --git a/bench/meshlab/optimized/MarchingCubes.ll b/bench/meshlab/optimized/MarchingCubes.ll index 9eac3612cd2..91df3b9629e 100644 --- a/bench/meshlab/optimized/MarchingCubes.ll +++ b/bench/meshlab/optimized/MarchingCubes.ll @@ -907,8 +907,8 @@ define noundef i32 @_ZN15MarchingSquares8AddEdgesEPKddP4Edge(ptr noundef readonl br label %.preheader 23: ; preds = %.preheader36, %_ZN15MarchingSquares9SetVertexEiPKdd.exit - %indvars.iv = phi i64 [ 0, %.preheader36 ], [ %indvars.iv.next, %_ZN15MarchingSquares9SetVertexEiPKdd.exit ] - %.038 = phi i32 [ 1, %.preheader36 ], [ %61, %_ZN15MarchingSquares9SetVertexEiPKdd.exit ] + %indvars.iv = phi i64 [ 0, %.preheader35 ], [ %indvars.iv.next, %_ZN15MarchingSquares9SetVertexEiPKdd.exit ] + %.038 = phi i32 [ 1, %.preheader35 ], [ %61, %_ZN15MarchingSquares9SetVertexEiPKdd.exit ] %24 = and i32 %20, %.038 %.not32 = icmp eq i32 %24, 0 br i1 %.not32, label %_ZN15MarchingSquares9SetVertexEiPKdd.exit, label %25 @@ -931,14 +931,14 @@ define noundef i32 @_ZN15MarchingSquares8AddEdgesEPKddP4Edge(ptr noundef readonl br label %.sink.split.i.i .sink.split.i.i: ; preds = %28, %27 - %.0.i33 = phi i32 [ 0, %27 ], [ 1, %28 ] + %.0.i33 = phi i1 [ true, %27 ], [ false, %28 ] %.cmp6.sink.i.i = phi i1 [ %.cmp.i.i, %27 ], [ %.cmp6.i.i, %28 ] %29 = uitofp i1 %.cmp6.sink.i.i to double br label %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.i _ZN6Square15FactorEdgeIndexEiRiS0_.exit.i: ; preds = %.sink.split.i.i, %25 %.020.i = phi double [ 0.000000e+00, %25 ], [ %29, %.sink.split.i.i ] - %.1.i34 = phi i32 [ undef, %25 ], [ %.0.i33, %.sink.split.i.i ] + %.1.i34 = phi i1 [ undef, %25 ], [ %.0.i33, %.sink.split.i.i ] switch i32 %26, label %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i.i [ i32 0, label %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread12.i.i i32 2, label %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread12.i.i @@ -963,14 +963,8 @@ _ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i.i: ; preds = %_ZN6Square15Facto br label %_ZN6Square11EdgeCornersEiRiS0_.exit.i _ZN6Square11EdgeCornersEiRiS0_.exit.i: ; preds = %32, %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i.i - %.019.i = phi i32 [ %.011.i.i, %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i.i ], [ %33, %32 ] - %storemerge.i.i = phi i32 [ %31, %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i.i ], [ %34, %32 ] - switch i32 %.1.i34, label %_ZN15MarchingSquares9SetVertexEiPKdd.exit [ - i32 0, label %35 - i32 1, label %48 - ] - -35: ; preds = %_ZN6Square11EdgeCornersEiRiS0_.exit.i + %.019.i = phi i32 [ %.011.i.i, %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i.i ], [ %33, %33 ] + %storemerge.i.i = phi i32 [ %31, %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i.i ], [ %34, %33 ] %36 = zext nneg i32 %.019.i to i64 %37 = getelementptr inbounds nuw double, ptr %0, i64 %36 %38 = load double, ptr %37, align 8 @@ -982,29 +976,21 @@ _ZN6Square11EdgeCornersEiRiS0_.exit.i: ; preds = %32, %_ZN6Square15Fa %44 = fsub double %39, %43 %45 = fdiv double %39, %44 %46 = getelementptr inbounds nuw [2 x double], ptr @_ZN15MarchingSquares10vertexListE, i64 %indvars.iv + br i1 %.1.i33, label %47, label %49 + +47: ; preds = %_ZN6Square11EdgeCornersEiRiS0_.exit.i store double %45, ptr %46, align 16 %47 = getelementptr inbounds nuw i8, ptr %46, i64 8 store double %.020.i, ptr %47, align 8 br label %_ZN15MarchingSquares9SetVertexEiPKdd.exit 48: ; preds = %_ZN6Square11EdgeCornersEiRiS0_.exit.i - %49 = zext nneg i32 %.019.i to i64 - %50 = getelementptr inbounds nuw double, ptr %0, i64 %49 - %51 = load double, ptr %50, align 8 - %52 = fsub double %51, %1 - %53 = zext nneg i32 %storemerge.i.i to i64 - %54 = getelementptr inbounds nuw double, ptr %0, i64 %53 - %55 = load double, ptr %54, align 8 - %56 = fsub double %55, %1 - %57 = fsub double %52, %56 - %58 = fdiv double %52, %57 - %59 = getelementptr inbounds nuw [2 x double], ptr @_ZN15MarchingSquares10vertexListE, i64 %indvars.iv - %60 = getelementptr inbounds nuw i8, ptr %59, i64 8 - store double %58, ptr %60, align 8 - store double %.020.i, ptr %59, align 16 + %50 = getelementptr inbounds nuw i8, ptr %46, i64 8 + store double %45, ptr %50, align 8 + store double %.020.i, ptr %46, align 16 br label %_ZN15MarchingSquares9SetVertexEiPKdd.exit -_ZN15MarchingSquares9SetVertexEiPKdd.exit: ; preds = %48, %35, %_ZN6Square11EdgeCornersEiRiS0_.exit.i, %23 +_ZN15MarchingSquares9SetVertexEiPKdd.exit: ; preds = %48, %47, %23 %61 = shl i32 %.038, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 12 @@ -1037,36 +1023,20 @@ _ZN15MarchingSquares9SetVertexEiPKdd.exit: ; preds = %48, %35, %_ZN6Squar br label %.loopexit .loopexit: ; preds = %.preheader35, %.preheader35, %.loopexit.loopexit, %3 - %.030 = phi i32 [ 0, %3 ], [ 0, %.preheader35 ], [ %73, %.loopexit.loopexit ], [ 0, %.preheader35 ] + %.030 = phi i32 [ 0, %3 ], [ 0, %.preheader34 ], [ %73, %.loopexit.loopexit ], [ 0, %.preheader34 ] ret i32 %.030 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: read, inaccessiblemem: none) uwtable define void @_ZN15MarchingSquares9SetVertexEiPKdd(i32 noundef %0, ptr noundef readonly captures(none) %1, double noundef %2) local_unnamed_addr #4 align 2 { - switch i32 %0, label %_ZN6Square15FactorEdgeIndexEiRiS0_.exit [ - i32 0, label %4 - i32 2, label %4 - i32 1, label %5 - i32 3, label %5 - ] - -4: ; preds = %3, %3 - %.cmp.i = icmp samesign ugt i32 %0, 1 - br label %.sink.split.i - -5: ; preds = %3, %3 - %.cmp6.i = icmp samesign ult i32 %0, 2 - br label %.sink.split.i - -.sink.split.i: ; preds = %5, %4 - %.0 = phi i32 [ 0, %4 ], [ 1, %5 ] - %.cmp6.sink.i = phi i1 [ %.cmp.i, %4 ], [ %.cmp6.i, %5 ] - %6 = uitofp i1 %.cmp6.sink.i to double - br label %_ZN6Square15FactorEdgeIndexEiRiS0_.exit - -_ZN6Square15FactorEdgeIndexEiRiS0_.exit: ; preds = %3, %.sink.split.i - %.020 = phi double [ 0.000000e+00, %3 ], [ %6, %.sink.split.i ] - %.1 = phi i32 [ undef, %3 ], [ %.0, %.sink.split.i ] +_ZN6Square15FactorEdgeIndexEiRiS0_.exit: + %3 = icmp ult i32 %0, 4 + %switch.idx.cast = trunc i32 %0 to i1 + %switch.cast = trunc i32 %0 to i4 + %switch.downshift = lshr i4 6, %switch.cast + %switch.masked = trunc i4 %switch.downshift to i1 + %4 = uitofp i1 %switch.masked to double + %.020 = select i1 %3, double %4, double 0.000000e+00 switch i32 %0, label %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i [ i32 0, label %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread12.i i32 2, label %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread12.i @@ -1091,50 +1061,35 @@ _ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i: ; preds = %_ZN6Square15FactorE br label %_ZN6Square11EdgeCornersEiRiS0_.exit _ZN6Square11EdgeCornersEiRiS0_.exit: ; preds = %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i, %9 - %.019 = phi i32 [ %.011.i, %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i ], [ %10, %9 ] - %storemerge.i = phi i32 [ %8, %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i ], [ %11, %9 ] - switch i32 %.1, label %40 [ - i32 0, label %12 - i32 1, label %26 - ] - -12: ; preds = %_ZN6Square11EdgeCornersEiRiS0_.exit - %13 = zext nneg i32 %.019 to i64 - %14 = getelementptr inbounds nuw double, ptr %1, i64 %13 - %15 = load double, ptr %14, align 8 - %16 = fsub double %15, %2 - %17 = zext nneg i32 %storemerge.i to i64 - %18 = getelementptr inbounds nuw double, ptr %1, i64 %17 - %19 = load double, ptr %18, align 8 - %20 = fsub double %19, %2 - %21 = fsub double %16, %20 - %22 = fdiv double %16, %21 - %23 = sext i32 %0 to i64 - %24 = getelementptr inbounds [2 x double], ptr @_ZN15MarchingSquares10vertexListE, i64 %23 - store double %22, ptr %24, align 16 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 - store double %.020, ptr %25, align 8 - br label %40 - -26: ; preds = %_ZN6Square11EdgeCornersEiRiS0_.exit - %27 = zext nneg i32 %.019 to i64 - %28 = getelementptr inbounds nuw double, ptr %1, i64 %27 - %29 = load double, ptr %28, align 8 - %30 = fsub double %29, %2 - %31 = zext nneg i32 %storemerge.i to i64 - %32 = getelementptr inbounds nuw double, ptr %1, i64 %31 - %33 = load double, ptr %32, align 8 - %34 = fsub double %33, %2 - %35 = fsub double %30, %34 - %36 = fdiv double %30, %35 - %37 = sext i32 %0 to i64 - %38 = getelementptr inbounds [2 x double], ptr @_ZN15MarchingSquares10vertexListE, i64 %37 - %39 = getelementptr inbounds nuw i8, ptr %38, i64 8 - store double %36, ptr %39, align 8 - store double %.020, ptr %38, align 16 - br label %40 - -40: ; preds = %26, %12, %_ZN6Square11EdgeCornersEiRiS0_.exit + %.019 = phi i32 [ %.011.i, %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i ], [ %10, %7 ] + %storemerge.i = phi i32 [ %8, %_ZN6Square15FactorEdgeIndexEiRiS0_.exit.thread.i ], [ %11, %7 ] + %10 = zext nneg i32 %.019 to i64 + %11 = getelementptr inbounds nuw double, ptr %1, i64 %10 + %12 = load double, ptr %11, align 8 + %13 = fsub double %12, %2 + %14 = zext nneg i32 %storemerge.i to i64 + %15 = getelementptr inbounds nuw double, ptr %1, i64 %14 + %16 = load double, ptr %15, align 8 + %17 = fsub double %16, %2 + %18 = fsub double %13, %17 + %19 = fdiv double %13, %18 + %20 = sext i32 %0 to i64 + %18 = getelementptr inbounds [2 x double], ptr @_ZN15MarchingSquares10vertexListE, i64 %20 + br i1 %switch.idx.cast, label %24, label %22 + +22:; preds = %_ZN6Square11EdgeCornersEiRiS0_.exit + store double %19, ptr %21, align 16 + %23 = getelementptr inbounds nuw i8, ptr %21, i64 8 + store double %.020, ptr %23, align 8 + br label %26 + +24:; preds = %_ZN6Square11EdgeCornersEiRiS0_.exit + %25 = getelementptr inbounds nuw i8, ptr %21, i64 8 + store double %19, ptr %25, align 8 + store double %.020, ptr %21, align 16 + br label %26 + +26:; preds = %24, %22 ret void } diff --git a/bench/mini-lsm-rs/optimized/1m9jerzd56wr2irm.ll b/bench/mini-lsm-rs/optimized/1m9jerzd56wr2irm.ll index 80ca7d6af71..5ea2d450c8c 100644 --- a/bench/mini-lsm-rs/optimized/1m9jerzd56wr2irm.ll +++ b/bench/mini-lsm-rs/optimized/1m9jerzd56wr2irm.ll @@ -4392,7 +4392,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.sroa.0.0.i = phi ptr [ %1, %4 ], [ %38, %34 ] %.sroa.024.1.i = phi i64 [ 0, %4 ], [ %.sroa.9.0.i216, %34 ] %.sroa.7.1.i = phi ptr [ %5, %4 ], [ %.sroa.16.1.i215, %34 ] - switch i64 %.sroa.024.1.i, label %default.unreachable [ + switch i64 %.sroa.024.1.i, label %.unreachabledefault [ i64 0, label %7 i64 1, label %18 i64 2, label %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" @@ -4405,7 +4405,10 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.pre210 = zext i16 %.pre to i64 br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i" -default.unreachable: ; preds = %6, %.lr.ph.preheader +default.unreachable: ; preds = %6 + unreachable + +default.unreachable: ; preds = %.lr.ph.preheader unreachable 7: ; preds = %6 @@ -4483,10 +4486,10 @@ default.unreachable.i36.i.i: ; preds = %"_ZN110_$LT$core..i br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i": ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit295", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit", %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" - %.pre-phi = phi i64 [ %.pre210, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" ], [ %12, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit" ], [ %23, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit295" ], [ %12, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i.i" ], [ %23, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i.i" ] - %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit295" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i.i" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i.i" ] - %.sroa.9.0.i = phi i64 [ 2, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit" ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit295" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i.i" ] - %.sroa.083.0.i = phi i64 [ 0, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit" ], [ %.sroa.8.0.i26.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit295" ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i.i" ], [ %27, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i.i" ] + %.pre-phi = phi i64 [ %.pre210, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" ], [ %12, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit" ], [ %23, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit294" ], [ %12, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i.i" ], [ %23, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i.i" ] + %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit294" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i.i" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i.i" ] + %.sroa.9.0.i = phi i64 [ 2, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit" ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit294" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i.i" ] + %.sroa.083.0.i = phi i64 [ 0, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i_crit_edge" ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit" ], [ %.sroa.8.0.i26.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.loopexit294" ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i.i" ], [ %27, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i.i" ] %33 = icmp ult i64 %.sroa.083.0.i, %.pre-phi br i1 %33, label %.preheader, label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.i.thread" @@ -4634,9 +4637,9 @@ default.unreachable.i36.i: ; preds = %"_ZN110_$LT$core..i br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit": ; preds = %67, %56, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit281", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit", %.lr.ph.preheader, %71 - %.sroa.091.0 = phi i64 [ %74, %71 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ %.sroa.8.0.i26.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i" ], [ %54, %56 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit" ], [ %65, %67 ], [ %69, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit281" ] - %.sroa.992.0 = phi i64 [ 3, %71 ], [ %.sroa.03.0163, %.lr.ph.preheader ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i" ], [ 0, %56 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit" ], [ 1, %67 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit281" ] - %.sroa.16.1 = phi ptr [ %.sroa.16.0156, %71 ], [ %.sroa.16.0156, %.lr.ph.preheader ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i" ], [ %.sroa.54.0162, %56 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit" ], [ %.sroa.54.0162, %67 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit281" ] + %.sroa.091.0 = phi i64 [ %74, %71 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ %.sroa.8.0.i26.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i" ], [ %54, %56 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit" ], [ %65, %67 ], [ %69, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit280" ] + %.sroa.992.0 = phi i64 [ 3, %71 ], [ %.sroa.03.0163, %.lr.ph.preheader ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i" ], [ 0, %56 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit" ], [ 1, %67 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit280" ] + %.sroa.16.1 = phi ptr [ %.sroa.16.0156, %71 ], [ %.sroa.16.0156, %.lr.ph.preheader ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i.i" ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h34cebc582f3af772E.exit.i28.i" ], [ %.sroa.54.0162, %56 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit" ], [ %.sroa.54.0162, %67 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17ha6bc9730cf135668E.exit.loopexit280" ] %75 = getelementptr inbounds nuw i8, ptr %.sroa.014.0157, i64 808 %76 = icmp ult i64 %.sroa.619.0165, 12 call void @llvm.assume(i1 %76) diff --git a/bench/ncnn/optimized/deconvolutiondepthwise_x86_avx512.ll b/bench/ncnn/optimized/deconvolutiondepthwise_x86_avx512.ll index fb60d3eafb5..853dd9f7f68 100644 --- a/bench/ncnn/optimized/deconvolutiondepthwise_x86_avx512.ll +++ b/bench/ncnn/optimized/deconvolutiondepthwise_x86_avx512.ll @@ -326,7 +326,7 @@ define hidden noundef i32 @_ZN4ncnn33DeconvolutionDepthWise_x86_avx51215create_p .split: ; preds = %._crit_edge.us, %.preheader.lr.ph, %42 %76 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %.045, i1 true) - switch i32 %76, label %_ZN4ncnn3MataSERKS0_.exit [ + switch i32 %76, label %.unreachabledefault [ i32 4, label %77 i32 3, label %121 i32 2, label %166 @@ -448,7 +448,7 @@ _ZN4ncnn3MatD2Ev.exit59: ; preds = %117, %116, %112, %1 br label %294 121: ; preds = %_ZN4ncnn3MatD2Ev.exit._crit_edge, %.split - %122 = phi i32 [ %.pre, %_ZN4ncnn3MatD2Ev.exit._crit_edge ], [ %56, %.split ] + %122 = phi i32 [ %.pre, %_ZN4ncnn3MatD2Ev.exit._crit_edge ], [ %56, %._crit_edge126 ] call void @llvm.lifetime.start.p0(ptr nonnull %5) invoke void @_ZNK4ncnn3Mat7reshapeEiiPNS_9AllocatorE(ptr dead_on_unwind nonnull writable sret(%"class.ncnn::Mat") align 8 %5, ptr noundef nonnull align 8 dereferenceable(72) %3, i32 noundef %14, i32 noundef %122, ptr noundef null) to label %123 unwind label %144 @@ -751,7 +751,10 @@ _ZN4ncnn3Mat7releaseEv.exit.i: ; preds = %233, %234, %229, %2 cleanup br label %294 -_ZN4ncnn3MataSERKS0_.exit: ; preds = %_ZN4ncnn3Mat7releaseEv.exit.i, %212, %.split, %_ZN4ncnn3MatD2Ev.exit, %_ZN4ncnn3MatD2Ev.exit60, %_ZN4ncnn3MatD2Ev.exit62 +_ZN4ncnn3MataSERKS0_.exit: ; preds = %.split + unreachable + +_ZN4ncnn3MataSERKS0_.exit: ; preds = %_ZN4ncnn3Mat7releaseEv.exit.i, %212, %_ZN4ncnn3MatD2Ev.exit, %_ZN4ncnn3MatD2Ev.exit60, %_ZN4ncnn3MatD2Ev.exit62 %257 = load i8, ptr %1, align 8, !tbaa !61, !range !46, !noundef !47 %258 = trunc nuw i8 %257 to i1 br i1 %258, label %259, label %277 @@ -6211,10 +6214,10 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #18 declare void @llvm.assume(i1 noundef) #19 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.ctpop.i32(i32) #20 +declare i32 @llvm.cttz.i32(i32, i1 immarg) #20 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.cttz.i32(i32, i1 immarg) #20 +declare i32 @llvm.ctpop.i32(i32) #20 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #20 diff --git a/bench/opencv/optimized/bgfg_KNN.ll b/bench/opencv/optimized/bgfg_KNN.ll index 92a14d10496..c19e69315ba 100644 --- a/bench/opencv/optimized/bgfg_KNN.ll +++ b/bench/opencv/optimized/bgfg_KNN.ll @@ -2689,7 +2689,7 @@ _ZN2cvL25_cvCheckPixelBackgroundNPEPKhiiPhfifbRh.exit.us: ; preds = %100, %133, br label %_ZN2cvL26_cvUpdatePixelBackgroundNPEiPKhiiPhS2_S2_S2_S2_S2_S2_iiih.exit.us _ZN2cvL26_cvUpdatePixelBackgroundNPEiPKhiiPhS2_S2_S2_S2_S2_S2_iiih.exit.us: ; preds = %218, %213 - switch i32 %.3.i.us, label %default.unreachable89 [ + switch i32 %.3.i.us, label %default.unreachable [ i32 0, label %227 i32 1, label %228 i32 2, label %225 @@ -2720,11 +2720,11 @@ _ZN2cvL26_cvUpdatePixelBackgroundNPEiPKhiiPhS2_S2_S2_S2_S2_S2_iiih.exit.us: ; pr %exitcond80.not = icmp eq i64 %indvars.iv.next77, %wide.trip.count79 br i1 %exitcond80.not, label %._crit_edge67, label %.lr.ph.us, !llvm.loop !139 +default.unreachable: ; preds = %_ZN2cvL26_cvUpdatePixelBackgroundNPEiPKhiiPhS2_S2_S2_S2_S2_S2_iiih.exit.us + unreachable + ._crit_edge67: ; preds = %._crit_edge.us, %.lr.ph66, %2 ret void - -default.unreachable89: ; preds = %_ZN2cvL26_cvUpdatePixelBackgroundNPEiPKhiiPhS2_S2_S2_S2_S2_S2_iiih.exit.us - unreachable } ; Function Attrs: nobuiltin nounwind diff --git a/bench/openjdk/optimized/cmstypes.ll b/bench/openjdk/optimized/cmstypes.ll index d00a32e06ed..74e1114a47b 100644 --- a/bench/openjdk/optimized/cmstypes.ll +++ b/bench/openjdk/optimized/cmstypes.ll @@ -8729,14 +8729,13 @@ declare i32 @cmsPipelineCheckAndRetreiveStages(ptr noundef, i32 noundef, ...) lo ; Function Attrs: nounwind uwtable define internal fastcc range(i32 0, 2) i32 @WriteSetOfCurves(ptr noundef readonly captures(none) %0, ptr noundef %1, ptr noundef %2) unnamed_addr #0 { - %4 = alloca [5 x i8], align 1 - %5 = tail call i32 @cmsStageOutputChannels(ptr noundef %2) #14 - %6 = tail call ptr @_cmsStageGetPtrToCurveSet(ptr noundef %2) #14 - %.not54 = icmp eq i32 %5, 0 - br i1 %.not54, label %Type_Curve_Write.exit.thread, label %.lr.ph.preheader + %4 = tail call i32 @cmsStageOutputChannels(ptr noundef %2) #14 + %5 = tail call ptr @_cmsStageGetPtrToCurveSet(ptr noundef %2) #14 + %.not55 = icmp eq i32 %4, 0 + br i1 %.not55, label %Type_Curve_Write.exit.thread, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %3 - %wide.trip.count = zext i32 %5 to i64 + %wide.trip.count = zext i32 %4 to i64 br label %.lr.ph 7: ; preds = %Type_ParametricCurve_Write.exit @@ -8745,8 +8744,8 @@ define internal fastcc range(i32 0, 2) i32 @WriteSetOfCurves(ptr noundef readonl br i1 %exitcond.not, label %Type_Curve_Write.exit.thread, label %.lr.ph, !llvm.loop !75 .lr.ph: ; preds = %.lr.ph.preheader, %7 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %7 ] - %8 = getelementptr inbounds nuw ptr, ptr %6, i64 %indvars.iv + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %6 ] + %8 = getelementptr inbounds nuw ptr, ptr %5, i64 %indvars.iv %9 = load ptr, ptr %8, align 8 %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 %11 = load i32, ptr %10, align 8 @@ -8769,7 +8768,7 @@ define internal fastcc range(i32 0, 2) i32 @WriteSetOfCurves(ptr noundef readonl br i1 %17, label %23, label %18 18: ; preds = %.lr.ph._crit_edge, %12 - %19 = phi ptr [ %.pre, %.lr.ph._crit_edge ], [ %14, %12 ] + %19 = phi ptr [ %.pre, %.lr.ph._crit_edge ], [ %14, %11 ] %20 = getelementptr inbounds nuw i8, ptr %19, i64 8 %21 = load i32, ptr %20, align 8 %22 = icmp slt i32 %21, 0 @@ -8777,20 +8776,18 @@ define internal fastcc range(i32 0, 2) i32 @WriteSetOfCurves(ptr noundef readonl br label %23 23: ; preds = %18, %12, %.lr.ph - %.028 = phi i32 [ 1668641398, %.lr.ph ], [ 1668641398, %12 ], [ %spec.select, %18 ] + %.028 = phi i32 [ 1668641398, %.lr.ph ], [ 1668641398, %11 ], [ %spec.select, %17 ] %24 = tail call i32 @_cmsWriteTypeBase(ptr noundef %1, i32 noundef %.028) #14 %.not = icmp eq i32 %24, 0 br i1 %.not, label %Type_Curve_Write.exit.thread, label %25 25: ; preds = %23 - switch i32 %.028, label %82 [ - i32 1668641398, label %26 - i32 1885434465, label %53 - ] + %25 = icmp eq i32 %.028, 1668641398 + %26 = load ptr, ptr %7, align 8 + br i1 %25, label %26, label %53 26: ; preds = %25 - %27 = load ptr, ptr %8, align 8 - %28 = getelementptr inbounds nuw i8, ptr %27, i64 8 + %28 = getelementptr inbounds nuw i8, ptr %26, i64 8 %29 = load i32, ptr %28, align 8 %30 = icmp eq i32 %29, 1 br i1 %30, label %31, label %44 @@ -8835,39 +8832,38 @@ Type_Curve_Write.exit: ; preds = %42, %48 br i1 %.0.i, label %Type_Curve_Write.exit.thread, label %Type_ParametricCurve_Write.exit 53: ; preds = %25 - %54 = load ptr, ptr %8, align 8 - %55 = getelementptr inbounds nuw i8, ptr %54, i64 16 - %56 = load ptr, ptr %55, align 8 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 8 - %58 = load i32, ptr %57, align 8 - %59 = getelementptr inbounds nuw i8, ptr %54, i64 8 - %60 = load i32, ptr %59, align 8 - %61 = icmp ugt i32 %60, 1 - %62 = icmp slt i32 %58, 1 - %or.cond.i = select i1 %61, i1 true, i1 %62 - br i1 %or.cond.i, label %.loopexit.sink.split.i, label %63 - -63: ; preds = %53 - %64 = icmp samesign ugt i32 %58, 5 - br i1 %64, label %.loopexit.sink.split.i, label %65 + %54 = getelementptr inbounds nuw i8, ptr %26, i64 16 + %55 = load ptr, ptr %54, align 8 + %56 = getelementptr inbounds nuw i8, ptr %55, i64 8 + %57 = load i32, ptr %56, align 8 + %58 = getelementptr inbounds nuw i8, ptr %27, i64 8 + %59 = load i32, ptr %58, align 8 + %60 = icmp ugt i32 %59, 1 + %61 = icmp slt i32 %57, 1 + %or.cond.i = select i1 %60, i1 true, i1 %61 + br i1 %or.cond.i, label %.loopexit.sink.split.i, label %62 -65: ; preds = %63 - %66 = zext nneg i32 %58 to i64 - %67 = getelementptr inbounds nuw i32, ptr @Type_ParametricCurve_Write.ParamsByType, i64 %66 - %68 = load i32, ptr %67, align 4 - %69 = trunc nuw nsw i32 %58 to i16 - %70 = add nsw i16 %69, -1 - %71 = tail call i32 @_cmsWriteUInt16Number(ptr noundef %1, i16 noundef zeroext %70) #14 - %.not.i34 = icmp eq i32 %71, 0 - br i1 %.not.i34, label %Type_Curve_Write.exit.thread, label %72 +65: ; preds = %53 + %63 = icmp samesign ugt i32 %57, 5 + br i1 %63, label %.loopexit.sink.split.i, label %64 72: ; preds = %65 - %73 = tail call i32 @_cmsWriteUInt16Number(ptr noundef %1, i16 noundef zeroext 0) #14 - %.not20.i = icmp eq i32 %73, 0 + %65 = zext nneg i32 %57 to i64 + %66 = getelementptr inbounds nuw i32, ptr @Type_ParametricCurve_Write.ParamsByType, i64 %65 + %67 = load i32, ptr %66, align 4 + %68 = trunc nuw nsw i32 %57 to i16 + %69 = add nsw i16 %68, -1 + %70 = tail call i32 @_cmsWriteUInt16Number(ptr noundef %1, i16 noundef zeroext %69) #14 + %.not.i35 = icmp eq i32 %70, 0 + br i1 %.not.i35, label %Type_Curve_Write.exit.thread, label %71 + +71: ; preds = %64 + %72 = tail call i32 @_cmsWriteUInt16Number(ptr noundef %1, i16 noundef zeroext 0) #14 + %.not20.i = icmp eq i32 %72, 0 br i1 %.not20.i, label %Type_Curve_Write.exit.thread, label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %72 - %smax.i = tail call i32 @llvm.smax.i32(i32 %68, i32 1) +.lr.ph.preheader.i: ; preds = %71 + %smax.i = tail call i32 @llvm.smax.i32(i32 %67, i32 1) %wide.trip.count.i = zext nneg i32 %smax.i to i64 br label %.lr.ph.i @@ -8877,8 +8873,8 @@ Type_Curve_Write.exit: ; preds = %42, %48 br i1 %exitcond.not.i, label %Type_ParametricCurve_Write.exit, label %.lr.ph.i, !llvm.loop !23 .lr.ph.i: ; preds = %74, %.lr.ph.preheader.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %74 ] - %75 = load ptr, ptr %55, align 8 + %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %73 ] + %75 = load ptr, ptr %54, align 8 %76 = getelementptr inbounds nuw i8, ptr %75, i64 16 %77 = getelementptr inbounds nuw double, ptr %76, i64 %indvars.iv.i %78 = load double, ptr %77, align 8 @@ -8886,27 +8882,20 @@ Type_Curve_Write.exit: ; preds = %42, %48 %.not21.i = icmp eq i32 %79, 0 br i1 %.not21.i, label %Type_Curve_Write.exit.thread, label %74 -.loopexit.sink.split.i: ; preds = %63, %53 - %.str.6.sink.i = phi ptr [ @.str.5, %53 ], [ @.str.6, %63 ] +.loopexit.sink.split.i: ; preds = %62, %53 + %.str.6.sink.i = phi ptr [ @.str.5, %53 ], [ @.str.6, %62 ] %80 = getelementptr inbounds nuw i8, ptr %0, i64 40 %81 = load ptr, ptr %80, align 8 tail call void (ptr, i32, ptr, ...) @cmsSignalError(ptr noundef %81, i32 noundef 8, ptr noundef nonnull %.str.6.sink.i) #14 br label %Type_Curve_Write.exit.thread -82: ; preds = %25 - call void @_cmsTagSignature2String(ptr noundef nonnull %4, i32 noundef 1885434465) #14 - %83 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %84 = load ptr, ptr %83, align 8 - call void (ptr, i32, ptr, ...) @cmsSignalError(ptr noundef %84, i32 noundef 8, ptr noundef nonnull @.str.16, ptr noundef nonnull %4) #14 - br label %Type_Curve_Write.exit.thread - Type_ParametricCurve_Write.exit: ; preds = %74, %Type_Curve_Write.exit %85 = tail call i32 @_cmsWriteAlignment(ptr noundef %1) #14 %.not33 = icmp eq i32 %85, 0 br i1 %.not33, label %Type_Curve_Write.exit.thread, label %7 -Type_Curve_Write.exit.thread: ; preds = %23, %Type_Curve_Write.exit, %Type_ParametricCurve_Write.exit, %7, %37, %44, %65, %72, %.lr.ph.i, %3, %.loopexit.sink.split.i, %82 - %.0 = phi i32 [ 0, %82 ], [ 0, %.loopexit.sink.split.i ], [ 1, %3 ], [ 0, %.lr.ph.i ], [ 0, %23 ], [ 0, %Type_Curve_Write.exit ], [ 0, %Type_ParametricCurve_Write.exit ], [ 1, %7 ], [ 0, %37 ], [ 0, %44 ], [ 0, %65 ], [ 0, %72 ] +Type_Curve_Write.exit.thread: ; preds = %23, %Type_Curve_Write.exit, %Type_ParametricCurve_Write.exit, %7, %37, %44, %64, %71, %.lr.ph.i, %3, %.loopexit.sink.split.i + %.0 = phi i32 [ 0, %.loopexit.sink.split.i ], [ 1, %3 ], [ 0, %.lr.ph.i ], [ 0, %22 ], [ 0, %Type_Curve_Write.exit ], [ 0, %Type_ParametricCurve_Write.exit ], [ 1, %6 ], [ 0, %37 ], [ 0, %44 ], [ 0, %64 ], [ 0, %71 ] ret i32 %.0 } diff --git a/bench/openssl/optimized/a_mbstr.ll b/bench/openssl/optimized/a_mbstr.ll index 2d91a93ecd2..546b22359cd 100644 --- a/bench/openssl/optimized/a_mbstr.ll +++ b/bench/openssl/optimized/a_mbstr.ll @@ -22,7 +22,6 @@ define range(i32 -1, 31) i32 @ASN1_mbstring_ncopy(ptr noundef captures(address_i %11 = alloca ptr, align 8 store i64 %4, ptr %9, align 8, !tbaa !3 call void @llvm.lifetime.start.p0(ptr nonnull %10) - store i32 0, ptr %10, align 4, !tbaa !7 call void @llvm.lifetime.start.p0(ptr nonnull %11) %12 = icmp eq i32 %2, -1 br i1 %12, label %13, label %16 @@ -110,7 +109,7 @@ define range(i32 -1, 31) i32 @ASN1_mbstring_ncopy(ptr noundef captures(address_i %42 = getelementptr inbounds nuw i8, ptr %.02636.i, i64 %41 %43 = sub nsw i32 %.02735.i, %32 %.not.i = icmp eq i32 %43, 0 - br i1 %.not.i, label %traverse_string.exit, label %.lr.ph.split.split.i, !llvm.loop !9 + br i1 %.not.i, label %traverse_string.exit, label %.lr.ph.split.split.i, !llvm.loop !7 traverse_string.exit: ; preds = %39, %31 %.2 = phi i32 [ 0, %31 ], [ %40, %39 ] @@ -207,14 +206,14 @@ in_utf8.exit.thread: ; preds = %34, %.lr.ph.split.s br i1 %.not76, label %110, label %72 72: ; preds = %71 - %73 = load ptr, ptr %0, align 8, !tbaa !11 + %73 = load ptr, ptr %0, align 8, !tbaa !9 %.not77.not.not = icmp eq ptr %73, null br i1 %.not77.not.not, label %76, label %74 74: ; preds = %72 call void @ASN1_STRING_set0(ptr noundef nonnull %73, ptr noundef null, i32 noundef 0) #7 %75 = getelementptr inbounds nuw i8, ptr %73, i64 4 - store i32 %.059, ptr %75, align 4, !tbaa !14 + store i32 %.059, ptr %75, align 4, !tbaa !12 br label %81 76: ; preds = %72 @@ -229,7 +228,7 @@ in_utf8.exit.thread: ; preds = %34, %.lr.ph.split.s br label %110 80: ; preds = %76 - store ptr %77, ptr %0, align 8, !tbaa !11 + store ptr %77, ptr %0, align 8, !tbaa !9 br label %81 81: ; preds = %80, %74 @@ -247,7 +246,7 @@ in_utf8.exit.thread: ; preds = %34, %.lr.ph.split.s 86: ; preds = %85 call void @ASN1_STRING_free(ptr noundef nonnull %.055) #7 - store ptr null, ptr %0, align 8, !tbaa !11 + store ptr null, ptr %0, align 8, !tbaa !9 br label %87 87: ; preds = %86, %85 @@ -257,7 +256,7 @@ in_utf8.exit.thread: ; preds = %34, %.lr.ph.split.s br label %110 88: ; preds = %81 - switch i32 %.056, label %96 [ + switch i32 %.056, label %.unreachabledefault [ i32 4097, label %89 i32 4098, label %90 i32 4100, label %92 @@ -265,28 +264,31 @@ in_utf8.exit.thread: ; preds = %34, %.lr.ph.split.s ] 89: ; preds = %88 - store i32 %.093, ptr %10, align 4, !tbaa !7 + store i32 %.093, ptr %10, align 4, !tbaa !16 br label %96 90: ; preds = %88 %91 = shl i32 %.093, 1 - store i32 %91, ptr %10, align 4, !tbaa !7 + store i32 %91, ptr %10, align 4, !tbaa !16 br label %96 92: ; preds = %88 %93 = shl i32 %.093, 2 - store i32 %93, ptr %10, align 4, !tbaa !7 + store i32 %93, ptr %10, align 4, !tbaa !16 br label %96 94: ; preds = %88 - store i32 0, ptr %10, align 4, !tbaa !7 + store i32 0, ptr %10, align 4, !tbaa !16 %95 = call fastcc i32 @traverse_string(ptr noundef %1, i32 noundef %.060, i32 noundef %3, ptr noundef nonnull @out_utf8, ptr noundef %10) - %.pre = load i32, ptr %10, align 4, !tbaa !7 + %.pre = load i32, ptr %10, align 4, !tbaa !16 br label %96 -96: ; preds = %94, %92, %90, %89, %88 - %97 = phi i32 [ 0, %88 ], [ %.093, %89 ], [ %91, %90 ], [ %93, %92 ], [ %.pre, %94 ] - %.0 = phi ptr [ null, %88 ], [ @cpy_asc, %89 ], [ @cpy_bmp, %90 ], [ @cpy_univ, %92 ], [ @cpy_utf8, %94 ] +96: ; preds = %88 + unreachable + +96: ; preds = %94, %92, %90, %89 + %97 = phi i32 [ %.093, %89 ], [ %91, %90 ], [ %93, %92 ], [ %.pre, %94 ] + %.0 = phi ptr [ @cpy_asc, %89 ], [ @cpy_bmp, %90 ], [ @cpy_univ, %92 ], [ @cpy_utf8, %94 ] %98 = add nsw i32 %97, 1 %99 = sext i32 %98 to i64 %100 = call noalias ptr @CRYPTO_malloc(i64 noundef %99, ptr noundef nonnull @.str, i32 noundef 189) #7 @@ -299,18 +301,18 @@ in_utf8.exit.thread: ; preds = %34, %.lr.ph.split.s 103: ; preds = %102 call void @ASN1_STRING_free(ptr noundef nonnull %.055) #7 - store ptr null, ptr %0, align 8, !tbaa !11 + store ptr null, ptr %0, align 8, !tbaa !9 br label %110 104: ; preds = %96 - %105 = load i32, ptr %10, align 4, !tbaa !7 + %105 = load i32, ptr %10, align 4, !tbaa !16 store i32 %105, ptr %.055, align 8, !tbaa !18 %106 = getelementptr inbounds nuw i8, ptr %.055, i64 8 store ptr %100, ptr %106, align 8, !tbaa !19 %107 = sext i32 %105 to i64 %108 = getelementptr inbounds i8, ptr %100, i64 %107 store i8 0, ptr %108, align 1, !tbaa !20 - %109 = call fastcc i32 @traverse_string(ptr noundef %1, i32 noundef %.060, i32 noundef %3, ptr noundef %.0, ptr noundef %11) + %109 = call fastcc i32 @traverse_string(ptr noundef %1, i32 noundef %.060, i32 noundef %3, ptr noundef nonnull %.0, ptr noundef %11) br label %110 110: ; preds = %102, %103, %83, %71, %18, %104, %87, %79, %57, %53, %49, %44, %in_utf8.exit.thread, %28, %23 @@ -360,7 +362,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @traverse_string(ptr nounde %12 = add nsw i32 %.02735.us, -1 %13 = getelementptr inbounds nuw i8, ptr %.02636.us, i64 1 %.not.us = icmp eq i32 %12, 0 - br i1 %.not.us, label %._crit_edge, label %.lr.ph.split.us.split, !llvm.loop !9 + br i1 %.not.us, label %._crit_edge, label %.lr.ph.split.us.split, !llvm.loop !7 .lr.ph.split.us42: ; preds = %.lr.ph br i1 %.not33, label %._crit_edge, label %.lr.ph.split.us42.split @@ -383,7 +385,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @traverse_string(ptr nounde %24 = add nsw i32 %.02735.us44, -2 %25 = getelementptr inbounds nuw i8, ptr %.02636.us43, i64 2 %.not.us47 = icmp eq i32 %24, 0 - br i1 %.not.us47, label %._crit_edge, label %.lr.ph.split.us42.split, !llvm.loop !9 + br i1 %.not.us47, label %._crit_edge, label %.lr.ph.split.us42.split, !llvm.loop !7 .lr.ph.split.us52: ; preds = %.lr.ph, %48 %.02636.us53 = phi ptr [ %26, %48 ], [ %0, %.lr.ph ] @@ -416,7 +418,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @traverse_string(ptr nounde 48: ; preds = %28, %.lr.ph.split.us52 %.not.us57 = icmp eq i32 %27, 0 - br i1 %.not.us57, label %._crit_edge, label %.lr.ph.split.us52, !llvm.loop !9 + br i1 %.not.us57, label %._crit_edge, label %.lr.ph.split.us52, !llvm.loop !7 .lr.ph.split: ; preds = %.lr.ph br i1 %.not33, label %.lr.ph.split.split.us, label %.lr.ph.split.split @@ -433,7 +435,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @traverse_string(ptr nounde %53 = zext nneg i32 %49 to i64 %54 = getelementptr inbounds nuw i8, ptr %.02636.us62, i64 %53 %.not.us64 = icmp eq i32 %52, 0 - br i1 %.not.us64, label %._crit_edge, label %.lr.ph.split.split.us, !llvm.loop !9 + br i1 %.not.us64, label %._crit_edge, label %.lr.ph.split.split.us, !llvm.loop !7 .lr.ph.split.split: ; preds = %.lr.ph.split, %61 %.02636 = phi ptr [ %63, %61 ], [ %0, %.lr.ph.split ] @@ -453,7 +455,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @traverse_string(ptr nounde %63 = getelementptr inbounds nuw i8, ptr %.02636, i64 %62 %64 = sub nsw i32 %.02735, %55 %.not = icmp eq i32 %64, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph.split.split, !llvm.loop !9 + br i1 %.not, label %._crit_edge, label %.lr.ph.split.split, !llvm.loop !7 ._crit_edge: ; preds = %28, %48, %.lr.ph.split.us42.split, %23, %.lr.ph.split.us.split, %11, %.lr.ph.split.split, %57, %61, %.lr.ph.split.split.us, %51, %.lr.ph.split.us42, %.lr.ph.split.us, %5 %.0 = phi i32 [ 1, %5 ], [ 1, %.lr.ph.split.us ], [ 1, %.lr.ph.split.us42 ], [ 1, %51 ], [ -1, %.lr.ph.split.split.us ], [ 1, %61 ], [ %59, %57 ], [ -1, %.lr.ph.split.split ], [ 1, %11 ], [ %9, %.lr.ph.split.us.split ], [ 1, %23 ], [ %21, %.lr.ph.split.us42.split ], [ 1, %48 ], [ %46, %28 ] @@ -594,9 +596,9 @@ define internal range(i32 -2147483648, 2) i32 @out_utf8(i64 noundef %0, ptr noun br i1 %4, label %8, label %5 5: ; preds = %2 - %6 = load i32, ptr %1, align 4, !tbaa !7 + %6 = load i32, ptr %1, align 4, !tbaa !16 %7 = add nsw i32 %6, %3 - store i32 %7, ptr %1, align 4, !tbaa !7 + store i32 %7, ptr %1, align 4, !tbaa !16 br label %8 8: ; preds = %2, %5 @@ -652,17 +654,17 @@ attributes #7 = { nounwind } !4 = !{!"long", !5, i64 0} !5 = !{!"omnipotent char", !6, i64 0} !6 = !{!"Simple C/C++ TBAA"} -!7 = !{!8, !8, i64 0} -!8 = !{!"int", !5, i64 0} -!9 = distinct !{!9, !10} -!10 = !{!"llvm.loop.mustprogress"} -!11 = !{!12, !12, i64 0} -!12 = !{!"p1 _ZTS14asn1_string_st", !13, i64 0} -!13 = !{!"any pointer", !5, i64 0} -!14 = !{!15, !8, i64 4} -!15 = !{!"asn1_string_st", !8, i64 0, !8, i64 4, !16, i64 8, !4, i64 16} -!16 = !{!"p1 omnipotent char", !13, i64 0} -!17 = !{!16, !16, i64 0} -!18 = !{!15, !8, i64 0} -!19 = !{!15, !16, i64 8} +!7 = distinct !{!7, !8} +!8 = !{!"llvm.loop.mustprogress"} +!9 = !{!10, !10, i64 0} +!10 = !{!"p1 _ZTS14asn1_string_st", !11, i64 0} +!11 = !{!"any pointer", !5, i64 0} +!12 = !{!13, !14, i64 4} +!13 = !{!"asn1_string_st", !14, i64 0, !14, i64 4, !15, i64 8, !4, i64 16} +!14 = !{!"int", !5, i64 0} +!15 = !{!"p1 omnipotent char", !11, i64 0} +!16 = !{!14, !14, i64 0} +!17 = !{!15, !15, i64 0} +!18 = !{!13, !14, i64 0} +!19 = !{!13, !15, i64 8} !20 = !{!5, !5, i64 0} diff --git a/bench/openssl/optimized/bn_rsa_fips186_4.ll b/bench/openssl/optimized/bn_rsa_fips186_4.ll index 98b8d2cc5b3..d7bf5fc47fc 100644 --- a/bench/openssl/optimized/bn_rsa_fips186_4.ll +++ b/bench/openssl/optimized/bn_rsa_fips186_4.ll @@ -116,12 +116,10 @@ bn_rsa_fips186_5_aux_prime_max_sum_size_for_prob_primes.exit: ; preds = %48 54: ; preds = %bn_rsa_fips186_5_aux_prime_max_sum_size_for_prob_primes.exit %55 = tail call i32 @ossl_bn_rsa_fips186_4_derive_prime(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %4, ptr noundef nonnull %18, ptr noundef nonnull %22, i32 noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) - %.not89 = icmp ne i32 %55, 0 - %spec.select = zext i1 %.not89 to i32 br label %bn_rsa_fips186_5_aux_prime_min_size.exit bn_rsa_fips186_5_aux_prime_min_size.exit: ; preds = %39, %54, %bn_rsa_fips186_5_aux_prime_max_sum_size_for_prob_primes.exit, %46, %48, %44, %41, %29 - %.069 = phi i32 [ 0, %29 ], [ 0, %bn_rsa_fips186_5_aux_prime_max_sum_size_for_prob_primes.exit ], [ 0, %48 ], [ 0, %46 ], [ 0, %44 ], [ 0, %41 ], [ %spec.select, %54 ], [ 0, %39 ] + %.069 = phi i32 [ 0, %29 ], [ 0, %bn_rsa_fips186_5_aux_prime_max_sum_size_for_prob_primes.exit ], [ 0, %48 ], [ 0, %46 ], [ 0, %44 ], [ 0, %41 ], [ %55, %54 ], [ 0, %39 ] br i1 %.not, label %56, label %57 56: ; preds = %bn_rsa_fips186_5_aux_prime_min_size.exit @@ -203,7 +201,7 @@ define internal fastcc range(i32 0, 2) i32 @bn_rsa_fips186_4_find_aux_prob_prime declare i32 @BN_num_bits(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable -define i32 @ossl_bn_rsa_fips186_4_derive_prime(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #0 { +define range(i32 0, 2) i32 @ossl_bn_rsa_fips186_4_derive_prime(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #0 { %10 = ashr i32 %5, 1 tail call void @BN_CTX_start(ptr noundef %7) #3 %11 = tail call ptr @BN_CTX_get(ptr noundef %7) #3 @@ -354,7 +352,7 @@ define i32 @ossl_bn_rsa_fips186_4_derive_prime(ptr noundef %0, ptr noundef %1, p %79 = lshr i32 %77, 30 %. = and i32 %79, 2 %.0 = select i1 %78, i32 7, i32 %. - switch i32 %.0, label %.loopexit122 [ + switch i32 %.0, label %.unreachabledefault [ i32 0, label %80 i32 7, label %85 i32 2, label %.loopexit @@ -384,11 +382,10 @@ define i32 @ossl_bn_rsa_fips186_4_derive_prime(ptr noundef %0, ptr noundef %1, p %.095 = phi i32 [ 0, %9 ], [ 0, %20 ], [ 0, %23 ], [ 0, %81 ], [ 1, %85 ], [ 0, %51 ], [ 0, %47 ], [ 0, %45 ], [ 0, %43 ], [ 0, %41 ], [ 0, %39 ], [ 0, %37 ], [ 0, %35 ], [ 0, %33 ], [ 0, %30 ], [ 0, %26 ], [ 0, %59 ], [ 0, %.critedge ], [ 0, %63 ], [ 0, %61 ], [ 0, %67 ], [ 0, %76 ], [ 0, %72 ], [ 0, %68 ], [ 0, %82 ] tail call void @BN_clear(ptr noundef %16) #3 tail call void @BN_CTX_end(ptr noundef %7) #3 - br label %.loopexit122 + ret i32 %.095 -.loopexit122: ; preds = %76, %.loopexit - %.094 = phi i32 [ %.095, %.loopexit ], [ undef, %76 ] - ret i32 %.094 +.loopexit122: ; preds = %76 + unreachable } declare void @BN_clear(ptr noundef) local_unnamed_addr #1 diff --git a/bench/openssl/optimized/cipher_chacha20_poly1305_hw.ll b/bench/openssl/optimized/cipher_chacha20_poly1305_hw.ll index 3ba20b2b764..841733d4ffc 100644 --- a/bench/openssl/optimized/cipher_chacha20_poly1305_hw.ll +++ b/bench/openssl/optimized/cipher_chacha20_poly1305_hw.ll @@ -436,7 +436,7 @@ chacha20_poly1305_tls_cipher.exit: ; preds = %78, %80, %86 %180 = sub i64 0, %.0116159 %181 = getelementptr inbounds i8, ptr %.0117158, i64 %180 call void @llvm.memset.p0.i64(ptr align 1 %181, i8 0, i64 %.0116159, i1 false) - br label %189 + br label %.sink.split 182: ; preds = %177 %183 = add i64 %4, -16 @@ -449,21 +449,27 @@ chacha20_poly1305_tls_cipher.exit: ; preds = %78, %80, %86 %186 = getelementptr inbounds nuw i8, ptr %0, i64 824 %187 = load i64, ptr %186, align 8, !tbaa !30 %188 = call i32 @CRYPTO_memcmp(ptr noundef nonnull %7, ptr noundef nonnull %169, i64 noundef %187) #7 - %.not147 = icmp eq i32 %188, 0 - br i1 %.not147, label %select.unfold, label %189 - -189: ; preds = %185, %179 + %.fr = freeze i32 %188 + %.not147 = icmp eq i32 %.fr, 0 call void @llvm.lifetime.end.p0(ptr nonnull %7) - br label %190 + %spec.select = select i1 %.not147, i64 %4, i64 0 + br label %188 -select.unfold: ; preds = %185, %184, %176, %182 - %.1120.ph = phi i64 [ %4, %184 ], [ %183, %182 ], [ %4, %176 ], [ %4, %185 ] +select.unfold: ; preds = %183, %181, %176, %180 + %.1120.ph = phi i1 [ false, %.thread183 ], [ true, %176 ], [ true, %181 ], [ true, %183 ] + %.ph = phi i64 [ 0, %.thread183 ], [ %4, %176 ], [ %182, %181 ], [ %4, %183 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) + br label %188 + +188: ; preds = %184, %.sink.split + %.0181 = phi i1 [ %.not147, %184 ], [ %.0181.ph, %.sink.split ] + %189 = phi i64 [ %spec.select, %184 ], [ %.ph, %.sink.split ] + %spec.select154 = zext i1 %.0181 to i32 br label %190 -190: ; preds = %189, %103, %143, %122, %select.unfold - %.0115 = phi i64 [ 0, %189 ], [ 0, %122 ], [ %4, %103 ], [ %4, %143 ], [ %.1120.ph, %select.unfold ] - %.0114 = phi i32 [ 0, %189 ], [ 0, %122 ], [ 1, %103 ], [ 1, %143 ], [ 1, %select.unfold ] +190: ; preds = %188, %103, %143, %122 + %.0115 = phi i64 [ 0, %122 ], [ %4, %103 ], [ %4, %143 ], [ %189, %188 ] + %.0114 = phi i32 [ 0, %122 ], [ 1, %103 ], [ 1, %143 ], [ %spec.select154, %188 ] store i64 %.0115, ptr %2, align 8, !tbaa !26 br label %191 diff --git a/bench/openssl/optimized/core_namemap.ll b/bench/openssl/optimized/core_namemap.ll index 095c6beb68c..32aab347ef6 100644 --- a/bench/openssl/optimized/core_namemap.ll +++ b/bench/openssl/optimized/core_namemap.ll @@ -776,7 +776,7 @@ define i32 @ossl_namemap_add_names(ptr noundef captures(address_is_null) %0, i32 br label %.thread .preheader.i.i: ; preds = %.thread100, %26 - %.052102 = phi ptr [ %25, %.thread100 ], [ %27, %26 ] + %.052102 = phi ptr [ %25, %.thread103 ], [ %27, %26 ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %16, i8 0, i64 64, i1 false) store i64 64, ptr %5, align 8, !tbaa !19 @@ -833,7 +833,7 @@ ossl_namemap_name2num.exit: ; preds = %ossl_ht_strcase.exi %.1 = phi i32 [ %.04776, %46 ], [ %.0.i, %ossl_namemap_name2num.exit ] %49 = load i8, ptr %.052102, align 1, !tbaa !25 %.not59 = icmp eq i8 %49, 0 - br i1 %.not59, label %.preheader, label %21 + br i1 %.not59, label %.preheader, label %21, !llvm.loop !34 .lr.ph80: ; preds = %.preheader, %56 %.479 = phi i32 [ %.6, %56 ], [ %.1, %.preheader ] @@ -856,12 +856,12 @@ ossl_namemap_name2num.exit: ; preds = %ossl_ht_strcase.exi br label %.thread 56: ; preds = %55, %.lr.ph80 - %.6 = phi i32 [ %.479, %55 ], [ %53, %.lr.ph80 ] + %.6 = phi i32 [ %.479, %55 ], [ %53, %.lr.ph83 ] %57 = icmp ult ptr %52, %.052102 - br i1 %57, label %.lr.ph80, label %.thread + br i1 %57, label %.lr.ph80, label %.thread, !llvm.loop !35 .thread: ; preds = %56, %.preheader68, %.preheader, %47, %29, %.thread65 - %.3 = phi i32 [ 0, %.thread65 ], [ 0, %29 ], [ 0, %47 ], [ %.1, %.preheader ], [ %1, %.preheader68 ], [ %.6, %56 ] + %.3 = phi i32 [ 0, %.thread68 ], [ 0, %29 ], [ 0, %47 ], [ %.1, %.preheader ], [ %1, %.preheader71 ], [ %.6, %56 ] %58 = load ptr, ptr %11, align 8, !tbaa !11 %59 = call i32 @CRYPTO_THREAD_unlock(ptr noundef %58) #6 call void @CRYPTO_free(ptr noundef nonnull %8, ptr noundef nonnull @.str, i32 noundef 369) #6 @@ -895,8 +895,8 @@ declare void @OBJ_NAME_do_all(i32 noundef, ptr noundef, ptr noundef) local_unnam ; Function Attrs: nounwind uwtable define internal void @get_legacy_cipher_names(ptr noundef readonly captures(none) %0, ptr noundef captures(address) %1) #0 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %4 = load ptr, ptr %3, align 8, !tbaa !34 - %5 = load i32, ptr %0, align 8, !tbaa !36 + %4 = load ptr, ptr %3, align 8, !tbaa !36 + %5 = load i32, ptr %0, align 8, !tbaa !38 %6 = tail call ptr @OBJ_NAME_get(ptr noundef %4, i32 noundef %5) #6 %.not = icmp eq ptr %6, null br i1 %.not, label %9, label %7 @@ -913,8 +913,8 @@ define internal void @get_legacy_cipher_names(ptr noundef readonly captures(none ; Function Attrs: nounwind uwtable define internal void @get_legacy_md_names(ptr noundef readonly captures(none) %0, ptr noundef captures(address) %1) #0 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %4 = load ptr, ptr %3, align 8, !tbaa !34 - %5 = load i32, ptr %0, align 8, !tbaa !36 + %4 = load ptr, ptr %3, align 8, !tbaa !36 + %5 = load i32, ptr %0, align 8, !tbaa !38 %6 = tail call ptr @OBJ_NAME_get(ptr noundef %4, i32 noundef %5) #6 %.not = icmp eq ptr %6, null br i1 %.not, label %9, label %7 @@ -1259,6 +1259,8 @@ attributes #7 = { nounwind willreturn memory(read) } !31 = !{!22, !22, i64 0} !32 = distinct !{!32, !18} !33 = !{!"branch_weights", !"expected", i32 1, i32 2000} -!34 = !{!35, !22, i64 8} -!35 = !{!"obj_name_st", !10, i64 0, !10, i64 4, !22, i64 8, !22, i64 16} -!36 = !{!35, !10, i64 0} +!34 = distinct !{!34, !18} +!35 = distinct !{!35, !18} +!36 = !{!37, !22, i64 8} +!37 = !{!"obj_name_st", !10, i64 0, !10, i64 4, !22, i64 8, !22, i64 16} +!38 = !{!37, !10, i64 0} diff --git a/bench/openssl/optimized/handshake.ll b/bench/openssl/optimized/handshake.ll index bd4d2881d75..fb65de2e523 100644 --- a/bench/openssl/optimized/handshake.ll +++ b/bench/openssl/optimized/handshake.ll @@ -764,23 +764,23 @@ configure_handshake_ssl.exit: ; preds = %225, %228 %.ph253.ph.ph = phi i32 [ %316, %336 ], [ 1, %278 ] %.0133.ph.ph.ph = phi i32 [ %331, %336 ], [ 0, %278 ] %.0131.ph.ph.ph = phi i32 [ %337, %336 ], [ 0, %278 ] - %.0130.ph.ph.ph = phi i32 [ %.0130.ph.ph.ph260, %336 ], [ 0, %278 ] + %.0130.ph.ph.ph = phi i32 [ %.0130.ph.ph.ph259, %336 ], [ 0, %278 ] br label %.outer.outer.outer254 .outer.outer.outer254: ; preds = %.outer.outer.outer, %312 + %.ph250.ph.ph255 = phi i32 [ %.ph250.ph.ph, %.outer.outer.outer ], [ 1, %312 ] %.ph251.ph.ph256 = phi i32 [ %.ph251.ph.ph, %.outer.outer.outer ], [ 1, %312 ] %.ph252.ph.ph257 = phi i32 [ %.ph252.ph.ph, %.outer.outer.outer ], [ 1, %312 ] - %.ph253.ph.ph258 = phi i32 [ %.ph253.ph.ph, %.outer.outer.outer ], [ 1, %312 ] - %.0133.ph.ph.ph259 = phi i32 [ %.0133.ph.ph.ph, %.outer.outer.outer ], [ 0, %312 ] - %.0130.ph.ph.ph260 = phi i32 [ %.0130.ph.ph.ph, %.outer.outer.outer ], [ %.0.i172.ph, %312 ] + %.ph253.ph.ph258 = phi i32 [ %.0133.ph.ph.ph, %.outer.outer.outer ], [ 0, %312 ] + %.0133.ph.ph.ph259 = phi i32 [ %.0130.ph.ph.ph, %.outer.outer.outer ], [ %.0.i172.ph, %312 ] br label %.outer.outer .outer.outer: ; preds = %.outer.outer.outer254, %340 - %.ph251.ph = phi i32 [ %314, %340 ], [ %.ph251.ph.ph256, %.outer.outer.outer254 ] - %.ph252.ph = phi i32 [ %313, %340 ], [ %.ph252.ph.ph257, %.outer.outer.outer254 ] - %.ph253.ph = phi i32 [ %316, %340 ], [ %.ph253.ph.ph258, %.outer.outer.outer254 ] - %.0135.ph.ph = phi i32 [ %341, %340 ], [ 1, %.outer.outer.outer254 ] - %.0133.ph.ph = phi i32 [ %331, %340 ], [ %.0133.ph.ph.ph259, %.outer.outer.outer254 ] + %.ph251.ph = phi i32 [ %314, %340 ], [ %.ph250.ph.ph255, %.outer.outer.outer253 ] + %.ph252.ph = phi i32 [ %313, %340 ], [ %.ph251.ph.ph256, %.outer.outer.outer253 ] + %.ph253.ph = phi i32 [ %316, %340 ], [ %.ph252.ph.ph257, %.outer.outer.outer253 ] + %.0135.ph.ph = phi i32 [ %341, %340 ], [ 1, %.outer.outer.outer253 ] + %.0133.ph.ph = phi i32 [ %331, %340 ], [ %.0133.ph.ph.ph258, %.outer.outer.outer253 ] br label %.outer .outer: ; preds = %.outer.outer, %327 @@ -801,7 +801,7 @@ configure_handshake_ssl.exit: ; preds = %225, %228 br i1 %283, label %290, label %297 290: ; preds = %285 - call fastcc void @do_connect_step(ptr noundef %3, ptr noundef %19, i32 noundef %.0130.ph.ph.ph260) + call fastcc void @do_connect_step(ptr noundef %3, ptr noundef %19, i32 noundef %.0130.ph.ph.ph259) %291 = load i32, ptr %279, align 4, !tbaa !58 switch i32 %291, label %handshake_status.exit [ i32 2, label %295 @@ -823,7 +823,7 @@ configure_handshake_ssl.exit: ; preds = %225, %228 br label %handshake_status.exit 295: ; preds = %290 - switch i32 %288, label %handshake_status.exit171.thread [ + switch i32 %288, label %.unreachabledefault [ i32 2, label %handshake_status.exit171.thread210 i32 3, label %handshake_status.exit.thread199 i32 0, label %handshake_status.exit171.thread208 @@ -841,7 +841,7 @@ handshake_status.exit.thread199: ; preds = %295, %handshake_sta br label %handshake_status.exit171 297: ; preds = %285 - call fastcc void @do_connect_step(ptr noundef %3, ptr noundef %18, i32 noundef %.0130.ph.ph.ph260) + call fastcc void @do_connect_step(ptr noundef %3, ptr noundef %18, i32 noundef %.0130.ph.ph.ph259) %298 = load i32, ptr %280, align 4, !tbaa !58 switch i32 %298, label %handshake_status.exit171.thread [ i32 2, label %300 @@ -867,15 +867,14 @@ handshake_status.exit171: ; preds = %handshake_status.ex %301 = phi i32 [ 1, %handshake_status.exit.thread199 ], [ %286, %handshake_status.exit ] %302 = phi i32 [ 1, %handshake_status.exit.thread199 ], [ %288, %handshake_status.exit ] %.0129 = phi i32 [ %.0.i201, %handshake_status.exit.thread199 ], [ %.0.i, %handshake_status.exit ] - switch i32 %.0129, label %default.unreachable250 [ + switch i32 %.0129, label %default.unreachable [ i32 4, label %handshake_status.exit171.thread204 i32 1, label %handshake_status.exit171.thread208 - i32 2, label %handshake_status.exit171.thread210 i32 3, label %handshake_status.exit171.thread ] handshake_status.exit171.thread206: ; preds = %292, %299 - switch i32 %.0130.ph.ph.ph260, label %311 [ + switch i32 %.0130.ph.ph.ph259, label %311 [ i32 0, label %303 i32 1, label %312 i32 2, label %307 @@ -926,11 +925,14 @@ handshake_status.exit171.thread208: ; preds = %295, %300, %handsha store i32 2, ptr %31, align 8, !tbaa !27 br label %342 -handshake_status.exit171.thread210: ; preds = %295, %300, %handshake_status.exit171 +handshake_status.exit171.thread210: ; preds = %295, %300 store i32 1, ptr %31, align 8, !tbaa !27 br label %342 -handshake_status.exit171.thread: ; preds = %295, %297, %299, %300, %handshake_status.exit171 +handshake_status.exit171.thread: ; preds = %295 + unreachable + +handshake_status.exit171.thread: ; preds = %handshake_status.exit171, %297, %299, %300 store i32 3, ptr %31, align 8, !tbaa !27 br label %342 diff --git a/bench/postgres/optimized/partprune.ll b/bench/postgres/optimized/partprune.ll index ce8ed7bc27e..4f0e97a0b35 100644 --- a/bench/postgres/optimized/partprune.ll +++ b/bench/postgres/optimized/partprune.ll @@ -2101,8 +2101,8 @@ define internal fastcc ptr @gen_partprune_steps_internal(ptr noundef nonnull %0, br label %56 56: ; preds = %53, %.lr.ph1071 - %57 = phi i32 [ %.pr, %53 ], [ %51, %.lr.ph1071 ] - %.0161 = phi ptr [ %55, %53 ], [ %50, %.lr.ph1071 ] + %57 = phi i32 [ %.pr, %53 ], [ %51, %.lr.ph1067 ] + %.0161 = phi ptr [ %55, %53 ], [ %50, %.lr.ph1067 ] switch i32 %57, label %.thread229 [ i32 7, label %58 i32 21, label %is_orclause.exit @@ -2422,7 +2422,7 @@ match_clause_to_partition_key.exit.thread295.loopexit1106: ; preds = %169 br label %match_clause_to_partition_key.exit.thread295 match_clause_to_partition_key.exit.thread295: ; preds = %186, %169, %match_clause_to_partition_key.exit.thread295.loopexit1106, %184 - %.sink923 = phi i1 [ %185, %184 ], [ false, %169 ], [ %182, %186 ], [ true, %match_clause_to_partition_key.exit.thread295.loopexit1106 ] + %.sink923 = phi i1 [ %185, %184 ], [ false, %169 ], [ %182, %186 ], [ true, %match_clause_to_partition_key.exit.thread295.loopexit1102 ] %208 = call ptr @makeBoolConst(i1 noundef zeroext %.sink923, i1 noundef zeroext false) #5 %209 = call ptr @palloc(i64 noundef 32) #5 store i32 %157, ptr %209, align 8 @@ -3033,10 +3033,8 @@ match_clause_to_partition_key.exit: ; preds = %220, %222, %list_le %.2.i = phi i32 [ %.3.i, %.thread246 ], [ %..i, %194 ], [ %.0.i209.ph, %list_length.exit208 ], [ %.0.i209.ph, %222 ], [ %.0.i209.ph, %220 ] switch i32 %.2.i, label %match_clause_to_partition_key.exit.thread277 [ i32 1, label %.loopexit - i32 2, label %.thread311 - i32 3, label %match_clause_to_partition_key.exit.thread301 - i32 4, label %match_clause_to_partition_key.exit.thread290 i32 0, label %match_clause_to_partition_key.exit.thread + i32 3, label %match_clause_to_partition_key.exit.thread301 ] .loopexit: ; preds = %match_clause_to_partition_key.exit, %match_clause_to_partition_key.exit.thread295 @@ -3060,7 +3058,7 @@ match_clause_to_partition_key.exit: ; preds = %220, %222, %list_le %500 = icmp eq i32 %499, 1 br i1 %500, label %.thread309, label %.thread311 -.thread311: ; preds = %match_clause_to_partition_key.exit, %169, %498 +.thread311: ; preds = %169, %498 %501 = call zeroext i1 @bms_is_member(i32 noundef %157, ptr noundef %.01305391055) #5 br i1 %501, label %505, label %502 @@ -3095,11 +3093,11 @@ match_clause_to_partition_key.exit.thread301: ; preds = %match_clause_to_par %512 = call ptr @list_concat(ptr noundef %.01455291065, ptr noundef %.0220306) #5 br label %match_clause_to_partition_key.exit.thread277 -match_clause_to_partition_key.exit.thread290: ; preds = %list_length.exit198.thread, %194, %match_clause_to_partition_key.exit, %match_clause_to_partition_key.exit.thread767 +match_clause_to_partition_key.exit.thread290: ; preds = %list_length.exit198.thread, %194, %match_clause_to_partition_key.exit.thread767 store i8 1, ptr %38, align 1 br label %.thread343 -match_clause_to_partition_key.exit.thread: ; preds = %490, %360, %364, %362, %351, %355, %366, %match_clause_to_partition_key.exit +match_clause_to_partition_key.exit.thread: ; preds = %match_clause_to_partition_key.exit, %490, %360, %364, %362, %351, %355, %366 %indvars.iv.next726 = add nuw nsw i64 %indvars.iv725, 1 %513 = load i16, ptr %41, align 2 %514 = sext i16 %513 to i64 diff --git a/bench/postgres/optimized/stem_UTF_8_arabic.ll b/bench/postgres/optimized/stem_UTF_8_arabic.ll index f3a66fce0d3..fcda2fc3786 100644 --- a/bench/postgres/optimized/stem_UTF_8_arabic.ll +++ b/bench/postgres/optimized/stem_UTF_8_arabic.ll @@ -942,7 +942,7 @@ r_Suffix_Verb_Step2b.exit: ; preds = %290 %296 = icmp slt i32 %295, 0 %..7 = select i1 %296, i32 %295, i32 %.7 %cond685 = icmp sgt i32 %295, -1 - br i1 %cond685, label %.thread561, label %.loopexit.thread + br i1 %cond685, label %.thread561, label %r_Normalize_pre.exit.thread r_Suffix_Verb_Step2b.exit.thread: ; preds = %290, %288, %.thread445, %282 %297 = load i32, ptr %12, align 4 @@ -950,25 +950,30 @@ r_Suffix_Verb_Step2b.exit.thread: ; preds = %290, %288, %.thread %298 = tail call fastcc i32 @r_Suffix_Verb_Step2a(ptr noundef nonnull %0) %.fr = freeze i32 %298 %299 = icmp eq i32 %.fr, 0 - br i1 %299, label %.thread476, label %300 + br i1 %299, label %r_Suffix_Verb_Step2b.exit.thread..thread476_crit_edge, label %300 + +r_Suffix_Verb_Step2b.exit.thread..thread476_crit_edge: ; preds = %r_Suffix_Verb_Step2b.exit.thread + %.pre715 = load i32, ptr %12, align 4 + %.pre716 = load ptr, ptr %2, align 8 + br label %.thread476 300: ; preds = %r_Suffix_Verb_Step2b.exit.thread %301 = icmp slt i32 %.fr, 0 - br i1 %301, label %.loopexit.thread, label %.thread561 - -.thread476: ; preds = %r_Suffix_Verb_Step2b.exit.thread, %201 - %.3 = phi i32 [ %.0.i, %201 ], [ %.7, %r_Suffix_Verb_Step2b.exit.thread ] - %302 = load i32, ptr %12, align 4 - store i32 %302, ptr %8, align 8 - %303 = load ptr, ptr %2, align 8 - %304 = getelementptr inbounds nuw i8, ptr %303, i64 8 + br i1 %301, label %r_Normalize_pre.exit.thread, label %.thread561 + +.thread476: ; preds = %r_Suffix_Verb_Step2b.exit.thread..thread476_crit_edge, %201 + %.3 = phi ptr [ %204, %201 ], [ %.pre716, %r_Suffix_Verb_Step2b.exit.thread..thread476_crit_edge ] + %303 = phi i32 [ %203, %201 ], [ %.pre715, %r_Suffix_Verb_Step2b.exit.thread..thread476_crit_edge ] + %.3 = phi i32 [ %.0.i, %201 ], [ %.7, %r_Suffix_Verb_Step2b.exit.thread..thread476_crit_edge ] + store i32 %303, ptr %8, align 8 + %304 = getelementptr inbounds nuw i8, ptr %302, i64 8 %305 = load i32, ptr %304, align 4 %.not355 = icmp eq i32 %305, 0 br i1 %.not355, label %r_Suffix_Noun_Step3.exit.thread, label %306 306: ; preds = %.thread476 - store i32 %302, ptr %37, align 8 - %307 = add i32 %302, -1 + store i32 %303, ptr %37, align 8 + %307 = add i32 %303, -1 %308 = load i32, ptr %202, align 8 %.not.i404 = icmp sgt i32 %307, %308 br i1 %.not.i404, label %309, label %r_Suffix_Noun_Step2c2.exit.thread @@ -1226,7 +1231,7 @@ r_Suffix_Noun_Step1b.exit.thread: ; preds = %387, %367, %365, %. %.15297 = phi i32 [ %.lobit659, %r_Suffix_Noun_Step2c2.exit ], [ %.lobit665, %r_Suffix_Noun_Step1b.exit ], [ %.lobit671, %398 ], [ %.lobit660, %326 ], [ %.fr674.lobit, %407 ] %.16 = phi i32 [ %..3, %r_Suffix_Noun_Step2c2.exit ], [ %..17, %r_Suffix_Noun_Step1b.exit ], [ %.30, %398 ], [ %.18, %326 ], [ %.fr674, %407 ] %cond843 = icmp eq i32 %.15297, 0 - br i1 %cond843, label %.thread525, label %.loopexit.thread + br i1 %cond843, label %.thread525, label %r_Normalize_pre.exit.thread .thread525.sink.split: ; preds = %349, %.thread512 %.sink = phi i32 [ %406, %.thread512 ], [ %354, %349 ] @@ -1234,7 +1239,7 @@ r_Suffix_Noun_Step1b.exit.thread: ; preds = %387, %367, %365, %. store i32 %.sink, ptr %8, align 8 br label %.thread525 -.thread525: ; preds = %.thread525.sink.split, %409, %r_Suffix_Noun_Step2c2.exit, %394, %356, %407, %398, %392, %381, %374, %343, %337, %330 +.thread525: ; preds = %.thread525.sink.split, %r_Suffix_Noun_Step2c2.exit, %409, %394, %356, %407, %398, %392, %381, %374, %343, %337, %330 %.16523529 = phi i32 [ %..3, %r_Suffix_Noun_Step2c2.exit ], [ %.19, %330 ], [ %.21, %337 ], [ %.22, %343 ], [ %.20, %356 ], [ %.25, %374 ], [ %.27, %381 ], [ %.27, %392 ], [ %.26, %394 ], [ %.30, %398 ], [ %.29, %407 ], [ %.16, %409 ], [ %.16523529.ph, %.thread525.sink.split ] %410 = load i32, ptr %8, align 8 store i32 %410, ptr %37, align 8 @@ -1267,10 +1272,9 @@ r_Suffix_Noun_Step1b.exit.thread: ; preds = %387, %367, %365, %. r_Suffix_Noun_Step3.exit: ; preds = %420 %425 = tail call i32 @slice_del(ptr noundef nonnull %0) #2 %426 = icmp slt i32 %425, 0 - %.lobit676 = lshr i32 %425, 31 %..16 = select i1 %426, i32 %425, i32 %.16523529 %cond688 = icmp sgt i32 %425, -1 - br i1 %cond688, label %.thread561, label %.loopexit.thread + br i1 %cond688, label %.thread561, label %r_Normalize_pre.exit.thread r_Suffix_Noun_Step3.exit.thread: ; preds = %420, %418, %.thread525, %413, %.thread476 %.14 = phi i32 [ %.3, %.thread476 ], [ %.16523529, %413 ], [ %.16523529, %.thread525 ], [ %.16523529, %418 ], [ %.16523529, %420 ] @@ -1302,14 +1306,8 @@ r_Suffix_Noun_Step3.exit.thread: ; preds = %420, %418, %.thread %440 = icmp sgt i32 %439, -1 br i1 %440, label %.thread561, label %r_Normalize_pre.exit.thread -.loopexit.thread: ; preds = %300, %r_Suffix_Verb_Step2b.exit, %409, %r_Suffix_Noun_Step3.exit - %.13295 = phi i32 [ %.lobit676, %r_Suffix_Noun_Step3.exit ], [ 1, %409 ], [ 1, %r_Suffix_Verb_Step2b.exit ], [ 1, %300 ] - %.13 = phi i32 [ %..16, %r_Suffix_Noun_Step3.exit ], [ %.16, %409 ], [ %..7, %r_Suffix_Verb_Step2b.exit ], [ %.fr, %300 ] - %cond844 = icmp eq i32 %.13295, 0 - br i1 %cond844, label %.thread561, label %r_Normalize_pre.exit.thread - -.thread561: ; preds = %r_Suffix_Verb_Step2c.exit.thread, %.loopexit.thread, %256, %262, %269, %r_Suffix_Noun_Step3.exit, %r_Suffix_Verb_Step2b.exit, %278, %437, %.thread441, %300, %435, %r_Suffix_Noun_Step3.exit.thread, %430 - %.13556 = phi i32 [ %.13, %.loopexit.thread ], [ %.14, %437 ], [ %.8, %.thread441 ], [ %.8, %278 ], [ %..7, %r_Suffix_Verb_Step2b.exit ], [ %.7, %300 ], [ %..16, %r_Suffix_Noun_Step3.exit ], [ %.14, %435 ], [ %.14, %r_Suffix_Noun_Step3.exit.thread ], [ %.14, %430 ], [ %.8, %269 ], [ %.8, %262 ], [ %.8, %256 ], [ %.8, %r_Suffix_Verb_Step2c.exit.thread ] +.loopexit.thread: ; preds = %r_Suffix_Verb_Step2c.exit.thread, %256, %262, %269, %r_Suffix_Noun_Step3.exit, %r_Suffix_Verb_Step2b.exit, %278, %437, %.thread441, %300, %435, %r_Suffix_Noun_Step3.exit.thread, %430 + %.13295 = phi i32 [ %.14, %437 ], [ %.8, %.thread441 ], [ %.8, %278 ], [ %..7, %r_Suffix_Verb_Step2b.exit ], [ %.7, %300 ], [ %..16, %r_Suffix_Noun_Step3.exit ], [ %.14, %435 ], [ %.14, %r_Suffix_Noun_Step3.exit.thread ], [ %.14, %430 ], [ %.8, %269 ], [ %.8, %262 ], [ %.8, %256 ], [ %.8, %r_Suffix_Verb_Step2c.exit.thread ] %441 = load i32, ptr %12, align 4 %442 = load i32, ptr %202, align 8 store i32 %442, ptr %8, align 8 @@ -1450,7 +1448,7 @@ r_Prefix_Step2.exit.thread: ; preds = %503, %498, %496, %4 br label %509 509: ; preds = %._crit_edge713, %r_Prefix_Step2.exit.thread - %510 = phi i32 [ %.pre714, %._crit_edge713 ], [ %488, %r_Prefix_Step2.exit.thread ] + %510 = phi i32 [ %.pre714, %._crit_edge718 ], [ %488, %r_Prefix_Step2.exit.thread ] %511 = tail call fastcc i32 @r_Prefix_Step3a_Noun(ptr noundef nonnull %0) %512 = icmp eq i32 %511, 0 %513 = icmp slt i32 %511, 0 @@ -1489,7 +1487,7 @@ r_Prefix_Step2.exit.thread: ; preds = %503, %498, %496, %4 br label %522 522: ; preds = %._crit_edge715, %514 - %523 = phi ptr [ %.pre716, %._crit_edge715 ], [ %515, %514 ] + %523 = phi ptr [ %.pre716, %._crit_edge720 ], [ %515, %514 ] store i32 %510, ptr %8, align 8 %524 = getelementptr inbounds nuw i8, ptr %523, i64 4 %525 = load i32, ptr %524, align 4 @@ -1643,8 +1641,8 @@ r_Prefix_Step2.exit.thread: ; preds = %503, %498, %496, %4 store i32 %442, ptr %8, align 8 br label %r_Normalize_pre.exit.thread -r_Normalize_pre.exit.thread: ; preds = %193, %190, %187, %184, %181, %178, %175, %172, %169, %166, %163, %160, %157, %154, %151, %148, %145, %142, %139, %136, %133, %130, %127, %124, %121, %118, %115, %112, %109, %106, %103, %100, %97, %94, %91, %88, %85, %82, %79, %76, %73, %70, %67, %64, %61, %58, %55, %52, %49, %46, %43, %218, %225, %232, %578, %575, %572, %.loopexit.thread, %269, %262, %278, %550, %394, %356, %588, %506, %437, %535, %483, %476, %469, %462, %530 - %.1 = phi i32 [ %527, %530 ], [ %484, %483 ], [ %477, %476 ], [ %470, %469 ], [ %463, %462 ], [ %.13, %.loopexit.thread ], [ %.38, %535 ], [ %439, %437 ], [ %507, %506 ], [ 1, %588 ], [ %.20, %356 ], [ %.26, %394 ], [ %552, %550 ], [ %263, %262 ], [ %270, %269 ], [ %.8, %278 ], [ %573, %572 ], [ %576, %575 ], [ %579, %578 ], [ %219, %218 ], [ %226, %225 ], [ %233, %232 ], [ %44, %43 ], [ %47, %46 ], [ %50, %49 ], [ %53, %52 ], [ %56, %55 ], [ %59, %58 ], [ %62, %61 ], [ %65, %64 ], [ %68, %67 ], [ %71, %70 ], [ %74, %73 ], [ %77, %76 ], [ %80, %79 ], [ %83, %82 ], [ %86, %85 ], [ %89, %88 ], [ %92, %91 ], [ %95, %94 ], [ %98, %97 ], [ %101, %100 ], [ %104, %103 ], [ %107, %106 ], [ %110, %109 ], [ %113, %112 ], [ %116, %115 ], [ %119, %118 ], [ %122, %121 ], [ %125, %124 ], [ %128, %127 ], [ %131, %130 ], [ %134, %133 ], [ %137, %136 ], [ %140, %139 ], [ %143, %142 ], [ %146, %145 ], [ %149, %148 ], [ %152, %151 ], [ %155, %154 ], [ %158, %157 ], [ %161, %160 ], [ %164, %163 ], [ %167, %166 ], [ %170, %169 ], [ %173, %172 ], [ %176, %175 ], [ %179, %178 ], [ %182, %181 ], [ %185, %184 ], [ %188, %187 ], [ %191, %190 ], [ %194, %193 ] +r_Normalize_pre.exit.thread: ; preds = %193, %190, %187, %184, %181, %178, %175, %172, %169, %166, %163, %160, %157, %154, %151, %148, %145, %142, %139, %136, %133, %130, %127, %124, %121, %118, %115, %112, %109, %106, %103, %100, %97, %94, %91, %88, %85, %82, %79, %76, %73, %70, %67, %64, %61, %58, %55, %52, %49, %46, %43, %218, %225, %232, %578, %575, %572, %300, %r_Suffix_Verb_Step2b.exit, %r_Suffix_Noun_Step3.exit, %550, %356, %394, %269, %262, %278, %409, %588, %506, %437, %535, %483, %476, %469, %462, %530 + %.1 = phi i32 [ %527, %530 ], [ %484, %483 ], [ %477, %476 ], [ %470, %469 ], [ %463, %462 ], [ %.38, %535 ], [ %439, %437 ], [ %507, %506 ], [ 1, %588 ], [ %.16, %409 ], [ %.8, %278 ], [ %270, %269 ], [ %263, %262 ], [ %.20, %356 ], [ %.26, %394 ], [ %552, %550 ], [ %..16, %r_Suffix_Noun_Step3.exit ], [ %..7, %r_Suffix_Verb_Step2b.exit ], [ %.fr, %300 ], [ %573, %572 ], [ %576, %575 ], [ %579, %578 ], [ %219, %218 ], [ %226, %225 ], [ %233, %232 ], [ %44, %43 ], [ %47, %46 ], [ %50, %49 ], [ %53, %52 ], [ %56, %55 ], [ %59, %58 ], [ %62, %61 ], [ %65, %64 ], [ %68, %67 ], [ %71, %70 ], [ %74, %73 ], [ %77, %76 ], [ %80, %79 ], [ %83, %82 ], [ %86, %85 ], [ %89, %88 ], [ %92, %91 ], [ %95, %94 ], [ %98, %97 ], [ %101, %100 ], [ %104, %103 ], [ %107, %106 ], [ %110, %109 ], [ %113, %112 ], [ %116, %115 ], [ %119, %118 ], [ %122, %121 ], [ %125, %124 ], [ %128, %127 ], [ %131, %130 ], [ %134, %133 ], [ %137, %136 ], [ %140, %139 ], [ %143, %142 ], [ %146, %145 ], [ %149, %148 ], [ %152, %151 ], [ %155, %154 ], [ %158, %157 ], [ %161, %160 ], [ %164, %163 ], [ %167, %166 ], [ %170, %169 ], [ %173, %172 ], [ %176, %175 ], [ %179, %178 ], [ %182, %181 ], [ %185, %184 ], [ %188, %187 ], [ %191, %190 ], [ %194, %193 ] ret i32 %.1 } diff --git a/bench/proxygen/optimized/http_parser_cpp.ll b/bench/proxygen/optimized/http_parser_cpp.ll index 3cf7f72329b..6528ef8629c 100644 --- a/bench/proxygen/optimized/http_parser_cpp.ll +++ b/bench/proxygen/optimized/http_parser_cpp.ll @@ -4007,10 +4007,10 @@ sw.bb153.i: ; preds = %if.end12.i br i1 %or.cond, label %if.end161.i, label %_ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52 if.end161.i: ; preds = %sw.bb153.i - %switch.selectcmp.i = icmp eq i8 %2, 35 - %switch.select.i = select i1 %switch.selectcmp.i, i32 38, i32 1 - %switch.selectcmp94.i = icmp eq i8 %2, 63 - br i1 %switch.selectcmp94.i, label %for.inc, label %_ZN8proxygenL14parse_url_charENS_5stateEci.exit + switch i8 %2, label %return [ + i8 63, label %for.inc + i8 35, label %for.inc + ] sw.bb165.i: ; preds = %if.end12.i, %if.end12.i %idxprom166.i = zext i8 %2 to i64 @@ -4020,13 +4020,9 @@ sw.bb165.i: ; preds = %if.end12.i, %if.end %tobool174.i = icmp sgt i8 %2, -1 %or.cond25.i = or i1 %tobool212.i, %tobool174.i %or.cond85 = and i1 %cmp170.not.i, %or.cond25.i - br i1 %or.cond85, label %if.end178.i, label %sw.epilog - -if.end178.i: ; preds = %sw.bb165.i - %switch.selectcmp96.i = icmp eq i8 %2, 35 - %switch.select97.i = select i1 %switch.selectcmp96.i, i32 38, i32 1 - %switch.selectcmp98.i = icmp eq i8 %2, 63 - br i1 %switch.selectcmp98.i, label %sw.epilog, label %_ZN8proxygenL14parse_url_charENS_5stateEci.exit + %switch.selectcmp98.i = icmp ne i8 %2, 63 + %or.cond102.not = and i1 %switch.selectcmp98.i, %or.cond86 + br i1 %or.cond102.not, label %_ZN8proxygenL14parse_url_charENS_5stateEci.exit, label %sw.epilog sw.bb183.i: ; preds = %if.end12.i %idxprom184.i = zext i8 %2 to i64 @@ -4036,13 +4032,9 @@ sw.bb183.i: ; preds = %if.end12.i %tobool192.i = icmp sgt i8 %2, -1 %or.cond26.i = or i1 %tobool212.i, %tobool192.i %or.cond86 = and i1 %cmp188.not.i, %or.cond26.i - br i1 %or.cond86, label %if.end196.i, label %sw.epilog - -if.end196.i: ; preds = %sw.bb183.i - %switch.selectcmp100.i = icmp eq i8 %2, 35 - %switch.select101.i = select i1 %switch.selectcmp100.i, i32 38, i32 1 - %switch.selectcmp102.i = icmp eq i8 %2, 63 - br i1 %switch.selectcmp102.i, label %sw.epilog, label %_ZN8proxygenL14parse_url_charENS_5stateEci.exit + %switch.selectcmp102.i = icmp ne i8 %2, 63 + %or.cond103.not = and i1 %switch.selectcmp102.i, %or.cond87 + br i1 %or.cond103.not, label %_ZN8proxygenL14parse_url_charENS_5stateEci.exit, label %sw.epilog sw.bb201.i: ; preds = %if.end12.i %idxprom202.i = zext i8 %2 to i64 @@ -4063,22 +4055,14 @@ if.end214.i: ; preds = %sw.bb201.i _ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52: ; preds = %sw.bb.i, %sw.bb.i, %sw.bb153.i, %sw.bb64.i, %sw.bb59.i br label %sw.epilog -_ZN8proxygenL14parse_url_charENS_5stateEci.exit: ; preds = %if.end196.i, %if.end178.i, %if.end161.i - %retval.0.i = phi i32 [ %switch.select.i, %if.end161.i ], [ %switch.select97.i, %if.end178.i ], [ %switch.select101.i, %if.end196.i ] - switch i32 %retval.0.i, label %return [ - i32 37, label %sw.bb6 - i32 35, label %sw.epilog - i32 36, label %for.inc - i32 38, label %for.inc - ] - -sw.bb6: ; preds = %_ZN8proxygenL14parse_url_charENS_5stateEci.exit - br label %sw.epilog +_ZN8proxygenL14parse_url_charENS_5stateEci.exit: ; preds = %sw.bb183.i, %sw.bb165.i + %retval.0.i = icmp eq i8 %2, 35 + br i1 %retval.0.i, label %for.inc, label %return -sw.epilog: ; preds = %_ZN8proxygenL14parse_url_charENS_5stateEci.exit, %if.end214.i, %if.end214.i, %if.end76.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %sw.bb31.i, %if.end19.i, %if.end178.i, %sw.bb165.i, %if.end196.i, %sw.bb201.i, %sw.bb183.i, %sw.bb64.i, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52, %sw.bb6 - %retval.0.i42 = phi i32 [ 35, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52 ], [ %retval.0.i, %sw.bb6 ], [ 29, %sw.bb64.i ], [ 39, %sw.bb183.i ], [ 39, %sw.bb201.i ], [ 39, %if.end196.i ], [ 39, %if.end214.i ], [ 37, %sw.bb165.i ], [ 37, %if.end178.i ], [ 24, %if.end19.i ], [ 24, %sw.bb31.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %if.end76.i ], [ 39, %if.end214.i ], [ %retval.0.i, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ] - %uf.0 = phi i32 [ 3, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52 ], [ 4, %sw.bb6 ], [ 1, %sw.bb64.i ], [ 5, %sw.bb183.i ], [ 5, %sw.bb201.i ], [ 5, %if.end196.i ], [ 5, %if.end214.i ], [ 4, %sw.bb165.i ], [ 4, %if.end178.i ], [ 0, %if.end19.i ], [ 0, %sw.bb31.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %if.end76.i ], [ 5, %if.end214.i ], [ 3, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ] - %found_at.3 = phi i32 [ %found_at.078, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52 ], [ %found_at.078, %sw.bb6 ], [ 1, %sw.bb64.i ], [ %found_at.078, %sw.bb183.i ], [ %found_at.078, %sw.bb201.i ], [ %found_at.078, %if.end196.i ], [ %found_at.078, %if.end214.i ], [ %found_at.078, %sw.bb165.i ], [ %found_at.078, %if.end178.i ], [ %found_at.078, %if.end19.i ], [ %found_at.078, %sw.bb31.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %if.end76.i ], [ %found_at.078, %if.end214.i ], [ %found_at.078, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ] +sw.epilog: ; preds = %if.end214.i, %if.end214.i, %if.end76.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i, %sw.bb31.i, %if.end19.i, %sw.bb165.i, %sw.bb201.i, %sw.bb183.i, %sw.bb64.i, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52 + %retval.0.i42 = phi i32 [ 35, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52 ], [ 29, %sw.bb64.i ], [ 39, %sw.bb183.i ], [ 39, %sw.bb201.i ], [ 39, %if.end214.i ], [ 37, %sw.bb165.i ], [ 24, %if.end19.i ], [ 24, %sw.bb31.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %switch.early.test.i ], [ 28, %if.end76.i ], [ 39, %if.end214.i ] + %uf.0 = phi i32 [ 3, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52 ], [ 1, %sw.bb64.i ], [ 5, %sw.bb183.i ], [ 5, %sw.bb201.i ], [ 5, %if.end214.i ], [ 4, %sw.bb165.i ], [ 0, %if.end19.i ], [ 0, %sw.bb31.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %switch.early.test.i ], [ 1, %if.end76.i ], [ 5, %if.end214.i ] + %found_at.3 = phi i32 [ %found_at.078, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit.thread52 ], [ 1, %sw.bb64.i ], [ %found_at.078, %sw.bb183.i ], [ %found_at.078, %sw.bb201.i ], [ %found_at.079, %if.end214.i ], [ %found_at.078, %sw.bb165.i ], [ %found_at.078, %if.end19.i ], [ %found_at.078, %sw.bb31.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %switch.early.test.i ], [ %found_at.078, %if.end76.i ], [ %found_at.078, %if.end214.i ] %cmp8 = icmp eq i32 %uf.0, %old_uf.076 br i1 %cmp8, label %if.then, label %if.end @@ -4106,12 +4090,15 @@ if.end: ; preds = %sw.epilog store i16 %conv19, ptr %u, align 2 br label %for.inc -for.inc: ; preds = %_ZN8proxygenL14parse_url_charENS_5stateEci.exit, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit, %if.end161.i, %sw.bb59.i, %sw.bb64.i, %sw.bb54.i, %sw.bb49.i, %if.end44.i, %if.end, %if.then - %14 = phi i16 [ %1, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ], [ %1, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ], [ %1, %if.then ], [ %conv19, %if.end ], [ %1, %sw.bb54.i ], [ %1, %sw.bb49.i ], [ %1, %if.end44.i ], [ %1, %sw.bb64.i ], [ %1, %sw.bb59.i ], [ %1, %if.end161.i ] - %retval.0.i43 = phi i32 [ %retval.0.i, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ], [ %retval.0.i, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ], [ %retval.0.i42, %if.then ], [ %retval.0.i42, %if.end ], [ 27, %sw.bb54.i ], [ 26, %sw.bb49.i ], [ 25, %if.end44.i ], [ 36, %sw.bb64.i ], [ 36, %sw.bb59.i ], [ 36, %if.end161.i ] - %old_uf.1 = phi i32 [ %old_uf.076, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ], [ %old_uf.076, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ], [ %old_uf.076, %if.then ], [ %uf.0, %if.end ], [ %old_uf.076, %sw.bb54.i ], [ %old_uf.076, %sw.bb49.i ], [ %old_uf.076, %if.end44.i ], [ %old_uf.076, %sw.bb64.i ], [ %old_uf.076, %sw.bb59.i ], [ %old_uf.076, %if.end161.i ] - %found_at.2 = phi i32 [ %found_at.078, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ], [ %found_at.078, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ], [ %found_at.3, %if.then ], [ %found_at.3, %if.end ], [ %found_at.078, %sw.bb54.i ], [ %found_at.078, %sw.bb49.i ], [ %found_at.078, %if.end44.i ], [ %found_at.078, %sw.bb64.i ], [ %found_at.078, %sw.bb59.i ], [ %found_at.078, %if.end161.i ] - %incdec.ptr = getelementptr inbounds nuw i8, ptr %p.079, i64 1 +for.inc: ; preds = %if.end161.i, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit + br label %for.inc + +for.inc:; preds = %if.end161.i, %for.inc, %sw.bb59.i, %sw.bb64.i, %sw.bb54.i, %sw.bb49.i, %if.end44.i, %if.end, %if.then + %found_at.2 = phi i16 [ %1, %if.then ], [ %conv19, %if.end ], [ %1, %sw.bb54.i ], [ %1, %sw.bb49.i ], [ %1, %if.end44.i ], [ %1, %sw.bb64.i ], [ %1, %sw.bb59.i ], [ %1, %if.end161.i ], [ %1, %for.inc.fold.split ] + %retval.0.i43 = phi i32 [ %retval.0.i42, %if.then ], [ %retval.0.i42, %if.end ], [ 27, %sw.bb54.i ], [ 26, %sw.bb49.i ], [ 25, %if.end44.i ], [ 36, %sw.bb64.i ], [ 36, %sw.bb59.i ], [ 36, %if.end161.i ], [ 38, %for.inc.fold.split ] + %old_uf.1 = phi i32 [ %old_uf.077, %if.then ], [ %uf.0, %if.end ], [ %old_uf.077, %sw.bb54.i ], [ %old_uf.077, %sw.bb49.i ], [ %old_uf.077, %if.end44.i ], [ %old_uf.077, %sw.bb64.i ], [ %old_uf.077, %sw.bb59.i ], [ %old_uf.077, %if.end161.i ], [ %old_uf.077, %for.inc.fold.split ] + %found_at.2 = phi i32 [ %found_at.3, %if.then ], [ %found_at.3, %if.end ], [ %found_at.079, %sw.bb54.i ], [ %found_at.079, %sw.bb49.i ], [ %found_at.079, %if.end44.i ], [ %found_at.079, %sw.bb64.i ], [ %found_at.079, %sw.bb59.i ], [ %found_at.079, %if.end161.i ], [ %found_at.079, %for.inc.fold.split ] + %incdec.ptr = getelementptr inbounds nuw i8, ptr %p.080, i64 1 %cmp = icmp ult ptr %incdec.ptr, %add.ptr br i1 %cmp, label %for.body, label %for.end, !llvm.loop !6 @@ -4417,8 +4404,8 @@ for.end67: ; preds = %for.end67.loopexit, store i16 %v.0.lcssa, ptr %port, align 2 br label %return -return: ; preds = %if.end214.i, %if.end12.i, %if.end19.i, %if.end44.i, %sw.bb49.i, %sw.bb54.i, %switch.early.test.i, %sw.bb59.i, %for.body, %for.body, %for.body, %for.body, %for.body, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit, %lor.lhs.false158.i.i, %switch.early.test.i.i, %switch.early.test79.i.i, %switch.early.test81.i.i, %sw.bb130.i.i, %land.lhs.true152.i.i, %sw.bb166.i.i, %for.body59, %for.end.i, %if.end29.thread, %if.end35, %for.end67, %land.lhs.true - %retval.0 = phi i32 [ 1, %land.lhs.true ], [ 0, %for.end67 ], [ 0, %if.end35 ], [ %spec.select, %if.end29.thread ], [ 1, %for.end.i ], [ 1, %for.body59 ], [ 1, %sw.bb166.i.i ], [ 1, %land.lhs.true152.i.i ], [ 1, %sw.bb130.i.i ], [ 1, %switch.early.test81.i.i ], [ 1, %switch.early.test79.i.i ], [ 1, %switch.early.test.i.i ], [ 1, %lor.lhs.false158.i.i ], [ 1, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %sw.bb59.i ], [ 1, %switch.early.test.i ], [ 1, %sw.bb54.i ], [ 1, %sw.bb49.i ], [ 1, %if.end44.i ], [ 1, %if.end19.i ], [ 1, %if.end12.i ], [ 1, %if.end214.i ] +return: ; preds = %_ZN8proxygenL14parse_url_charENS_5stateEci.exit, %if.end214.i, %if.end12.i, %if.end19.i, %if.end44.i, %sw.bb49.i, %sw.bb54.i, %switch.early.test.i, %sw.bb59.i, %for.body, %for.body, %for.body, %for.body, %for.body, %if.end161.i, %lor.lhs.false158.i.i, %switch.early.test.i.i, %switch.early.test79.i.i, %switch.early.test81.i.i, %sw.bb130.i.i, %land.lhs.true152.i.i, %sw.bb166.i.i, %for.body59, %for.end.i, %if.end29.thread, %if.end35, %for.end67, %land.lhs.true + %retval.0 = phi i32 [ 1, %land.lhs.true ], [ 0, %for.end67 ], [ 0, %if.end35 ], [ %spec.select, %if.end29.thread ], [ 1, %for.end.i ], [ 1, %for.body59 ], [ 1, %sw.bb166.i.i ], [ 1, %land.lhs.true152.i.i ], [ 1, %sw.bb130.i.i ], [ 1, %switch.early.test81.i.i ], [ 1, %switch.early.test79.i.i ], [ 1, %switch.early.test.i.i ], [ 1, %lor.lhs.false158.i.i ], [ 1, %if.end161.i ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %for.body ], [ 1, %sw.bb59.i ], [ 1, %switch.early.test.i ], [ 1, %sw.bb54.i ], [ 1, %sw.bb49.i ], [ 1, %if.end44.i ], [ 1, %if.end19.i ], [ 1, %if.end12.i ], [ 1, %if.end214.i ], [ 1, %_ZN8proxygenL14parse_url_charENS_5stateEci.exit ] ret i32 %retval.0 } diff --git a/bench/qemu/optimized/qemu-io-cmds.ll b/bench/qemu/optimized/qemu-io-cmds.ll index e0c23e1ef7c..28e19d9109d 100644 --- a/bench/qemu/optimized/qemu-io-cmds.ll +++ b/bench/qemu/optimized/qemu-io-cmds.ll @@ -2249,8 +2249,8 @@ qemu_io_alloc.exit: ; preds = %._crit_edge, %38 br label %.lr.ph73 .lr.ph73: ; preds = %.lr.ph73.preheader, %.lr.ph73 - %indvars.iv82 = phi i64 [ 0, %.lr.ph73.preheader ], [ %indvars.iv.next83, %.lr.ph73 ] - %.05271 = phi ptr [ %spec.select12.i, %.lr.ph73.preheader ], [ %45, %.lr.ph73 ] + %indvars.iv82 = phi i64 [ 0, %.lr.ph74.preheader ], [ %indvars.iv.next83, %.lr.ph74 ] + %.05271 = phi ptr [ %spec.select12.i, %.lr.ph74.preheader ], [ %45, %.lr.ph74 ] %42 = getelementptr inbounds nuw i64, ptr %9, i64 %indvars.iv82 %43 = load i64, ptr %42, align 8 call void @qemu_iovec_add(ptr noundef %1, ptr noundef %.05271, i64 noundef %43) #26 @@ -2261,7 +2261,7 @@ qemu_io_alloc.exit: ; preds = %._crit_edge, %38 br i1 %exitcond86.not, label %.thread, label %.lr.ph73, !llvm.loop !19 .thread: ; preds = %.lr.ph73, %qemu_io_alloc.exit, %28, %23, %19 - %.053 = phi ptr [ null, %19 ], [ null, %23 ], [ null, %28 ], [ %spec.select12.i, %qemu_io_alloc.exit ], [ %spec.select12.i, %.lr.ph73 ] + %.053 = phi ptr [ null, %19 ], [ null, %23 ], [ null, %28 ], [ %spec.select12.i, %qemu_io_alloc.exit ], [ %spec.select12.i, %.lr.ph74 ] call void @g_free(ptr noundef %9) #26 ret ptr %.053 } diff --git a/bench/quickjs/optimized/libunicode.ll b/bench/quickjs/optimized/libunicode.ll index 1da8db9867c..9e29d7d1716 100644 --- a/bench/quickjs/optimized/libunicode.ll +++ b/bench/quickjs/optimized/libunicode.ll @@ -4189,7 +4189,7 @@ cr_copy.exit: ; preds = %.cr_copy.exit_crit_ br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !61 .loopexit: ; preds = %.lr.ph, %.loopexit57, %cr_copy.exit - %.041 = phi i32 [ %.0.i, %cr_copy.exit ], [ -1, %.loopexit57 ], [ -1, %.lr.ph ] + %.041 = phi i32 [ %.0.i, %cr_copy.exit ], [ -1, %.loopexit58 ], [ -1, %.lr.ph ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 %.041 diff --git a/bench/quinn-rs/optimized/8ainv6dkvux55w82mlbamtdp2.ll b/bench/quinn-rs/optimized/8ainv6dkvux55w82mlbamtdp2.ll index 054ea8a34cf..048c76a03fa 100644 --- a/bench/quinn-rs/optimized/8ainv6dkvux55w82mlbamtdp2.ll +++ b/bench/quinn-rs/optimized/8ainv6dkvux55w82mlbamtdp2.ll @@ -4459,14 +4459,17 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.sroa.9.1.i = phi ptr [ %.sroa.16.1.i, %91 ], [ %3, %.preheader ] %.sroa.040.1.i = phi i64 [ %.sroa.9.0.i, %91 ], [ 0, %.preheader ] %.sroa.743.1.i = phi ptr [ %.sroa.16103.1.i, %91 ], [ %.sroa.3.0.i.i, %.preheader ] - switch i64 %.sroa.040.1.i, label %default.unreachable [ + switch i64 %.sroa.040.1.i, label %.unreachabledefault [ i64 0, label %23 i64 1, label %36 i64 2, label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i" i64 3, label %49 ] -default.unreachable: ; preds = %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i", %22, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit", %.lr.ph.preheader +default.unreachable: ; preds = %22 + unreachable + +default.unreachable: ; preds = %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit", %.lr.ph.preheader unreachable 23: ; preds = %22 @@ -4544,9 +4547,9 @@ default.unreachable: ; preds = %"_ZN5alloc11collect br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i": ; preds = %43, %30, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit469", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit", %49, %22 - %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %49 ], [ %.sroa.16.0.i, %22 ], [ %.sroa.9.1.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ %.sroa.9.1.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ %.sroa.9.1.i, %30 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ %.sroa.9.1.i, %43 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit469" ] - %.sroa.9.0.i = phi i64 [ 3, %49 ], [ %.sroa.040.1.i, %22 ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ 0, %30 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ 1, %43 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit469" ] - %.sroa.0100.0.i = phi i64 [ %52, %49 ], [ 0, %22 ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ %.sroa.8.0.i26.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ %28, %30 ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ %41, %43 ], [ %45, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit469" ] + %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %49 ], [ %.sroa.16.0.i, %22 ], [ %.sroa.9.1.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ %.sroa.9.1.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ %.sroa.9.1.i, %30 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ %.sroa.9.1.i, %43 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit474" ] + %.sroa.9.0.i = phi i64 [ 3, %49 ], [ %.sroa.040.1.i, %22 ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ 0, %30 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ 1, %43 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit474" ] + %.sroa.0100.0.i = phi i64 [ %52, %49 ], [ 0, %22 ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ %.sroa.8.0.i26.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ %28, %30 ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ %41, %43 ], [ %45, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit474" ] switch i64 %.sroa.042.1.i, label %default.unreachable [ i64 0, label %53 i64 1, label %67 @@ -4791,9 +4794,9 @@ default.unreachable: ; preds = %"_ZN5alloc11collect br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit": ; preds = %125, %112, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit450", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit", %.lr.ph.preheader, %131 - %.sroa.0140.0 = phi i64 [ %134, %131 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ %127, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ %110, %112 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ %123, %125 ], [ %.sroa.8.0.i26.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit450" ] - %.sroa.9141.0 = phi i64 [ 3, %131 ], [ %.sroa.03.0243, %.lr.ph.preheader ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ 0, %112 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ 1, %125 ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit450" ] - %.sroa.16.1 = phi ptr [ %.sroa.16.0234, %131 ], [ %.sroa.16.0234, %.lr.ph.preheader ], [ %.sroa.16.0234, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ %.sroa.16.0234, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ %.sroa.54.0242, %112 ], [ %.sroa.54.0242, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ %.sroa.54.0242, %125 ], [ %.sroa.54.0242, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit450" ] + %.sroa.0140.0 = phi i64 [ %134, %131 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ %127, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ %110, %112 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ %123, %125 ], [ %.sroa.8.0.i26.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit455" ] + %.sroa.9141.0 = phi i64 [ 3, %131 ], [ %.sroa.03.0243, %.lr.ph.preheader ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ 0, %112 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ 1, %125 ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit455" ] + %.sroa.16.1 = phi ptr [ %.sroa.16.0234, %131 ], [ %.sroa.16.0234, %.lr.ph.preheader ], [ %.sroa.16.0234, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ %.sroa.16.0234, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ %.sroa.54.0242, %112 ], [ %.sroa.54.0242, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ %.sroa.54.0242, %125 ], [ %.sroa.54.0242, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit455" ] %135 = getelementptr inbounds nuw i8, ptr %.sroa.0113.0245, i64 1072 %136 = icmp ult i64 %.sroa.093.0237, 12 tail call void @llvm.assume(i1 %136) @@ -4881,9 +4884,9 @@ default.unreachable: ; preds = %"_ZN5alloc11collect br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit": ; preds = %159, %146, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i124", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i129", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit448", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit", %165 - %.sroa.0142.0 = phi i64 [ %168, %165 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit" ], [ %148, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i129" ], [ %.sroa.8.0.i26.i123, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i124" ], [ %144, %146 ], [ %.sroa.8.0.i.i128, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit" ], [ %157, %159 ], [ %.sroa.8.0.i26.i123, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit448" ] - %.sroa.9143.0 = phi i64 [ 2, %165 ], [ %.sroa.05.0241, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i129" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i124" ], [ 0, %146 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit" ], [ 1, %159 ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit448" ] - %.sroa.16144.1 = phi ptr [ %.sroa.16144.0235, %165 ], [ %.sroa.16144.0235, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit" ], [ %.sroa.16144.0235, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i129" ], [ %.sroa.16144.0235, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i124" ], [ %.sroa.56.0240, %146 ], [ %.sroa.56.0240, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit" ], [ %.sroa.56.0240, %159 ], [ %.sroa.56.0240, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit448" ] + %.sroa.0142.0 = phi i64 [ %168, %165 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit" ], [ %148, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i129" ], [ %.sroa.8.0.i26.i123, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i124" ], [ %144, %146 ], [ %.sroa.8.0.i.i128, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit" ], [ %157, %159 ], [ %.sroa.8.0.i26.i123, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit453" ] + %.sroa.9143.0 = phi i64 [ 2, %165 ], [ %.sroa.05.0241, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i129" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i124" ], [ 0, %146 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit" ], [ 1, %159 ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit453" ] + %.sroa.16144.1 = phi ptr [ %.sroa.16144.0235, %165 ], [ %.sroa.16144.0235, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit" ], [ %.sroa.16144.0235, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i129" ], [ %.sroa.16144.0235, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i124" ], [ %.sroa.56.0240, %146 ], [ %.sroa.56.0240, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit" ], [ %.sroa.56.0240, %159 ], [ %.sroa.56.0240, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1ce5737e5da64514E.exit.loopexit453" ] %169 = icmp eq i64 %104, 0 br i1 %169, label %"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$27search_tree_for_bifurcation17h06e4b7c86e168b14E.exit._crit_edge", label %.lr.ph.preheader } @@ -4922,14 +4925,17 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.sroa.9.1.i = phi ptr [ %.sroa.16.1.i, %68 ], [ %7, %5 ] %.sroa.040.1.i = phi i64 [ %.sroa.9.0.i, %68 ], [ 0, %5 ] %.sroa.743.1.i = phi ptr [ %.sroa.16102.1.i, %68 ], [ %8, %5 ] - switch i64 %.sroa.040.1.i, label %default.unreachable [ + switch i64 %.sroa.040.1.i, label %.preheader.i.unreachabledefault [ i64 0, label %15 i64 1, label %28 i64 2, label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i" i64 3, label %41 ] -default.unreachable: ; preds = %.preheader.i, %.lr.ph.preheader +.preheader.idefault.unreachable: ; preds = %.preheader.i + unreachable + +default.unreachable: ; preds = %.lr.ph.preheader unreachable 15: ; preds = %.preheader.i @@ -5007,9 +5013,9 @@ default.unreachable: ; preds = %.preheader.i, %.lr. br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i": ; preds = %35, %22, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit411", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit", %41, %.preheader.i - %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %41 ], [ %.sroa.16.0.i, %.preheader.i ], [ %.sroa.9.1.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ %.sroa.9.1.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ %.sroa.9.1.i, %22 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ %.sroa.9.1.i, %35 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit411" ] - %.sroa.9.0.i = phi i64 [ 3, %41 ], [ %.sroa.040.1.i, %.preheader.i ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ 0, %22 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ 1, %35 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit411" ] - %.sroa.099.0.i = phi i64 [ %44, %41 ], [ 0, %.preheader.i ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ %.sroa.8.0.i26.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ %20, %22 ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ %33, %35 ], [ %37, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit411" ] + %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %41 ], [ %.sroa.16.0.i, %.preheader.i ], [ %.sroa.9.1.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ %.sroa.9.1.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ %.sroa.9.1.i, %22 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ %.sroa.9.1.i, %35 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit410" ] + %.sroa.9.0.i = phi i64 [ 3, %41 ], [ %.sroa.040.1.i, %.preheader.i ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ 0, %22 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ 1, %35 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit410" ] + %.sroa.099.0.i = phi i64 [ %44, %41 ], [ 0, %.preheader.i ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i.i" ], [ %.sroa.8.0.i26.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i.i" ], [ %20, %22 ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit" ], [ %33, %35 ], [ %37, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.i.loopexit410" ] %45 = icmp eq i64 %.sroa.042.1.i, 2 br i1 %45, label %60, label %46 @@ -5209,9 +5215,9 @@ default.unreachable: ; preds = %.preheader.i, %.lr. br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit": ; preds = %102, %89, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit397", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit", %.lr.ph.preheader, %108 - %.sroa.0140.0 = phi i64 [ %111, %108 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ %104, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ %87, %89 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ %100, %102 ], [ %.sroa.8.0.i26.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit397" ] - %.sroa.9141.0 = phi i64 [ 3, %108 ], [ %.sroa.03.0234, %.lr.ph.preheader ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ 0, %89 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ 1, %102 ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit397" ] - %.sroa.16.1 = phi ptr [ %.sroa.16.0225, %108 ], [ %.sroa.16.0225, %.lr.ph.preheader ], [ %.sroa.16.0225, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ %.sroa.16.0225, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ %.sroa.54.0233, %89 ], [ %.sroa.54.0233, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ %.sroa.54.0233, %102 ], [ %.sroa.54.0233, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit397" ] + %.sroa.0140.0 = phi i64 [ %111, %108 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ %104, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ %87, %89 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ %100, %102 ], [ %.sroa.8.0.i26.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit396" ] + %.sroa.9141.0 = phi i64 [ 3, %108 ], [ %.sroa.03.0234, %.lr.ph.preheader ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ 0, %89 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ 1, %102 ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit396" ] + %.sroa.16.1 = phi ptr [ %.sroa.16.0225, %108 ], [ %.sroa.16.0225, %.lr.ph.preheader ], [ %.sroa.16.0225, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i.i" ], [ %.sroa.16.0225, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbbde3dac121d25feE.exit.i27.i" ], [ %.sroa.54.0233, %89 ], [ %.sroa.54.0233, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit" ], [ %.sroa.54.0233, %102 ], [ %.sroa.54.0233, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17hd9bd8cc2828af230E.exit.loopexit396" ] %112 = getelementptr inbounds nuw i8, ptr %.sroa.0113.0236, i64 1072 %113 = icmp ult i64 %.sroa.093.0228, 12 call void @llvm.assume(i1 %113) diff --git a/bench/rocksdb/optimized/wal_manager.ll b/bench/rocksdb/optimized/wal_manager.ll index 15c48f64d1e..2c498a3a26d 100644 --- a/bench/rocksdb/optimized/wal_manager.ll +++ b/bench/rocksdb/optimized/wal_manager.ll @@ -1965,10 +1965,8 @@ _ZN7rocksdb6StatusD2Ev.exit119: ; preds = %247, %_ZNKSt14defau 251: ; preds = %246 call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) - switch i32 %.252, label %.loopexit188 [ - i32 3, label %252 - i32 2, label %.thread180.loopexit - ] + %cond = icmp eq i32 %.252, 3 + br i1 %cond, label %252, label %.loopexit188 252: ; preds = %251, %.thread178 %253 = getelementptr inbounds nuw i8, ptr %.sroa.0154.0193, i64 32 @@ -1981,7 +1979,7 @@ _ZN7rocksdb6StatusD2Ev.exit119: ; preds = %247, %_ZNKSt14defau call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %.body -.thread180.loopexit: ; preds = %251, %252 +.thread180.loopexit: ; preds = %252 %.pre202 = load ptr, ptr %3, align 8, !tbaa !104 br label %.thread180 diff --git a/bench/ruff-rs/optimized/5lvsb1nk0gwgenpfef7kaw01r.ll b/bench/ruff-rs/optimized/5lvsb1nk0gwgenpfef7kaw01r.ll index da1e5864eca..fbe113b01a8 100644 --- a/bench/ruff-rs/optimized/5lvsb1nk0gwgenpfef7kaw01r.ll +++ b/bench/ruff-rs/optimized/5lvsb1nk0gwgenpfef7kaw01r.ll @@ -5948,14 +5948,17 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.sroa.0.0.i = phi ptr [ %1, %4 ], [ %44, %40 ] %.sroa.9.1.i = phi ptr [ %3, %4 ], [ %.sroa.16.1.i, %40 ] %.sroa.040.1.i = phi i64 [ 0, %4 ], [ %.sroa.9.0.i, %40 ] - switch i64 %.sroa.040.1.i, label %default.unreachable [ + switch i64 %.sroa.040.1.i, label %.unreachabledefault [ i64 0, label %6 i64 1, label %18 i64 2, label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i" i64 3, label %30 ] -default.unreachable: ; preds = %5, %.noexc121, %.noexc, %.lr.ph.preheader, %.noexc123, %.noexc122 +default.unreachable: ; preds = %5 + unreachable + +default.unreachable: ; preds = %.noexc121, %.noexc, %.lr.ph.preheader, %.noexc123, %.noexc122 unreachable 6: ; preds = %5 @@ -6029,9 +6032,9 @@ default.unreachable: ; preds = %5, %.noexc121, %.no br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i": ; preds = %25, %13, %.noexc121, %.noexc, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit393", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit", %30, %5 - %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %30 ], [ %.sroa.16.0.i, %5 ], [ %.sroa.9.1.i, %.noexc ], [ %.sroa.9.1.i, %.noexc121 ], [ %.sroa.9.1.i, %13 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit" ], [ %.sroa.9.1.i, %25 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit393" ] - %.sroa.9.0.i = phi i64 [ 3, %30 ], [ %.sroa.040.1.i, %5 ], [ 0, %.noexc ], [ 1, %.noexc121 ], [ 0, %13 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit" ], [ 1, %25 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit393" ] - %.sroa.095.0.i = phi i64 [ %33, %30 ], [ 0, %5 ], [ %.sroa.8.0.i.i.i, %.noexc ], [ %.sroa.8.0.i24.i.i, %.noexc121 ], [ %11, %13 ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit" ], [ %23, %25 ], [ %29, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit393" ] + %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %30 ], [ %.sroa.16.0.i, %5 ], [ %.sroa.9.1.i, %.noexc ], [ %.sroa.9.1.i, %.noexc121 ], [ %.sroa.9.1.i, %13 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit" ], [ %.sroa.9.1.i, %25 ], [ %.sroa.16.0.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit389" ] + %.sroa.9.0.i = phi i64 [ 3, %30 ], [ %.sroa.040.1.i, %5 ], [ 0, %.noexc ], [ 1, %.noexc121 ], [ 0, %13 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit" ], [ 1, %25 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit389" ] + %.sroa.095.0.i = phi i64 [ %33, %30 ], [ 0, %5 ], [ %.sroa.8.0.i.i.i, %.noexc ], [ %.sroa.8.0.i24.i.i, %.noexc121 ], [ %11, %13 ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit" ], [ %23, %25 ], [ %29, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.i.loopexit389" ] %34 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 714 %35 = load i16, ptr %34, align 2, !noalias !1087, !noundef !7 %36 = zext i16 %35 to i64 @@ -6200,9 +6203,9 @@ default.unreachable: ; preds = %5, %.noexc121, %.no br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit": ; preds = %74, %62, %.noexc123, %.noexc122, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit377", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit", %.lr.ph.preheader, %79 - %.sroa.0141.0 = phi i64 [ %82, %79 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %.noexc122 ], [ %77, %.noexc123 ], [ %60, %62 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit" ], [ %72, %74 ], [ %.sroa.8.0.i24.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit377" ] - %.sroa.9142.0 = phi i64 [ 3, %79 ], [ %.sroa.03.0234, %.lr.ph.preheader ], [ 3, %.noexc122 ], [ 2, %.noexc123 ], [ 0, %62 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit" ], [ 1, %74 ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit377" ] - %.sroa.16.1 = phi ptr [ %.sroa.16.0227, %79 ], [ %.sroa.16.0227, %.lr.ph.preheader ], [ %.sroa.16.0227, %.noexc122 ], [ %.sroa.16.0227, %.noexc123 ], [ %.sroa.54.0233, %62 ], [ %.sroa.54.0233, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit" ], [ %.sroa.54.0233, %74 ], [ %.sroa.54.0233, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit377" ] + %.sroa.0141.0 = phi i64 [ %82, %79 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %.noexc122 ], [ %77, %.noexc123 ], [ %60, %62 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit" ], [ %72, %74 ], [ %.sroa.8.0.i24.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit373" ] + %.sroa.9142.0 = phi i64 [ 3, %79 ], [ %.sroa.03.0234, %.lr.ph.preheader ], [ 3, %.noexc122 ], [ 2, %.noexc123 ], [ 0, %62 ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit" ], [ 1, %74 ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit373" ] + %.sroa.16.1 = phi ptr [ %.sroa.16.0227, %79 ], [ %.sroa.16.0227, %.lr.ph.preheader ], [ %.sroa.16.0227, %.noexc122 ], [ %.sroa.16.0227, %.noexc123 ], [ %.sroa.54.0233, %62 ], [ %.sroa.54.0233, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit" ], [ %.sroa.54.0233, %74 ], [ %.sroa.54.0233, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h3fd0f068358e418eE.exit.loopexit373" ] %83 = getelementptr inbounds nuw i8, ptr %.sroa.0113.0236, i64 720 %84 = icmp samesign ult i64 %.sroa.093.0229, 12 tail call void @llvm.assume(i1 %84) diff --git a/bench/sdl/optimized/SDL_alsa_audio.ll b/bench/sdl/optimized/SDL_alsa_audio.ll index f041b653f54..b4a76537510 100644 --- a/bench/sdl/optimized/SDL_alsa_audio.ll +++ b/bench/sdl/optimized/SDL_alsa_audio.ll @@ -195,9 +195,6 @@ target triple = "x86_64-pc-linux-gnu" @.str.118 = private unnamed_addr constant [46 x i8] c"ALSA: snd_pcm_wait failed (unrecoverable): %s\00", align 1 @.str.119 = private unnamed_addr constant [38 x i8] c"ALSA write failed (unrecoverable): %s\00", align 1 @.str.120 = private unnamed_addr constant [37 x i8] c"ALSA read failed (unrecoverable): %s\00", align 1 -@switch.table.sdl_6chans_set_rear_or_side_channels_from_alsa_6chans = private unnamed_addr constant [4 x i32] [i32 0, i32 5, i32 9, i32 0], align 4 -@switch.table.sdl_6chans_set_rear_or_side_channels_from_alsa_6chans.1 = private unnamed_addr constant [4 x i32] [i32 0, i32 6, i32 10, i32 0], align 4 -@switch.table.sdl_6chans_set_rear_or_side_channels_from_alsa_6chans.2 = private unnamed_addr constant [4 x ptr] [ptr @.str.104, ptr @.str.105, ptr @.str.106, ptr @.str.104], align 8 ; Function Attrs: nounwind uwtable define internal noundef zeroext i1 @ALSA_Init(ptr noundef writeonly captures(none) %0) #0 { @@ -1473,6 +1470,13 @@ define internal fastcc void @ALSA_HotplugIteration(ptr noundef writeonly capture %28 = icmp slt i32 %27, 0 br i1 %28, label %.thread39, label %.lr.ph +.backedge: ; preds = %34, %.critedge50 + call void @llvm.lifetime.end.p0(ptr nonnull %7) + %29 = load ptr, ptr @ALSA_snd_card_next, align 8 + %30 = call i32 %29(ptr noundef nonnull %6) #8 + %31 = icmp slt i32 %30, 0 + br i1 %31, label %.thread39, label %.lr.ph + .lr.ph: ; preds = %21, %.backedge %29 = load i32, ptr %6, align 4 %30 = icmp eq i32 %29, -1 @@ -1484,14 +1488,14 @@ define internal fastcc void @ALSA_HotplugIteration(ptr noundef writeonly capture %33 = call i32 (ptr, i64, ptr, ...) @SDL_snprintf_REAL(ptr noundef nonnull %7, i64 noundef 64, ptr noundef nonnull @.str.72, ptr noundef %32, i32 noundef %29) #8 call void (i32, ptr, ...) @SDL_LogDebug_REAL(i32 noundef 4, ptr noundef nonnull @.str.73, ptr noundef nonnull %7) #8 %34 = load ptr, ptr @ALSA_snd_ctl_open, align 8 - %35 = call i32 %34(ptr noundef nonnull %3, ptr noundef nonnull %7, i32 noundef 0) #8 + %35 = call i32 %37(ptr noundef nonnull %3, ptr noundef nonnull %7, i32 noundef 0) #8 %36 = icmp slt i32 %35, 0 br i1 %36, label %.backedge, label %37 37: ; preds = %31 %38 = load ptr, ptr @ALSA_snd_ctl_card_info, align 8 %39 = load ptr, ptr %3, align 8 - %40 = call i32 %38(ptr noundef %39, ptr noundef nonnull %22) #8 + %40 = call i32 %41(ptr noundef %39, ptr noundef nonnull %22) #8 %41 = icmp slt i32 %40, 0 br i1 %41, label %.thread39.sink.split, label %42 @@ -1503,47 +1507,40 @@ define internal fastcc void @ALSA_HotplugIteration(ptr noundef writeonly capture 43: ; preds = %55, %42 %44 = load ptr, ptr @ALSA_snd_ctl_pcm_next_device, align 8 %45 = load ptr, ptr %3, align 8 - %46 = call i32 %44(ptr noundef %45, ptr noundef nonnull %8) #8 + %46 = call i32 %47(ptr noundef %45, ptr noundef nonnull %8) #8 %47 = icmp slt i32 %46, 0 - br i1 %47, label %.thread74, label %48 + br i1 %47, label %67, label %48 48: ; preds = %43 %49 = load i32, ptr %8, align 4 %50 = icmp eq i32 %49, -1 - br i1 %50, label %60, label %51 + br i1 %50, label %.critedge50, label %51 51: ; preds = %48 %52 = load ptr, ptr %3, align 8 %53 = call fastcc i32 @hotplug_device_process(ptr noundef %52, ptr noundef %22, i32 noundef %49, i32 noundef 0, ptr noundef %4, ptr noundef %5) %54 = icmp slt i32 %53, 0 - br i1 %54, label %.thread74, label %55 + br i1 %54, label %67, label %55 55: ; preds = %51 %56 = load ptr, ptr %3, align 8 %57 = load i32, ptr %8, align 4 %58 = call fastcc i32 @hotplug_device_process(ptr noundef %56, ptr noundef %22, i32 noundef %57, i32 noundef 1, ptr noundef %4, ptr noundef %5) %59 = icmp slt i32 %58, 0 - br i1 %59, label %.thread74, label %43 - -.thread74: ; preds = %43, %51, %55 - call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %.thread39.sink.split - -60: ; preds = %48 - %61 = load ptr, ptr @ALSA_snd_ctl_close, align 8 - %62 = load ptr, ptr %3, align 8 - %63 = call i32 %61(ptr noundef %62) #8 - %64 = load ptr, ptr @ALSA_snd_ctl_card_info_clear, align 8 - call void %64(ptr noundef nonnull %22) #8 + br i1 %59, label %67, label %43 + +.thread74: ; preds = %51 + %63 = load ptr, ptr @ALSA_snd_ctl_close, align 8 + %64 = load ptr, ptr %3, align 8 + %65 = call i32 %63(ptr noundef %64) #8 + %66 = load ptr, ptr @ALSA_snd_ctl_card_info_clear, align 8 + call void %66(ptr noundef nonnull %22) #8 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %.backedge -.backedge: ; preds = %31, %60 - call void @llvm.lifetime.end.p0(ptr nonnull %7) - %65 = load ptr, ptr @ALSA_snd_card_next, align 8 - %66 = call i32 %65(ptr noundef nonnull %6) #8 - %67 = icmp slt i32 %66, 0 - br i1 %67, label %.thread39, label %.lr.ph +.backedge: ; preds = %58, %51, %46 + call void @llvm.lifetime.end.p0(ptr nonnull %8) + br label %.thread39.loopexit48.sink.split thread-pre-split: ; preds = %.lr.ph %.pr = load ptr, ptr %4, align 8 @@ -1551,7 +1548,7 @@ thread-pre-split: ; preds = %.lr.ph br i1 %.not3750, label %._crit_edge, label %.lr.ph51 .lr.ph51: ; preds = %thread-pre-split, %.lr.ph51 - %68 = phi ptr [ %74, %.lr.ph51 ], [ %.pr, %thread-pre-split ] + %68 = phi ptr [ %74, %.lr.ph52 ], [ %.pr, %thread-pre-split ] %69 = call ptr @SDL_FindPhysicalAudioDeviceByHandle(ptr noundef nonnull %68) #8 call void @SDL_AudioDeviceDisconnected(ptr noundef %69) #8 %70 = getelementptr inbounds nuw i8, ptr %68, i64 8 @@ -1570,7 +1567,7 @@ thread-pre-split: ; preds = %.lr.ph store ptr %75, ptr @hotplug_devices, align 8 br i1 %15, label %.loopexit48, label %.loopexit48.sink.split -.thread39.sink.split: ; preds = %37, %.thread74 +.thread39.sink.split: ; preds = %37, %67 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.thread39 @@ -1590,7 +1587,7 @@ thread-pre-split: ; preds = %.lr.ph br i1 %.not3554, label %thread-pre-split42, label %.lr.ph56 .lr.ph56: ; preds = %80, %.lr.ph56 - %81 = phi ptr [ %87, %.lr.ph56 ], [ %.pr41, %80 ] + %81 = phi ptr [ %87, %.lr.ph57 ], [ %.pr41, %80 ] %82 = call ptr @SDL_FindPhysicalAudioDeviceByHandle(ptr noundef nonnull %81) #8 call void @SDL_AudioDeviceDisconnected(ptr noundef %82) #8 %83 = getelementptr inbounds nuw i8, ptr %81, i64 8 @@ -1610,7 +1607,7 @@ thread-pre-split42: ; preds = %.lr.ph56, %80 br i1 %.not3660, label %._crit_edge62, label %.lr.ph61 .lr.ph61: ; preds = %thread-pre-split42, %.lr.ph61 - %88 = phi ptr [ %94, %.lr.ph61 ], [ %.pr43, %thread-pre-split42 ] + %88 = phi ptr [ %94, %.lr.ph62 ], [ %.pr43, %thread-pre-split42 ] %89 = call ptr @SDL_FindPhysicalAudioDeviceByHandle(ptr noundef nonnull %88) #8 call void @SDL_AudioDeviceDisconnected(ptr noundef %89) #8 %90 = getelementptr inbounds nuw i8, ptr %88, i64 8 @@ -2807,21 +2804,21 @@ has_pos.exit43: ; preds = %.preheader45 br i1 %exitcond.not, label %switch.lookup, label %.preheader, !llvm.loop !29 switch.lookup: ; preds = %20 - %21 = zext nneg i32 %.2 to i64 - %switch.gep = getelementptr inbounds nuw i32, ptr @switch.table.sdl_6chans_set_rear_or_side_channels_from_alsa_6chans, i64 %21 - %switch.load = load i32, ptr %switch.gep, align 4 - %22 = zext nneg i32 %.2 to i64 - %switch.gep79 = getelementptr inbounds nuw i32, ptr @switch.table.sdl_6chans_set_rear_or_side_channels_from_alsa_6chans.1, i64 %22 - %switch.load80 = load i32, ptr %switch.gep79, align 4 - %23 = zext nneg i32 %.2 to i64 - %switch.gep81 = getelementptr inbounds nuw ptr, ptr @switch.table.sdl_6chans_set_rear_or_side_channels_from_alsa_6chans.2, i64 %23 - %switch.load82 = load ptr, ptr %switch.gep81, align 8 + switch i32 %.2, label %23 [ + i32 1, label %22 + i32 0, label %.thread + ] + +22:; preds = %switch.lookup + br label %.thread + +23:; preds = %switch.lookup br label %.thread -.thread: ; preds = %18, %19, %switch.lookup, %has_pos.exit, %has_pos.exit35, %has_pos.exit39, %has_pos.exit43 - %.sink74 = phi i32 [ 0, %has_pos.exit43 ], [ 0, %has_pos.exit39 ], [ 0, %has_pos.exit35 ], [ 0, %has_pos.exit ], [ %switch.load, %switch.lookup ], [ 0, %19 ], [ 0, %18 ] - %.sink = phi i32 [ 0, %has_pos.exit43 ], [ 0, %has_pos.exit39 ], [ 0, %has_pos.exit35 ], [ 0, %has_pos.exit ], [ %switch.load80, %switch.lookup ], [ 0, %19 ], [ 0, %18 ] - %.str.104.sink = phi ptr [ @.str.104, %has_pos.exit43 ], [ @.str.104, %has_pos.exit39 ], [ @.str.104, %has_pos.exit35 ], [ @.str.104, %has_pos.exit ], [ %switch.load82, %switch.lookup ], [ @.str.104, %19 ], [ @.str.104, %18 ] +.thread: ; preds = %18, %19, %switch.lookup, %has_pos.exit, %has_pos.exit35, %has_pos.exit39, %has_pos.exit43, %23, %22 + %.sink74 = phi i32 [ 9, %23 ], [ 5, %22 ], [ 0, %has_pos.exit43 ], [ 0, %has_pos.exit39 ], [ 0, %has_pos.exit35 ], [ 0, %has_pos.exit ], [ %.2, %21 ], [ 0, %19 ], [ 0, %18 ] + %.sink = phi i32 [ 10, %23 ], [ 6, %22 ], [ 0, %has_pos.exit43 ], [ 0, %has_pos.exit39 ], [ 0, %has_pos.exit35 ], [ 0, %has_pos.exit ], [ %.2, %21 ], [ 0, %19 ], [ 0, %18 ] + %.str.104.sink = phi ptr [ @.str.106, %23 ], [ @.str.105, %22 ], [ @.str.104, %has_pos.exit43 ], [ @.str.104, %has_pos.exit39 ], [ @.str.104, %has_pos.exit35 ], [ @.str.104, %has_pos.exit ], [ @.str.104, %21 ], [ @.str.104, %19 ], [ @.str.104, %18 ] %24 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 %.sink74, ptr %24, align 4 %25 = getelementptr inbounds nuw i8, ptr %0, i64 20 diff --git a/bench/wasmtime-rs/optimized/48myxw210mngc99c.ll b/bench/wasmtime-rs/optimized/48myxw210mngc99c.ll index a57b4a2941a..b54df4227d5 100644 --- a/bench/wasmtime-rs/optimized/48myxw210mngc99c.ll +++ b/bench/wasmtime-rs/optimized/48myxw210mngc99c.ll @@ -15434,7 +15434,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.sroa.0.0.i = phi ptr [ %1, %5 ], [ %48, %44 ] %.sroa.022.1.i = phi i64 [ 0, %5 ], [ %.sroa.9.0.i229, %44 ] %.sroa.7.1.i = phi ptr [ %6, %5 ], [ %.sroa.16.1.i228, %44 ] - switch i64 %.sroa.022.1.i, label %default.unreachable [ + switch i64 %.sroa.022.1.i, label %.unreachabledefault [ i64 0, label %9 i64 1, label %24 i64 2, label %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" @@ -15447,7 +15447,10 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.pre223 = zext i16 %.pre to i64 br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i" -default.unreachable: ; preds = %8, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i", %.lr.ph.preheader, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i" +default.unreachable: ; preds = %8 + unreachable + +default.unreachable: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i", %.lr.ph.preheader, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i" unreachable 9: ; preds = %8 @@ -15533,10 +15536,10 @@ default.unreachable: ; preds = %8, %"_ZN110_$LT$cor br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i": ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit320", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit", %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" - %.pre-phi = phi i64 [ %.pre223, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" ], [ %15, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit" ], [ %30, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit320" ], [ %15, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i" ], [ %30, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i" ] - %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit320" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i" ] - %.sroa.9.0.i = phi i64 [ 2, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit" ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit320" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i" ] - %.sroa.078.0.i = phi i64 [ 0, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit" ], [ %.sroa.8.0.i26.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit320" ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i" ], [ %34, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i" ] + %.pre-phi = phi i64 [ %.pre223, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" ], [ %15, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit" ], [ %30, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit316" ], [ %15, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i" ], [ %30, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i" ] + %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit316" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i" ] + %.sroa.9.0.i = phi i64 [ 2, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit" ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit316" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i" ] + %.sroa.078.0.i = phi i64 [ 0, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i_crit_edge" ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit" ], [ %.sroa.8.0.i26.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.loopexit316" ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i.i" ], [ %34, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i.i" ] %43 = icmp ult i64 %.sroa.078.0.i, %.pre-phi br i1 %43, label %.preheader, label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.i.thread" @@ -15692,9 +15695,9 @@ default.unreachable: ; preds = %8, %"_ZN110_$LT$cor br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit": ; preds = %82, %67, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit302", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit", %.lr.ph.preheader, %89 - %.sroa.096.0 = phi i64 [ %92, %89 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i" ], [ %.sroa.8.0.i26.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i" ], [ %65, %67 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit" ], [ %80, %82 ], [ %84, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit302" ] - %.sroa.997.0 = phi i64 [ 3, %89 ], [ %.sroa.03.0172, %.lr.ph.preheader ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i" ], [ 0, %67 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit" ], [ 1, %82 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit302" ] - %.sroa.16.1 = phi ptr [ %.sroa.16.0165, %89 ], [ %.sroa.16.0165, %.lr.ph.preheader ], [ %.sroa.54.0171, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i" ], [ %.sroa.54.0171, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i" ], [ %.sroa.54.0171, %67 ], [ %.sroa.16.0165, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit" ], [ %.sroa.54.0171, %82 ], [ %.sroa.16.0165, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit302" ] + %.sroa.096.0 = phi i64 [ %92, %89 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i" ], [ %.sroa.8.0.i26.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i" ], [ %65, %67 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit" ], [ %80, %82 ], [ %84, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit298" ] + %.sroa.997.0 = phi i64 [ 3, %89 ], [ %.sroa.03.0172, %.lr.ph.preheader ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i" ], [ 0, %67 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit" ], [ 1, %82 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit298" ] + %.sroa.16.1 = phi ptr [ %.sroa.16.0165, %89 ], [ %.sroa.16.0165, %.lr.ph.preheader ], [ %.sroa.54.0171, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i.i" ], [ %.sroa.54.0171, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h99620d69d3d22d5cE.exit.i28.i" ], [ %.sroa.54.0171, %67 ], [ %.sroa.16.0165, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit" ], [ %.sroa.54.0171, %82 ], [ %.sroa.16.0165, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h9d58bf5724600b9eE.exit.loopexit298" ] %93 = getelementptr inbounds nuw i8, ptr %.sroa.014.0166, i64 144 %94 = icmp ult i64 %.sroa.619.0174, 12 call void @llvm.assume(i1 %94) diff --git a/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll b/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll index efe6df6901b..6735fa32a79 100644 --- a/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll +++ b/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll @@ -16983,7 +16983,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.sroa.0.0.i = phi ptr [ %1, %4 ], [ %38, %34 ] %.sroa.022.1.i = phi i64 [ 0, %4 ], [ %.sroa.9.0.i216, %34 ] %.sroa.7.1.i = phi ptr [ %5, %4 ], [ %.sroa.16.1.i215, %34 ] - switch i64 %.sroa.022.1.i, label %default.unreachable [ + switch i64 %.sroa.022.1.i, label %.unreachabledefault [ i64 0, label %7 i64 1, label %18 i64 2, label %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" @@ -16996,7 +16996,10 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.pre210 = zext i16 %.pre to i64 br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i" -default.unreachable: ; preds = %6, %.lr.ph.preheader +default.unreachable: ; preds = %6 + unreachable + +default.unreachable: ; preds = %.lr.ph.preheader unreachable 7: ; preds = %6 @@ -17074,10 +17077,10 @@ default.unreachable.i34.i.i: ; preds = %"_ZN110_$LT$core..i br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i": ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit295", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit", %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" - %.pre-phi = phi i64 [ %.pre210, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" ], [ %12, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit" ], [ %23, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit295" ], [ %12, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %23, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] - %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit295" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] - %.sroa.9.0.i = phi i64 [ 2, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit" ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit295" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] - %.sroa.073.0.i = phi i64 [ 0, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit" ], [ %.sroa.8.0.i24.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit295" ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %27, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] + %.pre-phi = phi i64 [ %.pre210, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" ], [ %12, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit" ], [ %23, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit294" ], [ %12, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %23, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] + %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit294" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] + %.sroa.9.0.i = phi i64 [ 2, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit" ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit294" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] + %.sroa.073.0.i = phi i64 [ 0, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i_crit_edge" ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit" ], [ %.sroa.8.0.i24.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.loopexit294" ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %27, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] %33 = icmp ult i64 %.sroa.073.0.i, %.pre-phi br i1 %33, label %.preheader, label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.i.thread" @@ -17225,9 +17228,9 @@ default.unreachable.i34.i: ; preds = %"_ZN110_$LT$core..i br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit": ; preds = %67, %56, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit281", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit", %.lr.ph.preheader, %71 - %.sroa.091.0 = phi i64 [ %74, %71 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ %.sroa.8.0.i24.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ %54, %56 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit" ], [ %65, %67 ], [ %69, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit281" ] - %.sroa.992.0 = phi i64 [ 3, %71 ], [ %.sroa.03.0163, %.lr.ph.preheader ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ 0, %56 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit" ], [ 1, %67 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit281" ] - %.sroa.16.1 = phi ptr [ %.sroa.16.0156, %71 ], [ %.sroa.16.0156, %.lr.ph.preheader ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ %.sroa.54.0162, %56 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit" ], [ %.sroa.54.0162, %67 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit281" ] + %.sroa.091.0 = phi i64 [ %74, %71 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ %.sroa.8.0.i24.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ %54, %56 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit" ], [ %65, %67 ], [ %69, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit280" ] + %.sroa.992.0 = phi i64 [ 3, %71 ], [ %.sroa.03.0163, %.lr.ph.preheader ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ 0, %56 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit" ], [ 1, %67 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit280" ] + %.sroa.16.1 = phi ptr [ %.sroa.16.0156, %71 ], [ %.sroa.16.0156, %.lr.ph.preheader ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ %.sroa.54.0162, %56 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit" ], [ %.sroa.54.0162, %67 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h7c2ffbc53a80c3cdE.exit.loopexit280" ] %75 = getelementptr inbounds nuw i8, ptr %.sroa.014.0157, i64 280 %76 = icmp ult i64 %.sroa.619.0165, 12 call void @llvm.assume(i1 %76) @@ -17306,14 +17309,17 @@ _ZN4core3cmp10PartialOrd2gt17h0a9cba69a5f8b1beE.exit.thread.i: ; preds = %_ZN4co %.sroa.7.1.i = phi ptr [ %.sroa.16.1.i, %112 ], [ %3, %_ZN4core3cmp10PartialOrd2gt17h0a9cba69a5f8b1beE.exit.thread.i.preheader ] %.sroa.023.1.i = phi i64 [ %.sroa.998.0.i, %112 ], [ %..i.i, %_ZN4core3cmp10PartialOrd2gt17h0a9cba69a5f8b1beE.exit.thread.i.preheader ] %.sroa.724.1.i = phi ptr [ %.sroa.1699.1.i, %112 ], [ %.sroa.3.0.i.i, %_ZN4core3cmp10PartialOrd2gt17h0a9cba69a5f8b1beE.exit.thread.i.preheader ] - switch i64 %.sroa.022.1.i, label %default.unreachable [ + switch i64 %.sroa.022.1.i, label %.unreachabledefault [ i64 0, label %25 i64 1, label %43 i64 2, label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17ha0f0af183945ff05E.exit.i" i64 3, label %61 ] -default.unreachable: ; preds = %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17ha0f0af183945ff05E.exit.i", %_ZN4core3cmp10PartialOrd2gt17h0a9cba69a5f8b1beE.exit.thread.i, %.lr.ph.preheader +default.unreachable: ; preds = %_ZN4core3cmp10PartialOrd2gt17h0a9cba69a5f8b1beE.exit.thread.i + unreachable + +default.unreachable: ; preds = %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_lower_bound_index17ha0f0af183945ff05E.exit.i", %.lr.ph.preheader unreachable 25: ; preds = %_ZN4core3cmp10PartialOrd2gt17h0a9cba69a5f8b1beE.exit.thread.i @@ -18034,7 +18040,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.sroa.0.0.i = phi ptr [ %1, %4 ], [ %38, %34 ] %.sroa.022.1.i = phi i64 [ 0, %4 ], [ %.sroa.9.0.i216, %34 ] %.sroa.7.1.i = phi ptr [ %5, %4 ], [ %.sroa.16.1.i215, %34 ] - switch i64 %.sroa.022.1.i, label %default.unreachable [ + switch i64 %.sroa.022.1.i, label %.unreachabledefault [ i64 0, label %7 i64 1, label %18 i64 2, label %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" @@ -18047,7 +18053,10 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc %.pre210 = zext i16 %.pre to i64 br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i" -default.unreachable: ; preds = %6, %.lr.ph.preheader +default.unreachable: ; preds = %6 + unreachable + +default.unreachable: ; preds = %.lr.ph.preheader unreachable 7: ; preds = %6 @@ -18125,10 +18134,10 @@ default.unreachable.i34.i.i: ; preds = %"_ZN110_$LT$core..i br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i": ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit295", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit", %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" - %.pre-phi = phi i64 [ %.pre210, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" ], [ %12, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit" ], [ %23, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit295" ], [ %12, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %23, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] - %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit295" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] - %.sroa.9.0.i = phi i64 [ 2, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit" ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit295" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] - %.sroa.073.0.i = phi i64 [ 0, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit" ], [ %.sroa.8.0.i24.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit295" ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %27, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] + %.pre-phi = phi i64 [ %.pre210, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" ], [ %12, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit" ], [ %23, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit294" ], [ %12, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %23, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] + %.sroa.16.1.i = phi ptr [ %.sroa.16.0.i, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit" ], [ %.sroa.7.1.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit294" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %.sroa.16.0.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] + %.sroa.9.0.i = phi i64 [ 2, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" ], [ 0, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit" ], [ 1, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit294" ], [ 3, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ 2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] + %.sroa.073.0.i = phi i64 [ 0, %"._ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i_crit_edge" ], [ %.sroa.8.0.i.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit" ], [ %.sroa.8.0.i24.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.loopexit294" ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i.i" ], [ %27, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i.i" ] %33 = icmp ult i64 %.sroa.073.0.i, %.pre-phi br i1 %33, label %.preheader, label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.i.thread" @@ -18276,9 +18285,9 @@ default.unreachable.i34.i: ; preds = %"_ZN110_$LT$core..i br label %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit" "_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit": ; preds = %67, %56, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit281", %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit", %.lr.ph.preheader, %71 - %.sroa.091.0 = phi i64 [ %74, %71 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ %.sroa.8.0.i24.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ %54, %56 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit" ], [ %65, %67 ], [ %69, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit281" ] - %.sroa.992.0 = phi i64 [ 3, %71 ], [ %.sroa.03.0163, %.lr.ph.preheader ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ 0, %56 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit" ], [ 1, %67 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit281" ] - %.sroa.16.1 = phi ptr [ %.sroa.16.0156, %71 ], [ %.sroa.16.0156, %.lr.ph.preheader ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ %.sroa.54.0162, %56 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit" ], [ %.sroa.54.0162, %67 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit281" ] + %.sroa.091.0 = phi i64 [ %74, %71 ], [ 0, %.lr.ph.preheader ], [ %.sroa.8.0.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ %.sroa.8.0.i24.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ %54, %56 ], [ %.sroa.8.0.i.i, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit" ], [ %65, %67 ], [ %69, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit280" ] + %.sroa.992.0 = phi i64 [ 3, %71 ], [ %.sroa.03.0163, %.lr.ph.preheader ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ 0, %56 ], [ 3, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit" ], [ 1, %67 ], [ 2, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit280" ] + %.sroa.16.1 = phi ptr [ %.sroa.16.0156, %71 ], [ %.sroa.16.0156, %.lr.ph.preheader ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i.i" ], [ %.sroa.54.0162, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h915c4e675b616e4fE.exit.i26.i" ], [ %.sroa.54.0162, %56 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit" ], [ %.sroa.54.0162, %67 ], [ %.sroa.16.0156, %"_ZN5alloc11collections5btree6search91_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$22find_upper_bound_index17h1091ff3fbce43500E.exit.loopexit280" ] %75 = getelementptr inbounds nuw i8, ptr %.sroa.014.0157, i64 544 %76 = icmp ult i64 %.sroa.619.0165, 12 call void @llvm.assume(i1 %76) diff --git a/bench/wasmtime-rs/optimized/rpltamrj260p6v4.ll b/bench/wasmtime-rs/optimized/rpltamrj260p6v4.ll index 3ed01e068a8..64e82e9414c 100644 --- a/bench/wasmtime-rs/optimized/rpltamrj260p6v4.ll +++ b/bench/wasmtime-rs/optimized/rpltamrj260p6v4.ll @@ -13989,7 +13989,7 @@ switch.lookup14: ; preds = %100 br label %_ZN17cranelift_codegen2ir5types4Type10lane_count17h4544b729d3d3bd7bE.exit.i.i _ZN17cranelift_codegen2ir5types4Type10lane_count17h4544b729d3d3bd7bE.exit.i.i: ; preds = %switch.lookup14, %100 - %.0.i.i.i28 = phi i32 [ 0, %100 ], [ %switch.load16, %switch.lookup14 ] + %.0.i.i.i28 = phi i32 [ 0, %100 ], [ %switch.load16, %switch.lookup18 ] %106 = tail call i16 @llvm.usub.sat.i16(i16 %21, i16 112) %107 = lshr i16 %106, 4 %108 = zext nneg i16 %107 to i32 @@ -14008,51 +14008,43 @@ _ZN17cranelift_codegen2ir5types4Type10lane_count17h4544b729d3d3bd7bE.exit.i.i: ; switch i16 %113, label %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i [ i16 0, label %114 i16 3, label %117 - i16 4, label %118 - i16 5, label %119 + i16 4, label %119 + i16 5, label %121 ] 114: ; preds = %.split.i.i %115 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 range(i16 8, 65) %.0.i25, i1 true) %switch.tableidx17 = add nsw i16 %115, -3 %116 = icmp ult i16 %switch.tableidx17, 4 - br i1 %116, label %switch.lookup18, label %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i + br i1 %116, label %switch.lookup22, label %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i 117: ; preds = %.split.i.i - switch i16 %.0.i25, label %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i [ - i16 64, label %121 - i16 32, label %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit" - ] - -118: ; preds = %.split.i.i - switch i16 %.0.i25, label %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i [ - i16 32, label %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit" - i16 64, label %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread4.fold.split.i - ] + %118 = icmp eq i16 %.0.i25, 64 + %spec.select23 = zext i1 %118 to i8 + br label %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit" 119: ; preds = %.split.i.i - %120 = icmp eq i16 %.0.i25, 64 - br i1 %120, label %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit", label %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i - -121: ; preds = %117 + %120 = icmp eq i16 %.0.i25, 32 + %spec.select6 = select i1 %120, i8 2, i8 3 br label %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit" -_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i: ; preds = %114, %119, %118, %117, %.split.i.i, %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$11ty_bits_u1617h09a63857fec0eb89E.exit" +_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i: ; preds = %.split.i.i + %122 = icmp eq i16 %.0.i25, 64 + br i1 %122, label %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit", label %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i + +_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i: ; preds = %114, %121, %.split.i.i, %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$11ty_bits_u1617h09a63857fec0eb89E.exit" tail call void @_ZN4core6option13unwrap_failed17hcb3a256a9f1ca882E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.2cddbf5bcaf761a71b3f633d4eb1e193.45) #20 unreachable -_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread4.fold.split.i: ; preds = %118 - br label %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit" - -switch.lookup18: ; preds = %114 - %122 = shl nuw nsw i16 %switch.tableidx17, 3 - %switch.shiftamt = zext nneg i16 %122 to i32 +_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread4.fold.split.i: ; preds = %114 + %123 = shl nuw nsw i16 %switch.tableidx21, 3 + %switch.shiftamt = zext nneg i16 %123 to i32 %switch.downshift = lshr exact i32 16777216, %switch.shiftamt %switch.masked = trunc i32 %switch.downshift to i8 br label %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit" -"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit": ; preds = %switch.lookup18, %117, %118, %119, %121, %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread4.fold.split.i - %.0.i6.i = phi i8 [ 1, %121 ], [ 0, %117 ], [ 2, %118 ], [ 4, %119 ], [ 3, %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread4.fold.split.i ], [ %switch.masked, %switch.lookup18 ] +"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$8ext_mode17h2b53f6ebaedf61c1E.exit": ; preds = %117, %switch.lookup22, %119, %_ZN17cranelift_codegen3isa3x644inst4args7ExtMode3new17h50d4518686870385E.exit.thread.i + %.0.i6.i = phi i8 [ 4, %121 ], [ %spec.select6, %119 ], [ %switch.masked, %switch.lookup22 ], [ %spec.select23, %117 ] call void @llvm.lifetime.start.p0(ptr nonnull %7) call fastcc void @_ZN17cranelift_codegen3isa3x645lower4isle14generated_code26constructor_put_in_gpr_mem17he362d1565d61fc34E(ptr noalias noundef align 4 captures(none) dereferenceable(16) %7, ptr noalias noundef align 8 dereferenceable(16) %0, i32 noundef %1) %.val17 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 @@ -14067,7 +14059,7 @@ switch.lookup18: ; preds = %114 br label %_ZN17cranelift_codegen3isa3x645lower4isle14generated_code18constructor_extend17h4d9c588f14331727E.exit _ZN17cranelift_codegen3isa3x645lower4isle14generated_code18constructor_extend17h4d9c588f14331727E.exit: ; preds = %123, %125 - %.0.i30 = phi i32 [ %124, %123 ], [ %126, %125 ] + %.0.i30 = phi i32 [ %124, %124 ], [ %126, %126 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %"_ZN17cranelift_codegen3isa3x645lower4isle255_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..Context$u20$for$u20$cranelift_codegen..machinst..isle..IsleContext$LT$cranelift_codegen..isa..x64..lower..isle..generated_code..MInst$C$cranelift_codegen..isa..x64..X64Backend$GT$$GT$7gpr_new17h6915fe95f7bdb957E.exit" } diff --git a/bench/wireshark/optimized/packet-knet.ll b/bench/wireshark/optimized/packet-knet.ll index 5f4a76913ce..7e52c7143ab 100644 --- a/bench/wireshark/optimized/packet-knet.ll +++ b/bench/wireshark/optimized/packet-knet.ll @@ -95,7 +95,6 @@ target triple = "x86_64-pc-linux-gnu" @.str.52 = private unnamed_addr constant [16 x i8] c"Connect Syn Ack\00", align 1 @.str.53 = private unnamed_addr constant [12 x i8] c"Connect Ack\00", align 1 @packettypenames = internal constant [10 x { i32, [4 x i8], ptr }] [{ i32, [4 x i8], ptr } { i32 1, [4 x i8] zeroinitializer, ptr @.str.47 }, { i32, [4 x i8], ptr } { i32 2, [4 x i8] zeroinitializer, ptr @.str.48 }, { i32, [4 x i8], ptr } { i32 3, [4 x i8] zeroinitializer, ptr @.str.32 }, { i32, [4 x i8], ptr } { i32 4, [4 x i8] zeroinitializer, ptr @.str.34 }, { i32, [4 x i8], ptr } { i32 255, [4 x i8] zeroinitializer, ptr @.str.49 }, { i32, [4 x i8], ptr } { i32 254, [4 x i8] zeroinitializer, ptr @.str.50 }, { i32, [4 x i8], ptr } { i32 253, [4 x i8] zeroinitializer, ptr @.str.51 }, { i32, [4 x i8], ptr } { i32 252, [4 x i8] zeroinitializer, ptr @.str.52 }, { i32, [4 x i8], ptr } { i32 251, [4 x i8] zeroinitializer, ptr @.str.53 }, { i32, [4 x i8], ptr } zeroinitializer], align 16 -@.str.55 = private unnamed_addr constant [36 x i8] c"Error in Content Length calculation\00", align 1 @.str.56 = private unnamed_addr constant [8 x i8] c"%s (%d)\00", align 1 @.str.57 = private unnamed_addr constant [32 x i8] c"AppData or Malformed Message ID\00", align 1 @.str.58 = private unnamed_addr constant [3 x i8] c", \00", align 1 @@ -403,7 +402,7 @@ define internal fastcc range(i32 0, -2147483648) i32 @dissect_content_length_vle %7 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %6) %.not4.i = icmp sgt i8 %7, -1 %.1.i = select i1 %.not4.i, i32 %spec.select.i, i32 4 - switch i32 %.1.i, label %38 [ + switch i32 %.1.i, label %.unreachabledefault [ i32 4, label %8 i32 2, label %20 i32 1, label %27 @@ -449,7 +448,6 @@ define internal fastcc range(i32 0, -2147483648) i32 @dissect_content_length_vle ret i32 %32 38: ; preds = %3 - tail call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.55) #4 unreachable } @@ -550,9 +548,6 @@ declare void @col_set_fence(ptr noundef, i32 noundef) local_unnamed_addr #1 ; Function Attrs: null_pointer_is_valid declare zeroext i8 @tvb_get_uint8(ptr noundef, i32 noundef) local_unnamed_addr #1 -; Function Attrs: noreturn null_pointer_is_valid -declare void @proto_report_dissector_bug(ptr noundef, ...) local_unnamed_addr #2 - ; Function Attrs: null_pointer_is_valid declare ptr @proto_tree_add_uint(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1 @@ -617,9 +612,7 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #3 attributes #0 = { null_pointer_is_valid sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "probe-stack"="inline-asm" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { null_pointer_is_valid "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { noreturn null_pointer_is_valid "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { noreturn } +attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5} diff --git a/bench/wireshark/optimized/packet-pw-atm.ll b/bench/wireshark/optimized/packet-pw-atm.ll index 231fe8f9fb2..60b73407423 100644 --- a/bench/wireshark/optimized/packet-pw-atm.ll +++ b/bench/wireshark/optimized/packet-pw-atm.ll @@ -301,6 +301,7 @@ target triple = "x86_64-pc-linux-gnu" @.str.185 = private unnamed_addr constant [52 x i8] c"PW payload size (%d) must be <>0 and multiple of %d\00", align 1 @__const.dissect_n1_nocw.pd = private unnamed_addr constant { i32, i32, i32, i32, i32, %struct.anon, i32, i32, i32, %struct.anon.0, i8, i8, [2 x i8] } { i32 0, i32 0, i32 0, i32 0, i32 0, %struct.anon { i32 -1, i32 -1, i32 -1, i32 -1 }, i32 -1, i32 -1, i32 -1, %struct.anon.0 { i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1 }, i8 0, i8 0, [2 x i8] zeroinitializer }, align 4 @.str.186 = private unnamed_addr constant [34 x i8] c"Last PW ATM cell [%.3d] is broken\00", align 1 +@switch.table.dissect_11_or_aal5_pdu = private unnamed_addr constant [4 x i32] [i32 49, i32 51, i32 poison, i32 48], align 4 ; Function Attrs: null_pointer_is_valid sspstrong uwtable define hidden void @proto_register_pw_atm_ata() local_unnamed_addr #0 { @@ -1799,61 +1800,43 @@ proto_item_set_generated.exit: ; preds = %71, %74, %77 br label %proto_item_set_generated.exit105 proto_item_set_generated.exit105: ; preds = %87, %84, %81, %proto_item_set_generated.exit - br i1 %.not87, label %98, label %91 + br i1 %.not87, label %96, label %91 91: ; preds = %proto_item_set_generated.exit105 - switch i32 %22, label %default.unreachable [ - i32 5, label %94 - i32 6, label %93 - i32 3, label %pw_cell_size.exit - i32 4, label %92 - ] - -92: ; preds = %91 - br label %pw_cell_size.exit - -93: ; preds = %91 - br label %pw_cell_size.exit - -94: ; preds = %91 - tail call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.154, ptr noundef nonnull @.str.142, i32 noundef 280) #7 - unreachable - -default.unreachable: ; preds = %91 - unreachable - -pw_cell_size.exit: ; preds = %91, %92, %93 - %.0.i106 = phi i32 [ 51, %92 ], [ 48, %93 ], [ 49, %91 ] - %95 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %61, ptr noundef nonnull @ei_pw_payload_size_invalid_error, ptr noundef nonnull @.str.183, i32 noundef %.082, i32 noundef %.0.i106) + %91 = zext nneg i32 %22 to i64 + %92 = getelementptr i32, ptr @switch.table.dissect_11_or_aal5_pdu, i64 %91 + %switch.gep = getelementptr i8, ptr %92, i64 -12 + %switch.load = load i32, ptr %switch.gep, align 4 + %93 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %61, ptr noundef nonnull @ei_pw_payload_size_invalid_error, ptr noundef nonnull @.str.183, i32 noundef %.082, i32 noundef %switch.load) %.not88 = icmp eq i32 %.082, 0 %brmerge = or i1 %.not88, %or.cond - br i1 %brmerge, label %98, label %96 - -96: ; preds = %pw_cell_size.exit - %97 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %61, ptr noundef nonnull @ei_cell_broken, ptr noundef nonnull @.str.184, i32 noundef %.083) - br label %98 - -98: ; preds = %pw_cell_size.exit, %96, %proto_item_set_generated.exit105 - %99 = tail call ptr @tvb_new_subset_length(ptr noundef %0, i32 noundef 0, i32 noundef 4) - %100 = load ptr, ptr @dh_control_word, align 8 - %101 = call i32 @call_dissector_with_data(ptr noundef %100, ptr noundef %99, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5) - %102 = call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef 3) - %103 = load i32, ptr %34, align 4 - %104 = add i32 %103, -3 - %or.cond15 = icmp ult i32 %104, 2 - br i1 %or.cond15, label %105, label %106 - -105: ; preds = %98 - call fastcc void @dissect_payload_and_padding(ptr noundef %102, ptr noundef %1, ptr noundef %2, i32 noundef %.082, i32 noundef 0, ptr noundef nonnull %5) - br label %130 + br i1 %brmerge, label %96, label %94 -106: ; preds = %98 +106: ; preds = %91 + %95 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %61, ptr noundef nonnull @ei_cell_broken, ptr noundef nonnull @.str.184, i32 noundef %.083) + br label %96 + +96: ; preds = %switch.lookup, %94, %proto_item_set_generated.exit105 + %97 = tail call ptr @tvb_new_subset_length(ptr noundef %0, i32 noundef 0, i32 noundef 4) + %98 = load ptr, ptr @dh_control_word, align 8 + %99 = call i32 @call_dissector_with_data(ptr noundef %98, ptr noundef %97, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5) + %100 = call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef 3) + %101 = load i32, ptr %34, align 4 + %102 = add i32 %101, -3 + %or.cond15 = icmp ult i32 %102, 2 + br i1 %or.cond15, label %103, label %104 + +103: ; preds = %96 + call fastcc void @dissect_payload_and_padding(ptr noundef %100, ptr noundef %1, ptr noundef %2, i32 noundef %.082, i32 noundef 0, ptr noundef nonnull %5) + br label %128 + +104: ; preds = %96 %.not89 = icmp eq i32 %.082, 0 - br i1 %.not89, label %130, label %107 + br i1 %.not89, label %133, label %107 -107: ; preds = %106 +107: ; preds = %104 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %108 = call ptr @tvb_new_subset_remaining(ptr noundef %102, i32 noundef 1) + %108 = call ptr @tvb_new_subset_remaining(ptr noundef %100, i32 noundef 1) %109 = getelementptr inbounds nuw i8, ptr %6, i64 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %6, i8 0, i64 24, i1 false) store i8 4, ptr %109, align 4 @@ -1886,29 +1869,29 @@ pw_cell_size.exit: ; preds = %91, %92, %93 %128 = load ptr, ptr @dh_atm_untruncated, align 8 %129 = call i32 @call_dissector_with_data(ptr noundef %128, ptr noundef %108, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %130 - -130: ; preds = %106, %107, %105 - %131 = load i32, ptr %34, align 4 - %132 = add i32 %131, -3 - %or.cond18 = icmp ult i32 %132, 2 - br i1 %or.cond18, label %133, label %137 - -133: ; preds = %130 - %134 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %135 = load ptr, ptr %134, align 8 - call void @col_set_str(ptr noundef %135, i32 noundef 35, ptr noundef nonnull %.080) - %136 = load ptr, ptr %134, align 8 - call void @col_clear(ptr noundef %136, i32 noundef 25) + br label %133 + +133: ; preds = %104, %105, %103 + %129 = load i32, ptr %34, align 4 + %130 = add i32 %129, -3 + %or.cond18 = icmp ult i32 %130, 2 + br i1 %or.cond18, label %131, label %135 + +131: ; preds = %128 + %132 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %133 = load ptr, ptr %132, align 8 + call void @col_set_str(ptr noundef %133, i32 noundef 35, ptr noundef nonnull %.080) + %134 = load ptr, ptr %132, align 8 + call void @col_clear(ptr noundef %134, i32 noundef 25) call fastcc void @col_append_pw_info(ptr noundef %1, i32 noundef %.082, i32 noundef %.083, i32 noundef 0, ptr noundef nonnull %5) br label %137 -137: ; preds = %130, %133 +137: ; preds = %133, %131 %138 = call i32 @tvb_captured_length(ptr noundef %0) br label %139 139: ; preds = %4, %137 - %.0 = phi i32 [ %138, %137 ], [ 1, %4 ] + %.0 = phi i32 [ %138, %135 ], [ 1, %4 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.0 } diff --git a/bench/wireshark/optimized/packet-usb-audio.ll b/bench/wireshark/optimized/packet-usb-audio.ll index 6388c519f74..fcaf35110e0 100644 --- a/bench/wireshark/optimized/packet-usb-audio.ll +++ b/bench/wireshark/optimized/packet-usb-audio.ll @@ -1276,7 +1276,6 @@ target triple = "x86_64-pc-linux-gnu" @.str.826 = private unnamed_addr constant [15 x i8] c"Clock Validity\00", align 1 @.str.827 = private unnamed_addr constant [16 x i8] c"Clock Input Pin\00", align 1 @.str.828 = private unnamed_addr constant [25 x i8] c"Layout 1 Parameter Block\00", align 1 -@.str.829 = private unnamed_addr constant [25 x i8] c"Layout 2 Parameter Block\00", align 1 @.str.830 = private unnamed_addr constant [25 x i8] c"Layout 3 Parameter Block\00", align 1 @.str.831 = private unnamed_addr constant [31 x i8] c"Unknown Layout Parameter Block\00", align 1 @switch.table.dissect_as_if_general_body = private unnamed_addr constant [4 x ptr] [ptr @dissect_as_if_general_body.v2_formats_type_i, ptr @dissect_as_if_general_body.v2_formats_type_ii, ptr @dissect_as_if_general_body.v2_formats_type_iii, ptr @dissect_as_if_general_body.v2_formats_type_iv], align 8 @@ -3558,11 +3557,9 @@ has_data_stage.exit.i: ; preds = %90 102: ; preds = %has_data_stage.exit.i call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.lifetime.start.p0(ptr nonnull %7) - switch i32 %.0100115129.i, label %default.unreachable [ + switch i32 %.0100115129.i, label %113 [ i32 1, label %103 - i32 2, label %108 - i32 3, label %113 - i32 0, label %118 + i32 3, label %108 ] 103: ; preds = %102 @@ -3570,101 +3567,91 @@ has_data_stage.exit.i: ; preds = %90 %105 = load i32, ptr @hf_parameter_bmin, align 4 %106 = load i32, ptr @hf_parameter_bmax, align 4 %107 = load i32, ptr @hf_parameter_bres, align 4 - br label %118 + br label %113 108: ; preds = %102 - %109 = load i32, ptr @hf_parameter_wcur, align 4 - %110 = load i32, ptr @hf_parameter_wmin, align 4 - %111 = load i32, ptr @hf_parameter_wmax, align 4 - %112 = load i32, ptr @hf_parameter_wres, align 4 - br label %118 + %109 = load i32, ptr @hf_parameter_dcur, align 4 + %110 = load i32, ptr @hf_parameter_dmin, align 4 + %111 = load i32, ptr @hf_parameter_dmax, align 4 + %112 = load i32, ptr @hf_parameter_dres, align 4 + br label %113 -113: ; preds = %102 - %114 = load i32, ptr @hf_parameter_dcur, align 4 - %115 = load i32, ptr @hf_parameter_dmin, align 4 - %116 = load i32, ptr @hf_parameter_dmax, align 4 - %117 = load i32, ptr @hf_parameter_dres, align 4 +113: ; preds = %108, %103, %102 + %.096.i = phi ptr [ @.str.828, %103 ], [ @.str.830, %108 ], [ @.str.831, %102 ] + %.not106.i = phi i1 [ false, %103 ], [ false, %108 ], [ true, %102 ] + %.095.i = phi i32 [ 1, %103 ], [ 4, %108 ], [ 0, %102 ] + %.094.i = phi i32 [ %104, %103 ], [ %109, %108 ], [ 0, %102 ] + %.093.i = phi i32 [ %105, %103 ], [ %110, %108 ], [ 0, %102 ] + %.092.i = phi i32 [ %106, %103 ], [ %111, %108 ], [ 0, %102 ] + %.091.i = phi i32 [ %107, %103 ], [ %112, %108 ], [ 0, %102 ] + %114 = load i32, ptr @ett_parameter_block, align 4 + %115 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.097.i, i32 noundef -1, i32 noundef %114, ptr noundef nonnull %6, ptr noundef nonnull %.096.i) + br i1 %.not105117128.i, label %118, label %116 + +116: ; preds = %113 + %117 = load ptr, ptr %6, align 8 + call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %117, ptr noundef nonnull @.str.796, ptr noundef %.099119127.i) br label %118 -default.unreachable: ; preds = %102 - unreachable - -118: ; preds = %113, %108, %103, %102 - %.096.i = phi ptr [ @.str.828, %103 ], [ @.str.829, %108 ], [ @.str.830, %113 ], [ @.str.831, %102 ] - %.not106.i = phi i1 [ false, %103 ], [ false, %108 ], [ false, %113 ], [ true, %102 ] - %.095.i = phi i32 [ 1, %103 ], [ 2, %108 ], [ 4, %113 ], [ %.0100115129.i, %102 ] - %.094.i = phi i32 [ %104, %103 ], [ %109, %108 ], [ %114, %113 ], [ %.0100115129.i, %102 ] - %.093.i = phi i32 [ %105, %103 ], [ %110, %108 ], [ %115, %113 ], [ %.0100115129.i, %102 ] - %.092.i = phi i32 [ %106, %103 ], [ %111, %108 ], [ %116, %113 ], [ %.0100115129.i, %102 ] - %.091.i = phi i32 [ %107, %103 ], [ %112, %108 ], [ %117, %113 ], [ %.0100115129.i, %102 ] - %119 = load i32, ptr @ett_parameter_block, align 4 - %120 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.097.i, i32 noundef -1, i32 noundef %119, ptr noundef nonnull %6, ptr noundef nonnull %.096.i) - br i1 %.not105117128.i, label %123, label %121 - -121: ; preds = %118 - %122 = load ptr, ptr %6, align 8 - call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %122, ptr noundef nonnull @.str.796, ptr noundef %.099119127.i) - br label %123 - -123: ; preds = %121, %118 - %124 = load ptr, ptr %8, align 8 - %125 = getelementptr inbounds nuw i8, ptr %124, i64 29 - %126 = load i8, ptr %125, align 1 - %127 = icmp eq i8 %126, 2 - br i1 %127, label %128, label %153 - -128: ; preds = %123 - %129 = load i32, ptr @hf_parameter_wnumsubranges, align 4 - %130 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %120, i32 noundef %129, ptr noundef %0, i32 noundef %.097.i, i32 noundef 2, i32 noundef -2147483648, ptr noundef nonnull %7) - %131 = add nuw nsw i32 %.097.i, 2 - br i1 %.not106.i, label %.loopexit.i, label %132 - -132: ; preds = %128 - %133 = load ptr, ptr %8, align 8 - %134 = getelementptr inbounds nuw i8, ptr %133, i64 34 - %135 = load i16, ptr %134, align 2 - %136 = zext i16 %135 to i32 - %137 = load i32, ptr %7, align 4 - %138 = mul i32 %137, %.095.i - %139 = add i32 %138, 2 - %.not107.i = icmp ugt i32 %139, %136 - br i1 %.not107.i, label %140, label %145 - -140: ; preds = %132 - %141 = icmp ugt i16 %135, 2 - br i1 %141, label %142, label %.loopexit.i - -142: ; preds = %140 - %.lhs.trunc.i = add i16 %135, -2 - %143 = trunc nuw nsw i32 %.095.i to i16 - %.rhs.trunc.i = mul nuw nsw i16 %143, 3 - %144 = udiv i16 %.lhs.trunc.i, %.rhs.trunc.i - %.zext.i = zext i16 %144 to i32 - br label %145 - -145: ; preds = %142, %132 - %.090.i = phi i32 [ %.zext.i, %142 ], [ %137, %132 ] +default.unreachable: ; preds = %116, %113 + %119 = load ptr, ptr %8, align 8 + %120 = getelementptr inbounds nuw i8, ptr %119, i64 29 + %121 = load i8, ptr %120, align 1 + %122 = icmp eq i8 %121, 2 + br i1 %122, label %123, label %148 + +123: ; preds = %118 + %124 = load i32, ptr @hf_parameter_wnumsubranges, align 4 + %125 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %115, i32 noundef %124, ptr noundef %0, i32 noundef %.097.i, i32 noundef 2, i32 noundef -2147483648, ptr noundef nonnull %7) + %126 = add nuw nsw i32 %.097.i, 2 + br i1 %.not106.i, label %.loopexit.i, label %127 + +127:; preds = %123 + %128 = load ptr, ptr %8, align 8 + %129 = getelementptr inbounds nuw i8, ptr %128, i64 34 + %122 = load i16, ptr %129, align 2 + %131 = zext i16 %122 to i32 + %132 = load i32, ptr %7, align 4 + %133 = mul i32 %132, %.095.i + %134 = add i32 %133, 2 + %.not107.i = icmp ugt i32 %134, %131 + br i1 %.not107.i, label %135, label %140 + +135:; preds = %127 + %136 = icmp ugt i16 %130, 2 + br i1 %136, label %137, label %.loopexit.i + +137:; preds = %135 + %.lhs.trunc.i = add i16 %122, -2 + %138 = trunc nuw nsw i32 %.095.i to i16 + %.rhs.trunc.i = mul nuw nsw i16 %138, 3 + %139 = udiv i16 %.lhs.trunc.i, %.rhs.trunc.i + %.zext.i = zext i16 %139 to i32 + br label %140 + +140: ; preds = %137, %127 + %.090.i = phi i32 [ %.zext.i, %137 ], [ %132, %127 ] %.not.i = icmp eq i32 %.090.i, 0 br i1 %.not.i, label %.loopexit.i, label %.lr.ph.i -.lr.ph.i: ; preds = %145, %.lr.ph.i - %.0131.i = phi i32 [ %152, %.lr.ph.i ], [ 0, %145 ] - %.2130.i = phi i32 [ %151, %.lr.ph.i ], [ %131, %145 ] - %146 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.093.i, ptr noundef %0, i32 noundef %.2130.i, i32 noundef %.095.i, i32 noundef -2147483648) +.lr.ph.i: ; preds = %140, %.lr.ph.i + %.0131.i = phi i32 [ %152, %.lr.ph.i ], [ 0, %140 ] + %.2130.i = phi i32 [ %151, %.lr.ph.i ], [ %126, %140 ] + %146 = call ptr @proto_tree_add_item(ptr noundef %115, i32 noundef %.093.i, ptr noundef %0, i32 noundef %.2130.i, i32 noundef %.095.i, i32 noundef -2147483648) %147 = add i32 %.2130.i, %.095.i - %148 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.092.i, ptr noundef %0, i32 noundef %147, i32 noundef %.095.i, i32 noundef -2147483648) + %148 = call ptr @proto_tree_add_item(ptr noundef %115, i32 noundef %.092.i, ptr noundef %0, i32 noundef %147, i32 noundef %.095.i, i32 noundef -2147483648) %149 = add i32 %147, %.095.i - %150 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.091.i, ptr noundef %0, i32 noundef %149, i32 noundef %.095.i, i32 noundef -2147483648) + %150 = call ptr @proto_tree_add_item(ptr noundef %115, i32 noundef %.091.i, ptr noundef %0, i32 noundef %149, i32 noundef %.095.i, i32 noundef -2147483648) %151 = add i32 %149, %.095.i %152 = add nuw i32 %.0131.i, 1 %exitcond.not.i = icmp eq i32 %152, %.090.i br i1 %exitcond.not.i, label %.loopexit.i, label %.lr.ph.i, !llvm.loop !22 -153: ; preds = %123 +153: ; preds = %118 br i1 %.not106.i, label %157, label %154 154: ; preds = %153 - %155 = call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %.094.i, ptr noundef %0, i32 noundef %.097.i, i32 noundef %.095.i, i32 noundef -2147483648) + %155 = call ptr @proto_tree_add_item(ptr noundef %115, i32 noundef %.094.i, ptr noundef %0, i32 noundef %.097.i, i32 noundef %.095.i, i32 noundef -2147483648) %156 = add nuw nsw i32 %.095.i, %.097.i br label %.loopexit.i @@ -3675,8 +3662,8 @@ default.unreachable: ; preds = %102 %161 = add i32 %160, %.097.i br label %.loopexit.i -.loopexit.i: ; preds = %.lr.ph.i, %157, %154, %145, %140, %128 - %.3.i = phi i32 [ %156, %154 ], [ %161, %157 ], [ %131, %145 ], [ %131, %128 ], [ %131, %140 ], [ %151, %.lr.ph.i ] +.loopexit.i: ; preds = %.lr.ph.i, %157, %154, %140, %135, %123 + %.3.i = phi i32 [ %156, %149 ], [ %161, %152 ], [ %126, %140 ], [ %126, %123 ], [ %126, %135 ], [ %151, %.lr.ph.i ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %dissect_v2_control_cur_range.exit diff --git a/bench/wolfssl/optimized/api.ll b/bench/wolfssl/optimized/api.ll index 8cf73695463..52820024870 100644 --- a/bench/wolfssl/optimized/api.ll +++ b/bench/wolfssl/optimized/api.ll @@ -4095,8 +4095,8 @@ ForceZero.exit: br label %.preheader .preheader: ; preds = %.preheader.lr.ph, %57 - %indvars.iv155 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next156, %57 ] - %.1143 = phi i32 [ %.0147, %.preheader.lr.ph ], [ %.5, %57 ] + %indvars.iv155 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next156, %55 ] + %.1143 = phi i32 [ %.0147, %.preheader.lr.ph ], [ %.5, %55 ] br label %7 7: ; preds = %.preheader, %7 @@ -4176,19 +4176,13 @@ ForceZero.exit110: ; preds = %.lr.ph35.i106, %.pr br i1 %.not101, label %29, label %.thread 29: ; preds = %26 - switch i32 %.2140, label %30 [ - i32 4, label %.thread - i32 2, label %.thread - ] - -30: ; preds = %29 %31 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.1, i32 noundef 82658) - %32 = load ptr, ptr @stdout, align 8, !tbaa !22 - %33 = call i64 @fwrite(ptr nonnull @.str.2, i64 15, i64 1, ptr %32) - %34 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1067, ptr noundef nonnull @.str.1068, ptr noundef nonnull @.str.1069) - %35 = load ptr, ptr @stdout, align 8, !tbaa !22 - %36 = call i64 @fwrite(ptr nonnull @.str.6, i64 15, i64 1, ptr %35) - %37 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1070, i32 noundef 0, i32 noundef 0) + %31 = load ptr, ptr @stdout, align 8, !tbaa !22 + %32 = call i64 @fwrite(ptr nonnull @.str.2, i64 15, i64 1, ptr %31) + %33 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1067, ptr noundef nonnull @.str.1068, ptr noundef nonnull @.str.1069) + %34 = load ptr, ptr @stdout, align 8, !tbaa !22 + %35 = call i64 @fwrite(ptr nonnull @.str.6, i64 15, i64 1, ptr %34) + %31 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1070, i32 noundef 0, i32 noundef 0) br label %.thread.sink.split 38: ; preds = %23 @@ -4197,35 +4191,29 @@ ForceZero.exit110: ; preds = %.lr.ph35.i106, %.pr 39: ; preds = %38 %40 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv151 %41 = load i8, ptr %40, align 1, !tbaa !39 - %42 = zext i8 %41 to i32 - %43 = icmp eq i8 %41, 0 - br i1 %43, label %.thread, label %44 + %42 = icmp eq i8 %41, 0 + br i1 %41, label %.thread, label %42 -44: ; preds = %39 - switch i32 %.2140, label %45 [ - i32 4, label %.thread - i32 2, label %.thread - ] - -45: ; preds = %44 - %46 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.1, i32 noundef 82661) - %47 = load ptr, ptr @stdout, align 8, !tbaa !22 - %48 = call i64 @fwrite(ptr nonnull @.str.2, i64 15, i64 1, ptr %47) - %49 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, ptr noundef nonnull @.str.1068, ptr noundef nonnull @.str.1069) - %50 = load ptr, ptr @stdout, align 8, !tbaa !22 - %51 = call i64 @fwrite(ptr nonnull @.str.6, i64 15, i64 1, ptr %50) - %52 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, i32 noundef %42, i32 noundef 0) +45: ; preds = %38 + %43 = zext i8 %40 to i32 + %44 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.1, i32 noundef 82661) + %45 = load ptr, ptr @stdout, align 8, !tbaa !22 + %49 = call i64 @fwrite(ptr nonnull @.str.2, i64 15, i64 1, ptr %45) + %47 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, ptr noundef nonnull @.str.1068, ptr noundef nonnull @.str.1069) + %48 = load ptr, ptr @stdout, align 8, !tbaa !22 + %52 = call i64 @fwrite(ptr nonnull @.str.6, i64 15, i64 1, ptr %48) + %50 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, i32 noundef %43, i32 noundef 0) br label %.thread.sink.split .thread.sink.split: ; preds = %30, %45 + %51 = load ptr, ptr @stdout, align 8, !tbaa !22 + %52 = call i64 @fwrite(ptr nonnull @.str.8, i64 2, i64 1, ptr %51) %53 = load ptr, ptr @stdout, align 8, !tbaa !22 - %54 = call i64 @fwrite(ptr nonnull @.str.8, i64 2, i64 1, ptr %53) - %55 = load ptr, ptr @stdout, align 8, !tbaa !22 - %56 = call i32 @fflush(ptr noundef %55) + %54 = call i32 @fflush(ptr noundef %53) br label %.thread -.thread: ; preds = %.thread.sink.split, %44, %44, %39, %29, %29, %26, %38, %25 - %.5 = phi i32 [ 0, %25 ], [ 0, %38 ], [ 1, %26 ], [ 0, %29 ], [ 0, %29 ], [ 1, %39 ], [ 0, %44 ], [ 0, %44 ], [ 0, %.thread.sink.split ] +.thread: ; preds = %.thread.sink.split, %39, %26, %38, %25 + %.5 = phi i32 [ 0, %25 ], [ 0, %38 ], [ 1, %26 ], [ 1, %39 ], [ 0, %.thread.sink.split ] %indvars.iv.next152 = add nuw nsw i64 %indvars.iv151, 1 %exitcond154.not = icmp eq i64 %indvars.iv.next152, 32 br i1 %exitcond154.not, label %57, label %23, !llvm.loop !95 @@ -4236,7 +4224,7 @@ ForceZero.exit110: ; preds = %.lr.ph35.i106, %.pr br i1 %exitcond160.not, label %._crit_edge, label %.preheader, !llvm.loop !96 ._crit_edge: ; preds = %57, %.preheader134 - %.1.lcssa = phi i32 [ %.0147, %.preheader134 ], [ %.5, %57 ] + %.1.lcssa = phi i32 [ %.0147, %.preheader134 ], [ %.5, %55 ] %indvars.iv.next162 = add nuw nsw i64 %indvars.iv161, 1 %indvars.iv.next159 = add nsw i64 %indvars.iv158, -1 %exitcond164.not = icmp eq i64 %indvars.iv.next162, 32 @@ -32279,13 +32267,9 @@ define internal range(i32 0, 2) i32 @test_tls_cert_store_unchanged() #0 { 21: ; preds = %18 %22 = call i32 @test_wolfSSL_client_server_nofail_memio(ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef null) %23 = icmp eq i32 %22, 1 - br i1 %23, label %.thread.thread, label %24 - -24: ; preds = %21 - %cond = icmp eq i32 %.0119, 2 - br i1 %cond, label %.thread99, label %.thread.thread109 + br i1 %23, label %.thread.thread, label %.thread.thread109 -.thread.thread109: ; preds = %24 +.thread.thread109: ; preds = %21 %25 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.1, i32 noundef 97679) %26 = load ptr, ptr @stdout, align 8, !tbaa !22 %27 = tail call i64 @fwrite(ptr nonnull @.str.2, i64 15, i64 1, ptr %26) @@ -32318,8 +32302,8 @@ define internal range(i32 0, 2) i32 @test_tls_cert_store_unchanged() #0 { %43 = tail call i32 @fflush(ptr noundef %42) br label %.thread99 -.thread99: ; preds = %.thread99.sink.split, %24, %.thread.thread, %18 - %.4 = phi i32 [ %.0119, %18 ], [ 0, %24 ], [ 1, %.thread.thread ], [ 0, %.thread99.sink.split ] +.thread99: ; preds = %.thread99.sink.split, %.thread.thread, %18 + %.4 = phi i32 [ %.0119, %18 ], [ 1, %.thread.thread ], [ 0, %.thread99.sink.split ] br i1 %15, label %14, label %44, !llvm.loop !175 44: ; preds = %.thread99 diff --git a/bench/yara-x-rs/optimized/etm5hpj33bdybcfrrsf9s3xwm.ll b/bench/yara-x-rs/optimized/etm5hpj33bdybcfrrsf9s3xwm.ll index e60bbc3be33..e9b591a75ee 100644 --- a/bench/yara-x-rs/optimized/etm5hpj33bdybcfrrsf9s3xwm.ll +++ b/bench/yara-x-rs/optimized/etm5hpj33bdybcfrrsf9s3xwm.ll @@ -68762,7 +68762,7 @@ common.resume: ; preds = %"_ZN4core3ptr135dro cleanup br label %.thread -.thread409.loopexit.split-lp.loopexit: ; preds = %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$zip..result..ZipError$GT$$GT$17h53ae3dc4a91b1bc3E.exit.invoke", %"_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h4b2c1d8407847b29E.exit.i227", %468, %469 +.thread409.loopexit.split-lp.loopexit: ; preds = %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$zip..result..ZipError$GT$$GT$17h53ae3dc4a91b1bc3E.exit.invoke", %"_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h4b2c1d8407847b29E.exit.i227", %469 %lpad.loopexit524 = landingpad { ptr, i32 } cleanup br label %.thread @@ -70004,20 +70004,14 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i.i.i.i: ; preds = to label %.thread unwind label %373 467: ; preds = %166 - switch i64 %.sroa.9.sroa.0.1.ph, label %469 [ - i64 -9223372036854775807, label %468 - i64 -9223372036854775808, label %"_ZN4core3ptr42drop_in_place$LT$zip..result..ZipError$GT$17hb13ab00a3c874cd5E.exit" - ] - -468: ; preds = %467 - invoke void @"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h0597c85246a79ee7E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %.sroa.17.8..sroa_idx) - to label %"_ZN4core3ptr42drop_in_place$LT$zip..result..ZipError$GT$17hb13ab00a3c874cd5E.exit" unwind label %.thread409.loopexit.split-lp.loopexit + %468 = icmp eq i64 %.sroa.9.sroa.0.1.ph, -9223372036854775807 + br i1 %468, label %469, label %"_ZN4core3ptr42drop_in_place$LT$zip..result..ZipError$GT$17hb13ab00a3c874cd5E.exit" 469: ; preds = %467 - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h17da03b531ea35d5E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %25) + invoke void @"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h0597c85246a79ee7E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %.sroa.17.8..sroa_idx) to label %"_ZN4core3ptr42drop_in_place$LT$zip..result..ZipError$GT$17hb13ab00a3c874cd5E.exit" unwind label %.thread409.loopexit.split-lp.loopexit -"_ZN4core3ptr42drop_in_place$LT$zip..result..ZipError$GT$17hb13ab00a3c874cd5E.exit": ; preds = %467, %468, %469, %470 +"_ZN4core3ptr42drop_in_place$LT$zip..result..ZipError$GT$17hb13ab00a3c874cd5E.exit": ; preds = %467, %469, %470 call void @llvm.lifetime.end.p0(ptr nonnull %25) br label %.backedge530 diff --git a/bench/z3/optimized/arith_eq_solver.ll b/bench/z3/optimized/arith_eq_solver.ll index 2b705b0824e..5a5fcefd26a 100644 --- a/bench/z3/optimized/arith_eq_solver.ll +++ b/bench/z3/optimized/arith_eq_solver.ll @@ -7279,8 +7279,8 @@ _ZNK6vectorIS_I8rationalLb1EjELb1EjE4sizeEv.exit: ; preds = %3, %10 br label %280 _ZNK6vectorIjLb0EjE4sizeEv.exit: ; preds = %.critedge79.preheader, %.critedge79 - %56 = phi ptr [ %264, %.critedge79 ], [ %23, %.critedge79.preheader ] - %.063212 = phi i32 [ %263, %.critedge79 ], [ 0, %.critedge79.preheader ] + %56 = phi ptr [ %263, %.critedge79 ], [ %23, %.critedge79.preheader ] + %.063212 = phi i32 [ %262, %.critedge79 ], [ 0, %.critedge79.preheader ] %57 = getelementptr inbounds i8, ptr %56, i64 -4 %58 = load i32, ptr %57, align 4, !tbaa !70 %59 = icmp ult i32 %.063212, %58 @@ -7454,7 +7454,7 @@ _ZN8rationalC2ERKS_.exit.i: ; preds = %118, %114 131: ; preds = %246 %132 = landingpad { ptr, i32 } cleanup - br label %266 + br label %265 133: ; preds = %122 %134 = load i8, ptr %18, align 4 @@ -7500,7 +7500,7 @@ _ZNK6vectorIjLb0EjE4sizeEv.exit86: ; preds = %.preheader 154: ; preds = %156 %155 = landingpad { ptr, i32 } cleanup - br label %266 + br label %265 156: ; preds = %_ZNK6vectorIjLb0EjE4sizeEv.exit86 %157 = zext i32 %.048 to i64 @@ -7584,11 +7584,11 @@ _ZNK6vectorIjLb0EjE4sizeEv.exit86: ; preds = %.preheader br i1 %204, label %.lr.ph.preheader.i, label %_ZN6vectorIjLb0EjE3endEv.exit.i _ZN6vectorIjLb0EjE3endEv.exit.i: ; preds = %195, %.thread181 - %205 = phi i64 [ %193, %.thread181 ], [ %203, %195 ] - %206 = phi i64 [ %192, %.thread181 ], [ %202, %195 ] - %207 = phi ptr [ %191, %.thread181 ], [ %201, %195 ] - %.idx183 = phi i64 [ %.idx182, %.thread181 ], [ %.idx, %195 ] - %208 = phi ptr [ %176, %.thread181 ], [ %.pre163, %195 ] + %205 = phi i64 [ %193, %.thread182 ], [ %203, %195 ] + %206 = phi i64 [ %192, %.thread182 ], [ %202, %195 ] + %207 = phi ptr [ %191, %.thread182 ], [ %201, %195 ] + %.idx183 = phi i64 [ %.idx182, %.thread182 ], [ %.idx, %195 ] + %208 = phi ptr [ %176, %.thread182 ], [ %.pre163, %195 ] %209 = getelementptr inbounds i8, ptr %208, i64 -4 %210 = load i32, ptr %209, align 4, !tbaa !70 %211 = zext i32 %210 to i64 @@ -7624,7 +7624,7 @@ _ZN6vectorIjLb0EjE3endEv.exit.i: ; preds = %195, %.thread181 229: ; preds = %194, %174 %230 = landingpad { ptr, i32 } cleanup - br label %266 + br label %265 .critedge107: ; preds = %223, %.lr.ph %231 = phi ptr [ %163, %.lr.ph ], [ %224, %223 ] @@ -7673,7 +7673,6 @@ _ZN6vectorIjLb0EjE9push_backERKj.exit98: ; preds = %240, %.noexc97 br label %.critedge108 .critedge108: ; preds = %.critedge107, %_ZNK6vectorIjLb0EjE4sizeEv.exit88.preheader, %.critedge107.preheader, %_ZN6vectorIjLb0EjE9push_backERKj.exit98, %122 - %.468 = phi i32 [ 7, %122 ], [ 0, %_ZN6vectorIjLb0EjE9push_backERKj.exit98 ], [ 0, %.critedge107.preheader ], [ 0, %_ZNK6vectorIjLb0EjE4sizeEv.exit88.preheader ], [ 0, %.critedge107 ] %254 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8, !tbaa !56 invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %254, ptr noundef nonnull align 8 dereferenceable(32) %7) to label %.noexc.i unwind label %255 @@ -7697,7 +7696,7 @@ _ZN8rationalD2Ev.exit: ; preds = %.noexc.i .noexc.i99: ; preds = %_ZN8rationalD2Ev.exit invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %258, ptr noundef nonnull align 8 dereferenceable(16) %15) - to label %262 unwind label %259 + to label %.critedge79 unwind label %259 259: ; preds = %.noexc.i99, %_ZN8rationalD2Ev.exit %260 = landingpad { ptr, i32 } @@ -7708,24 +7707,18 @@ _ZN8rationalD2Ev.exit: ; preds = %.noexc.i 262: ; preds = %.noexc.i99 call void @llvm.lifetime.end.p0(ptr nonnull %6) - switch i32 %.468, label %.thread [ - i32 0, label %.critedge79 - i32 7, label %.critedge79 - ] - -.critedge79: ; preds = %262, %262 - %263 = add i32 %.063212, 1 - %264 = load ptr, ptr %4, align 8, !tbaa !125 - %265 = icmp eq ptr %264, null - br i1 %265, label %.thread, label %_ZNK6vectorIjLb0EjE4sizeEv.exit, !llvm.loop !180 + %262 = add i32 %.063213, 1 + %263 = load ptr, ptr %4, align 8, !tbaa !125 + %264 = icmp eq ptr %263, null + br i1 %264, label %.thread, label %_ZNK6vectorIjLb0EjE4sizeEv.exit, !llvm.loop !180 -266: ; preds = %229, %154, %131 +.critedge79: ; preds = %229, %154, %131 %.pn70 = phi { ptr, i32 } [ %155, %154 ], [ %230, %229 ], [ %132, %131 ] call void @_ZN8rationalD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #21 br label %.body -.body: ; preds = %129, %120, %266 - %.pn70.pn = phi { ptr, i32 } [ %.pn70, %266 ], [ %130, %129 ], [ %121, %120 ] +.body: ; preds = %129, %120, %265 + %.pn70.pn = phi { ptr, i32 } [ %.pn70, %265 ], [ %130, %129 ], [ %121, %120 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @_ZN8rationalD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #21 br label %267 @@ -7735,8 +7728,8 @@ _ZN8rationalD2Ev.exit: ; preds = %.noexc.i call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %280 -.thread: ; preds = %.critedge79, %262, %_ZNK6vectorIjLb0EjE4sizeEv.exit, %.critedge79.preheader, %70, %54 - %.3 = phi i1 [ false, %54 ], [ false, %70 ], [ true, %.critedge79.preheader ], [ true, %_ZNK6vectorIjLb0EjE4sizeEv.exit ], [ false, %262 ], [ true, %.critedge79 ] +.thread: ; preds = %.critedge79, %_ZNK6vectorIjLb0EjE4sizeEv.exit, %70, %.critedge79.preheader, %54 + %.3 = phi i1 [ false, %54 ], [ false, %70 ], [ true, %.critedge79.preheader ], [ true, %_ZNK6vectorIjLb0EjE4sizeEv.exit ], [ true, %.critedge79 ] %268 = load ptr, ptr %5, align 8, !tbaa !125 %.not.i.i = icmp eq ptr %268, null br i1 %.not.i.i, label %_ZN6vectorIjLb0EjED2Ev.exit, label %269 @@ -7776,7 +7769,7 @@ _ZN6vectorIjLb0EjED2Ev.exit102: ; preds = %_ZN6vectorIjLb0EjED ret i1 %.3 280: ; preds = %.loopexit, %.loopexit.split-lp, %.loopexit109, %.loopexit.split-lp110, %30, %267, %125 - %.pn70.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn70.pn.pn, %267 ], [ %126, %125 ], [ %31, %30 ], [ %lpad.loopexit111, %.loopexit109 ], [ %lpad.loopexit.split-lp112, %.loopexit.split-lp110 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.pn70.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn70.pn.pn, %266 ], [ %126, %125 ], [ %31, %30 ], [ %lpad.loopexit111, %.loopexit109 ], [ %lpad.loopexit.split-lp112, %.loopexit.split-lp110 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZN6vectorIjLb0EjED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #21 call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @_ZN6vectorIjLb0EjED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #21 diff --git a/bench/z3/optimized/bv1_blaster_tactic.ll b/bench/z3/optimized/bv1_blaster_tactic.ll index ba583ae7c4e..60355a98991 100644 --- a/bench/z3/optimized/bv1_blaster_tactic.ll +++ b/bench/z3/optimized/bv1_blaster_tactic.ll @@ -3502,17 +3502,17 @@ _ZN13ast_fast_markILj1EE4markEP3ast.exit: ; preds = %._crit_edge.i.i, %_ %42 = getelementptr inbounds nuw i8, ptr %1, i64 16 br label %.preheader216 -thread-pre-split: ; preds = %_ZNK3app13get_decl_kindEv.exit.i126, %_ZNK3app13get_decl_kindEv.exit.i126, %_ZNK3app13get_decl_kindEv.exit.i126, %_ZNK3app13get_family_idEv.exit.thread.i125, %_ZNK3app13get_family_idEv.exit.i128, %221 - %.pr = load i32, ptr %38, align 8, !tbaa !243 +thread-pre-split: ; preds = %.thread-pre-split_crit_edge, %_ZNK3app13get_decl_kindEv.exit.i126, %_ZNK3app13get_decl_kindEv.exit.i126, %_ZNK3app13get_decl_kindEv.exit.i126, %_ZNK3app13get_family_idEv.exit.thread.i125, %_ZNK3app13get_family_idEv.exit.i128 + %.pr = phi i32 [ %.pr.pre, %.thread-pre-split_crit_edge ], [ %.pre-phi, %_ZNK3app13get_decl_kindEv.exit.i126 ], [ %.pre-phi, %_ZNK3app13get_decl_kindEv.exit.i126 ], [ %.pre-phi, %_ZNK3app13get_decl_kindEv.exit.i126 ], [ %.pre-phi, %_ZNK3app13get_family_idEv.exit.thread.i125 ], [ %.pre-phi, %_ZNK3app13get_family_idEv.exit.i128 ] %43 = icmp eq i32 %.pr, 0 br i1 %43, label %226, label %.preheader216.backedge .preheader216: ; preds = %.preheader216.backedge, %36 - %44 = load ptr, ptr %4, align 8, !tbaa !239 - %45 = load i32, ptr %38, align 8, !tbaa !243 - %46 = add i32 %45, -1 + %44 = phi i32 [ 1, %36 ], [ %.be, %.preheader216.backedge ] + %45 = load ptr, ptr %4, align 8, !tbaa !239 + %46 = add i32 %44, -1 %47 = zext i32 %46 to i64 - %48 = getelementptr inbounds nuw %"struct.std::pair", ptr %44, i64 %47 + %48 = getelementptr inbounds nuw %"struct.std::pair", ptr %45, i64 %47 %49 = load ptr, ptr %48, align 8, !tbaa !244 %50 = getelementptr inbounds nuw i8, ptr %49, i64 4 %51 = load i32, ptr %50, align 4 @@ -3561,7 +3561,7 @@ thread-pre-split: ; preds = %_ZNK3app13get_decl_ br label %63 63: ; preds = %.lr.ph, %.backedge - %64 = phi i32 [ %60, %.lr.ph ], [ %154, %.backedge ] + %64 = phi i32 [ %60, %.lr.ph ], [ %154, %_ZN18bv1_blaster_tactic3imp7visitorclEPK3app.exit ] %65 = zext i32 %64 to i64 %66 = getelementptr inbounds nuw ptr, ptr %62, i64 %65 %67 = load ptr, ptr %66, align 8, !tbaa !199 @@ -3844,12 +3844,12 @@ _ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i118: ; preds = %.noexc123, 153: ; preds = %152 invoke void @_Z18invoke_exit_actionj(i32 noundef 114) - to label %.backedge unwind label %.loopexit + to label %_ZN18bv1_blaster_tactic3imp7visitorclEPK3app.exit unwind label %.loopexit -.backedge: ; preds = %72, %153, %_ZNK3app13get_family_idEv.exit.i, %_ZNK3app13get_family_idEv.exit.thread.i, %_ZNK3app13get_decl_kindEv.exit.i, %_ZNK3app13get_decl_kindEv.exit.i, %_ZNK3app13get_decl_kindEv.exit.i +.backedge: ; preds = %_ZNK3app13get_decl_kindEv.exit.i, %_ZNK3app13get_decl_kindEv.exit.i, %_ZNK3app13get_decl_kindEv.exit.i, %_ZNK3app13get_family_idEv.exit.thread.i, %_ZNK3app13get_family_idEv.exit.i, %153, %72 %154 = load i32, ptr %59, align 8, !tbaa !246 %155 = icmp ult i32 %154, %58 - br i1 %155, label %63, label %._crit_edge.loopexit, !llvm.loop !252 + br i1 %155, label %63, label %._crit_edge.loopexit ._crit_edge.loopexit: ; preds = %.backedge %.pre274 = load i32, ptr %38, align 8, !tbaa !243 @@ -3988,7 +3988,7 @@ _ZN13ast_fast_markILj1EE4markEP3ast.exit153: ; preds = %._crit_edge.i.i149, br label %.loopexit215 .loopexit215: ; preds = %169, %_ZN13ast_fast_markILj1EE4markEP3ast.exit153 - %202 = phi i32 [ %.pre, %_ZN13ast_fast_markILj1EE4markEP3ast.exit153 ], [ %45, %169 ] + %202 = phi i32 [ %.pre, %_ZN13ast_fast_markILj1EE4markEP3ast.exit153 ], [ %44, %169 ] %203 = load i32, ptr %39, align 4, !tbaa !242 %.not.i154 = icmp ult i32 %202, %203 br i1 %.not.i154, label %._crit_edge.i168, label %204 @@ -4069,7 +4069,11 @@ _ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i166: ; preds = %.noexc171, 221: ; preds = %220 invoke void @_Z18invoke_exit_actionj(i32 noundef 114) - to label %thread-pre-split unwind label %.loopexit217 + to label %.thread-pre-split_crit_edge unwind label %.loopexit217 + +.thread-pre-split_crit_edge: ; preds = %221 + %.pr.pre = load i32, ptr %38, align 8, !tbaa !243 + br label %thread-pre-split _ZN18bv1_blaster_tactic3imp7visitorclEPK3app.exit131: ; preds = %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i166, %._crit_edge.i168, %._crit_edge.i120, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i118, %._crit_edge.i99, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i97 %.sink = phi i32 [ %104, %._crit_edge.i99 ], [ %.pre2.i98, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i97 ], [ %137, %._crit_edge.i120 ], [ %.pre2.i119, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i118 ], [ %202, %._crit_edge.i168 ], [ %.pre2.i167, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i166 ] @@ -4086,6 +4090,7 @@ _ZN18bv1_blaster_tactic3imp7visitorclEPK3app.exit131: ; preds = %_ZN6bufferISt4p br label %.preheader216.backedge .preheader216.backedge: ; preds = %_ZN18bv1_blaster_tactic3imp7visitorclEPK3app.exit131, %thread-pre-split + %.be = phi i32 [ %225, %_ZN18bv1_blaster_tactic3imp7visitorclEPK3app.exit131 ], [ %.pr, %thread-pre-split ] br label %.preheader216 226: ; preds = %thread-pre-split diff --git a/bench/z3/optimized/for_each_expr.ll b/bench/z3/optimized/for_each_expr.ll index 6fad3e5b5c4..5d6a45ecfbe 100644 --- a/bench/z3/optimized/for_each_expr.ll +++ b/bench/z3/optimized/for_each_expr.ll @@ -4346,21 +4346,17 @@ _ZN8obj_markI4expr10bit_vector14default_t2uintIS0_EE4markEPKS0_.exit: ; preds = %33 = getelementptr inbounds nuw i8, ptr %1, i64 16 br label %.preheader -thread-pre-splitthread-pre-split: ; preds = %214, %._crit_edge, %_ZNK9func_decl9is_skolemEv.exit.i104, %133 - %.pr.pr = load i32, ptr %30, align 8, !tbaa !25 - br label %thread-pre-split - -thread-pre-split: ; preds = %thread-pre-splitthread-pre-split, %43, %.thread168 - %.pr = phi i32 [ %.pr.pr, %thread-pre-splitthread-pre-split ], [ %37, %43 ], [ %37, %.thread168 ] +thread-pre-splitthread-pre-split: ; preds = %.thread-pre-split_crit_edge, %133, %_ZNK9func_decl9is_skolemEv.exit.i104, %._crit_edge, %43, %.thread168 + %.pr = phi i32 [ %.pr.pre, %.thread-pre-split_crit_edge ], [ %.pre-phi264, %133 ], [ %.pre-phi270, %_ZNK9func_decl9is_skolemEv.exit.i104 ], [ %.pre-phi264, %._crit_edge ], [ %37, %43 ], [ %37, %.thread168 ] %34 = icmp eq i32 %.pr, 0 br i1 %34, label %219, label %.preheader.backedge .preheader: ; preds = %.preheader.backedge, %28 - %35 = load ptr, ptr %4, align 8, !tbaa !21 - %36 = load i32, ptr %30, align 8, !tbaa !25 - %37 = add i32 %36, -1 + %35 = phi i32 [ 1, %28 ], [ %.be, %.preheader.backedge ] + %36 = load ptr, ptr %4, align 8, !tbaa !21 + %37 = add i32 %35, -1 %38 = zext i32 %37 to i64 - %39 = getelementptr inbounds nuw %"struct.std::pair", ptr %35, i64 %38 + %39 = getelementptr inbounds nuw %"struct.std::pair", ptr %36, i64 %38 %40 = load ptr, ptr %39, align 8, !tbaa !26 %41 = getelementptr inbounds nuw i8, ptr %40, i64 4 %42 = load i32, ptr %41, align 4 @@ -4393,7 +4389,7 @@ thread-pre-split: ; preds = %thread-pre-splitthr br label %53 53: ; preds = %.lr.ph, %.backedge - %54 = phi i32 [ %50, %.lr.ph ], [ %123, %.backedge ] + %54 = phi i32 [ %50, %.lr.ph ], [ %123, %_ZNK23has_skolem_functions_ns4procclEPK3app.exit ] %55 = zext i32 %54 to i64 %56 = getelementptr inbounds nuw ptr, ptr %52, i64 %55 %57 = load ptr, ptr %56, align 8, !tbaa !35 @@ -4594,12 +4590,12 @@ _ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i96: ; preds = %.noexc101, % 122: ; preds = %121 invoke void @_Z18invoke_exit_actionj(i32 noundef 114) - to label %.backedge unwind label %74 + to label %_ZNK23has_skolem_functions_ns4procclEPK3app.exit unwind label %74 -.backedge: ; preds = %_ZNK8obj_markI4expr10bit_vector14default_t2uintIS0_EE9is_markedEPS0_.exit58, %122, %82, %101 +.backedge: ; preds = %101, %82, %122, %_ZNK8obj_markI4expr10bit_vector14default_t2uintIS0_EE9is_markedEPS0_.exit58 %123 = load i32, ptr %49, align 8, !tbaa !34 %124 = icmp ult i32 %123, %48 - br i1 %124, label %53, label %._crit_edge213, !llvm.loop !113 + br i1 %124, label %53, label %._crit_edge213 ._crit_edge213: ; preds = %.backedge %.pre253 = load i32, ptr %30, align 8, !tbaa !25 @@ -4607,7 +4603,7 @@ _ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i96: ; preds = %.noexc101, % br label %._crit_edge ._crit_edge: ; preds = %46, %._crit_edge213 - %.pre-phi270 = phi i32 [ %.pre269, %._crit_edge213 ], [ %37, %46 ] + %.pre-phi270 = phi i32 [ %.pre269, %._crit_edge210 ], [ %37, %46 ] %125 = getelementptr inbounds nuw i8, ptr %40, i64 24 store i32 %.pre-phi270, ptr %30, align 8, !tbaa !25 %126 = getelementptr inbounds nuw i8, ptr %40, i64 16 @@ -4752,7 +4748,7 @@ _ZN8obj_markI4expr10bit_vector14default_t2uintIS0_EE4markEPKS0_.exit113: ; preds br label %.loopexit .loopexit: ; preds = %175, %_ZN8obj_markI4expr10bit_vector14default_t2uintIS0_EE4markEPKS0_.exit113 - %198 = phi i32 [ %.pre251, %_ZN8obj_markI4expr10bit_vector14default_t2uintIS0_EE4markEPKS0_.exit113 ], [ %36, %175 ] + %198 = phi i32 [ %.pre251, %_ZN8obj_markI4expr10bit_vector14default_t2uintIS0_EE4markEPKS0_.exit113 ], [ %35, %175 ] %199 = load i32, ptr %31, align 4, !tbaa !24 %.not.i114 = icmp ult i32 %198, %199 br i1 %.not.i114, label %._crit_edge.i128, label %200 @@ -4822,7 +4818,11 @@ _ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i126: ; preds = %.noexc131, 214: ; preds = %213 invoke void @_Z18invoke_exit_actionj(i32 noundef 114) - to label %thread-pre-splitthread-pre-split unwind label %44 + to label %.thread-pre-split_crit_edge unwind label %44 + +.thread-pre-split_crit_edge: ; preds = %214 + %.pr.pre = load i32, ptr %30, align 8, !tbaa !25 + br label %thread-pre-split _ZNK23has_skolem_functions_ns4procclEPK3app.exit108: ; preds = %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i126, %._crit_edge.i128, %._crit_edge.i98, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i96, %._crit_edge.i76, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i74 %.sink = phi i32 [ %86, %._crit_edge.i76 ], [ %.pre2.i75, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i74 ], [ %106, %._crit_edge.i98 ], [ %.pre2.i97, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i96 ], [ %198, %._crit_edge.i128 ], [ %.pre2.i127, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i126 ] @@ -4839,6 +4839,7 @@ _ZNK23has_skolem_functions_ns4procclEPK3app.exit108: ; preds = %_ZN6bufferISt4pa br label %.preheader.backedge .preheader.backedge: ; preds = %_ZNK23has_skolem_functions_ns4procclEPK3app.exit108, %thread-pre-split + %.be = phi i32 [ %218, %_ZNK23has_skolem_functions_ns4procclEPK3app.exit108 ], [ %.pr, %thread-pre-split ] br label %.preheader 219: ; preds = %thread-pre-split diff --git a/bench/z3/optimized/smt_context.ll b/bench/z3/optimized/smt_context.ll index d77dac001cf..3aea0b13967 100644 --- a/bench/z3/optimized/smt_context.ll +++ b/bench/z3/optimized/smt_context.ll @@ -26931,8 +26931,8 @@ _ZN6vectorISt4pairIP4expr7obj_refIS1_11ast_managerEELb1EjE3endEv.exit: ; preds = cleanup br label %248 -150: ; preds = %.lr.ph, %220 - %.02348 = phi ptr [ %138, %.lr.ph ], [ %221, %220 ] +150: ; preds = %.lr.ph, %219 + %.02348 = phi ptr [ %138, %.lr.ph ], [ %220, %219 ] %151 = load ptr, ptr %92, align 8, !tbaa !864 %152 = load ptr, ptr @_ZN3smtL20null_b_justificationE, align 8, !tbaa !864 %153 = icmp ne ptr %151, %152 @@ -27048,7 +27048,6 @@ _ZN7obj_refI4expr11ast_managerEC2ERKS2_.exit: ; preds = %_ZN11ast_manager7in br label %209 209: ; preds = %195, %175, %_ZN7obj_refI4expr11ast_managerEC2ERKS2_.exit - %.121 = phi i32 [ 3, %_ZN7obj_refI4expr11ast_managerEC2ERKS2_.exit ], [ 0, %195 ], [ 3, %175 ] br i1 %.not.i.i35, label %219, label %210 210: ; preds = %209 @@ -27072,14 +27071,8 @@ _ZN7obj_refI4expr11ast_managerEC2ERKS2_.exit: ; preds = %_ZN11ast_manager7in 219: ; preds = %215, %210, %209 call void @llvm.lifetime.end.p0(ptr nonnull %5) - switch i32 %.121, label %.thread [ - i32 0, label %220 - i32 3, label %220 - ] - -220: ; preds = %219, %219 - %221 = getelementptr inbounds nuw i8, ptr %.02348, i64 24 - %.not = icmp eq ptr %221, %144 + %220 = getelementptr inbounds nuw i8, ptr %.02348, i64 24 + %.not = icmp eq ptr %220, %144 br i1 %.not, label %.thread, label %150 222: ; preds = %184 @@ -27088,12 +27081,12 @@ _ZN7obj_refI4expr11ast_managerEC2ERKS2_.exit: ; preds = %_ZN11ast_manager7in br label %224 224: ; preds = %182, %222, %180 - %.pn.pn = phi { ptr, i32 } [ %181, %180 ], [ %183, %182 ], [ %223, %222 ] + %.pn.pn = phi { ptr, i32 } [ %181, %180 ], [ %183, %182 ], [ %223, %221 ] call void @_ZN7obj_refI4expr11ast_managerED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #35 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %248 -.thread: ; preds = %219, %220, %150 +.thread: ; preds = %219, %150 %.pre = load ptr, ptr %4, align 8, !tbaa !1111 %.not.i.i38 = icmp eq ptr %.pre, null br i1 %.not.i.i38, label %_ZN6vectorISt4pairIP4expr7obj_refIS1_11ast_managerEELb1EjED2Ev.exit, label %_ZNK6vectorISt4pairIP4expr7obj_refIS1_11ast_managerEELb1EjE4sizeEv.exit.i.i.i @@ -27162,7 +27155,7 @@ _ZN6vectorISt4pairIP4expr7obj_refIS1_11ast_managerEELb1EjED2Ev.exit: ; preds = % br label %_ZNK15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE5emptyEv.exit.thread 248: ; preds = %224, %148 - %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %149, %148 ], [ %.pn.pn, %224 ] + %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %149, %148 ], [ %.pn.pn, %223 ] call void @_ZN6vectorISt4pairIP4expr7obj_refIS1_11ast_managerEELb1EjED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #35 call void @llvm.lifetime.end.p0(ptr nonnull %4) resume { ptr, i32 } %.pn.pn.pn.pn.pn diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..6cce84d68fb 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/165748 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""