diff --git a/bench/abc/optimized/gtest-all.ll b/bench/abc/optimized/gtest-all.ll index 14ab8f7b195..3640dc1e92b 100644 --- a/bench/abc/optimized/gtest-all.ll +++ b/bench/abc/optimized/gtest-all.ll @@ -64269,6 +64269,9 @@ define void @_ZN7testing8internal24XmlUnitTestResultPrinter9EscapeXmlERKNSt7__cx i8 38, label %26 i8 39, label %29 i8 34, label %46 + i8 13, label %.thread + i8 10, label %.thread + i8 9, label %.thread ] 18: ; preds = %14 @@ -64368,20 +64371,13 @@ define void @_ZN7testing8internal24XmlUnitTestResultPrinter9EscapeXmlERKNSt7__cx 67: ; preds = %14 %68 = icmp ugt i8 %17, 31 - br i1 %68, label %69, label %switch.early.test + br i1 %68, label %69, label %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit -switch.early.test: ; preds = %67 - switch i8 %17, label %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit [ - i8 13, label %69 - i8 10, label %69 - i8 9, label %69 - ] - -69: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %67 +69: ; preds = %14, %14, %14, %67 br i1 %2, label %70, label %96 70: ; preds = %69 - switch i8 %17, label %96 [ + switch i8 %17, label %_ZN7testing8internal24XmlUnitTestResultPrinter24IsNormalizableWhitespaceEh.exit [ i8 13, label %71 i8 10, label %71 i8 9, label %71 @@ -64396,21 +64392,21 @@ switch.early.test: ; preds = %67 _ZN7testing7MessagelsIA4_cEERS0_RKT_.exit: ; preds = %71 call void @llvm.lifetime.start.p0(ptr nonnull %8) invoke void @_ZN7testing8internal6String10FormatByteB5cxx11Eh(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, i8 noundef zeroext %17) - to label %75 unwind label %88 - -75: ; preds = %_ZN7testing7MessagelsIA4_cEERS0_RKT_.exit - %76 = load ptr, ptr %7, align 8, !tbaa !30 - %77 = getelementptr inbounds nuw i8, ptr %76, i64 16 - %78 = load ptr, ptr %8, align 8, !tbaa !22 - %79 = load i64, ptr %11, align 8, !tbaa !25 - %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef %78, i64 noundef %79) - to label %_ZN7testing7MessagelsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_.exit unwind label %90 + to label %74 unwind label %88 -_ZN7testing7MessagelsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_.exit: ; preds = %75 +_ZN7testing7MessagelsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_.exit: ; preds = %_ZN7testing7MessagelsIA4_cEERS0_RKT_.exit %81 = load ptr, ptr %7, align 8, !tbaa !30 %82 = getelementptr inbounds nuw i8, ptr %81, i64 16 - %83 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull @.str.276, i64 noundef 1) - to label %_ZN7testing7MessagelsIA2_cEERS0_RKT_.exit unwind label %90 + %77 = load ptr, ptr %8, align 8, !tbaa !22 + %78 = load i64, ptr %11, align 8, !tbaa !25 + %79 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef %77, i64 noundef %78) + to label %_ZN7testing7MessagelsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_.exit unwind label %89 + +_ZN7testing7MessagelsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_.exit: ; preds = %74 + %80 = load ptr, ptr %7, align 8, !tbaa !30 + %81 = getelementptr inbounds nuw i8, ptr %80, i64 16 + %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull @.str.276, i64 noundef 1) + to label %_ZN7testing7MessagelsIA2_cEERS0_RKT_.exit unwind label %89 _ZN7testing7MessagelsIA2_cEERS0_RKT_.exit: ; preds = %_ZN7testing7MessagelsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_.exit %84 = load ptr, ptr %8, align 8, !tbaa !22 @@ -64432,7 +64428,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZN7t cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 -90: ; preds = %_ZN7testing7MessagelsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_.exit, %75 +90: ; preds = %_ZN7testing7MessagelsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS0_RKT_.exit, %74 %91 = landingpad { ptr, i32 } cleanup %92 = load ptr, ptr %8, align 8, !tbaa !22 @@ -64446,7 +64442,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29: ; preds = %90, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27, %88 - %.pn = phi { ptr, i32 } [ %89, %88 ], [ %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27 ], [ %91, %90 ] + %.pn = phi { ptr, i32 } [ %89, %87 ], [ %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27 ], [ %91, %89 ] call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %118 @@ -64476,7 +64472,7 @@ _ZN7testing7MessagelsIcEERS0_RKT_.exit33: ; preds = %107, %105 call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit -_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit: ; preds = %.invoke, %switch.early.test, %_ZN7testing7MessagelsIcEERS0_RKT_.exit33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %64, %43 +_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit: ; preds = %.invoke, %_ZN7testing7MessagelsIcEERS0_RKT_.exit33, %67, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %64, %43 %109 = add nuw i64 %.01242, 1 %110 = load i64, ptr %9, align 8, !tbaa !25 %111 = icmp ult i64 %109, %110 @@ -64491,7 +64487,7 @@ _ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE %113 = load ptr, ptr %112, align 8, !tbaa !32 %114 = getelementptr inbounds nuw i8, ptr %113, i64 8 %115 = load ptr, ptr %114, align 8 - call void %115(ptr noundef nonnull align 8 dereferenceable(128) %112) #61 + call void %113(ptr noundef nonnull align 8 dereferenceable(128) %112) #61 br label %_ZN7testing7MessageD2Ev.exit _ZN7testing7MessageD2Ev.exit: ; preds = %_ZNK7testing7Message9GetStringB5cxx11Ev.exit, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i @@ -64504,7 +64500,7 @@ _ZN7testing7MessageD2Ev.exit: ; preds = %_ZNK7testing7Messag br label %118 118: ; preds = %21, %44, %65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29, %116 - %.pn.pn.pn = phi { ptr, i32 } [ %117, %116 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 ], [ %22, %21 ], [ %45, %44 ], [ %66, %65 ] + %.pn.pn.pn = phi { ptr, i32 } [ %117, %114 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 ], [ %22, %21 ], [ %45, %44 ], [ %66, %65 ] %119 = load ptr, ptr %7, align 8, !tbaa !30 %.not.i.i35 = icmp eq ptr %119, null br i1 %.not.i.i35, label %_ZN7testing7MessageD2Ev.exit37, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i36 @@ -64513,7 +64509,7 @@ _ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE %120 = load ptr, ptr %119, align 8, !tbaa !32 %121 = getelementptr inbounds nuw i8, ptr %120, i64 8 %122 = load ptr, ptr %121, align 8 - call void %122(ptr noundef nonnull align 8 dereferenceable(128) %119) #61 + call void %120(ptr noundef nonnull align 8 dereferenceable(128) %119) #61 br label %_ZN7testing7MessageD2Ev.exit37 _ZN7testing7MessageD2Ev.exit37: ; preds = %118, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i36 @@ -64555,30 +64551,29 @@ define void @_ZN7testing8internal24XmlUnitTestResultPrinter26RemoveInvalidXmlCha %13 = phi ptr [ %35, %33 ], [ %9, %.lr.ph.preheader ] %.sroa.07.012 = phi ptr [ %36, %33 ], [ %9, %.lr.ph.preheader ] %14 = load i8, ptr %.sroa.07.012, align 1, !tbaa !27 - %.fr = freeze i8 %14 - %15 = icmp ugt i8 %.fr, 31 - br i1 %15, label %16, label %switch.early.test - -switch.early.test: ; preds = %.lr.ph - switch i8 %.fr, label %33 [ - i8 13, label %16 - i8 10, label %16 - i8 9, label %16 + switch i8 %14, label %15 [ + i8 13, label %69 + i8 10, label %.thread + i8 9, label %.thread ] -16: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %.lr.ph +16: ; preds = %.lr.ph + %16 = icmp ugt i8 %14, 31 + br i1 %16, label %.thread, label %33 + +.thread: ; preds = %.lr.ph, %.lr.ph, %.lr.ph, %15 %17 = load i64, ptr %4, align 8, !tbaa !25 %18 = add i64 %17, 1 %19 = load ptr, ptr %0, align 8, !tbaa !22 %20 = icmp eq ptr %19, %3 br i1 %20, label %21, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i -21: ; preds = %16 +21: ; preds = %69 %22 = icmp ult i64 %17, 16 tail call void @llvm.assume(i1 %22) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %21, %16 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %21, %69 %23 = load i64, ptr %3, align 8 %24 = select i1 %20, i64 15, i64 %23 %25 = icmp ugt i64 %18, %24 @@ -64595,7 +64590,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, %.noexc %27 = phi ptr [ %.pre.i, %.noexc ], [ %19, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] %28 = getelementptr inbounds nuw i8, ptr %27, i64 %17 - store i8 %.fr, ptr %28, align 1, !tbaa !27 + store i8 %14, ptr %28, align 1, !tbaa !27 store i64 %18, ptr %4, align 8, !tbaa !25 %29 = load ptr, ptr %0, align 8, !tbaa !22 %30 = getelementptr inbounds nuw i8, ptr %29, i64 %18 @@ -64609,9 +64604,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit: ; preds cleanup br label %38 -33: ; preds = %switch.early.test, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit - %34 = phi i64 [ %12, %switch.early.test ], [ %.pre13, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ] - %35 = phi ptr [ %13, %switch.early.test ], [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ] +33: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit, %15 + %34 = phi i64 [ %.pre13, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ], [ %12, %15 ] + %35 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ], [ %13, %15 ] %36 = getelementptr inbounds nuw i8, ptr %.sroa.07.012, i64 1 %37 = getelementptr inbounds nuw i8, ptr %35, i64 %34 %.not = icmp eq ptr %36, %37 diff --git a/bench/abseil-cpp/optimized/arg.ll b/bench/abseil-cpp/optimized/arg.ll index 50d7b4da6f8..1461b753bfe 100644 --- a/bench/abseil-cpp/optimized/arg.ll +++ b/bench/abseil-cpp/optimized/arg.ll @@ -3879,7 +3879,7 @@ define dso_local range(i8 0, 2) i8 @_ZN4absl19str_format_internal17FormatConvert br label %_ZN4absl19str_format_internal12_GLOBAL__N_115ConvertFloatArgIfEEbT_NS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit _ZN4absl19str_format_internal12_GLOBAL__N_115ConvertFloatArgIfEEbT_NS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit: ; preds = %8, %10 - %13 = phi i8 [ 0, %8 ], [ %12, %10 ] + %13 = phi i8 [ 0, %8 ], [ %12, %11 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i8 %13 } @@ -3957,7 +3957,7 @@ define dso_local range(i8 0, 2) i8 @_ZN4absl19str_format_internal17FormatConvert br label %_ZN4absl19str_format_internal12_GLOBAL__N_115ConvertFloatArgIdEEbT_NS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit _ZN4absl19str_format_internal12_GLOBAL__N_115ConvertFloatArgIdEEbT_NS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit: ; preds = %8, %10 - %13 = phi i8 [ 0, %8 ], [ %12, %10 ] + %13 = phi i8 [ 0, %8 ], [ %12, %11 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i8 %13 } @@ -3999,7 +3999,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZN4absl19str_format_internal13For br label %_ZN4absl19str_format_internal17FormatConvertImplEeNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit _ZN4absl19str_format_internal17FormatConvertImplEeNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit: ; preds = %15, %17 - %19 = phi i1 [ false, %15 ], [ %18, %17 ] + %19 = phi i1 [ false, %15 ], [ %18, %18 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %20 @@ -4034,7 +4034,7 @@ define dso_local range(i8 0, 2) i8 @_ZN4absl19str_format_internal17FormatConvert br label %_ZN4absl19str_format_internal12_GLOBAL__N_115ConvertFloatArgIeEEbT_NS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit _ZN4absl19str_format_internal12_GLOBAL__N_115ConvertFloatArgIeEEbT_NS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit: ; preds = %8, %10 - %13 = phi i8 [ 0, %8 ], [ %12, %10 ] + %13 = phi i8 [ 0, %8 ], [ %12, %11 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i8 %13 } diff --git a/bench/abseil-cpp/optimized/gtest-all.ll b/bench/abseil-cpp/optimized/gtest-all.ll index 9cd47c2324f..994b9859ce4 100644 --- a/bench/abseil-cpp/optimized/gtest-all.ll +++ b/bench/abseil-cpp/optimized/gtest-all.ll @@ -59324,6 +59324,9 @@ _ZN7testing7MessageC2Ev.exit: ; preds = %3 i8 38, label %28 i8 39, label %29 i8 34, label %44 + i8 13, label %.thread + i8 10, label %.thread + i8 9, label %.thread ] 25: ; preds = %21 @@ -59409,20 +59412,13 @@ _ZN7testing7MessageC2Ev.exit: ; preds = %3 62: ; preds = %21 %63 = icmp ugt i8 %24, 31 - br i1 %63, label %64, label %switch.early.test + br i1 %63, label %switch.early.test, label %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit -switch.early.test: ; preds = %62 - switch i8 %24, label %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit [ - i8 13, label %64 - i8 10, label %64 - i8 9, label %64 - ] - -64: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %62 - br i1 %2, label %65, label %85 +switch.early.test: ; preds = %21, %21, %21, %62 + br i1 %2, label %64, label %_ZN7testing8internal24XmlUnitTestResultPrinter24IsNormalizableWhitespaceEh.exit -65: ; preds = %64 - switch i8 %24, label %85 [ +65: ; preds = %.thread + switch i8 %24, label %_ZN7testing8internal24XmlUnitTestResultPrinter24IsNormalizableWhitespaceEh.exit [ i8 13, label %66 i8 10, label %66 i8 9, label %66 @@ -59435,7 +59431,7 @@ switch.early.test: ; preds = %62 _ZN7testing7MessagelsIA4_cEERS0_RKT_.exit: ; preds = %66 call void @llvm.lifetime.start.p0(ptr nonnull %7) invoke void @_ZN7testing8internal6String10FormatByteB5cxx11Eh(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, i8 noundef zeroext %24) - to label %68 unwind label %77 + to label %67 unwind label %77 68: ; preds = %_ZN7testing7MessagelsIA4_cEERS0_RKT_.exit %69 = load ptr, ptr %7, align 8, !tbaa !23 @@ -59481,11 +59477,11 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29: ; preds = %79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27, %77 - %.pn = phi { ptr, i32 } [ %78, %77 ], [ %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27 ], [ %80, %79 ] + %.pn = phi { ptr, i32 } [ %78, %76 ], [ %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27 ], [ %80, %78 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN7testing7MessageD2Ev.exit37 -85: ; preds = %65, %64 +85: ; preds = %65, %.thread call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 %24, ptr %4, align 1, !tbaa !28 %86 = load ptr, ptr %11, align 8, !tbaa !33 @@ -59509,7 +59505,7 @@ _ZN7testing7MessagelsIcEERS0_RKT_.exit33: ; preds = %94, %92 call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit -_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit: ; preds = %.invoke, %switch.early.test, %_ZN7testing7MessagelsIcEERS0_RKT_.exit33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %59, %41 +_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit: ; preds = %.invoke, %_ZN7testing7MessagelsIcEERS0_RKT_.exit33, %62, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %59, %41 %96 = add nuw i64 %.01255, 1 %97 = load i64, ptr %17, align 8, !tbaa !26 %98 = icmp ult i64 %96, %97 @@ -59519,7 +59515,7 @@ _ZN7testing7MessageD2Ev.exit: ; preds = %._crit_edge %99 = load ptr, ptr %8, align 8, !tbaa !33 %100 = getelementptr inbounds nuw i8, ptr %99, i64 8 %101 = load ptr, ptr %100, align 8 - call void %101(ptr noundef nonnull align 8 dereferenceable(128) %8) #61 + call void %99(ptr noundef nonnull align 8 dereferenceable(128) %8) #61 ret void 102: ; preds = %._crit_edge @@ -59528,11 +59524,11 @@ _ZN7testing7MessageD2Ev.exit: ; preds = %._crit_edge br label %_ZN7testing7MessageD2Ev.exit37 _ZN7testing7MessageD2Ev.exit37: ; preds = %26, %42, %60, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29, %102 - %.pn.pn.pn = phi { ptr, i32 } [ %103, %102 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 ], [ %27, %26 ], [ %43, %42 ], [ %61, %60 ] + %.pn.pn.pn = phi { ptr, i32 } [ %103, %100 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 ], [ %27, %26 ], [ %43, %42 ], [ %61, %60 ] %104 = load ptr, ptr %8, align 8, !tbaa !33 %105 = getelementptr inbounds nuw i8, ptr %104, i64 8 %106 = load ptr, ptr %105, align 8 - call void %106(ptr noundef nonnull align 8 dereferenceable(128) %8) #61 + call void %104(ptr noundef nonnull align 8 dereferenceable(128) %8) #61 br label %common.resume } @@ -59570,30 +59566,29 @@ define dso_local void @_ZN7testing8internal24XmlUnitTestResultPrinter26RemoveInv %13 = phi ptr [ %35, %33 ], [ %9, %.lr.ph.preheader ] %.sroa.07.012 = phi ptr [ %36, %33 ], [ %9, %.lr.ph.preheader ] %14 = load i8, ptr %.sroa.07.012, align 1, !tbaa !28 - %.fr = freeze i8 %14 - %15 = icmp ugt i8 %.fr, 31 - br i1 %15, label %16, label %switch.early.test - -switch.early.test: ; preds = %.lr.ph - switch i8 %.fr, label %33 [ - i8 13, label %16 - i8 10, label %16 - i8 9, label %16 + switch i8 %14, label %15 [ + i8 13, label %.thread + i8 10, label %switch.early.test + i8 9, label %.thread ] -16: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %.lr.ph +16: ; preds = %.lr.ph + %16 = icmp ugt i8 %14, 31 + br i1 %16, label %.thread, label %33 + +.thread: ; preds = %.lr.ph, %.lr.ph, %.lr.ph, %15 %17 = load i64, ptr %4, align 8, !tbaa !26 %18 = add i64 %17, 1 %19 = load ptr, ptr %0, align 8, !tbaa !23 %20 = icmp eq ptr %19, %3 br i1 %20, label %21, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i -21: ; preds = %16 +21: ; preds = %.thread %22 = icmp ult i64 %17, 16 tail call void @llvm.assume(i1 %22) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %21, %16 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %21, %.thread %23 = load i64, ptr %3, align 8 %24 = select i1 %20, i64 15, i64 %23 %25 = icmp ugt i64 %18, %24 @@ -59610,7 +59605,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, %.noexc %27 = phi ptr [ %.pre.i, %.noexc ], [ %19, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] %28 = getelementptr inbounds nuw i8, ptr %27, i64 %17 - store i8 %.fr, ptr %28, align 1, !tbaa !28 + store i8 %14, ptr %28, align 1, !tbaa !28 store i64 %18, ptr %4, align 8, !tbaa !26 %29 = load ptr, ptr %0, align 8, !tbaa !23 %30 = getelementptr inbounds nuw i8, ptr %29, i64 %18 @@ -59624,9 +59619,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit: ; preds cleanup br label %38 -33: ; preds = %switch.early.test, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit - %34 = phi i64 [ %12, %switch.early.test ], [ %.pre13, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ] - %35 = phi ptr [ %13, %switch.early.test ], [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ] +33: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit, %15 + %34 = phi i64 [ %.pre13, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ], [ %12, %15 ] + %35 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ], [ %13, %15 ] %36 = getelementptr inbounds nuw i8, ptr %.sroa.07.012, i64 1 %37 = getelementptr inbounds nuw i8, ptr %35, i64 %34 %.not = icmp eq ptr %36, %37 diff --git a/bench/arrow/optimized/decimal.ll b/bench/arrow/optimized/decimal.ll index a2e8ce540ee..16aaa77b7fb 100644 --- a/bench/arrow/optimized/decimal.ll +++ b/bench/arrow/optimized/decimal.ll @@ -10350,13 +10350,13 @@ define internal fastcc noundef zeroext i1 @_ZN5arrow12_GLOBAL__N_122ParseDecimal 6: ; preds = %3 %7 = load i8, ptr %0, align 1, !tbaa !103 - switch i8 %7, label %.lr.ph.i [ - i8 45, label %.split - i8 43, label %.split - ] + %8 = add i8 %7, -43 + %switch.and.i = and i8 %8, -3 + %switch.selectcmp.i = icmp eq i8 %switch.and.i, 0 + br i1 %switch.selectcmp.i, label %.split, label %.lr.ph.i .lr.ph.i: ; preds = %6, %12 - %.011.i = phi i64 [ %13, %12 ], [ 0, %6 ] + %.011.i = phi i64 [ %13, %13 ], [ 0, %6 ] %8 = getelementptr inbounds nuw i8, ptr %0, i64 %.011.i %9 = load i8, ptr %8, align 1, !tbaa !103 %10 = add i8 %9, -48 @@ -10368,14 +10368,14 @@ define internal fastcc noundef zeroext i1 @_ZN5arrow12_GLOBAL__N_122ParseDecimal %exitcond.not.i = icmp eq i64 %13, %1 br i1 %exitcond.not.i, label %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit, label %.lr.ph.i, !llvm.loop !435 -.split: ; preds = %6, %6 +.split: ; preds = %6 %14 = getelementptr inbounds nuw i8, ptr %2, i64 36 store i8 %7, ptr %14, align 4, !tbaa !189 %.not60 = icmp eq i64 %1, 1 br i1 %.not60, label %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53, label %.lr.ph.i50 .lr.ph.i50: ; preds = %.split, %19 - %.011.i51 = phi i64 [ %20, %19 ], [ 1, %.split ] + %.011.i51 = phi i64 [ %20, %20 ], [ 1, %.split ] %15 = getelementptr inbounds nuw i8, ptr %0, i64 %.011.i51 %16 = load i8, ptr %15, align 1, !tbaa !103 %17 = add i8 %16, -48 @@ -10388,15 +10388,15 @@ define internal fastcc noundef zeroext i1 @_ZN5arrow12_GLOBAL__N_122ParseDecimal br i1 %exitcond.not.i52, label %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53, label %.lr.ph.i50, !llvm.loop !435 _ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53: ; preds = %.lr.ph.i50, %19, %.split - %.0.lcssa.i48 = phi i64 [ 1, %.split ], [ %1, %19 ], [ %.011.i51, %.lr.ph.i50 ] + %.0.lcssa.i48 = phi i64 [ 1, %.split ], [ %1, %20 ], [ %.011.i51, %.lr.ph.i50 ] %21 = getelementptr inbounds nuw i8, ptr %0, i64 1 %22 = add i64 %.0.lcssa.i48, -1 br label %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit _ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit: ; preds = %12, %.lr.ph.i, %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53 - %.0.lcssa.i.sink = phi i64 [ %22, %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53 ], [ %1, %12 ], [ %.011.i, %.lr.ph.i ] - %.sink = phi ptr [ %21, %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53 ], [ %0, %.lr.ph.i ], [ %0, %12 ] - %phi.call = phi i64 [ %.0.lcssa.i48, %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53 ], [ %1, %12 ], [ %.011.i, %.lr.ph.i ] + %.0.lcssa.i.sink = phi i64 [ %22, %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53 ], [ %1, %13 ], [ %.011.i, %.lr.ph.i ] + %.sink = phi ptr [ %21, %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53 ], [ %0, %.lr.ph.i ], [ %0, %13 ] + %phi.call = phi i64 [ %.0.lcssa.i48, %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit53 ], [ %1, %13 ], [ %.011.i, %.lr.ph.i ] store i64 %.0.lcssa.i.sink, ptr %2, align 8, !tbaa !155 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %2, i64 8 store ptr %.sink, ptr %.sroa.4.0..sroa_idx.i, align 8, !tbaa !171 @@ -10420,7 +10420,7 @@ _ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_tr br i1 %33, label %.lr.ph.i56, label %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit59 .lr.ph.i56: ; preds = %30, %38 - %.011.i57 = phi i64 [ %39, %38 ], [ %31, %30 ] + %.011.i57 = phi i64 [ %39, %39 ], [ %31, %31 ] %34 = getelementptr inbounds nuw i8, ptr %0, i64 %.011.i57 %35 = load i8, ptr %34, align 1, !tbaa !103 %36 = add i8 %35, -48 @@ -10433,7 +10433,7 @@ _ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_tr br i1 %exitcond.not.i58, label %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit59, label %.lr.ph.i56, !llvm.loop !435 _ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit59: ; preds = %.lr.ph.i56, %38, %30 - %.0.lcssa.i54 = phi i64 [ %31, %30 ], [ %1, %38 ], [ %.011.i57, %.lr.ph.i56 ] + %.0.lcssa.i54 = phi i64 [ %31, %31 ], [ %1, %39 ], [ %.011.i57, %.lr.ph.i56 ] %40 = getelementptr inbounds nuw i8, ptr %0, i64 %31 %41 = sub i64 %.0.lcssa.i54, %31 store i64 %41, ptr %32, align 8, !tbaa !155 @@ -10442,57 +10442,57 @@ _ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_tr br label %42 42: ; preds = %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit59, %26 - %.143 = phi i64 [ %.0.lcssa.i54, %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit59 ], [ %phi.call, %26 ] + %.143 = phi i64 [ %.0.lcssa.i54, %_ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_traitsIcEE.exit59 ], [ %phi.call, %27 ] %43 = icmp eq i64 %.0.lcssa.i.sink, 0 - br i1 %43, label %44, label %48 + br i1 %43, label %45, label %49 + +45: ; preds = %43 + %46 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %47 = load i64, ptr %46, align 8, !tbaa !182 + %48 = icmp eq i64 %47, 0 + br i1 %48, label %75, label %49 + +49: ; preds = %45, %43 + %50 = icmp eq i64 %.143, %1 + br i1 %50, label %75, label %51 + +51: ; preds = %49 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 %.143 + %53 = load i8, ptr %52, align 1, !tbaa !103 + %54 = and i8 %53, -33 + %55 = icmp eq i8 %54, 69 + br i1 %55, label %56, label %75 + +56: ; preds = %51 + %57 = add i64 %.143, 1 + %.not = icmp eq i64 %57, %1 + br i1 %.not, label %63, label %58 + +44: ; preds = %56 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 %57 + %46 = load i8, ptr %45, align 1, !tbaa !103 + %47 = icmp eq i8 %46, 43 + %62 = add i64 %.143, 2 + %spec.select = select i1 %61, i64 %62, i64 %57 + br label %63 -44: ; preds = %42 - %45 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %46 = load i64, ptr %45, align 8, !tbaa !182 - %47 = icmp eq i64 %46, 0 - br i1 %47, label %74, label %48 - -48: ; preds = %44, %42 - %49 = icmp eq i64 %.143, %1 - br i1 %49, label %74, label %50 - -50: ; preds = %48 - %51 = getelementptr inbounds nuw i8, ptr %0, i64 %.143 - %52 = load i8, ptr %51, align 1, !tbaa !103 - %53 = and i8 %52, -33 - %54 = icmp eq i8 %53, 69 - br i1 %54, label %55, label %74 - -55: ; preds = %50 - %56 = add i64 %.143, 1 - %.not = icmp eq i64 %56, %1 - br i1 %.not, label %62, label %57 - -57: ; preds = %55 - %58 = getelementptr inbounds nuw i8, ptr %0, i64 %56 - %59 = load i8, ptr %58, align 1, !tbaa !103 - %60 = icmp eq i8 %59, 43 - %61 = add i64 %.143, 2 - %spec.select = select i1 %60, i64 %61, i64 %56 - br label %62 - -62: ; preds = %57, %55 - %.2 = phi i64 [ %1, %55 ], [ %spec.select, %57 ] - %63 = getelementptr inbounds nuw i8, ptr %2, i64 37 - store i8 1, ptr %63, align 1, !tbaa !186 - %64 = getelementptr inbounds nuw i8, ptr %0, i64 %.2 - %65 = sub i64 %1, %.2 - %66 = getelementptr inbounds nuw i8, ptr %2, i64 32 - %67 = load atomic i8, ptr @_ZGVZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type acquire, align 8 - %68 = icmp eq i8 %67, 0 - br i1 %68, label %69, label %_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit, !prof !436 - -69: ; preds = %62 - %70 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type) #26 - %.not.i = icmp eq i32 %70, 0 - br i1 %.not.i, label %_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit, label %71 - -71: ; preds = %69 +63: ; preds = %58, %56 + %.2 = phi i64 [ %1, %56 ], [ %spec.select, %58 ] + %64 = getelementptr inbounds nuw i8, ptr %2, i64 37 + store i8 1, ptr %64, align 1, !tbaa !186 + %65 = getelementptr inbounds nuw i8, ptr %0, i64 %.2 + %66 = sub i64 %1, %.2 + %67 = getelementptr inbounds nuw i8, ptr %2, i64 32 + %68 = load atomic i8, ptr @_ZGVZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type acquire, align 8 + %69 = icmp eq i8 %68, 0 + br i1 %69, label %70, label %_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit, !prof !436 + +70:; preds = %63 + %71 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type) #26 + %.not.i = icmp eq i32 %71, 0 + br i1 %.not.i, label %_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit, label %72 + +72:; preds = %70 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) getelementptr inbounds nuw (i8, ptr @_ZZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type, i64 8), i8 0, i64 32, i1 false) store i32 7, ptr getelementptr inbounds nuw (i8, ptr @_ZZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type, i64 40), align 8, !tbaa !437 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) getelementptr inbounds nuw (i8, ptr @_ZZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type, i64 48), i8 0, i64 24, i1 false) @@ -10501,14 +10501,14 @@ _ZN5arrow12_GLOBAL__N_114ParseDigitsRunEPKcmmPSt17basic_string_viewIcSt11char_tr tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type) #26 br label %_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit -_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit: ; preds = %62, %69, %71 +_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit: ; preds = %63, %70, %72 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %73 = call noundef zeroext i1 @_ZN5arrow8internal31StringToSignedIntConverterMixinINS_9Int32TypeEE7ConvertERKS2_PKcmPi(ptr noundef nonnull align 1 dereferenceable(1) %4, ptr noundef nonnull align 8 dereferenceable(72) @_ZZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type, ptr noundef nonnull %64, i64 noundef %65, ptr noundef nonnull %66) + %73 = call noundef zeroext i1 @_ZN5arrow8internal31StringToSignedIntConverterMixinINS_9Int32TypeEE7ConvertERKS2_PKcmPi(ptr noundef nonnull align 1 dereferenceable(1) %4, ptr noundef nonnull align 8 dereferenceable(72) @_ZZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeEE4type, ptr noundef nonnull %65, i64 noundef %66, ptr noundef nonnull %67) call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %74 -74: ; preds = %_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit, %44, %48, %50, %3, %24 - %.0 = phi i1 [ false, %3 ], [ %25, %24 ], [ true, %48 ], [ false, %44 ], [ %73, %_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit ], [ false, %50 ] +74: ; preds = %_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit, %45, %49, %51, %3, %24 + %.0 = phi i1 [ false, %3 ], [ %25, %25 ], [ true, %49 ], [ false, %45 ], [ %73, %_ZN5arrow8internal10ParseValueINS_9Int32TypeEEENSt9enable_ifIXsr22is_parameter_free_typeIT_EE5valueEbE4typeEPKcmPNS0_15StringConverterIS4_vE10value_typeE.exit ], [ false, %51 ] ret i1 %.0 } diff --git a/bench/assimp/optimized/ColladaLoader.ll b/bench/assimp/optimized/ColladaLoader.ll index ee084276de4..29a423a874f 100644 --- a/bench/assimp/optimized/ColladaLoader.ll +++ b/bench/assimp/optimized/ColladaLoader.ll @@ -17295,42 +17295,44 @@ define hidden void @_ZN6Assimp13ColladaLoader10AddTextureER10aiMaterialRKNS_13Co %.not5052 = icmp samesign eq i64 %39, 0 br i1 %.not5052, label %thread-pre-split.thread, label %.lr.ph -.lr.ph: ; preds = %35, %50 - %.sroa.046.053 = phi ptr [ %51, %50 ], [ %37, %35 ] - %41 = load i8, ptr %.sroa.046.053, align 1 - %.fr = freeze i8 %41 - %42 = add i8 %.fr, -48 +.lr.ph.i: ; preds = %35, %54 + %43 = phi ptr [ %55, %54 ], [ %37, %35 ] + %41 = load i8, ptr %.sroa.046.050, align 1 + %42 = add i8 %41, -48 %or.cond.i = icmp ult i8 %42, 10 - br i1 %or.cond.i, label %.lr.ph.i, label %switch.early.test - -switch.early.test: ; preds = %.lr.ph - switch i8 %.fr, label %50 [ - i8 45, label %.sink.split - i8 43, label %.sink.split - ] - -.lr.ph.i: ; preds = %.lr.ph, %.lr.ph.i - %43 = phi i8 [ %48, %.lr.ph.i ], [ %.fr, %.lr.ph ] - %.013.i = phi i32 [ %46, %.lr.ph.i ], [ 0, %.lr.ph ] - %.0812.i = phi ptr [ %47, %.lr.ph.i ], [ %.sroa.046.053, %.lr.ph ] - %44 = mul i32 %.013.i, 10 - %narrow.i = add nsw i8 %43, -48 - %45 = zext nneg i8 %narrow.i to i32 - %46 = add i32 %44, %45 - %47 = getelementptr inbounds nuw i8, ptr %.0812.i, i64 1 - %48 = load i8, ptr %47, align 1 - %49 = add i8 %48, -58 - %or.cond.i45 = icmp ult i8 %49, -10 + %narrow.i = add i8 %41, -43 + %switch.and.i = and i8 %narrow.i, -3 + %switch.selectcmp.i = icmp eq i8 %switch.and.i, 0 + %44 = or i1 %or.cond.i, %switch.selectcmp.i + br i1 %44, label %45, label %54 + +45:; preds = %.lr.ph + %46 = add i8 %41, -58 + %or.cond11.i = icmp ult i8 %46, -10 + br i1 %or.cond11.i, label %.sink.split, label %.lr.ph.i + +.lr.ph.i: ; preds = %45, %.lr.ph.i + %47 = phi i8 [ %52, %.lr.ph.i ], [ %41, %45 ] + %.013.i = phi i32 [ %50, %.lr.ph.i ], [ 0, %45 ] + %.0812.i = phi ptr [ %51, %.lr.ph.i ], [ %.sroa.046.054, %45 ] + %48 = mul i32 %.013.i, 10 + %narrow.i = add nsw i8 %47, -48 + %49 = zext nneg i8 %narrow.i to i32 + %50 = add i32 %48, %49 + %51 = getelementptr inbounds nuw i8, ptr %.0812.i, i64 1 + %52 = load i8, ptr %51, align 1 + %53 = add i8 %52, -58 + %or.cond.i45 = icmp ult i8 %53, -10 br i1 %or.cond.i45, label %thread-pre-split, label %.lr.ph.i, !llvm.loop !149 -50: ; preds = %switch.early.test - %51 = getelementptr inbounds nuw i8, ptr %.sroa.046.053, i64 1 +50: ; preds = %.lr.ph + %51 = getelementptr inbounds nuw i8, ptr %.sroa.046.054, i64 1 %.not50 = icmp eq ptr %51, %40 br i1 %.not50, label %thread-pre-split.thread, label %.lr.ph, !llvm.loop !150 thread-pre-split: ; preds = %.lr.ph.i - store i32 %46, ptr %9, align 4 - %52 = icmp eq i32 %46, -1 + store i32 %50, ptr %9, align 4 + %52 = icmp eq i32 %50, -1 br i1 %52, label %thread-pre-split.thread, label %54 thread-pre-split.thread: ; preds = %50, %35, %thread-pre-split @@ -17338,8 +17340,8 @@ thread-pre-split.thread: ; preds = %50, %35, %thread-pr call void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %53, ptr noundef nonnull @.str.61) br label %.sink.split -.sink.split: ; preds = %switch.early.test, %switch.early.test, %7, %thread-pre-split.thread - %.sink = phi i32 [ %34, %7 ], [ 0, %thread-pre-split.thread ], [ 0, %switch.early.test ], [ 0, %switch.early.test ] +.sink.split: ; preds = %45, %7, %thread-pre-split.thread + %.sink = phi i32 [ %34, %7 ], [ 0, %thread-pre-split.thread ], [ 0, %45 ] store i32 %.sink, ptr %9, align 4 br label %54 diff --git a/bench/assimp/optimized/ObjFileParser.ll b/bench/assimp/optimized/ObjFileParser.ll index 37ccf9c32ee..af1a276ba3f 100644 --- a/bench/assimp/optimized/ObjFileParser.ll +++ b/bench/assimp/optimized/ObjFileParser.ll @@ -2187,16 +2187,18 @@ _ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %6, %8, %12, %_ZN6As 21: ; preds = %.critedge.i.i %22 = add i8 %20, -48 %or.cond.i = icmp ult i8 %22, 10 - br i1 %or.cond.i, label %_ZN6AssimpL10isNanOrInfEPKc.exit, label %switch.early.test + %23 = add i8 %20, -43 + %switch.and.i = and i8 %23, -3 + %switch.selectcmp.i = icmp eq i8 %switch.and.i, 0 + %24 = or i1 %or.cond.i, %switch.selectcmp.i + br i1 %24, label %_ZN6AssimpL10isNanOrInfEPKc.exit, label %25 switch.early.test: ; preds = %21 - switch i8 %20, label %_ZN6AssimpL10isNanOrInfEPKc.exit.fold.split [ - i8 45, label %_ZN6AssimpL10isNanOrInfEPKc.exit - i8 43, label %_ZN6AssimpL10isNanOrInfEPKc.exit - i8 78, label %23 - i8 110, label %23 - i8 73, label %27 - i8 105, label %27 + switch i8 %20, label %_ZN6AssimpL10isNanOrInfEPKc.exit [ + i8 78, label %26 + i8 110, label %26 + i8 73, label %30 + i8 105, label %30 ] 23: ; preds = %switch.early.test, %switch.early.test @@ -2206,34 +2208,31 @@ switch.early.test: ; preds = %21 26: ; preds = %23 %cond.i = icmp eq i8 %20, 105 - br i1 %cond.i, label %27, label %_ZN6AssimpL10isNanOrInfEPKc.exit + br i1 %cond.i, label %30, label %_ZN6AssimpL10isNanOrInfEPKc.exit -27: ; preds = %switch.early.test, %switch.early.test, %26 - %28 = tail call i32 @strncasecmp(ptr noundef nonnull readonly %.0.lcssa.i.i, ptr noundef nonnull @.str.22, i64 noundef 3) #33 - %29 = icmp eq i32 %28, 0 - %30 = zext i1 %29 to i64 +_ZN6AssimpL10isNanOrInfEPKc.exit.fold.split: ; preds = %29, %switch.early.test, %25 + %31 = tail call i32 @strncasecmp(ptr noundef nonnull readonly %.0.lcssa.i.i, ptr noundef nonnull @.str.22, i64 noundef 3) #33 + %32 = icmp eq i32 %31, 0 + %33 = zext i1 %32 to i64 br label %_ZN6AssimpL10isNanOrInfEPKc.exit -_ZN6AssimpL10isNanOrInfEPKc.exit.fold.split: ; preds = %switch.early.test - br label %_ZN6AssimpL10isNanOrInfEPKc.exit - -_ZN6AssimpL10isNanOrInfEPKc.exit: ; preds = %switch.early.test, %switch.early.test, %_ZN6AssimpL10isNanOrInfEPKc.exit.fold.split, %21, %27, %26, %23 - %31 = phi i64 [ 1, %switch.early.test ], [ 1, %23 ], [ 0, %26 ], [ %30, %27 ], [ 1, %switch.early.test ], [ 1, %21 ], [ 0, %_ZN6AssimpL10isNanOrInfEPKc.exit.fold.split ] +_ZN6AssimpL10isNanOrInfEPKc.exit: ; preds = %_ZN6AssimpL10isNanOrInfEPKc.exit.fold.split, %29, %26, %switch.early.test, %21 + %31 = phi i64 [ 1, %21 ], [ 1, %26 ], [ 0, %29 ], [ %33, %30 ], [ 0, %25 ] %32 = ptrtoint ptr %.0.lcssa.i.i to i64 %33 = sub i64 %5, %32 %scevgep.i.i.i = getelementptr i8, ptr %.0.lcssa.i.i, i64 %33 br label %34 34: ; preds = %37, %_ZN6AssimpL10isNanOrInfEPKc.exit - %35 = phi i8 [ %20, %_ZN6AssimpL10isNanOrInfEPKc.exit ], [ %.pre, %37 ] - %.0.i.i.i = phi ptr [ %.0.lcssa.i.i, %_ZN6AssimpL10isNanOrInfEPKc.exit ], [ %38, %37 ] + %35 = phi i8 [ %20, %_ZN6AssimpL10isNanOrInfEPKc.exit ], [ %.pre, %40 ] + %.0.i.i.i = phi ptr [ %.0.lcssa.i.i, %_ZN6AssimpL10isNanOrInfEPKc.exit ], [ %38, %40 ] switch i8 %35, label %.critedge.i.i.i.preheader [ i8 32, label %36 i8 9, label %36 ] .critedge.i.i.i.preheader: ; preds = %36, %34 - %storemerge.i.ph = phi ptr [ %scevgep.i.i.i, %36 ], [ %.0.i.i.i, %34 ] + %storemerge.i.ph = phi ptr [ %scevgep.i.i.i, %39 ], [ %.0.i.i.i, %37 ] br label %.critedge.i.i.i 36: ; preds = %34, %34 @@ -2269,8 +2268,8 @@ _ZN6Assimp9SkipTokenERPKcS1_.exit: ; preds = %.critedge.i.i.i, %. br label %43 43: ; preds = %46, %_ZN6Assimp9SkipTokenERPKcS1_.exit - %44 = phi i8 [ %39, %_ZN6Assimp9SkipTokenERPKcS1_.exit ], [ %.pre40, %46 ] - %.0.i.i11 = phi ptr [ %storemerge.i, %_ZN6Assimp9SkipTokenERPKcS1_.exit ], [ %47, %46 ] + %44 = phi i8 [ %39, %_ZN6Assimp9SkipTokenERPKcS1_.exit ], [ %.pre40, %49 ] + %.0.i.i11 = phi ptr [ %storemerge.i, %_ZN6Assimp9SkipTokenERPKcS1_.exit ], [ %47, %49 ] switch i8 %44, label %.critedge.i.i13 [ i8 32, label %45 i8 9, label %45 @@ -2290,8 +2289,8 @@ _ZN6Assimp9SkipTokenERPKcS1_.exit: ; preds = %.critedge.i.i.i, %. br label %.critedge.i.i13 .critedge.i.i13: ; preds = %43, %.critedge.i.i13thread-pre-split - %48 = phi i8 [ %.pr27, %.critedge.i.i13thread-pre-split ], [ %44, %43 ] - %.0.lcssa.i.i14 = phi ptr [ %scevgep.i.i10, %.critedge.i.i13thread-pre-split ], [ %.0.i.i11, %43 ] + %48 = phi i8 [ %.pr27, %.critedge.i.i13thread-pre-split ], [ %44, %46 ] + %.0.lcssa.i.i14 = phi ptr [ %scevgep.i.i10, %.critedge.i.i13thread-pre-split ], [ %.0.i.i11, %46 ] switch i8 %48, label %_ZN6Assimp10SkipSpacesIcEEbPPKT_S3_.exit15 [ i8 13, label %_ZN6Assimp10SkipSpacesIcEEbPPKT_S3_.exit i8 10, label %_ZN6Assimp10SkipSpacesIcEEbPPKT_S3_.exit diff --git a/bench/assimp/optimized/X3DImporter_Postprocess.ll b/bench/assimp/optimized/X3DImporter_Postprocess.ll index ecb2f99d29d..53ef174149e 100644 --- a/bench/assimp/optimized/X3DImporter_Postprocess.ll +++ b/bench/assimp/optimized/X3DImporter_Postprocess.ll @@ -475,30 +475,13 @@ define hidden noundef zeroext i1 @_ZNK6Assimp11X3DImporter35PostprocessHelper_El ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define hidden noundef zeroext i1 @_ZNK6Assimp11X3DImporter31PostprocessHelper_ElementIsMeshE11X3DElemType(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(120) %0, i32 noundef %1) local_unnamed_addr #4 align 2 { - %3 = add i32 %1, -15 - %4 = icmp ult i32 %3, 3 - %5 = add i32 %1, -7 - %6 = icmp ult i32 %5, 4 - %or.cond11 = or i1 %6, %4 - %7 = add i32 %1, -19 - %8 = icmp ult i32 %7, 2 - %or.cond15 = or i1 %8, %or.cond11 - %9 = add i32 %1, -24 - %10 = icmp ult i32 %9, 7 - %or.cond29 = or i1 %10, %or.cond15 - %11 = add i32 %1, -11 - %12 = icmp ult i32 %11, 3 - %or.cond35 = or i1 %12, %or.cond29 - %13 = icmp eq i32 %1, 18 - %or.cond37 = or i1 %13, %or.cond35 - %14 = add i32 %1, -31 - %15 = icmp ult i32 %14, 2 - %or.cond41 = or i1 %15, %or.cond37 - %16 = icmp eq i32 %1, 14 - %or.cond43 = or i1 %16, %or.cond41 - %17 = icmp eq i32 %1, 33 - %or.cond45 = or i1 %17, %or.cond43 - ret i1 %or.cond45 +switch.return: + %4 = icmp ult i32 %1, 34 + %switch.cast = zext nneg i32 %1 to i34 + %switch.downshift = lshr i34 -14680192, %switch.cast + %switch.masked = trunc i34 %switch.downshift to i1 + %3 = select i1 %2, i1 %switch.masked, i1 false + ret i1 %3 } ; Function Attrs: mustprogress uwtable diff --git a/bench/assimp/optimized/XmlSerializer.ll b/bench/assimp/optimized/XmlSerializer.ll index 52be42464c3..3983e3fcc48 100644 --- a/bench/assimp/optimized/XmlSerializer.ll +++ b/bench/assimp/optimized/XmlSerializer.ll @@ -8704,9 +8704,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit: ; preds = %1 store i8 0, ptr %25, align 1 call void @llvm.lifetime.end.p0(ptr nonnull %3) %.val = load i64, ptr %23, align 8 - %26 = load ptr, ptr %4, align 8 - %27 = icmp eq ptr %26, %13 - br i1 %27, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %26 = add i64 %.val, -7 + %switch.and.i = and i64 %26, -3 + %switch.selectcmp.i = icmp eq i64 %switch.and.i, 0 + %27 = load ptr, ptr %4, align 8 + %28 = icmp eq ptr %27, %13 + br i1 %28, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit %28 = icmp ult i64 %.val, 16 @@ -8716,16 +8719,13 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit %29 = load i64, ptr %13, align 8 %30 = add i64 %29, 1 - call void @_ZdlPvm(ptr noundef %26, i64 noundef %30) #27 + call void @_ZdlPvm(ptr noundef %27, i64 noundef %30) #27 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i - switch i64 %.val, label %81 [ - i64 9, label %31 - i64 7, label %31 - ] + br i1 %switch.selectcmp.i, label %32, label %81 -31: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit +31: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit %32 = load ptr, ptr %0, align 8 %33 = load i8, ptr %32, align 1 %.not = icmp eq i8 %33, 35 @@ -8808,8 +8808,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %81 -81: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %31, %2, %80 - %.0 = phi i1 [ true, %80 ], [ false, %2 ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ false, %31 ] +81: ; preds = %32, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %2, %80 + %.0 = phi i1 [ true, %81 ], [ false, %2 ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ false, %32 ] ret i1 %.0 } diff --git a/bench/chibicc/optimized/type.ll b/bench/chibicc/optimized/type.ll index 61e8a1ea1fd..e442b7d63bc 100644 --- a/bench/chibicc/optimized/type.ll +++ b/bench/chibicc/optimized/type.ll @@ -36,13 +36,15 @@ target triple = "x86_64-pc-linux-gnu" @.str.16 = private unnamed_addr constant [17 x i8] c"pointer expected\00", align 1 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable -define dso_local zeroext i1 @is_integer(ptr noundef readonly captures(none) %0) local_unnamed_addr #0 { - %2 = load i32, ptr %0, align 8, !tbaa !7 - %3 = add i32 %2, -1 - %or.cond7 = icmp ult i32 %3, 5 - %4 = icmp eq i32 %2, 9 - %spec.select = or i1 %4, %or.cond7 - ret i1 %spec.select +define dso_local noundef zeroext i1 @is_integer(ptr noundef readonly captures(none) %0) local_unnamed_addr #0 { +switch.return: + %1 = load i32, ptr %0, align 8, !tbaa !7 + %or.cond7 = icmp ult i32 %1, 10 + %switch.cast = trunc i32 %1 to i10 + %switch.downshift = lshr i10 -450, %switch.cast + %switch.masked = trunc i10 %switch.downshift to i1 + %3 = select i1 %2, i1 %switch.masked, i1 false + ret i1 %3 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable @@ -71,7 +73,7 @@ define dso_local noundef zeroext i1 @is_numeric(ptr noundef readonly captures(no br label %switch.lookup switch.lookup: ; preds = %1, %4 - %5 = phi i1 [ %switch.i, %4 ], [ true, %1 ] + %5 = phi i1 [ %switch.i, %is_integer.exit ], [ true, %1 ] ret i1 %5 } diff --git a/bench/coreutils-rs/optimized/3qc0yve8cevcl6aw.ll b/bench/coreutils-rs/optimized/3qc0yve8cevcl6aw.ll index 12171949e44..8d04735e1a0 100644 --- a/bench/coreutils-rs/optimized/3qc0yve8cevcl6aw.ll +++ b/bench/coreutils-rs/optimized/3qc0yve8cevcl6aw.ll @@ -2779,7 +2779,7 @@ define internal fastcc noundef i64 @_ZN6uu_cat9write_end17h7731cfc7ddfa53e8E(ptr unreachable common.resume: ; preds = %97, %106, %118, %71, %80, %36 - %common.resume.op = phi { ptr, i32 } [ %81, %80 ], [ %37, %36 ], [ %72, %71 ], [ %107, %106 ], [ %98, %97 ], [ %119, %118 ] + %common.resume.op = phi { ptr, i32 } [ %81, %80 ], [ %37, %36 ], [ %72, %71 ], [ %107, %105 ], [ %98, %96 ], [ %119, %117 ] resume { ptr, i32 } %common.resume.op "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i": ; preds = %33 @@ -2925,17 +2925,17 @@ common.resume: ; preds = %97, %106, %118, %71 br label %.lr.ph.i.preheader.i .lr.ph.i.preheader.i: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i8", %.lr.ph.i.preheader.preheader.i - %88 = phi ptr [ %129, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i8" ], [ %87, %.lr.ph.i.preheader.preheader.i ] - %.sroa.0.051.i = phi ptr [ %127, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i8" ], [ %1, %.lr.ph.i.preheader.preheader.i ] - %.sroa.7.050.i = phi i64 [ %126, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i8" ], [ %2, %.lr.ph.i.preheader.preheader.i ] - %.02049.i = phi i64 [ %128, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i8" ], [ 0, %.lr.ph.i.preheader.preheader.i ] + %88 = phi ptr [ %129, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i7" ], [ %87, %.lr.ph.i.preheader.preheader.i ] + %.sroa.0.051.i = phi ptr [ %127, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i7" ], [ %1, %.lr.ph.i.preheader.preheader.i ] + %.sroa.7.050.i = phi i64 [ %126, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i7" ], [ %2, %.lr.ph.i.preheader.preheader.i ] + %.02049.i = phi i64 [ %128, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i7" ], [ 0, %.lr.ph.i.preheader.preheader.i ] br label %.lr.ph.i.i1 .lr.ph.i.i1: ; preds = %90, %.lr.ph.i.preheader.i - %.011.i.i2 = phi i64 [ %92, %90 ], [ 0, %.lr.ph.i.preheader.i ] - %89 = phi ptr [ %91, %90 ], [ %.sroa.0.051.i, %.lr.ph.i.preheader.i ] + %.011.i.i2 = phi i64 [ %92, %"_ZN6uu_cat16write_tab_to_end28_$u7b$$u7b$closure$u7d$$u7d$17h83a0d44308a09eb5E.exit.i.i" ], [ 0, %.lr.ph.i.preheader.i ] + %89 = phi ptr [ %91, %"_ZN6uu_cat16write_tab_to_end28_$u7b$$u7b$closure$u7d$$u7d$17h83a0d44308a09eb5E.exit.i.i" ], [ %.sroa.0.051.i, %.lr.ph.i.preheader.i ] %.val.i.i3 = load i8, ptr %89, align 1, !alias.scope !331, !noalias !334, !noundef !15 - switch i8 %.val.i.i3, label %90 [ + switch i8 %.val.i.i3, label %"_ZN6uu_cat16write_tab_to_end28_$u7b$$u7b$closure$u7d$$u7d$17h83a0d44308a09eb5E.exit.i.i" [ i8 13, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hac6f9bdb53a1e89eE.exit.i4" i8 10, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hac6f9bdb53a1e89eE.exit.i4" i8 9, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hac6f9bdb53a1e89eE.exit.i4" @@ -2948,8 +2948,8 @@ common.resume: ; preds = %97, %106, %118, %71 br i1 %93, label %.loopexit.i9, label %.lr.ph.i.i1 .loopexit.i9: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i8", %90, %85 - %.sroa.7.044.i = phi i64 [ %.sroa.7.050.i, %90 ], [ 0, %85 ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i8" ] - %.sroa.0.039.i = phi ptr [ %.sroa.0.051.i, %90 ], [ %1, %85 ], [ %127, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i8" ] + %.sroa.7.044.i = phi i64 [ %.sroa.7.050.i, %"_ZN6uu_cat16write_tab_to_end28_$u7b$$u7b$closure$u7d$$u7d$17h83a0d44308a09eb5E.exit.i.i" ], [ 0, %85 ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i7" ] + %.sroa.0.039.i = phi ptr [ %.sroa.0.051.i, %"_ZN6uu_cat16write_tab_to_end28_$u7b$$u7b$closure$u7d$$u7d$17h83a0d44308a09eb5E.exit.i.i" ], [ %1, %85 ], [ %127, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i7" ] %94 = tail call noundef ptr @"_ZN61_$LT$std..io..stdio..StdoutLock$u20$as$u20$std..io..Write$GT$9write_all17haa5fcaa2153b2692E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %0, ptr noalias noundef nonnull readonly align 1 %.sroa.0.039.i, i64 noundef %.sroa.7.044.i) %95 = icmp eq ptr %94, null br i1 %95, label %_ZN6uu_cat21write_nonprint_to_end17h48f5ebf15047b60fE.exit, label %96 @@ -2958,7 +2958,7 @@ common.resume: ; preds = %97, %106, %118, %71 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !338 store ptr %94, ptr %4, align 8, !noalias !338 invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.a24bcc934780916e99c84aea51fb20bd.0, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a24bcc934780916e99c84aea51fb20bd.1, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a24bcc934780916e99c84aea51fb20bd.25) #10 - to label %99 unwind label %97 + to label %98 unwind label %97 97: ; preds = %96 %98 = landingpad { ptr, i32 } @@ -2986,7 +2986,7 @@ common.resume: ; preds = %97, %106, %118, %71 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !341 store ptr %103, ptr %5, align 8, !noalias !341 invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.a24bcc934780916e99c84aea51fb20bd.0, i64 noundef 43, ptr noundef nonnull align 1 %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a24bcc934780916e99c84aea51fb20bd.1, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a24bcc934780916e99c84aea51fb20bd.27) #10 - to label %108 unwind label %106 + to label %107 unwind label %106 106: ; preds = %105 %107 = landingpad { ptr, i32 } @@ -3018,7 +3018,7 @@ common.resume: ; preds = %97, %106, %118, %71 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !345 store ptr %115, ptr %6, align 8, !noalias !345 invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.a24bcc934780916e99c84aea51fb20bd.0, i64 noundef 43, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a24bcc934780916e99c84aea51fb20bd.1, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a24bcc934780916e99c84aea51fb20bd.30) #10 - to label %120 unwind label %118 + to label %119 unwind label %118 118: ; preds = %117 %119 = landingpad { ptr, i32 } @@ -3049,7 +3049,7 @@ common.resume: ; preds = %97, %106, %118, %71 br i1 %130, label %.loopexit.i9, label %.lr.ph.i.preheader.i _ZN6uu_cat21write_nonprint_to_end17h48f5ebf15047b60fE.exit: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i", %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he393c45b851184cdE.exit.i", %123, %.loopexit.i9, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hac6f9bdb53a1e89eE.exit.i", %.loopexit.i, %17 - %.0 = phi i64 [ %124, %123 ], [ %.011.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hac6f9bdb53a1e89eE.exit.i" ], [ 0, %17 ], [ %.sroa.7.044.i, %.loopexit.i9 ], [ %2, %.loopexit.i ], [ %.017.i, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he393c45b851184cdE.exit.i" ], [ %2, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i" ] + %.0 = phi i64 [ %124, %122 ], [ %.011.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hac6f9bdb53a1e89eE.exit.i" ], [ 0, %17 ], [ %.sroa.7.044.i, %.loopexit.i8 ], [ %2, %.loopexit.i ], [ %.017.i, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he393c45b851184cdE.exit.i" ], [ %2, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfbca9cfc34474e90E.exit.i" ] ret i64 %.0 } diff --git a/bench/cvc5/optimized/ceg_utils.ll b/bench/cvc5/optimized/ceg_utils.ll index 7b8a2139223..2b8ef68f7ea 100644 --- a/bench/cvc5/optimized/ceg_utils.ll +++ b/bench/cvc5/optimized/ceg_utils.ll @@ -119,10 +119,11 @@ switch.lookup: ; preds = %1 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define hidden noundef zeroext i1 @_ZN4cvc58internal6theory11quantifiers11isStrictCTTENS2_11CegTermTypeE(i32 noundef %0) local_unnamed_addr #3 { - %2 = icmp eq i32 %0, 3 - %3 = icmp eq i32 %0, 5 - %4 = or i1 %2, %3 - ret i1 %4 +switch.return: + %1 = add i32 %0, -3 + %switch.and = and i32 %1, -3 + %switch.selectcmp = icmp eq i32 %switch.and, 0 + ret i1 %switch.selectcmp } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable diff --git a/bench/duckdb/optimized/src_backend_parser_scansup.ll b/bench/duckdb/optimized/src_backend_parser_scansup.ll index 9978a00a549..15bd7a0a7e2 100644 --- a/bench/duckdb/optimized/src_backend_parser_scansup.ll +++ b/bench/duckdb/optimized/src_backend_parser_scansup.ll @@ -129,14 +129,13 @@ declare i32 @tolower(i32 noundef) local_unnamed_addr #5 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define hidden noundef zeroext i1 @_ZN17duckdb_libpgquery15scanner_isspaceEc(i8 noundef signext %0) local_unnamed_addr #6 { - %2 = icmp eq i8 %0, 32 - %3 = add i8 %0, -9 - %4 = icmp ult i8 %3, 2 - %or.cond5 = or i1 %2, %4 - %5 = and i8 %0, -2 - %6 = icmp eq i8 %5, 12 - %or.cond11 = or i1 %6, %or.cond5 - ret i1 %or.cond11 +switch.return: + %1 = icmp ult i8 %0, 33 + %switch.cast = zext nneg i8 %0 to i33 + %switch.downshift = lshr i33 -4294953472, %switch.cast + %switch.masked = trunc i33 %switch.downshift to i1 + %2 = select i1 %1, i1 %switch.masked, i1 false + ret i1 %2 } attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "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" } diff --git a/bench/flatbuffers/optimized/annotated_binary_text_gen.ll b/bench/flatbuffers/optimized/annotated_binary_text_gen.ll index 58052772b1d..3bf5f9641b2 100644 --- a/bench/flatbuffers/optimized/annotated_binary_text_gen.ll +++ b/bench/flatbuffers/optimized/annotated_binary_text_gen.ll @@ -4438,9 +4438,13 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit358: ; preds = %96 call void @llvm.lifetime.end.p0(ptr nonnull %26) br label %.body -972: ; preds = %._crit_edge392, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit355, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit345, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit +972: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit345, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit355 %973 = load i32, ptr %88, align 8, !tbaa !43 - switch i32 %973, label %1007 [ + br label %972 + +972: ; preds = %thread-pre-split, %._crit_edge392 + %973 = phi i32 [ %.pr, %thread-pre-split ], [ %.pre393, %._crit_edge392 ] + switch i32 %973, label %_ZN11flatbuffers12_GLOBAL__N_18IsOffsetENS_16BinaryRegionTypeE.exit [ i32 18, label %974 i32 2, label %974 i32 1, label %974 @@ -4555,7 +4559,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i371: br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit372 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit372: ; preds = %1011, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i371 - %1016 = phi i64 [ %1012, %1011 ], [ %.pre394, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i371 ] + %1016 = phi i64 [ %1012, %1010 ], [ %.pre394, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i371 ] %1017 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %1016, ptr %1017, align 8, !tbaa !38 store ptr %28, ptr %22, align 8, !tbaa !37 diff --git a/bench/flatbuffers/optimized/idl_gen_php.ll b/bench/flatbuffers/optimized/idl_gen_php.ll index 7d07cb00bfd..c654237b032 100644 --- a/bench/flatbuffers/optimized/idl_gen_php.ll +++ b/bench/flatbuffers/optimized/idl_gen_php.ll @@ -10448,11 +10448,11 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator17GenStruc 15: ; preds = %11 tail call void @_ZN11flatbuffers3php12PhpGenerator22GetScalarFieldOfStructERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) - br label %thread-pre-split + br label %32 16: ; preds = %11 tail call void @_ZN11flatbuffers3php12PhpGenerator21GetScalarFieldOfTableERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) - br label %thread-pre-split + br label %32 17: ; preds = %4 switch i32 %8, label %32 [ @@ -10470,15 +10470,15 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator17GenStruc 22: ; preds = %18 tail call void @_ZN11flatbuffers3php12PhpGenerator22GetStructFieldOfStructERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) - br label %thread-pre-split + br label %32 23: ; preds = %18 tail call void @_ZN11flatbuffers3php12PhpGenerator21GetStructFieldOfTableERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) - br label %thread-pre-split + br label %32 24: ; preds = %17 tail call void @_ZN11flatbuffers3php12PhpGenerator14GetStringFieldERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) - br label %thread-pre-split + br label %32 25: ; preds = %17 %26 = getelementptr inbounds nuw i8, ptr %2, i64 204 @@ -10490,35 +10490,31 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator17GenStruc 28: ; preds = %25 tail call void @_ZN11flatbuffers3php12PhpGenerator24GetMemberOfVectorOfUnionERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) - br label %thread-pre-split + br label %32 29: ; preds = %25 tail call void @_ZN11flatbuffers3php12PhpGenerator25GetMemberOfVectorOfStructERKNS_9StructDefERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull align 8 dereferenceable(328) %1, ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) - br label %thread-pre-split + br label %32 30: ; preds = %25 tail call void @_ZN11flatbuffers3php12PhpGenerator28GetMemberOfVectorOfNonStructERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) - br label %thread-pre-split + br label %32 31: ; preds = %17 tail call void @_ZN11flatbuffers3php12PhpGenerator13GetUnionFieldERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) - br label %thread-pre-split - -thread-pre-split: ; preds = %16, %15, %22, %23, %31, %24, %29, %30, %28 - %.pr = load i32, ptr %7, align 8, !tbaa !354 br label %32 -32: ; preds = %thread-pre-split, %17 - %33 = phi i32 [ %.pr, %thread-pre-split ], [ %8, %17 ] - switch i32 %33, label %39 [ - i32 18, label %34 - i32 14, label %34 - ] +32: ; preds = %28, %30, %29, %24, %31, %23, %22, %17, %15, %16 + %33 = load i32, ptr %7, align 8, !tbaa !359 + %34 = add i32 %33, -14 + %switch.and.i.i = and i32 %34, -5 + %switch.selectcmp.i.i = icmp eq i32 %switch.and.i.i, 0 + br i1 %switch.selectcmp.i.i, label %35, label %40 -34: ; preds = %32, %32 +34: ; preds = %32 tail call void @_ZN11flatbuffers3php12PhpGenerator12GetVectorLenERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) %35 = getelementptr inbounds nuw i8, ptr %2, i64 204 - %36 = load i32, ptr %35, align 4, !tbaa !359 + %36 = load i32, ptr %35, align 4, !tbaa !360 %37 = icmp eq i32 %36, 4 br i1 %37, label %38, label %39 @@ -10526,7 +10522,7 @@ thread-pre-split: ; preds = %16, %15, %22, %23, tail call void @_ZN11flatbuffers3php12PhpGenerator8GetUByteERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(312) %2, ptr noundef %3) br label %39 -39: ; preds = %32, %34, %38 +39: ; preds = %35, %39, %32 ret void } @@ -10559,21 +10555,21 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator16GenStruc _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit: ; preds = %2 %22 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.4, i64 noundef 1) call void @llvm.lifetime.start.p0(ptr nonnull %9) - tail call void @llvm.experimental.noalias.scope.decl(metadata !360) + tail call void @llvm.experimental.noalias.scope.decl(metadata !361) %23 = getelementptr inbounds nuw i8, ptr %9, i64 16 - store ptr %23, ptr %9, align 8, !tbaa !4, !alias.scope !360 - %24 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !360 - %25 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !360 - call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !360 - store i64 %25, ptr %8, align 8, !tbaa !24, !noalias !360 + store ptr %23, ptr %9, align 8, !tbaa !4, !alias.scope !361 + %24 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !361 + %25 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !361 + call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !361 + store i64 %25, ptr %8, align 8, !tbaa !24, !noalias !361 %26 = icmp ugt i64 %25, 15 br i1 %26, label %.noexc.i.i, label %._crit_edge.i.i.i .noexc.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit %27 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(8) %8, i64 noundef 0) - store ptr %27, ptr %9, align 8, !tbaa !16, !alias.scope !360 - %28 = load i64, ptr %8, align 8, !tbaa !24, !noalias !360 - store i64 %28, ptr %23, align 8, !tbaa !10, !alias.scope !360 + store ptr %27, ptr %9, align 8, !tbaa !16, !alias.scope !361 + %28 = load i64, ptr %8, align 8, !tbaa !24, !noalias !361 + store i64 %28, ptr %23, align 8, !tbaa !10, !alias.scope !361 br label %._crit_edge.i.i.i ._crit_edge.i.i.i: ; preds = %.noexc.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit @@ -10593,14 +10589,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit: ; preds = %2 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i: ; preds = %32, %30, %._crit_edge.i.i.i - %33 = load i64, ptr %8, align 8, !tbaa !24, !noalias !360 + %33 = load i64, ptr %8, align 8, !tbaa !24, !noalias !361 %34 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store i64 %33, ptr %34, align 8, !tbaa !19, !alias.scope !360 - %35 = load ptr, ptr %9, align 8, !tbaa !16, !alias.scope !360 + store i64 %33, ptr %34, align 8, !tbaa !19, !alias.scope !361 + %35 = load ptr, ptr %9, align 8, !tbaa !16, !alias.scope !361 %36 = getelementptr inbounds nuw i8, ptr %35, i64 %33 store i8 0, ptr %36, align 1, !tbaa !10 - call void @llvm.lifetime.end.p0(ptr nonnull %8), !noalias !360 - %37 = load i64, ptr %34, align 8, !tbaa !19, !alias.scope !360 + call void @llvm.lifetime.end.p0(ptr nonnull %8), !noalias !361 + %37 = load i64, ptr %34, align 8, !tbaa !19, !alias.scope !361 %38 = and i64 %37, -4 %39 = icmp eq i64 %38, 4611686018427387900 br i1 %39, label %40, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i @@ -10619,12 +10615,12 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex 42: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i, %40 %43 = landingpad { ptr, i32 } cleanup - %44 = load ptr, ptr %9, align 8, !tbaa !16, !alias.scope !360 + %44 = load ptr, ptr %9, align 8, !tbaa !16, !alias.scope !361 %45 = icmp eq ptr %44, %23 br i1 %45, label %common.resume, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %42 - %46 = load i64, ptr %23, align 8, !tbaa !10, !alias.scope !360 + %46 = load i64, ptr %23, align 8, !tbaa !10, !alias.scope !361 %47 = add i64 %46, 1 call void @_ZdlPvm(ptr noundef %44, i64 noundef %47) #22 br label %common.resume @@ -10666,21 +10662,21 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.start.p0(ptr nonnull %10) - call void @llvm.experimental.noalias.scope.decl(metadata !363) + call void @llvm.experimental.noalias.scope.decl(metadata !364) %59 = getelementptr inbounds nuw i8, ptr %10, i64 16 - store ptr %59, ptr %10, align 8, !tbaa !4, !alias.scope !363 - %60 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !363 - %61 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !363 - call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !363 - store i64 %61, ptr %7, align 8, !tbaa !24, !noalias !363 + store ptr %59, ptr %10, align 8, !tbaa !4, !alias.scope !364 + %60 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !364 + %61 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !364 + call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !364 + store i64 %61, ptr %7, align 8, !tbaa !24, !noalias !364 %62 = icmp ugt i64 %61, 15 br i1 %62, label %.noexc.i.i33, label %._crit_edge.i.i.i26 .noexc.i.i33: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit %63 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(8) %7, i64 noundef 0) - store ptr %63, ptr %10, align 8, !tbaa !16, !alias.scope !363 - %64 = load i64, ptr %7, align 8, !tbaa !24, !noalias !363 - store i64 %64, ptr %59, align 8, !tbaa !10, !alias.scope !363 + store ptr %63, ptr %10, align 8, !tbaa !16, !alias.scope !364 + %64 = load i64, ptr %7, align 8, !tbaa !24, !noalias !364 + store i64 %64, ptr %59, align 8, !tbaa !10, !alias.scope !364 br label %._crit_edge.i.i.i26 ._crit_edge.i.i.i26: ; preds = %.noexc.i.i33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit @@ -10700,14 +10696,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNSt br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i27 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i27: ; preds = %68, %66, %._crit_edge.i.i.i26 - %69 = load i64, ptr %7, align 8, !tbaa !24, !noalias !363 + %69 = load i64, ptr %7, align 8, !tbaa !24, !noalias !364 %70 = getelementptr inbounds nuw i8, ptr %10, i64 8 - store i64 %69, ptr %70, align 8, !tbaa !19, !alias.scope !363 - %71 = load ptr, ptr %10, align 8, !tbaa !16, !alias.scope !363 + store i64 %69, ptr %70, align 8, !tbaa !19, !alias.scope !364 + %71 = load ptr, ptr %10, align 8, !tbaa !16, !alias.scope !364 %72 = getelementptr inbounds nuw i8, ptr %71, i64 %69 store i8 0, ptr %72, align 1, !tbaa !10 - call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !363 - %73 = load i64, ptr %70, align 8, !tbaa !19, !alias.scope !363 + call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !364 + %73 = load i64, ptr %70, align 8, !tbaa !19, !alias.scope !364 %74 = add i64 %73, -4611686018427387882 %75 = icmp ult i64 %74, 22 br i1 %75, label %76, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i28 @@ -10726,12 +10722,12 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex 78: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i28, %76 %79 = landingpad { ptr, i32 } cleanup - %80 = load ptr, ptr %10, align 8, !tbaa !16, !alias.scope !363 + %80 = load ptr, ptr %10, align 8, !tbaa !16, !alias.scope !364 %81 = icmp eq ptr %80, %59 br i1 %81, label %common.resume, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i29 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i29: ; preds = %78 - %82 = load i64, ptr %59, align 8, !tbaa !10, !alias.scope !363 + %82 = load i64, ptr %59, align 8, !tbaa !10, !alias.scope !364 %83 = add i64 %82, 1 call void @_ZdlPvm(ptr noundef %80, i64 noundef %83) #22 br label %common.resume @@ -10769,21 +10765,21 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i39 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i39 call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.start.p0(ptr nonnull %11) - call void @llvm.experimental.noalias.scope.decl(metadata !366) + call void @llvm.experimental.noalias.scope.decl(metadata !367) %95 = getelementptr inbounds nuw i8, ptr %11, i64 16 - store ptr %95, ptr %11, align 8, !tbaa !4, !alias.scope !366 - %96 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !366 - %97 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !366 - call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !366 - store i64 %97, ptr %6, align 8, !tbaa !24, !noalias !366 + store ptr %95, ptr %11, align 8, !tbaa !4, !alias.scope !367 + %96 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !367 + %97 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !367 + call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !367 + store i64 %97, ptr %6, align 8, !tbaa !24, !noalias !367 %98 = icmp ugt i64 %97, 15 br i1 %98, label %.noexc.i.i49, label %._crit_edge.i.i.i42 .noexc.i.i49: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41 %99 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 0) - store ptr %99, ptr %11, align 8, !tbaa !16, !alias.scope !366 - %100 = load i64, ptr %6, align 8, !tbaa !24, !noalias !366 - store i64 %100, ptr %95, align 8, !tbaa !10, !alias.scope !366 + store ptr %99, ptr %11, align 8, !tbaa !16, !alias.scope !367 + %100 = load i64, ptr %6, align 8, !tbaa !24, !noalias !367 + store i64 %100, ptr %95, align 8, !tbaa !10, !alias.scope !367 br label %._crit_edge.i.i.i42 ._crit_edge.i.i.i42: ; preds = %.noexc.i.i49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41 @@ -10803,14 +10799,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41: ; preds = %_ZN br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i43 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i43: ; preds = %104, %102, %._crit_edge.i.i.i42 - %105 = load i64, ptr %6, align 8, !tbaa !24, !noalias !366 + %105 = load i64, ptr %6, align 8, !tbaa !24, !noalias !367 %106 = getelementptr inbounds nuw i8, ptr %11, i64 8 - store i64 %105, ptr %106, align 8, !tbaa !19, !alias.scope !366 - %107 = load ptr, ptr %11, align 8, !tbaa !16, !alias.scope !366 + store i64 %105, ptr %106, align 8, !tbaa !19, !alias.scope !367 + %107 = load ptr, ptr %11, align 8, !tbaa !16, !alias.scope !367 %108 = getelementptr inbounds nuw i8, ptr %107, i64 %105 store i8 0, ptr %108, align 1, !tbaa !10 - call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !366 - %109 = load i64, ptr %106, align 8, !tbaa !19, !alias.scope !366 + call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !367 + %109 = load i64, ptr %106, align 8, !tbaa !19, !alias.scope !367 %110 = and i64 %109, -4 %111 = icmp eq i64 %110, 4611686018427387900 br i1 %111, label %112, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i44 @@ -10829,12 +10825,12 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex 114: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i44, %112 %115 = landingpad { ptr, i32 } cleanup - %116 = load ptr, ptr %11, align 8, !tbaa !16, !alias.scope !366 + %116 = load ptr, ptr %11, align 8, !tbaa !16, !alias.scope !367 %117 = icmp eq ptr %116, %95 br i1 %117, label %common.resume, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i45 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i45: ; preds = %114 - %118 = load i64, ptr %95, align 8, !tbaa !10, !alias.scope !366 + %118 = load i64, ptr %95, align 8, !tbaa !10, !alias.scope !367 %119 = add i64 %118, 1 call void @_ZdlPvm(ptr noundef %116, i64 noundef %119) #22 br label %common.resume @@ -10873,21 +10869,21 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57: ; preds = %_ZN call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.start.p0(ptr nonnull %12) call void @llvm.lifetime.start.p0(ptr nonnull %13) - call void @llvm.experimental.noalias.scope.decl(metadata !369) + call void @llvm.experimental.noalias.scope.decl(metadata !370) %131 = getelementptr inbounds nuw i8, ptr %13, i64 16 - store ptr %131, ptr %13, align 8, !tbaa !4, !alias.scope !369 - %132 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !369 - %133 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !369 - call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !369 - store i64 %133, ptr %5, align 8, !tbaa !24, !noalias !369 + store ptr %131, ptr %13, align 8, !tbaa !4, !alias.scope !370 + %132 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !370 + %133 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !370 + call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !370 + store i64 %133, ptr %5, align 8, !tbaa !24, !noalias !370 %134 = icmp ugt i64 %133, 15 br i1 %134, label %.noexc.i.i65, label %._crit_edge.i.i.i58 .noexc.i.i65: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57 %135 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %5, i64 noundef 0) - store ptr %135, ptr %13, align 8, !tbaa !16, !alias.scope !369 - %136 = load i64, ptr %5, align 8, !tbaa !24, !noalias !369 - store i64 %136, ptr %131, align 8, !tbaa !10, !alias.scope !369 + store ptr %135, ptr %13, align 8, !tbaa !16, !alias.scope !370 + %136 = load i64, ptr %5, align 8, !tbaa !24, !noalias !370 + store i64 %136, ptr %131, align 8, !tbaa !10, !alias.scope !370 br label %._crit_edge.i.i.i58 ._crit_edge.i.i.i58: ; preds = %.noexc.i.i65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57 @@ -10907,14 +10903,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57: ; preds = %_ZN br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i59 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i59: ; preds = %140, %138, %._crit_edge.i.i.i58 - %141 = load i64, ptr %5, align 8, !tbaa !24, !noalias !369 + %141 = load i64, ptr %5, align 8, !tbaa !24, !noalias !370 %142 = getelementptr inbounds nuw i8, ptr %13, i64 8 - store i64 %141, ptr %142, align 8, !tbaa !19, !alias.scope !369 - %143 = load ptr, ptr %13, align 8, !tbaa !16, !alias.scope !369 + store i64 %141, ptr %142, align 8, !tbaa !19, !alias.scope !370 + %143 = load ptr, ptr %13, align 8, !tbaa !16, !alias.scope !370 %144 = getelementptr inbounds nuw i8, ptr %143, i64 %141 store i8 0, ptr %144, align 1, !tbaa !10 - call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !369 - %145 = load i64, ptr %142, align 8, !tbaa !19, !alias.scope !369 + call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !370 + %145 = load i64, ptr %142, align 8, !tbaa !19, !alias.scope !370 %146 = add i64 %145, -4611686018427387875 %147 = icmp ult i64 %146, 29 br i1 %147, label %148, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i60 @@ -10933,21 +10929,21 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex 150: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i60, %148 %151 = landingpad { ptr, i32 } cleanup - %152 = load ptr, ptr %13, align 8, !tbaa !16, !alias.scope !369 + %152 = load ptr, ptr %13, align 8, !tbaa !16, !alias.scope !370 %153 = icmp eq ptr %152, %131 br i1 %153, label %common.resume, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i61 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i61: ; preds = %150 - %154 = load i64, ptr %131, align 8, !tbaa !10, !alias.scope !369 + %154 = load i64, ptr %131, align 8, !tbaa !10, !alias.scope !370 %155 = add i64 %154, 1 call void @_ZdlPvm(ptr noundef %152, i64 noundef %155) #22 br label %common.resume _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.exit66: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i60 - call void @llvm.experimental.noalias.scope.decl(metadata !372) + call void @llvm.experimental.noalias.scope.decl(metadata !373) %156 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %157 = load i64, ptr %156, align 8, !tbaa !19, !noalias !372 - %158 = load i64, ptr %142, align 8, !tbaa !19, !noalias !372 + %157 = load i64, ptr %156, align 8, !tbaa !19, !noalias !373 + %158 = load i64, ptr %142, align 8, !tbaa !19, !noalias !373 %159 = sub i64 4611686018427387903, %158 %160 = icmp ult i64 %159, %157 br i1 %160, label %161, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i67 @@ -10960,13 +10956,13 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e unreachable _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i67: ; preds = %_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.exit66 - %162 = load ptr, ptr %0, align 8, !tbaa !16, !noalias !372 + %162 = load ptr, ptr %0, align 8, !tbaa !16, !noalias !373 %163 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %162, i64 noundef %157) to label %.noexc70 unwind label %329 .noexc70: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i67 %164 = getelementptr inbounds nuw i8, ptr %12, i64 16 - store ptr %164, ptr %12, align 8, !tbaa !4, !alias.scope !372 + store ptr %164, ptr %12, align 8, !tbaa !4, !alias.scope !373 %165 = load ptr, ptr %163, align 8, !tbaa !16 %166 = getelementptr inbounds nuw i8, ptr %163, i64 16 %167 = icmp eq ptr %165, %166 @@ -10982,9 +10978,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i67: ; p br label %174 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68: ; preds = %.noexc70 - store ptr %165, ptr %12, align 8, !tbaa !16, !alias.scope !372 + store ptr %165, ptr %12, align 8, !tbaa !16, !alias.scope !373 %173 = load i64, ptr %166, align 8, !tbaa !10 - store i64 %173, ptr %164, align 8, !tbaa !10, !alias.scope !372 + store i64 %173, ptr %164, align 8, !tbaa !10, !alias.scope !373 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %163, i64 8 %.pre.i = load i64, ptr %.phi.trans.insert.i, align 8, !tbaa !19 br label %174 @@ -10993,7 +10989,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68 %175 = phi i64 [ %170, %168 ], [ %.pre.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68 ] %176 = getelementptr inbounds nuw i8, ptr %163, i64 8 %177 = getelementptr inbounds nuw i8, ptr %12, i64 8 - store i64 %175, ptr %177, align 8, !tbaa !19, !alias.scope !372 + store i64 %175, ptr %177, align 8, !tbaa !19, !alias.scope !373 store ptr %166, ptr %163, align 8, !tbaa !16 store i64 0, ptr %176, align 8, !tbaa !19 store i8 0, ptr %166, align 8, !tbaa !10 @@ -11064,21 +11060,21 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit81: ; preds = %_ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit82: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit81 %202 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.136, i64 noundef 2) call void @llvm.lifetime.start.p0(ptr nonnull %14) - call void @llvm.experimental.noalias.scope.decl(metadata !375) + call void @llvm.experimental.noalias.scope.decl(metadata !376) %203 = getelementptr inbounds nuw i8, ptr %14, i64 16 - store ptr %203, ptr %14, align 8, !tbaa !4, !alias.scope !375 - %204 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !375 - %205 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !375 - call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !375 - store i64 %205, ptr %4, align 8, !tbaa !24, !noalias !375 + store ptr %203, ptr %14, align 8, !tbaa !4, !alias.scope !376 + %204 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !376 + %205 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !376 + call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !376 + store i64 %205, ptr %4, align 8, !tbaa !24, !noalias !376 %206 = icmp ugt i64 %205, 15 br i1 %206, label %.noexc.i.i90, label %._crit_edge.i.i.i83 .noexc.i.i90: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit82 %207 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) - store ptr %207, ptr %14, align 8, !tbaa !16, !alias.scope !375 - %208 = load i64, ptr %4, align 8, !tbaa !24, !noalias !375 - store i64 %208, ptr %203, align 8, !tbaa !10, !alias.scope !375 + store ptr %207, ptr %14, align 8, !tbaa !16, !alias.scope !376 + %208 = load i64, ptr %4, align 8, !tbaa !24, !noalias !376 + store i64 %208, ptr %203, align 8, !tbaa !10, !alias.scope !376 br label %._crit_edge.i.i.i83 ._crit_edge.i.i.i83: ; preds = %.noexc.i.i90, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit82 @@ -11098,14 +11094,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit82: ; preds = %_ br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i84 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i84: ; preds = %212, %210, %._crit_edge.i.i.i83 - %213 = load i64, ptr %4, align 8, !tbaa !24, !noalias !375 + %213 = load i64, ptr %4, align 8, !tbaa !24, !noalias !376 %214 = getelementptr inbounds nuw i8, ptr %14, i64 8 - store i64 %213, ptr %214, align 8, !tbaa !19, !alias.scope !375 - %215 = load ptr, ptr %14, align 8, !tbaa !16, !alias.scope !375 + store i64 %213, ptr %214, align 8, !tbaa !19, !alias.scope !376 + %215 = load ptr, ptr %14, align 8, !tbaa !16, !alias.scope !376 %216 = getelementptr inbounds nuw i8, ptr %215, i64 %213 store i8 0, ptr %216, align 1, !tbaa !10 - call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !375 - %217 = load i64, ptr %214, align 8, !tbaa !19, !alias.scope !375 + call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !376 + %217 = load i64, ptr %214, align 8, !tbaa !19, !alias.scope !376 %218 = and i64 %217, -2 %219 = icmp eq i64 %218, 4611686018427387902 br i1 %219, label %220, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i85 @@ -11124,12 +11120,12 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex 222: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i85, %220 %223 = landingpad { ptr, i32 } cleanup - %224 = load ptr, ptr %14, align 8, !tbaa !16, !alias.scope !375 + %224 = load ptr, ptr %14, align 8, !tbaa !16, !alias.scope !376 %225 = icmp eq ptr %224, %203 br i1 %225, label %common.resume, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i86 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i86: ; preds = %222 - %226 = load i64, ptr %203, align 8, !tbaa !10, !alias.scope !375 + %226 = load i64, ptr %203, align 8, !tbaa !10, !alias.scope !376 %227 = add i64 %226, 1 call void @_ZdlPvm(ptr noundef %224, i64 noundef %227) #22 br label %common.resume @@ -11170,9 +11166,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit98: ; preds = %_ZN call void @llvm.lifetime.start.p0(ptr nonnull %15) call void @llvm.lifetime.start.p0(ptr nonnull %16) call void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) @_ZN11flatbuffers3phpL6IndentB5cxx11E, ptr noundef nonnull align 8 dereferenceable(32) @_ZN11flatbuffers3phpL6IndentB5cxx11E) - call void @llvm.experimental.noalias.scope.decl(metadata !378) + call void @llvm.experimental.noalias.scope.decl(metadata !379) %239 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %240 = load i64, ptr %239, align 8, !tbaa !19, !noalias !378 + %240 = load i64, ptr %239, align 8, !tbaa !19, !noalias !379 %241 = add i64 %240, -4611686018427387877 %242 = icmp ult i64 %241, 27 br i1 %242, label %243, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i @@ -11190,7 +11186,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i: ; preds .noexc103: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i %245 = getelementptr inbounds nuw i8, ptr %15, i64 16 - store ptr %245, ptr %15, align 8, !tbaa !4, !alias.scope !378 + store ptr %245, ptr %15, align 8, !tbaa !4, !alias.scope !379 %246 = load ptr, ptr %244, align 8, !tbaa !16 %247 = getelementptr inbounds nuw i8, ptr %244, i64 16 %248 = icmp eq ptr %246, %247 @@ -11206,9 +11202,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i: ; preds br label %255 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i99: ; preds = %.noexc103 - store ptr %246, ptr %15, align 8, !tbaa !16, !alias.scope !378 + store ptr %246, ptr %15, align 8, !tbaa !16, !alias.scope !379 %254 = load i64, ptr %247, align 8, !tbaa !10 - store i64 %254, ptr %245, align 8, !tbaa !10, !alias.scope !378 + store i64 %254, ptr %245, align 8, !tbaa !10, !alias.scope !379 %.phi.trans.insert.i100 = getelementptr inbounds nuw i8, ptr %244, i64 8 %.pre.i101 = load i64, ptr %.phi.trans.insert.i100, align 8, !tbaa !19 br label %255 @@ -11217,7 +11213,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i99 %256 = phi i64 [ %251, %249 ], [ %.pre.i101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i99 ] %257 = getelementptr inbounds nuw i8, ptr %244, i64 8 %258 = getelementptr inbounds nuw i8, ptr %15, i64 8 - store i64 %256, ptr %258, align 8, !tbaa !19, !alias.scope !378 + store i64 %256, ptr %258, align 8, !tbaa !19, !alias.scope !379 store ptr %247, ptr %244, align 8, !tbaa !16 store i64 0, ptr %257, align 8, !tbaa !19 store i8 0, ptr %247, align 8, !tbaa !10 @@ -11266,21 +11262,21 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit113: ; preds = %_Z call void @llvm.lifetime.end.p0(ptr nonnull %16) call void @llvm.lifetime.end.p0(ptr nonnull %15) call void @llvm.lifetime.start.p0(ptr nonnull %17) - call void @llvm.experimental.noalias.scope.decl(metadata !381) + call void @llvm.experimental.noalias.scope.decl(metadata !382) %275 = getelementptr inbounds nuw i8, ptr %17, i64 16 - store ptr %275, ptr %17, align 8, !tbaa !4, !alias.scope !381 - %276 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !381 - %277 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !381 - call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !381 - store i64 %277, ptr %3, align 8, !tbaa !24, !noalias !381 + store ptr %275, ptr %17, align 8, !tbaa !4, !alias.scope !382 + %276 = load ptr, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, align 8, !tbaa !16, !noalias !382 + %277 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN11flatbuffers3phpL6IndentB5cxx11E, i64 8), align 8, !tbaa !19, !noalias !382 + call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !382 + store i64 %277, ptr %3, align 8, !tbaa !24, !noalias !382 %278 = icmp ugt i64 %277, 15 br i1 %278, label %.noexc.i.i122, label %._crit_edge.i.i.i114 .noexc.i.i122: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit113 %279 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) - store ptr %279, ptr %17, align 8, !tbaa !16, !alias.scope !381 - %280 = load i64, ptr %3, align 8, !tbaa !24, !noalias !381 - store i64 %280, ptr %275, align 8, !tbaa !10, !alias.scope !381 + store ptr %279, ptr %17, align 8, !tbaa !16, !alias.scope !382 + %280 = load i64, ptr %3, align 8, !tbaa !24, !noalias !382 + store i64 %280, ptr %275, align 8, !tbaa !10, !alias.scope !382 br label %._crit_edge.i.i.i114 ._crit_edge.i.i.i114: ; preds = %.noexc.i.i122, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit113 @@ -11300,14 +11296,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit113: ; preds = %_Z br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i115 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i115: ; preds = %284, %282, %._crit_edge.i.i.i114 - %285 = load i64, ptr %3, align 8, !tbaa !24, !noalias !381 + %285 = load i64, ptr %3, align 8, !tbaa !24, !noalias !382 %286 = getelementptr inbounds nuw i8, ptr %17, i64 8 - store i64 %285, ptr %286, align 8, !tbaa !19, !alias.scope !381 - %287 = load ptr, ptr %17, align 8, !tbaa !16, !alias.scope !381 + store i64 %285, ptr %286, align 8, !tbaa !19, !alias.scope !382 + %287 = load ptr, ptr %17, align 8, !tbaa !16, !alias.scope !382 %288 = getelementptr inbounds nuw i8, ptr %287, i64 %285 store i8 0, ptr %288, align 1, !tbaa !10 - call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !381 - %289 = load i64, ptr %286, align 8, !tbaa !19, !alias.scope !381 + call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !382 + %289 = load i64, ptr %286, align 8, !tbaa !19, !alias.scope !382 %290 = and i64 %289, -2 %291 = icmp eq i64 %290, 4611686018427387902 br i1 %291, label %292, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i116 @@ -11326,12 +11322,12 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex 294: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i116, %292 %295 = landingpad { ptr, i32 } cleanup - %296 = load ptr, ptr %17, align 8, !tbaa !16, !alias.scope !381 + %296 = load ptr, ptr %17, align 8, !tbaa !16, !alias.scope !382 %297 = icmp eq ptr %296, %275 br i1 %297, label %common.resume, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i117 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i117: ; preds = %294 - %298 = load i64, ptr %275, align 8, !tbaa !10, !alias.scope !381 + %298 = load i64, ptr %275, align 8, !tbaa !10, !alias.scope !382 %299 = add i64 %298, 1 call void @_ZdlPvm(ptr noundef %296, i64 noundef %299) #22 br label %common.resume @@ -11573,7 +11569,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator16GenTable ret void 36: ; preds = %.lr.ph, %272 - %.sroa.0131.0342 = phi ptr [ %16, %.lr.ph ], [ %273, %272 ] + %.sroa.0131.0342 = phi ptr [ %16, %.lr.ph ], [ %273, %273 ] %37 = load ptr, ptr %.sroa.0131.0342, align 8, !tbaa !266 %38 = getelementptr inbounds nuw i8, ptr %37, i64 272 %39 = load i8, ptr %38, align 8, !tbaa !268, !range !62, !noundef !63 @@ -11587,7 +11583,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator16GenTable %45 = sub i64 %43, %44 %46 = ashr exact i64 %45, 3 %47 = getelementptr inbounds nuw i8, ptr %37, i64 200 - %48 = load i32, ptr %47, align 8, !tbaa !384 + %48 = load i32, ptr %47, align 8, !tbaa !354 %49 = icmp eq i32 %48, 16 br i1 %49, label %50, label %268 @@ -12367,13 +12363,13 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit129: ; preds = %26 br label %269 269: ; preds = %268, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit105 - %270 = load i32, ptr %47, align 8, !tbaa !354 - switch i32 %270, label %272 [ - i32 18, label %271 - i32 14, label %271 - ] + %270 = load i32, ptr %47, align 8, !tbaa !359 + %271 = add i32 %270, -14 + %switch.and.i.i = and i32 %271, -5 + %switch.selectcmp.i.i = icmp eq i32 %switch.and.i.i, 0 + br i1 %switch.selectcmp.i.i, label %272, label %273 -271: ; preds = %269, %269 +271: ; preds = %269 call void @_ZN11flatbuffers3php12PhpGenerator18BuildVectorOfTableERKNS_8FieldDefEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(312) %37, ptr noundef %2) br label %272 @@ -20593,7 +20589,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator24GetMembe %38 = load ptr, ptr %37, align 8, !tbaa !584, !noalias !580 %39 = getelementptr inbounds nuw i8, ptr %1, i64 224 %40 = load i16, ptr %39, align 8, !tbaa !585, !noalias !580 - store i32 %34, ptr %11, align 8, !tbaa !354, !alias.scope !580 + store i32 %34, ptr %11, align 8, !tbaa !359, !alias.scope !580 %41 = getelementptr inbounds nuw i8, ptr %11, i64 4 store i32 0, ptr %41, align 4, !tbaa !355, !alias.scope !580 %42 = getelementptr inbounds nuw i8, ptr %11, i64 8 @@ -22545,7 +22541,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator25GetMembe %54 = load ptr, ptr %53, align 8, !tbaa !584, !noalias !628 %55 = getelementptr inbounds nuw i8, ptr %2, i64 224 %56 = load i16, ptr %55, align 8, !tbaa !585, !noalias !628 - store i32 %50, ptr %12, align 8, !tbaa !354, !alias.scope !628 + store i32 %50, ptr %12, align 8, !tbaa !359, !alias.scope !628 %57 = getelementptr inbounds nuw i8, ptr %12, i64 4 store i32 0, ptr %57, align 4, !tbaa !355, !alias.scope !628 %58 = getelementptr inbounds nuw i8, ptr %12, i64 8 @@ -22738,7 +22734,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.exit92: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i86 call void @llvm.lifetime.start.p0(ptr nonnull %17) call void @llvm.experimental.noalias.scope.decl(metadata !637) - %123 = load i32, ptr %48, align 8, !tbaa !354, !noalias !637 + %123 = load i32, ptr %48, align 8, !tbaa !359, !noalias !637 %124 = zext i32 %123 to i64 %125 = getelementptr inbounds nuw ptr, ptr @_ZZN11flatbuffers3php12PhpGenerator12GenTypeBasicB5cxx11ERKNS_4TypeEE9ctypename, i64 %124 %126 = load ptr, ptr %125, align 8, !tbaa !640, !noalias !637 @@ -23926,7 +23922,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit268: ; preds = %_Z call void @llvm.lifetime.end.p0(ptr nonnull %31) call void @llvm.lifetime.end.p0(ptr nonnull %30) call void @llvm.lifetime.end.p0(ptr nonnull %29) - %565 = load i32, ptr %48, align 8, !tbaa !384 + %565 = load i32, ptr %48, align 8, !tbaa !354 switch i32 %565, label %1102 [ i32 15, label %688 i32 13, label %853 @@ -24718,7 +24714,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit400: ; preds = % br label %1102 859: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit268 - %860 = load i32, ptr %12, align 8, !tbaa !354 + %860 = load i32, ptr %12, align 8, !tbaa !359 %861 = icmp eq i32 %860, 15 br i1 %861, label %862, label %1102 @@ -25543,7 +25539,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator28GetMembe %47 = load ptr, ptr %46, align 8, !tbaa !584, !noalias !695 %48 = getelementptr inbounds nuw i8, ptr %1, i64 224 %49 = load i16, ptr %48, align 8, !tbaa !585, !noalias !695 - store i32 %43, ptr %11, align 8, !tbaa !354, !alias.scope !695 + store i32 %43, ptr %11, align 8, !tbaa !359, !alias.scope !695 %50 = getelementptr inbounds nuw i8, ptr %11, i64 4 store i32 0, ptr %50, align 4, !tbaa !355, !alias.scope !695 %51 = getelementptr inbounds nuw i8, ptr %11, i64 8 @@ -28218,7 +28214,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e call void @llvm.lifetime.start.p0(ptr nonnull %15) %90 = getelementptr inbounds nuw i8, ptr %1, i64 200 call void @llvm.experimental.noalias.scope.decl(metadata !758) - %91 = load i32, ptr %90, align 8, !tbaa !354, !noalias !758 + %91 = load i32, ptr %90, align 8, !tbaa !359, !noalias !758 %92 = zext i32 %91 to i64 %93 = getelementptr inbounds nuw ptr, ptr @_ZZN11flatbuffers3php12PhpGenerator12GenTypeBasicB5cxx11ERKNS_4TypeEE9ctypename, i64 %92 %94 = load ptr, ptr %93, align 8, !tbaa !640, !noalias !758 @@ -32071,7 +32067,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit189: ; preds = %41 ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator9GenGetterB5cxx11ERKNS_4TypeE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(26) %1) local_unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"struct.flatbuffers::Type", align 8 - %4 = load i32, ptr %1, align 8, !tbaa !354 + %4 = load i32, ptr %1, align 8, !tbaa !359 switch i32 %4, label %._crit_edge.i.i13 [ i32 13, label %._crit_edge.i.i i32 15, label %._crit_edge.i.i5 @@ -32120,7 +32116,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator9GenGetter %20 = load ptr, ptr %19, align 8, !tbaa !584, !noalias !845 %21 = getelementptr inbounds nuw i8, ptr %1, i64 24 %22 = load i16, ptr %21, align 8, !tbaa !585, !noalias !845 - store i32 %16, ptr %3, align 8, !tbaa !354, !alias.scope !845 + store i32 %16, ptr %3, align 8, !tbaa !359, !alias.scope !845 %23 = getelementptr inbounds nuw i8, ptr %3, i64 4 store i32 0, ptr %23, align 4, !tbaa !355, !alias.scope !845 %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -32150,7 +32146,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator9GenGetter ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator10GenTypeGetB5cxx11ERKNS_4TypeE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(26) %1) local_unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = alloca i64, align 8 - %4 = load i32, ptr %1, align 8, !tbaa !354 + %4 = load i32, ptr %1, align 8, !tbaa !359 %5 = add i32 %4, -1 %6 = icmp ult i32 %5, 12 br i1 %6, label %7, label %26 @@ -32333,7 +32329,7 @@ _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev.exit: ; preds = define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator14GenTypePointerB5cxx11ERKNS_4TypeE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(26) %1) local_unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = alloca i64, align 8 %4 = alloca %"struct.flatbuffers::Type", align 8 - %5 = load i32, ptr %1, align 8, !tbaa !354 + %5 = load i32, ptr %1, align 8, !tbaa !359 switch i32 %5, label %._crit_edge.i.i8 [ i32 13, label %._crit_edge.i.i i32 14, label %9 @@ -32361,7 +32357,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator14GenTypeP %15 = load ptr, ptr %14, align 8, !tbaa !584, !noalias !858 %16 = getelementptr inbounds nuw i8, ptr %1, i64 24 %17 = load i16, ptr %16, align 8, !tbaa !585, !noalias !858 - store i32 %11, ptr %4, align 8, !tbaa !354, !alias.scope !858 + store i32 %11, ptr %4, align 8, !tbaa !359, !alias.scope !858 %18 = getelementptr inbounds nuw i8, ptr %4, i64 4 store i32 0, ptr %18, align 4, !tbaa !355, !alias.scope !858 %19 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -32804,7 +32800,7 @@ declare i64 @strtoll_l(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local ; Function Attrs: inlinehint mustprogress uwtable define linkonce_odr dso_local noundef i64 @_ZN11flatbuffers10InlineSizeERKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(26) %0) local_unnamed_addr #16 comdat { %2 = alloca %"struct.flatbuffers::Type", align 8 - %3 = load i32, ptr %0, align 8, !tbaa !354 + %3 = load i32, ptr %0, align 8, !tbaa !359 %4 = icmp eq i32 %3, 15 br i1 %4, label %_ZN11flatbuffers8IsStructERKNS_4TypeE.exit, label %13 @@ -32855,7 +32851,7 @@ _ZN11flatbuffers8IsStructERKNS_4TypeE.exit: ; preds = %1 %20 = load ptr, ptr %19, align 8, !tbaa !584, !noalias !874 %21 = getelementptr inbounds nuw i8, ptr %0, i64 24 %22 = load i16, ptr %21, align 8, !tbaa !585, !noalias !874 - store i32 %16, ptr %2, align 8, !tbaa !354, !alias.scope !874 + store i32 %16, ptr %2, align 8, !tbaa !359, !alias.scope !874 %23 = getelementptr inbounds nuw i8, ptr %2, i64 4 store i32 0, ptr %23, align 4, !tbaa !355, !alias.scope !874 %24 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -32925,7 +32921,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator17StructBu %.sroa.067.0117 = phi ptr [ %11, %.lr.ph ], [ %152, %151 ] %27 = load ptr, ptr %.sroa.067.0117, align 8, !tbaa !266 %28 = getelementptr inbounds nuw i8, ptr %27, i64 200 - %29 = load i32, ptr %28, align 8, !tbaa !354 + %29 = load i32, ptr %28, align 8, !tbaa !359 %30 = icmp eq i32 %29, 15 br i1 %30, label %_ZN11flatbuffers8IsStructERKNS_4TypeE.exit, label %_ZN11flatbuffers8IsStructERKNS_4TypeE.exit.thread @@ -34109,7 +34105,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit162: ; preds = %_Z 297: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit150, %208 %298 = getelementptr inbounds nuw i8, ptr %210, i64 200 - %299 = load i32, ptr %298, align 8, !tbaa !354 + %299 = load i32, ptr %298, align 8, !tbaa !359 %300 = icmp eq i32 %299, 15 br i1 %300, label %_ZN11flatbuffers8IsStructERKNS_4TypeE.exit, label %_ZN11flatbuffers8IsStructERKNS_4TypeE.exit.thread @@ -34949,7 +34945,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator9GenMethod %3 = alloca i64, align 8 %4 = alloca %"class.std::__cxx11::basic_string", align 8 %5 = getelementptr inbounds nuw i8, ptr %1, i64 200 - %6 = load i32, ptr %5, align 8, !tbaa !384 + %6 = load i32, ptr %5, align 8, !tbaa !354 %7 = add i32 %6, -1 %8 = icmp ult i32 %7, 12 br i1 %8, label %9, label %28 @@ -39172,7 +39168,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e call void @llvm.lifetime.start.p0(ptr nonnull %18) %134 = getelementptr inbounds nuw i8, ptr %0, i64 200 call void @llvm.experimental.noalias.scope.decl(metadata !1034) - %135 = load i32, ptr %134, align 8, !tbaa !354, !noalias !1034 + %135 = load i32, ptr %134, align 8, !tbaa !359, !noalias !1034 %136 = zext i32 %135 to i64 %137 = getelementptr inbounds nuw ptr, ptr @_ZZN11flatbuffers3php12PhpGenerator12GenTypeBasicB5cxx11ERKNS_4TypeEE9ctypename, i64 %136 %138 = load ptr, ptr %137, align 8, !tbaa !640, !noalias !1034 @@ -40458,7 +40454,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit284: ; preds = %_Z _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit286: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit284 %607 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull @.str.141, i64 noundef 2) - %608 = load i32, ptr %134, align 8, !tbaa !384 + %608 = load i32, ptr %134, align 8, !tbaa !354 %609 = icmp eq i32 %608, 2 br i1 %609, label %610, label %755 @@ -41088,7 +41084,7 @@ define linkonce_odr dso_local void @_ZN11flatbuffers3php12PhpGenerator18BuildVec %65 = load ptr, ptr %64, align 8, !tbaa !584, !noalias !1076 %66 = getelementptr inbounds nuw i8, ptr %0, i64 224 %67 = load i16, ptr %66, align 8, !tbaa !585, !noalias !1076 - store i32 %61, ptr %20, align 8, !tbaa !354, !alias.scope !1076 + store i32 %61, ptr %20, align 8, !tbaa !359, !alias.scope !1076 %68 = getelementptr inbounds nuw i8, ptr %20, i64 4 store i32 0, ptr %68, align 4, !tbaa !355, !alias.scope !1076 %69 = getelementptr inbounds nuw i8, ptr %20, i64 8 @@ -47371,37 +47367,37 @@ attributes #26 = { nounwind willreturn memory(none) } !351 = !{!352} !352 = distinct !{!352, !353, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} !353 = distinct !{!353, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} -!354 = !{!136, !137, i64 0} +!354 = !{!269, !137, i64 200} !355 = !{!136, !137, i64 4} !356 = !{!357} !357 = distinct !{!357, !358, !"_ZNK11flatbuffers4Type10VectorTypeEv: argument 0"} !358 = distinct !{!358, !"_ZNK11flatbuffers4Type10VectorTypeEv"} -!359 = !{!269, !137, i64 204} -!360 = !{!361} -!361 = distinct !{!361, !362, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} -!362 = distinct !{!362, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} -!363 = !{!364} -!364 = distinct !{!364, !365, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} -!365 = distinct !{!365, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} -!366 = !{!367} -!367 = distinct !{!367, !368, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} -!368 = distinct !{!368, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} -!369 = !{!370} -!370 = distinct !{!370, !371, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} -!371 = distinct !{!371, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} -!372 = !{!373} -!373 = distinct !{!373, !374, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_: argument 0"} -!374 = distinct !{!374, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_"} -!375 = !{!376} -!376 = distinct !{!376, !377, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} -!377 = distinct !{!377, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} -!378 = !{!379} -!379 = distinct !{!379, !380, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_: argument 0"} -!380 = distinct !{!380, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_"} -!381 = !{!382} -!382 = distinct !{!382, !383, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} -!383 = distinct !{!383, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} -!384 = !{!269, !137, i64 200} +!359 = !{!136, !137, i64 0} +!360 = !{!269, !137, i64 204} +!361 = !{!362} +!362 = distinct !{!362, !363, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} +!363 = distinct !{!363, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} +!364 = !{!365} +!365 = distinct !{!365, !366, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} +!366 = distinct !{!366, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} +!367 = !{!368} +!368 = distinct !{!368, !369, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} +!369 = distinct !{!369, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} +!370 = !{!371} +!371 = distinct !{!371, !372, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} +!372 = distinct !{!372, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} +!373 = !{!374} +!374 = distinct !{!374, !375, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_: argument 0"} +!375 = distinct !{!375, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_"} +!376 = !{!377} +!377 = distinct !{!377, !378, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} +!378 = distinct !{!378, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} +!379 = !{!380} +!380 = distinct !{!380, !381, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_: argument 0"} +!381 = distinct !{!381, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_"} +!382 = !{!383} +!383 = distinct !{!383, !384, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} +!384 = distinct !{!384, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} !385 = !{!386} !386 = distinct !{!386, !387, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_: argument 0"} !387 = distinct !{!387, !"_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_"} diff --git a/bench/flatbuffers/optimized/idl_gen_rust.ll b/bench/flatbuffers/optimized/idl_gen_rust.ll index af7ef2c21f8..55e44a8bef4 100644 --- a/bench/flatbuffers/optimized/idl_gen_rust.ll +++ b/bench/flatbuffers/optimized/idl_gen_rust.ll @@ -37253,12 +37253,9 @@ define internal fastcc noundef range(i32 0, 20) i32 @_ZN11flatbuffers12_GLOBAL__ %2 = alloca %"struct.flatbuffers::Type", align 8 %3 = alloca %"struct.flatbuffers::Type", align 8 %4 = load i32, ptr %0, align 8, !tbaa !549 - switch i32 %4, label %41 [ + switch i32 %4, label %11 [ i32 13, label %63 i32 15, label %5 - i32 18, label %11 - i32 14, label %11 - i32 17, label %26 ] 5: ; preds = %1 @@ -37270,7 +37267,13 @@ define internal fastcc noundef range(i32 0, 20) i32 @_ZN11flatbuffers12_GLOBAL__ %. = select i1 %10, i32 3, i32 4 br label %63 -11: ; preds = %1, %1 +11: ; preds = %1 + %12 = add i32 %4, -14 + %switch.and.i.i = and i32 %12, -5 + %switch.selectcmp.i.i = icmp eq i32 %switch.and.i.i, 0 + br i1 %switch.selectcmp.i.i, label %13, label %28 + +11: ; preds = %11 call void @llvm.lifetime.start.p0(ptr nonnull %2) tail call void @llvm.experimental.noalias.scope.decl(metadata !594) %12 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -37293,9 +37296,13 @@ define internal fastcc noundef range(i32 0, 20) i32 @_ZN11flatbuffers12_GLOBAL__ %24 = call fastcc noundef i32 @_ZN11flatbuffers12_GLOBAL__N_111GetFullTypeERKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(26) %2) call void @llvm.lifetime.end.p0(ptr nonnull %2) %25 = icmp samesign ult i32 %24, 9 - br i1 %25, label %switch.lookup, label %60 + br i1 %25, label %switch.lookup, label %64 -26: ; preds = %1 +26: ; preds = %11 + %29 = icmp eq i32 %4, 17 + br i1 %29, label %30, label %45 + +30: ; preds = %28 call void @llvm.lifetime.start.p0(ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !600) %27 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -37318,45 +37325,45 @@ define internal fastcc noundef range(i32 0, 20) i32 @_ZN11flatbuffers12_GLOBAL__ %39 = call fastcc noundef i32 @_ZN11flatbuffers12_GLOBAL__N_111GetFullTypeERKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(26) %3) call void @llvm.lifetime.end.p0(ptr nonnull %3) %40 = icmp samesign ult i32 %39, 6 - br i1 %40, label %switch.lookup20, label %60 - -41: ; preds = %1 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %43 = load ptr, ptr %42, align 8, !tbaa !598 - %.not = icmp eq ptr %43, null - br i1 %.not, label %53, label %44 - -44: ; preds = %41 - %45 = getelementptr inbounds nuw i8, ptr %43, i64 200 - %46 = load i8, ptr %45, align 8, !tbaa !477, !range !134, !noundef !135 - %47 = trunc nuw i8 %46 to i1 - br i1 %47, label %48, label %63 - -48: ; preds = %44 - %49 = icmp eq i32 %4, 16 - br i1 %49, label %63, label %50 - -50: ; preds = %48 - %51 = add i32 %4, -1 - %52 = icmp ult i32 %51, 10 - br i1 %52, label %63, label %60 - -53: ; preds = %41 - %54 = add i32 %4, -1 - %55 = icmp ult i32 %54, 12 - br i1 %55, label %56, label %60 - -56: ; preds = %53 - %57 = icmp eq i32 %4, 2 - br i1 %57, label %63, label %58 - -58: ; preds = %56 - %59 = icmp samesign ugt i32 %54, 9 - %spec.select = zext i1 %59 to i32 - br label %63 + br i1 %40, label %switch.lookup20, label %64 -60: ; preds = %26, %11, %53, %50 - br label %63 +60: ; preds = %26 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %47 = load ptr, ptr %46, align 8, !tbaa !598 + %.not = icmp eq ptr %47, null + br i1 %.not, label %57, label %48 + +48: ; preds = %45 + %49 = getelementptr inbounds nuw i8, ptr %47, i64 200 + %50 = load i8, ptr %49, align 8, !tbaa !477, !range !134, !noundef !135 + %51 = trunc nuw i8 %50 to i1 + br i1 %51, label %52, label %67 + +52: ; preds = %48 + %53 = icmp eq i32 %4, 16 + br i1 %53, label %67, label %54 + +54: ; preds = %52 + %55 = add i32 %4, -1 + %56 = icmp ult i32 %55, 10 + br i1 %56, label %67, label %64 + +57: ; preds = %45 + %58 = add i32 %4, -1 + %59 = icmp ult i32 %58, 12 + br i1 %59, label %60, label %64 + +60: ; preds = %57 + %61 = icmp eq i32 %4, 2 + br i1 %61, label %67, label %62 + +62: ; preds = %60 + %63 = icmp samesign ugt i32 %58, 9 + %spec.select = zext i1 %63 to i32 + br label %67 + +64: ; preds = %30, %13, %57, %54 + br label %67 switch.lookup: ; preds = %11 %61 = zext nneg i32 %24 to i64 @@ -37364,14 +37371,14 @@ switch.lookup: ; preds = %11 %switch.load = load i32, ptr %switch.gep, align 4 br label %63 -switch.lookup20: ; preds = %26 +switch.lookup20: ; preds = %30 %62 = zext nneg i32 %39 to i64 %switch.gep21 = getelementptr inbounds nuw i32, ptr @switch.table._ZN11flatbuffers12_GLOBAL__N_111GetFullTypeERKNS_4TypeE.58, i64 %62 %switch.load22 = load i32, ptr %switch.gep21, align 4 br label %63 -63: ; preds = %switch.lookup20, %switch.lookup, %58, %1, %56, %44, %50, %48, %5, %60 - %.0 = phi i32 [ %spec.select, %58 ], [ %., %5 ], [ 8, %1 ], [ 2, %60 ], [ 2, %56 ], [ %switch.load22, %switch.lookup20 ], [ %switch.load, %switch.lookup ], [ 5, %44 ], [ 6, %50 ], [ 7, %48 ] +63: ; preds = %switch.lookup20, %switch.lookup, %62, %1, %60, %48, %54, %52, %5, %64 + %.0 = phi i32 [ %spec.select, %62 ], [ %., %5 ], [ 8, %1 ], [ 2, %64 ], [ 2, %60 ], [ %switch.load22, %switch.lookup20 ], [ %switch.load, %switch.lookup ], [ 5, %48 ], [ 6, %54 ], [ 7, %52 ] ret i32 %.0 } diff --git a/bench/fmt/optimized/format-impl-test.ll b/bench/fmt/optimized/format-impl-test.ll index a8870d4885c..74a7b032246 100644 --- a/bench/fmt/optimized/format-impl-test.ll +++ b/bench/fmt/optimized/format-impl-test.ll @@ -44333,9 +44333,9 @@ define linkonce_odr hidden ptr @_ZN3fmt3v116detail5writeIcNS0_14basic_appenderIc %7 = load i32, ptr %2, align 4, !tbaa !337 %8 = trunc i32 %7 to i8 %9 = and i8 %8, 7 - %.off.i = add nsw i8 %9, -2 - %switch.i = icmp ult i8 %.off.i, 5 - br i1 %switch.i, label %20, label %10 + %.off.i = add nsw i8 %9, -7 + %switch.i = icmp ult i8 %.off.i, -5 + br i1 %switch.i, label %10, label %20 10: ; preds = %4 %11 = and i32 %7, 56 @@ -44380,7 +44380,7 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %10 br label %26 26: ; preds = %._crit_edge, %20 - %27 = phi i32 [ %.pre, %._crit_edge ], [ %7, %20 ] + %27 = phi i32 [ %.pre, %._crit_edge ], [ %7, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit ] %28 = lshr i32 %27, 10 %29 = and i32 %28, 3 %30 = zext nneg i32 %29 to i64 @@ -44394,12 +44394,12 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %10 br label %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit _ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit: ; preds = %22, %26 - %.sroa.010.0.i = phi ptr [ %35, %26 ], [ %0, %22 ] + %.sroa.010.0.i = phi ptr [ %35, %27 ], [ %0, %23 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %36 36: ; preds = %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit - %.sroa.08.0 = phi ptr [ %19, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit ], [ %.sroa.010.0.i, %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit ] + %.sroa.08.0 = phi ptr [ %19, %16 ], [ %.sroa.010.0.i, %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit ] ret ptr %.sroa.08.0 } diff --git a/bench/fmt/optimized/os.ll b/bench/fmt/optimized/os.ll index a07f6fdb38b..10543ed6ed7 100644 --- a/bench/fmt/optimized/os.ll +++ b/bench/fmt/optimized/os.ll @@ -24695,23 +24695,23 @@ define linkonce_odr hidden ptr @_ZN3fmt3v116detail5writeIcNS0_14basic_appenderIc %7 = load i32, ptr %2, align 4, !tbaa !89 %8 = trunc i32 %7 to i8 %9 = and i8 %8, 7 - %.off.i = add nsw i8 %9, -2 - %switch.i = icmp ult i8 %.off.i, 5 - br i1 %switch.i, label %20, label %10 - -10: ; preds = %4 - %11 = and i32 %7, 56 - %12 = icmp ne i32 %11, 32 - %13 = and i32 %7, 11264 - %or.cond.not.i = icmp eq i32 %13, 0 - %or.cond.i = and i1 %12, %or.cond.not.i - br i1 %or.cond.i, label %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit, label %14 + %.off.i = add nsw i8 %9, -7 + %switch.i = icmp ult i8 %.off.i, -5 + br i1 %switch.i, label %11, label %20 -14: ; preds = %10 +14: ; preds = %4 + %12 = and i32 %7, 56 + %13 = icmp ne i32 %12, 32 + %14 = and i32 %7, 11264 + %or.cond.not.i = icmp eq i32 %14, 0 + %or.cond.i = and i1 %13, %or.cond.not.i + br i1 %or.cond.i, label %16, label %15 + +15: ; preds = %11 tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.40) #37 unreachable -_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %10 +_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %11 %15 = and i32 %7, 7 %16 = icmp eq i32 %15, 1 %17 = zext i1 %16 to i8 @@ -24742,7 +24742,7 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %10 br label %26 26: ; preds = %._crit_edge, %20 - %27 = phi i32 [ %.pre, %._crit_edge ], [ %7, %20 ] + %27 = phi i32 [ %.pre, %._crit_edge ], [ %7, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit ] %28 = lshr i32 %27, 10 %29 = and i32 %28, 3 %30 = zext nneg i32 %29 to i64 @@ -24756,12 +24756,12 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %10 br label %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit _ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit: ; preds = %22, %26 - %.sroa.010.0.i = phi ptr [ %35, %26 ], [ %0, %22 ] + %.sroa.010.0.i = phi ptr [ %35, %27 ], [ %0, %23 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %36 36: ; preds = %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit - %.sroa.08.0 = phi ptr [ %19, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit ], [ %.sroa.010.0.i, %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit ] + %.sroa.08.0 = phi ptr [ %19, %16 ], [ %.sroa.010.0.i, %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit ] ret ptr %.sroa.08.0 } diff --git a/bench/folly/optimized/LogName.ll b/bench/folly/optimized/LogName.ll index 38b30573c7a..9a2782f0c74 100644 --- a/bench/folly/optimized/LogName.ll +++ b/bench/folly/optimized/LogName.ll @@ -45,11 +45,11 @@ define void @_ZN5folly7LogName12canonicalizeB5cxx11ENS_5RangeIPKcEE(ptr dead_on_ br label %50 .lr.ph33: ; preds = %.lr.ph, %48 - %.032 = phi i64 [ %49, %48 ], [ 0, %.lr.ph ] - %.01131 = phi i1 [ %.1, %48 ], [ true, %.lr.ph ] + %.032 = phi i64 [ %49, %47 ], [ 0, %.lr.ph ] + %.01131 = phi i1 [ %.1, %47 ], [ true, %.lr.ph ] %15 = getelementptr inbounds nuw i8, ptr %1, i64 %.032 %16 = load i8, ptr %15, align 1, !tbaa !16 - switch i8 %16, label %33 [ + switch i8 %16, label %_ZN12_GLOBAL__N_111isSeparatorEc.exit17 [ i8 92, label %17 i8 47, label %17 i8 46, label %17 @@ -202,12 +202,12 @@ define noundef range(i64 0, 4294967296) i64 @_ZN5folly7LogName4hashENS_5RangeIPK ret i64 %.016.lcssa .lr.ph30: ; preds = %.lr.ph, %19 - %.01329 = phi i64 [ %20, %19 ], [ 0, %.lr.ph ] - %.01428 = phi i1 [ %.1, %19 ], [ true, %.lr.ph ] - %.01627 = phi i32 [ %.117, %19 ], [ 5381, %.lr.ph ] + %.01329 = phi i64 [ %20, %18 ], [ 0, %.lr.ph ] + %.01428 = phi i1 [ %.1, %18 ], [ true, %.lr.ph ] + %.01627 = phi i32 [ %.117, %18 ], [ 5381, %.lr.ph ] %11 = getelementptr inbounds nuw i8, ptr %0, i64 %.01329 %12 = load i8, ptr %11, align 1, !tbaa !16 - switch i8 %12, label %14 [ + switch i8 %12, label %_ZN12_GLOBAL__N_111isSeparatorEc.exit19 [ i8 92, label %13 i8 47, label %13 i8 46, label %13 @@ -221,15 +221,15 @@ define noundef range(i64 0, 4294967296) i64 @_ZN5folly7LogName4hashENS_5RangeIPK br label %16 16: ; preds = %13, %14 - %.2 = phi i1 [ false, %14 ], [ true, %13 ] - %.0 = phi i32 [ %15, %14 ], [ 46, %13 ] + %.2 = phi i1 [ false, %_ZN12_GLOBAL__N_111isSeparatorEc.exit19 ], [ true, %13 ] + %.0 = phi i32 [ %15, %_ZN12_GLOBAL__N_111isSeparatorEc.exit19 ], [ 46, %13 ] %17 = mul i32 %.01627, 33 %18 = add i32 %.0, %17 br label %19 19: ; preds = %13, %16 - %.117 = phi i32 [ %18, %16 ], [ %.01627, %13 ] - %.1 = phi i1 [ %.2, %16 ], [ true, %13 ] + %.117 = phi i32 [ %18, %15 ], [ %.01627, %13 ] + %.1 = phi i1 [ %.2, %15 ], [ true, %13 ] %20 = add nuw i64 %.01329, 1 %exitcond.not = icmp eq i64 %20, %.01524 br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph30, !llvm.loop !22 @@ -304,9 +304,9 @@ define noundef range(i32 -255, 256) i32 @_ZN5folly7LogName3cmpENS_5RangeIPKcEES4 br label %21 21: ; preds = %55, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" - %.sroa.014.0 = phi ptr [ %2, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %57, %55 ] - %.sroa.024.0 = phi ptr [ %0, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %56, %55 ] - %.0 = phi i1 [ true, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %spec.select.i, %55 ] + %.sroa.014.0 = phi ptr [ %2, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %53, %_ZN12_GLOBAL__N_111isSeparatorEc.exit12.thread ] + %.sroa.024.0 = phi ptr [ %0, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %52, %_ZN12_GLOBAL__N_111isSeparatorEc.exit12.thread ] + %.0 = phi i1 [ true, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %51, %_ZN12_GLOBAL__N_111isSeparatorEc.exit12.thread ] %.sroa.014.050 = ptrtoint ptr %.sroa.014.0 to i64 %.sroa.024.046 = ptrtoint ptr %.sroa.024.0 to i64 br i1 %.0, label %22, label %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_1clERS4_.exit10" @@ -377,46 +377,43 @@ define noundef range(i32 -255, 256) i32 @_ZN5folly7LogName3cmpENS_5RangeIPKcEES4 41: ; preds = %39 %42 = load i8, ptr %.sroa.024.1, align 1, !tbaa !16 - %43 = and i8 %42, -2 - %or.cond.i = icmp eq i8 %43, 46 - %44 = icmp eq i8 %42, 92 - %spec.select.i = or i1 %44, %or.cond.i - %45 = load i8, ptr %.sroa.014.1, align 1, !tbaa !16 - switch i8 %42, label %50 [ - i8 92, label %46 - i8 47, label %46 + %43 = load i8, ptr %.sroa.014.1, align 1, !tbaa !16 + switch i8 %43, label %_ZN12_GLOBAL__N_111isSeparatorEc.exit [ + i8 92, label %44 + i8 51, label %44 i8 46, label %46 ] 46: ; preds = %41, %41, %41 - switch i8 %45, label %47 [ + switch i8 %43, label %_ZN12_GLOBAL__N_111isSeparatorEc.exit12 [ i8 92, label %55 i8 47, label %55 i8 46, label %55 ] 47: ; preds = %46 - %48 = sext i8 %45 to i32 + %48 = sext i8 %43 to i32 %49 = sub nsw i32 46, %48 br label %.loopexit 50: ; preds = %41 - %.not = icmp eq i8 %42, %45 + %.not = icmp eq i8 %42, %43 br i1 %.not, label %55, label %51 51: ; preds = %50 %52 = sext i8 %42 to i32 - %53 = sext i8 %45 to i32 - %54 = sub nsw i32 %52, %53 + %53 = sext i8 %43 to i32 + %54 = sub nsw i32 %52, %50 br label %.loopexit 55: ; preds = %46, %46, %46, %50 - %56 = getelementptr inbounds nuw i8, ptr %.sroa.024.1, i64 1 - %57 = getelementptr inbounds nuw i8, ptr %.sroa.014.1, i64 1 + %51 = phi i1 [ false, %_ZN12_GLOBAL__N_111isSeparatorEc.exit ], [ true, %44 ], [ true, %44 ], [ true, %44 ] + %57 = getelementptr inbounds nuw i8, ptr %.sroa.024.1, i64 1 + %53 = getelementptr inbounds nuw i8, ptr %.sroa.014.1, i64 1 br label %21, !llvm.loop !25 .loopexit: ; preds = %39, %51, %47, %36 - %.02 = phi i32 [ %38, %36 ], [ %54, %51 ], [ %49, %47 ], [ 1, %39 ] + %.02 = phi i32 [ %38, %36 ], [ %54, %47 ], [ %49, %_ZN12_GLOBAL__N_111isSeparatorEc.exit12 ], [ 1, %39 ] ret i32 %.02 } @@ -436,7 +433,7 @@ define { ptr, ptr } @_ZN5folly7LogName9getParentENS_5RangeIPKcEE(ptr %0, ptr %1) %7 = add i64 %.028, -1 %8 = getelementptr inbounds nuw i8, ptr %0, i64 %7 %9 = load i8, ptr %8, align 1, !tbaa !16 - switch i8 %9, label %.critedge.preheader [ + switch i8 %9, label %_ZN12_GLOBAL__N_111isSeparatorEc.exit17.preheader [ i8 92, label %10 i8 47, label %10 i8 46, label %10 @@ -451,7 +448,7 @@ define { ptr, ptr } @_ZN5folly7LogName9getParentENS_5RangeIPKcEE(ptr %0, ptr %1) br label %.critedge .critedge: ; preds = %.critedge.preheader, %11 - %.1 = phi i64 [ %12, %11 ], [ %.1.ph, %.critedge.preheader ] + %.1 = phi i64 [ %12, %11 ], [ %.1.ph, %_ZN12_GLOBAL__N_111isSeparatorEc.exit17.preheader ] %.not14 = icmp eq i64 %.1, 0 br i1 %.not14, label %.critedge4, label %11 @@ -459,7 +456,7 @@ define { ptr, ptr } @_ZN5folly7LogName9getParentENS_5RangeIPKcEE(ptr %0, ptr %1) %12 = add i64 %.1, -1 %13 = getelementptr inbounds nuw i8, ptr %0, i64 %12 %14 = load i8, ptr %13, align 1, !tbaa !16 - switch i8 %14, label %.critedge [ + switch i8 %14, label %_ZN12_GLOBAL__N_111isSeparatorEc.exit17 [ i8 92, label %.lr.ph33.preheader i8 47, label %.lr.ph33.preheader i8 46, label %.lr.ph33.preheader @@ -484,7 +481,7 @@ define { ptr, ptr } @_ZN5folly7LogName9getParentENS_5RangeIPKcEE(ptr %0, ptr %1) br i1 %.not15, label %.critedge4, label %.lr.ph33, !llvm.loop !28 .critedge4: ; preds = %.critedge, %18, %.lr.ph33 - %.2.lcssa = phi i64 [ %.232, %.lr.ph33 ], [ 0, %18 ], [ 0, %.critedge ] + %.2.lcssa = phi i64 [ %.232, %.lr.ph33 ], [ 0, %18 ], [ 0, %_ZN12_GLOBAL__N_111isSeparatorEc.exit17 ] %19 = getelementptr inbounds nuw i8, ptr %0, i64 %.2.lcssa br label %20 diff --git a/bench/folly/optimized/String.ll b/bench/folly/optimized/String.ll index 3a80518a2dc..c81080f5658 100644 --- a/bench/folly/optimized/String.ll +++ b/bench/folly/optimized/String.ll @@ -185,7 +185,7 @@ define { ptr, ptr } @_ZN5folly15ltrimWhitespaceENS_5RangeIPKcEE(ptr %0, ptr %1) 5: ; preds = %.lr.ph, %7 %.sroa.0.110 = phi ptr [ %.sroa.0.013, %.lr.ph ], [ %8, %7 ] %6 = load i8, ptr %.sroa.0.110, align 1, !tbaa !7 - switch i8 %6, label %.critedge.thread [ + switch i8 %6, label %_ZN5follyL11is_oddspaceEc.exit [ i8 32, label %7 i8 13, label %10 i8 10, label %10 @@ -210,7 +210,7 @@ define { ptr, ptr } @_ZN5folly15ltrimWhitespaceENS_5RangeIPKcEE(ptr %0, ptr %1) br label %.critedge.thread .critedge.thread: ; preds = %10, %5, %.critedge.thread.loopexit, %2 - %.sroa.0.19 = phi ptr [ %0, %2 ], [ %scevgep18.le, %.critedge.thread.loopexit ], [ %.sroa.0.110, %5 ], [ %11, %10 ] + %.sroa.0.19 = phi ptr [ %0, %2 ], [ %scevgep18.le, %_ZN5follyL11is_oddspaceEc.exit.loopexit ], [ %.sroa.0.110, %5 ], [ %11, %10 ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %.sroa.0.19, 0 %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %1, 1 ret { ptr, ptr } %.fca.1.insert @@ -239,7 +239,7 @@ define { ptr, ptr } @_ZN5folly15rtrimWhitespaceENS_5RangeIPKcEE(ptr %0, ptr %1) 7: ; preds = %5 %8 = getelementptr inbounds i8, ptr %.sroa.4.1, i64 -1 %9 = load i8, ptr %8, align 1, !tbaa !7 - switch i8 %9, label %.critedge.thread [ + switch i8 %9, label %_ZN5follyL11is_oddspaceEc.exit [ i8 32, label %5 i8 13, label %.loopexit i8 10, label %.loopexit @@ -254,7 +254,7 @@ define { ptr, ptr } @_ZN5folly15rtrimWhitespaceENS_5RangeIPKcEE(ptr %0, ptr %1) br label %.critedge.thread .critedge.thread: ; preds = %7, %.critedge.thread.loopexit - %.sroa.4.112 = phi ptr [ %scevgep14.le, %.critedge.thread.loopexit ], [ %.sroa.4.1, %7 ] + %.sroa.4.112 = phi ptr [ %scevgep14.le, %_ZN5follyL11is_oddspaceEc.exit.loopexit ], [ %.sroa.4.1, %7 ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %0, 0 %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %.sroa.4.112, 1 ret { ptr, ptr } %.fca.1.insert diff --git a/bench/hermes/optimized/BigIntSupport.ll b/bench/hermes/optimized/BigIntSupport.ll index 4fe377fddf5..01936d789dc 100644 --- a/bench/hermes/optimized/BigIntSupport.ll +++ b/bench/hermes/optimized/BigIntSupport.ll @@ -697,7 +697,7 @@ _ZN6hermes6bigint12_GLOBAL__N_126StringIntegerLiteralParserIN4llvh8ArrayRefIcEEE _ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i: ; preds = %_ZN6hermes6bigint12_GLOBAL__N_126StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEC2ES5_RhRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS0_10ParsedSignEPSD_.exit %5 = load i8, ptr %ref.tmp.sroa.0.0, align 1 %cmp.i2 = icmp eq i8 %5, 48 - br i1 %cmp.i2, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE3eatEv.exit.i, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.i + br i1 %cmp.i2, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE3eatEv.exit.i, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.ithread-pre-split if.then.i1: ; preds = %_ZN6hermes6bigint12_GLOBAL__N_126StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEC2ES5_RhRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS0_10ParsedSignEPSD_.exit store i8 10, ptr %radix, align 1 @@ -707,7 +707,7 @@ if.then.i1: ; preds = %_ZN6hermes6bigint12 _ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE3eatEv.exit.i: ; preds = %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i %add.ptr.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp.sroa.0.0, i64 1 %cmp.i.i.i.i.i.i = icmp ult ptr %add.ptr.i.i, %ref.tmp.sroa.37.2 - br i1 %cmp.i.i.i.i.i.i, label %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i.i.i.i.i, label %if.end18.i + br i1 %cmp.i.i.i.i.i.i, label %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i.i.i.i.i, label %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i.i.i _ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i.i.i.i.i: ; preds = %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE3eatEv.exit.i %6 = load i8, ptr %add.ptr.i.i, align 1 @@ -850,12 +850,12 @@ _ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntege i8 54, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 55, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 56, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 69, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 68, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 67, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 66, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 65, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 57, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 65, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 66, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 67, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 68, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 69, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 102, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 101, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 100, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i @@ -889,12 +889,12 @@ _ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntege i8 54, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 55, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 56, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 69, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 68, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 67, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 66, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 65, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 57, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 65, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 66, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 67, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 68, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 69, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 102, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 101, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 100, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i @@ -934,26 +934,22 @@ if.then.i3.i.i: ; preds = %cond.true.i.i %call.i.i.i = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %outError, ptr noundef nonnull @.str.2) #18 br label %nrvo.skipdtor -_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.ithread-pre-split: ; preds = %lor.lhs.false.i.i, %lor.rhs.i.i, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i.i.i30.i.i, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE24nonDecimalIntegerLiteralEv.exit.i +_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.ithread-pre-split: ; preds = %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE24nonDecimalIntegerLiteralEv.exit.i, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i.i.i30.i.i, %lor.rhs.i.i, %lor.lhs.false.i.i, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE3eatEv.exit.i %.pr = load i8, ptr %ref.tmp.sroa.0.0, align 1 - br label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.i - -_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.i: ; preds = %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.ithread-pre-split, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i - %30 = phi i8 [ %.pr, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.ithread-pre-split ], [ %5, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i ] - switch i8 %30, label %if.end18.i [ - i8 45, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i - i8 43, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i - ] + %31 = add i8 %.pr, -43 + %switch.and.i.i.i.i = and i8 %31, -3 + %switch.selectcmp.i.i.i.i = icmp eq i8 %switch.and.i.i.i.i, 0 + br i1 %switch.selectcmp.i.i.i.i, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i, label %if.end18.i -_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i: ; preds = %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.i, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.i +_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i: ; preds = %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.ithread-pre-split %add.ptr.i.i.i5 = getelementptr inbounds nuw i8, ptr %ref.tmp.sroa.0.0, i64 1 %cmp17.i = icmp eq i8 %5, 43 %cond.i = select i1 %cmp17.i, i32 1, i32 -1 store i32 %cond.i, ptr %sign, align 4 br label %if.end18.i -if.end18.i: ; preds = %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE3eatEv.exit.i, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.i - %ref.tmp.sroa.0.3 = phi ptr [ %ref.tmp.sroa.0.0, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.i ], [ %add.ptr.i.i.i5, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i ], [ %ref.tmp.sroa.0.0, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE3eatEv.exit.i ] +if.end18.i: ; preds = %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE11nextIsAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i.ithread-pre-split + %ref.tmp.sroa.0.3 = phi ptr [ %add.ptr.i.i.i5, %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE22lookaheadAndEatIfAnyOfIJLc43ELc45EEEENS_8OptValueIcEEv.exit.i ], [ %ref.tmp.sroa.0.0, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i.i.i ] %cmp.i.i14.i = icmp ult ptr %ref.tmp.sroa.0.3, %ref.tmp.sroa.37.2 br i1 %cmp.i.i14.i, label %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i15.i, label %while.end.i.i @@ -963,7 +959,7 @@ _ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntege br i1 %32, label %while.body.i.i, label %while.end.i.i while.body.i.i: ; preds = %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i15.i, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit9.i.i - %ref.tmp.sroa.0.7 = phi ptr [ %add.ptr.i.i16.i, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit9.i.i ], [ %ref.tmp.sroa.0.3, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i15.i ] + %ref.tmp.sroa.0.7 = phi ptr [ %add.ptr.i.i16.i, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit9.i.i ], [ %ref.tmp.sroa.0.3, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i16.i ] %add.ptr.i.i16.i = getelementptr inbounds nuw i8, ptr %ref.tmp.sroa.0.7, i64 1 %cmp.i6.i.i = icmp ult ptr %add.ptr.i.i16.i, %ref.tmp.sroa.37.2 br i1 %cmp.i6.i.i, label %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit9.i.i, label %while.end.i.i @@ -974,7 +970,7 @@ _ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntege br i1 %or.cond.i.i, label %while.body.i.i, label %while.end.i.i, !llvm.loop !15 while.end.i.i: ; preds = %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit9.i.i, %while.body.i.i, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i15.i, %if.end18.i - %ref.tmp.sroa.0.4 = phi ptr [ %ref.tmp.sroa.0.3, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i15.i ], [ %ref.tmp.sroa.0.3, %if.end18.i ], [ %ref.tmp.sroa.0.7, %while.body.i.i ], [ %add.ptr.i.i16.i, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit9.i.i ] + %ref.tmp.sroa.0.4 = phi ptr [ %ref.tmp.sroa.0.3, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i16.i ], [ %ref.tmp.sroa.0.3, %if.end18.i ], [ %ref.tmp.sroa.0.7, %while.body.i.i ], [ %add.ptr.i.i16.i, %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit9.i.i ] %ref.tmp.sroa.0.445 = ptrtoint ptr %ref.tmp.sroa.0.4 to i64 %cmp.i.i14.i.i = icmp ult ptr %ref.tmp.sroa.0.4, %ref.tmp.sroa.37.2 br i1 %cmp.i.i14.i.i, label %_ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_26StringIntegerLiteralParserIN4llvh8ArrayRefIcEEEEE4peekEl.exit.i.i.i, label %if.end23.i @@ -1772,12 +1768,12 @@ _ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValue i8 54, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 55, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 56, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 69, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 68, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 67, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 66, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i - i8 65, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 57, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 65, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 66, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 67, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 68, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i + i8 69, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 102, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 101, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i i8 100, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit.i.i.i.i.i @@ -1824,12 +1820,12 @@ _ZNK6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValue i8 54, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 55, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 56, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 69, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 68, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 67, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 66, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i - i8 65, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 57, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 65, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 66, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 67, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 68, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i + i8 69, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 102, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 101, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i i8 100, label %_ZN6hermes6bigint12_GLOBAL__N_127BigIntLiteralParsingToolBoxINS1_18NumericValueParserEE22lookaheadAndEatIfAnyOfIJLc48ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56ELc57ELc65ELc66ELc67ELc68ELc69ELc70ELc97ELc98ELc99ELc100ELc101ELc102EEEENS_8OptValueIcEEv.exit8.i.i.i.i.i diff --git a/bench/hermes/optimized/ItaniumDemangle.ll b/bench/hermes/optimized/ItaniumDemangle.ll index 59fdec38978..f6697c62d56 100644 --- a/bench/hermes/optimized/ItaniumDemangle.ll +++ b/bench/hermes/optimized/ItaniumDemangle.ll @@ -2764,11 +2764,12 @@ entry: %0 = load ptr, ptr %this, align 8 %K.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 %1 = load i8, ptr %K.i.i, align 8 - %cmp.i = icmp ne i8 %1, 18 - %2 = and i8 %1, -2 - %3 = icmp ne i8 %2, 20 - %4 = and i1 %cmp.i, %3 - ret i1 %4 + %cmp.i = icmp ugt i8 %1, 21 + %switch.cast = zext nneg i8 %1 to i22 + %switch.downshift = lshr i22 786431, %switch.cast + %switch.masked = trunc i22 %switch.downshift to i1 + %3 = select i1 %2, i1 true, i1 %switch.masked + ret i1 %3 } ; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) diff --git a/bench/hermes/optimized/gtest-all.ll b/bench/hermes/optimized/gtest-all.ll index 005f0b44621..1610ed236f6 100644 --- a/bench/hermes/optimized/gtest-all.ll +++ b/bench/hermes/optimized/gtest-all.ll @@ -25264,6 +25264,9 @@ for.body: ; preds = %for.body.lr.ph, %fo i8 38, label %sw.bb6 i8 39, label %sw.bb9 i8 34, label %sw.bb14 + i8 13, label %if.then26 + i8 10, label %if.then26 + i8 9, label %if.then26 ] sw.bb: ; preds = %for.body @@ -25434,16 +25437,9 @@ _ZN7testing7MessagelsIcEERS0_RKT_.exit74: ; preds = %if.else19 invoke.cont24: ; preds = %for.body %cmp.i = icmp sgt i8 %0, 31 - br i1 %cmp.i, label %if.then26, label %switch.early.test + br i1 %cmp.i, label %if.then26, label %for.inc -switch.early.test: ; preds = %invoke.cont24 - switch i8 %0, label %for.inc [ - i8 13, label %if.then26 - i8 10, label %if.then26 - i8 9, label %if.then26 - ] - -if.then26: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %invoke.cont24 +if.then26: ; preds = %if.then, %if.then, %if.then, %invoke.cont24 br i1 %is_attribute, label %land.lhs.true, label %if.else40 land.lhs.true: ; preds = %if.then26 @@ -25547,7 +25543,7 @@ _ZN7testing7MessagelsIcEERS0_RKT_.exit115: ; preds = %if.else40 call void @llvm.lifetime.end.p0(ptr nonnull %OS.i.i106) br label %for.inc -for.inc: ; preds = %switch.early.test, %_ZN7testing7MessagelsIcEERS0_RKT_.exit115, %_ZN7testing7MessagelsIcEERS0_RKT_.exit74, %_ZN7testing7MessagelsIA7_cEERS0_RKT_.exit64, %_ZN7testing7MessagelsIcEERS0_RKT_.exit, %_ZN7testing7MessagelsIA7_cEERS0_RKT_.exit, %_ZN7testing7MessagelsIA6_cEERS0_RKT_.exit, %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit19, %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit, %invoke.cont38 +for.inc: ; preds = %_ZN7testing7MessagelsIcEERS0_RKT_.exit115, %_ZN7testing7MessagelsIcEERS0_RKT_.exit74, %_ZN7testing7MessagelsIA7_cEERS0_RKT_.exit64, %_ZN7testing7MessagelsIcEERS0_RKT_.exit, %_ZN7testing7MessagelsIA7_cEERS0_RKT_.exit, %_ZN7testing7MessagelsIA6_cEERS0_RKT_.exit, %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit19, %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit, %invoke.cont38, %invoke.cont24 %inc = add nuw i64 %i.0127, 1 %call = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %str) #52 %cmp = icmp ult i64 %inc, %call @@ -25647,19 +25643,18 @@ invoke.cont: ; preds = %entry invoke.cont6: ; preds = %invoke.cont, %for.inc %it.sroa.0.011 = phi ptr [ %incdec.ptr.i, %for.inc ], [ %call1, %invoke.cont ] %0 = load i8, ptr %it.sroa.0.011, align 1 - %.fr = freeze i8 %0 - %cmp.i3 = icmp sgt i8 %.fr, 31 - br i1 %cmp.i3, label %if.then, label %switch.early.test - -switch.early.test: ; preds = %invoke.cont6 - switch i8 %.fr, label %for.inc [ + switch i8 %0, label %invoke.cont6 [ i8 13, label %if.then i8 10, label %if.then i8 9, label %if.then ] -if.then: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %invoke.cont6 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i8 noundef signext %.fr) +if.then: ; preds = %invoke.cont6 + %cmp.i3 = icmp sgt i8 %0, 31 + br i1 %cmp.i3, label %if.then, label %for.inc + +if.then: ; preds = %for.body, %for.body, %for.body, %invoke.cont6 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i8 noundef signext %0) to label %for.inc unwind label %lpad.loopexit lpad.loopexit: ; preds = %if.then @@ -25677,7 +25672,7 @@ lpad: ; preds = %lpad.loopexit.split tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.result) #52 resume { ptr, i32 } %lpad.phi -for.inc: ; preds = %switch.early.test, %if.then +for.inc: ; preds = %if.then, %if.then %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %it.sroa.0.011, i64 1 %call2 = tail call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %str) #52 %cmp.i.not = icmp eq ptr %incdec.ptr.i, %call2 diff --git a/bench/hyperscan/optimized/gtest-all.ll b/bench/hyperscan/optimized/gtest-all.ll index f89a6aeb7da..222635cb7b6 100644 --- a/bench/hyperscan/optimized/gtest-all.ll +++ b/bench/hyperscan/optimized/gtest-all.ll @@ -26814,6 +26814,9 @@ _ZN7testing7MessageC2Ev.exit: ; preds = %3 i8 38, label %28 i8 39, label %29 i8 34, label %44 + i8 13, label %.thread + i8 10, label %.thread + i8 9, label %.thread ] 25: ; preds = %21 @@ -26899,20 +26902,13 @@ _ZN7testing7MessageC2Ev.exit: ; preds = %3 62: ; preds = %21 %63 = icmp sgt i8 %24, 31 - br i1 %63, label %64, label %switch.early.test + br i1 %63, label %switch.early.test, label %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit -switch.early.test: ; preds = %62 - switch i8 %24, label %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit [ - i8 13, label %64 - i8 10, label %64 - i8 9, label %64 - ] - -64: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %62 - br i1 %2, label %65, label %81 +switch.early.test: ; preds = %21, %21, %21, %62 + br i1 %2, label %64, label %_ZN7testing8internal24XmlUnitTestResultPrinter24IsNormalizableWhitespaceEc.exit -65: ; preds = %64 - switch i8 %24, label %81 [ +65: ; preds = %.thread + switch i8 %24, label %_ZN7testing8internal24XmlUnitTestResultPrinter24IsNormalizableWhitespaceEc.exit [ i8 13, label %66 i8 10, label %66 i8 9, label %66 @@ -26925,7 +26921,7 @@ switch.early.test: ; preds = %62 _ZN7testing7MessagelsIA4_cEERS0_RKT_.exit: ; preds = %66 call void @llvm.lifetime.start.p0(ptr nonnull %7) invoke void @_ZN7testing8internal6String10FormatByteB5cxx11Eh(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, i8 noundef zeroext %24) - to label %68 unwind label %75 + to label %67 unwind label %75 68: ; preds = %_ZN7testing7MessagelsIA4_cEERS0_RKT_.exit %69 = load ptr, ptr %7, align 8 @@ -26967,11 +26963,11 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29: ; preds = %77, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27, %75 - %.pn = phi { ptr, i32 } [ %76, %75 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27 ], [ %78, %77 ] + %.pn = phi { ptr, i32 } [ %76, %74 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i27 ], [ %78, %76 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN7testing7MessageD2Ev.exit35 -81: ; preds = %65, %64 +81: ; preds = %65, %.thread call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 %24, ptr %4, align 1 %82 = load ptr, ptr %11, align 8 @@ -26995,7 +26991,7 @@ _ZN7testing7MessagelsIcEERS0_RKT_.exit33: ; preds = %90, %88 call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit -_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit: ; preds = %.invoke, %switch.early.test, %_ZN7testing7MessagelsIcEERS0_RKT_.exit33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %59, %41 +_ZN7testing7MessagelsIA5_cEERS0_RKT_.exit: ; preds = %.invoke, %_ZN7testing7MessagelsIcEERS0_RKT_.exit33, %62, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %59, %41 %92 = add nuw i64 %.01253, 1 %93 = load i64, ptr %17, align 8 %94 = icmp ult i64 %92, %93 @@ -27005,7 +27001,7 @@ _ZN7testing7MessageD2Ev.exit: ; preds = %._crit_edge %95 = load ptr, ptr %8, align 8 %96 = getelementptr inbounds nuw i8, ptr %95, i64 8 %97 = load ptr, ptr %96, align 8 - call void %97(ptr noundef nonnull align 8 dereferenceable(128) %8) #56 + call void %95(ptr noundef nonnull align 8 dereferenceable(128) %8) #56 ret void 98: ; preds = %._crit_edge @@ -27014,11 +27010,11 @@ _ZN7testing7MessageD2Ev.exit: ; preds = %._crit_edge br label %_ZN7testing7MessageD2Ev.exit35 _ZN7testing7MessageD2Ev.exit35: ; preds = %26, %42, %60, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29, %98 - %.pn.pn.pn = phi { ptr, i32 } [ %99, %98 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 ], [ %27, %26 ], [ %43, %42 ], [ %61, %60 ] + %.pn.pn.pn = phi { ptr, i32 } [ %99, %96 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29 ], [ %27, %26 ], [ %43, %42 ], [ %61, %60 ] %100 = load ptr, ptr %8, align 8 %101 = getelementptr inbounds nuw i8, ptr %100, i64 8 %102 = load ptr, ptr %101, align 8 - call void %102(ptr noundef nonnull align 8 dereferenceable(128) %8) #56 + call void %100(ptr noundef nonnull align 8 dereferenceable(128) %8) #56 br label %common.resume } @@ -27056,30 +27052,29 @@ define hidden void @_ZN7testing8internal24XmlUnitTestResultPrinter26RemoveInvali %13 = phi ptr [ %35, %33 ], [ %9, %.lr.ph.preheader ] %.sroa.07.012 = phi ptr [ %36, %33 ], [ %9, %.lr.ph.preheader ] %14 = load i8, ptr %.sroa.07.012, align 1 - %.fr = freeze i8 %14 - %15 = icmp sgt i8 %.fr, 31 - br i1 %15, label %16, label %switch.early.test - -switch.early.test: ; preds = %.lr.ph - switch i8 %.fr, label %33 [ - i8 13, label %16 - i8 10, label %16 - i8 9, label %16 + switch i8 %14, label %15 [ + i8 13, label %.thread + i8 10, label %switch.early.test + i8 9, label %.thread ] -16: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %.lr.ph +16: ; preds = %.lr.ph + %16 = icmp sgt i8 %14, 31 + br i1 %16, label %.thread, label %33 + +.thread: ; preds = %.lr.ph, %.lr.ph, %.lr.ph, %15 %17 = load i64, ptr %4, align 8 %18 = add i64 %17, 1 %19 = load ptr, ptr %0, align 8 %20 = icmp eq ptr %19, %3 br i1 %20, label %21, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i -21: ; preds = %16 +21: ; preds = %.thread %22 = icmp ult i64 %17, 16 tail call void @llvm.assume(i1 %22) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %21, %16 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %21, %.thread %23 = load i64, ptr %3, align 8 %24 = select i1 %20, i64 15, i64 %23 %25 = icmp ugt i64 %18, %24 @@ -27096,7 +27091,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, %.noexc %27 = phi ptr [ %.pre.i, %.noexc ], [ %19, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] %28 = getelementptr inbounds nuw i8, ptr %27, i64 %17 - store i8 %.fr, ptr %28, align 1 + store i8 %14, ptr %28, align 1 store i64 %18, ptr %4, align 8 %29 = load ptr, ptr %0, align 8 %30 = getelementptr inbounds nuw i8, ptr %29, i64 %18 @@ -27110,9 +27105,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit: ; preds cleanup br label %38 -33: ; preds = %switch.early.test, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit - %34 = phi i64 [ %12, %switch.early.test ], [ %.pre13, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ] - %35 = phi ptr [ %13, %switch.early.test ], [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ] +33: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit, %15 + %34 = phi i64 [ %.pre13, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ], [ %12, %15 ] + %35 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit ], [ %13, %15 ] %36 = getelementptr inbounds nuw i8, ptr %.sroa.07.012, i64 1 %37 = getelementptr inbounds nuw i8, ptr %35, i64 %34 %.not = icmp eq ptr %36, %37 diff --git a/bench/jemalloc/optimized/large.ll b/bench/jemalloc/optimized/large.ll index 0e8fd734f1e..728122f8833 100644 --- a/bench/jemalloc/optimized/large.ll +++ b/bench/jemalloc/optimized/large.ll @@ -1482,8 +1482,8 @@ define hidden void @je_large_prof_info_get(ptr noundef %0, ptr noundef %1, ptr n %.0.i.i = inttoptr i64 %6 to ptr %7 = getelementptr inbounds nuw i8, ptr %2, i64 8 store ptr %.0.i.i, ptr %7, align 8, !tbaa !125 - %8 = icmp ult i64 %6, 2 - br i1 %8, label %14, label %9 + %8 = icmp ugt i64 %6, 1 + br i1 %8, label %9, label %14 9: ; preds = %4 %10 = getelementptr inbounds nuw i8, ptr %1, i64 64 @@ -1498,7 +1498,7 @@ define hidden void @je_large_prof_info_get(ptr noundef %0, ptr noundef %1, ptr n tail call void @je_prof_recent_alloc_reset(ptr noundef %0, ptr noundef nonnull %1) #11 br label %14 -14: ; preds = %4, %9, %13 +14: ; preds = %9, %13, %4 ret void } diff --git a/bench/jiff-rs/optimized/9izaa421s43j4ihx0iahajgea.ll b/bench/jiff-rs/optimized/9izaa421s43j4ihx0iahajgea.ll index c1d00b656c4..170719d7c2e 100644 --- a/bench/jiff-rs/optimized/9izaa421s43j4ihx0iahajgea.ll +++ b/bench/jiff-rs/optimized/9izaa421s43j4ihx0iahajgea.ll @@ -3846,10 +3846,10 @@ define hidden noundef zeroext i1 @"_ZN88_$LT$jiff..shared..posix..AbbreviationDi "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6cb4e8776eb6df79E.exit.thread.i": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6cb4e8776eb6df79E.exit.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdf097ce691a76589E.exit14.i.i.i", %27, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdf097ce691a76589E.exit12.i.i.i" %49 = phi ptr [ %40, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6cb4e8776eb6df79E.exit.i" ], [ %30, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdf097ce691a76589E.exit14.i.i.i" ], [ %20, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdf097ce691a76589E.exit12.i.i.i" ], [ %14, %27 ] %spec.select.i7.i = phi i32 [ %48, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6cb4e8776eb6df79E.exit.i" ], [ %37, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdf097ce691a76589E.exit14.i.i.i" ], [ %25, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdf097ce691a76589E.exit12.i.i.i" ], [ %28, %27 ] - switch i32 %spec.select.i7.i, label %11 [ - i32 45, label %_ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit18 - i32 43, label %_ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit18 - ] + %50 = add nsw i32 %spec.select.i7.i, -43 + %switch.and.i.i.i = and i32 %50, -3 + %switch.selectcmp.i.i.i = icmp eq i32 %switch.and.i.i.i, 0 + br i1 %switch.selectcmp.i.i.i, label %_ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit18, label %11 _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6cb4e8776eb6df79E.exit.i", %11 call void @llvm.lifetime.start.p0(ptr nonnull %5) @@ -3874,7 +3874,7 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit: ; preds = %"_ZN81_$LT call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %54 -_ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit18: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6cb4e8776eb6df79E.exit.thread.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6cb4e8776eb6df79E.exit.thread.i" +_ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit18: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6cb4e8776eb6df79E.exit.thread.i" call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr %7, ptr %6, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 diff --git a/bench/libcxx/optimized/header_exportable_declarations.ll b/bench/libcxx/optimized/header_exportable_declarations.ll index b8cc8837835..0df47680a59 100644 --- a/bench/libcxx/optimized/header_exportable_declarations.ll +++ b/bench/libcxx/optimized/header_exportable_declarations.ll @@ -4589,7 +4589,6 @@ _ZN4llvm16dyn_cast_or_nullIN5clang10RecordDeclEKNS1_9NamedDeclEEEDaPT0_.exit.i: 28: ; preds = %_ZN4llvm16dyn_cast_or_nullIN5clang10RecordDeclEKNS1_9NamedDeclEEEDaPT0_.exit.i switch i32 %15, label %.critedge39 [ i32 62, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 - i32 73, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 i32 46, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 i32 45, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 i32 44, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 @@ -4597,6 +4596,7 @@ _ZN4llvm16dyn_cast_or_nullIN5clang10RecordDeclEKNS1_9NamedDeclEEEDaPT0_.exit.i: i32 42, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 i32 41, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 i32 40, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 + i32 73, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 i32 81, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 i32 66, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 i32 65, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116 @@ -4609,7 +4609,7 @@ _ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit: ; preds = %26 %.not.i = icmp eq i32 %30, 0 br i1 %.not.i, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116, label %.critedge39 -_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116: ; preds = %28, %28, %28, %28, %28, %28, %28, %28, %28, %28, %28, %28, %28, %18, %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit +_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit.thread116: ; preds = %18, %28, %28, %28, %28, %28, %28, %28, %28, %28, %28, %28, %28, %28, %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit call void @llvm.lifetime.start.p0(ptr nonnull %6) call fastcc void @_ZN6libcppL18get_qualified_nameB5cxx11ERKN5clang9NamedDeclE(ptr dead_on_unwind noalias writable align 8 %6, ptr noundef nonnull align 8 dereferenceable(48) %9) %31 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -5129,7 +5129,6 @@ _ZN4llvm16dyn_cast_or_nullIN5clang10RecordDeclEKNS1_9NamedDeclEEEDaPT0_.exit.i64 215: ; preds = %_ZN4llvm16dyn_cast_or_nullIN5clang10RecordDeclEKNS1_9NamedDeclEEEDaPT0_.exit.i64 switch i32 %202, label %.critedge39 [ i32 62, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 - i32 73, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 i32 46, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 i32 45, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 i32 44, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 @@ -5137,6 +5136,7 @@ _ZN4llvm16dyn_cast_or_nullIN5clang10RecordDeclEKNS1_9NamedDeclEEEDaPT0_.exit.i64 i32 42, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 i32 41, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 i32 40, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 + i32 73, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 i32 81, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 i32 66, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 i32 65, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125 @@ -5149,7 +5149,7 @@ _ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67: ; preds = %213 %.not.i66 = icmp eq i32 %217, 0 br i1 %.not.i66, label %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125, label %.critedge39 -_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125: ; preds = %215, %215, %215, %215, %215, %215, %215, %215, %215, %215, %215, %215, %215, %205, %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67 +_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67.thread125: ; preds = %205, %215, %215, %215, %215, %215, %215, %215, %215, %215, %215, %215, %215, %215, %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67 call void @llvm.lifetime.start.p0(ptr nonnull %8) call fastcc void @_ZN6libcppL18get_qualified_nameB5cxx11ERKN5clang9NamedDeclE(ptr dead_on_unwind noalias writable align 8 %8, ptr noundef nonnull align 8 dereferenceable(48) %184) %218 = getelementptr inbounds nuw i8, ptr %8, i64 8 @@ -5311,7 +5311,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit111: ; preds = %.c call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %.critedge39 -.critedge39: ; preds = %215, %28, %213, %209, %201, %197, %26, %22, %14, %10, %_ZNK5clang4Decl14getDeclContextEv.exit, %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit108, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit55, %183, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit105, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit111, %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit +.critedge39: ; preds = %215, %213, %209, %201, %197, %28, %26, %22, %14, %10, %_ZNK5clang4Decl14getDeclContextEv.exit, %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit67, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit108, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit55, %183, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit105, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit111, %_ZN6libcppL21is_viable_declarationEPKN5clang9NamedDeclE.exit ret void 270: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit100, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61 diff --git a/bench/lightgbm/optimized/tree.ll b/bench/lightgbm/optimized/tree.ll index 69f282939f8..3a55dc0265e 100644 --- a/bench/lightgbm/optimized/tree.ll +++ b/bench/lightgbm/optimized/tree.ll @@ -38954,9 +38954,9 @@ define linkonce_odr ptr @_ZN3fmt3v116detail5writeIcNS0_14basic_appenderIcEEEET0_ %7 = load i64, ptr %2, align 8, !tbaa !500 %8 = trunc i64 %7 to i8 %9 = and i8 %8, 7 - %.off.i = add nsw i8 %9, -2 - %switch.i = icmp ult i8 %.off.i, 5 - br i1 %switch.i, label %24, label %10 + %.off.i = add nsw i8 %9, -7 + %switch.i = icmp ult i8 %.off.i, -5 + br i1 %switch.i, label %11, label %24 10: ; preds = %4 %11 = trunc i64 %7 to i32 @@ -39007,7 +39007,7 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %14 br label %.critedge.i .critedge.i: ; preds = %..critedge.i_crit_edge, %24 - %30 = phi i64 [ %.pre, %..critedge.i_crit_edge ], [ %7, %24 ] + %30 = phi i64 [ %.pre, %..critedge.i_crit_edge ], [ %7, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit ] %31 = lshr i64 %30, 10 %32 = and i64 %31, 3 %33 = getelementptr inbounds nuw i32, ptr @__const._ZN3fmt3v116detail18make_write_int_argIhEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4signE.prefixes, i64 %32 @@ -39020,12 +39020,12 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %14 br label %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit _ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit: ; preds = %26, %.critedge.i - %.sroa.010.0.i = phi ptr [ %37, %.critedge.i ], [ %0, %26 ] + %.sroa.010.0.i = phi ptr [ %37, %.critedge.i ], [ %0, %27 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %38 38: ; preds = %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit - %.sroa.08.0 = phi ptr [ %23, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit ], [ %.sroa.010.0.i, %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit ] + %.sroa.08.0 = phi ptr [ %23, %20 ], [ %.sroa.010.0.i, %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit ] ret ptr %.sroa.08.0 } diff --git a/bench/linux/optimized/svcauth_gss.ll b/bench/linux/optimized/svcauth_gss.ll index 1dc8be16bbd..29ef846f8f8 100644 --- a/bench/linux/optimized/svcauth_gss.ll +++ b/bench/linux/optimized/svcauth_gss.ll @@ -3090,20 +3090,21 @@ declare dso_local i64 @xdr_stream_decode_opaque_auth(ptr noundef, ptr noundef, p ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define internal fastcc range(i32 -16, 1) i32 @set_gss_proxy(ptr noundef %0) unnamed_addr #1 align 16 { - %2 = load i32, ptr @sunrpc_net_id, align 4 +switch.return: + %1 = load i32, ptr @sunrpc_net_id, align 4 tail call void @__rcu_read_lock() #24 %3 = getelementptr inbounds nuw i8, ptr %0, i64 2536 %4 = load volatile ptr, ptr %3, align 8 - %5 = zext i32 %2 to i64 + %5 = zext i32 %1 to i64 %6 = getelementptr ptr, ptr %4, i64 %5 %7 = load ptr, ptr %6, align 8 tail call void @__rcu_read_unlock() #24 %8 = getelementptr inbounds nuw i8, ptr %7, i64 184 %9 = tail call i32 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; cmpxchgl $2,$1", "={ax},=*m,r,0,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) %8, i32 1, i32 -1, ptr nonnull elementtype(i32) %8) #24, !srcloc !53 - %10 = icmp eq i32 %9, -1 - %11 = icmp eq i32 %9, 1 - %12 = or i1 %10, %11 - %13 = select i1 %12, i32 0, i32 -16 + %9 = add i32 %9, 1 + %switch.and = and i32 %9, -3 + %switch.selectcmp = icmp eq i32 %switch.and, 0 + %13 = select i1 %switch.selectcmp, i32 0, i32 -16 ret i32 %13 } diff --git a/bench/llama.cpp/optimized/unicode.ll b/bench/llama.cpp/optimized/unicode.ll index 81d4dddb5fc..5a5a415d87b 100644 --- a/bench/llama.cpp/optimized/unicode.ll +++ b/bench/llama.cpp/optimized/unicode.ll @@ -52354,13 +52354,19 @@ _ZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb0ELb1ELb1EEclEw.exit ; Function Attrs: mustprogress uwtable define linkonce_odr noundef zeroext i1 @_ZNSt17_Function_handlerIFbwENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb0EEEE9_M_invokeERKSt9_Any_dataOw(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(4) %1) #2 comdat align 2 { %3 = load i32, ptr %1, align 4, !tbaa !201 - %.not.i.i.i.i = icmp ne i32 %3, 10 - %.not9.i.i.i.i = icmp ne i32 %3, 13 - %or.cond.not12.i.i.i.i = and i1 %.not.i.i.i.i, %.not9.i.i.i.i - %4 = add i32 %3, -8234 - %5 = icmp ult i32 %4, -2 - %spec.select.i.i.i.i = and i1 %or.cond.not12.i.i.i.i, %5 - ret i1 %spec.select.i.i.i.i + switch i32 %3, label %ret.false.i.i.i.i [ + i32 8232, label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb0EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + i32 13, label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb0EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + i32 10, label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb0EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + i32 8233, label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb0EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + ] + +ret.false.i.i.i.i: ; preds = %2 + br label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb0EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + +_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb0EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit: ; preds = %2, %2, %2, %2, %ret.false.i.i.i.i + %4 = phi i1 [ true, %ret.false.i.i.i.i ], [ false, %2 ], [ false, %2 ], [ false, %2 ], [ false, %2 ] + ret i1 %4 } ; Function Attrs: mustprogress uwtable @@ -52391,13 +52397,19 @@ _ZNSt14_Function_base13_Base_managerINSt8__detail11_AnyMatcherINSt7__cxx1112rege ; Function Attrs: mustprogress uwtable define linkonce_odr noundef zeroext i1 @_ZNSt17_Function_handlerIFbwENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOw(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(4) %1) #2 comdat align 2 { %3 = load i32, ptr %1, align 4, !tbaa !201 - %.not.i.i.i.i = icmp ne i32 %3, 10 - %.not9.i.i.i.i = icmp ne i32 %3, 13 - %or.cond.not12.i.i.i.i = and i1 %.not.i.i.i.i, %.not9.i.i.i.i - %4 = add i32 %3, -8234 - %5 = icmp ult i32 %4, -2 - %spec.select.i.i.i.i = and i1 %or.cond.not12.i.i.i.i, %5 - ret i1 %spec.select.i.i.i.i + switch i32 %3, label %ret.false.i.i.i.i [ + i32 8232, label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb1EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + i32 13, label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb1EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + i32 10, label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb1EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + i32 8233, label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb1EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + ] + +ret.false.i.i.i.i: ; preds = %2 + br label %_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb1EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit + +_ZSt10__invoke_rIbRNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIwEELb1ELb0ELb1EEEJwEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit: ; preds = %2, %2, %2, %2, %ret.false.i.i.i.i + %4 = phi i1 [ true, %ret.false.i.i.i.i ], [ false, %2 ], [ false, %2 ], [ false, %2 ], [ false, %2 ] + ret i1 %4 } ; Function Attrs: mustprogress uwtable diff --git a/bench/llvm/optimized/CSEInfo.ll b/bench/llvm/optimized/CSEInfo.ll index f7341b48c47..c269c8647ab 100644 --- a/bench/llvm/optimized/CSEInfo.ll +++ b/bench/llvm/optimized/CSEInfo.ll @@ -492,11 +492,18 @@ define dso_local noundef zeroext i1 @_ZN4llvm13CSEConfigFull12shouldCSEOpcEj(ptr ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local noundef zeroext i1 @_ZN4llvm21CSEConfigConstantOnly12shouldCSEOpcEj(ptr nonnull readnone align 8 captures(none) %0, i32 noundef %1) unnamed_addr #2 align 2 { - %3 = add i32 %1, -133 - %or.cond = icmp ult i32 %3, 2 - %4 = icmp eq i32 %1, 67 - %spec.select = or i1 %4, %or.cond - ret i1 %spec.select + switch i32 %1, label %ret.false [ + i32 134, label %switch.return + i32 133, label %switch.return + i32 67, label %switch.return + ] + +ret.false: ; preds = %2 + br label %switch.return + +switch.return: ; preds = %2, %2, %2, %ret.false + %3 = phi i1 [ false, %ret.false ], [ true, %2 ], [ true, %2 ], [ true, %2 ] + ret i1 %3 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/llvm/optimized/CallEvent.ll b/bench/llvm/optimized/CallEvent.ll index 7afc2b93129..e2b0145e490 100644 --- a/bench/llvm/optimized/CallEvent.ll +++ b/bench/llvm/optimized/CallEvent.ll @@ -2016,25 +2016,23 @@ declare void @_ZNK5clang4Decl5printERN4llvm11raw_ostreamERKNS_14PrintingPolicyEj define dso_local noundef zeroext i1 @_ZN5clang4ento9CallEvent10isCallStmtEPKNS_4StmtE(ptr noundef readonly captures(none) %0) local_unnamed_addr #6 align 2 { %2 = load i16, ptr %0, align 8 %3 = and i16 %2, 511 - %switch.tableidx = add nsw i16 %3, -35 - %4 = icmp ult i16 %switch.tableidx, 61 - br i1 %4, label %switch.hole_check, label %5 - -5: ; preds = %switch.hole_check, %1 - %6 = add nsw i16 %3, -115 - %spec.select.i.i.i.i.i.i.i.i.i.i.i = icmp ult i16 %6, 2 - %7 = icmp eq i16 %3, 108 - %spec.select.i.i.i = or i1 %7, %spec.select.i.i.i.i.i.i.i.i.i.i.i - br label %_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit + %switch.tableidx = add nsw i16 %3, -91 + %4 = icmp ult i16 %switch.tableidx, 5 + br i1 %4, label %_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit, label %5 + +5: ; preds = %1 + switch i16 %3, label %ret.false.i.i.i [ + i16 35, label %_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit + i16 116, label %_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit + i16 115, label %_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit + i16 108, label %_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit + ] -switch.hole_check: ; preds = %1 - %switch.maskindex = zext nneg i16 %switch.tableidx to i64 - %switch.shifted = lshr i64 2233785415175766017, %switch.maskindex - %switch.lobit = trunc i64 %switch.shifted to i1 - br i1 %switch.lobit, label %_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit, label %5 +switch.hole_check: ; preds = %5 + br label %_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit -_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit: ; preds = %switch.hole_check, %5 - %8 = phi i1 [ %spec.select.i.i.i, %5 ], [ true, %switch.hole_check ] +_ZN4llvm3isaIN5clang8CallExprENS1_15ObjCMessageExprEJNS1_16CXXConstructExprENS1_10CXXNewExprEEPKNS1_4StmtEEEbRKT2_.exit: ; preds = %1, %5, %5, %5, %5, %switch.hole_check + %8 = phi i1 [ true, %1 ], [ true, %5 ], [ false, %ret.false.i.i.i ], [ true, %5 ], [ true, %5 ], [ true, %5 ] ret i1 %8 } diff --git a/bench/llvm/optimized/CodeGenDAGPatterns.ll b/bench/llvm/optimized/CodeGenDAGPatterns.ll index c64c4b9af06..e58d6d5cd5e 100644 --- a/bench/llvm/optimized/CodeGenDAGPatterns.ll +++ b/bench/llvm/optimized/CodeGenDAGPatterns.ll @@ -46162,11 +46162,24 @@ declare i32 @memcmp(ptr noundef captures(none), ptr noundef captures(none), i64 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbN4llvm3MVTEEZNS0_15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS4_E3$_0E9_M_invokeERKSt9_Any_dataOS1_"(ptr nonnull readnone align 8 captures(none) %0, ptr noundef nonnull readonly align 2 captures(none) dereferenceable(2) %1) #25 align 2 { %.val = load i16, ptr %1, align 2, !tbaa !22 - %3 = add i16 %.val, -2 - %spec.select.i.i.i.i = icmp ult i16 %3, 8 - %4 = icmp eq i16 %.val, 510 - %spec.select.i.i.i = or i1 %4, %spec.select.i.i.i.i - ret i1 %spec.select.i.i.i + switch i16 %.val, label %ret.false.i.i.i [ + i16 510, label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + i16 9, label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + i16 8, label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + i16 7, label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + i16 6, label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + i16 5, label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + i16 4, label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + i16 3, label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + i16 2, label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + ] + +ret.false.i.i.i: ; preds = %2 + br label %"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit" + +"_ZSt10__invoke_rIbRZN4llvm15TypeSetByHwMode9intersectERNS0_19MachineValueTypeSetERKS2_E3$_0JNS0_3MVTEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESA_E4typeEOSB_DpOSC_.exit": ; preds = %2, %2, %2, %2, %2, %2, %2, %2, %2, %ret.false.i.i.i + %3 = phi i1 [ false, %ret.false.i.i.i ], [ true, %2 ], [ true, %2 ], [ true, %2 ], [ true, %2 ], [ true, %2 ], [ true, %2 ], [ true, %2 ], [ true, %2 ], [ true, %2 ] + ret i1 %3 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable diff --git a/bench/llvm/optimized/Core.ll b/bench/llvm/optimized/Core.ll index 36d28e49e9b..3f67a13b43e 100644 --- a/bench/llvm/optimized/Core.ll +++ b/bench/llvm/optimized/Core.ll @@ -4615,16 +4615,14 @@ _ZN4llvm3isaINS_13IntrinsicInstEPKNS_5ValueEEEbRKT0_.exit.i.i.i.i.i.i.i.i.i: ; p _ZN4llvm14CastIsPossibleINS_10MemCpyInstEPNS_5ValueEvE10isPossibleERKS3_.exit.i.i.i: ; preds = %_ZN4llvm3isaINS_13IntrinsicInstEPKNS_5ValueEEEbRKT0_.exit.i.i.i.i.i.i.i.i.i %19 = getelementptr inbounds nuw i8, ptr %7, i64 36 %20 = load i32, ptr %19, align 4, !tbaa !252 - switch i32 %20, label %_ZN4llvm16dyn_cast_or_nullINS_10MemCpyInstENS_5ValueEEEDaPT0_.exit [ - i32 240, label %21 - i32 238, label %21 - ] - -21: ; preds = %_ZN4llvm14CastIsPossibleINS_10MemCpyInstEPNS_5ValueEvE10isPossibleERKS3_.exit.i.i.i, %_ZN4llvm14CastIsPossibleINS_10MemCpyInstEPNS_5ValueEvE10isPossibleERKS3_.exit.i.i.i + %21 = add i32 %20, -238 + %switch.and.i.i.i.i.i.i.i.i.i.i = and i32 %21, -3 + %switch.selectcmp.i.i.i.i.i.i.i.i.i.i = icmp eq i32 %switch.and.i.i.i.i.i.i.i.i.i.i, 0 + %spec.select.i.i.i = select i1 %switch.selectcmp.i.i.i.i.i.i.i.i.i.i, ptr %0, ptr null br label %_ZN4llvm16dyn_cast_or_nullINS_10MemCpyInstENS_5ValueEEEDaPT0_.exit -_ZN4llvm16dyn_cast_or_nullINS_10MemCpyInstENS_5ValueEEEDaPT0_.exit: ; preds = %1, %2, %5, %8, %_ZN4llvm16dyn_cast_or_nullINS_8FunctionENS_5ValueEEEDaPT0_.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZN4llvm3isaINS_13IntrinsicInstEPKNS_5ValueEEEbRKT0_.exit.i.i.i.i.i.i.i.i.i, %_ZN4llvm14CastIsPossibleINS_10MemCpyInstEPNS_5ValueEvE10isPossibleERKS3_.exit.i.i.i, %21 - %.0.i.i = phi ptr [ null, %1 ], [ %0, %21 ], [ null, %_ZN4llvm14CastIsPossibleINS_10MemCpyInstEPNS_5ValueEvE10isPossibleERKS3_.exit.i.i.i ], [ null, %_ZN4llvm3isaINS_13IntrinsicInstEPKNS_5ValueEEEbRKT0_.exit.i.i.i.i.i.i.i.i.i ], [ null, %2 ], [ null, %_ZN4llvm16dyn_cast_or_nullINS_8FunctionENS_5ValueEEEDaPT0_.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i ], [ null, %5 ], [ null, %8 ] +_ZN4llvm16dyn_cast_or_nullINS_10MemCpyInstENS_5ValueEEEDaPT0_.exit: ; preds = %1, %2, %5, %8, %_ZN4llvm16dyn_cast_or_nullINS_8FunctionENS_5ValueEEEDaPT0_.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZN4llvm3isaINS_13IntrinsicInstEPKNS_5ValueEEEbRKT0_.exit.i.i.i.i.i.i.i.i.i, %_ZN4llvm14CastIsPossibleINS_10MemCpyInstEPNS_5ValueEvE10isPossibleERKS3_.exit.i.i.i + %.0.i.i = phi ptr [ null, %1 ], [ null, %8 ], [ %spec.select.i.i.i, %_ZN4llvm14CastIsPossibleINS_10MemCpyInstEPNS_5ValueEvE10isPossibleERKS3_.exit.i.i.i ], [ null, %_ZN4llvm3isaINS_13IntrinsicInstEPKNS_5ValueEEEbRKT0_.exit.i.i.i.i.i.i.i.i.i ], [ null, %2 ], [ null, %_ZN4llvm16dyn_cast_or_nullINS_8FunctionENS_5ValueEEEDaPT0_.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i ], [ null, %5 ] ret ptr %.0.i.i } diff --git a/bench/llvm/optimized/DeclCXX.ll b/bench/llvm/optimized/DeclCXX.ll index 295601419d2..c17865a6088 100644 --- a/bench/llvm/optimized/DeclCXX.ll +++ b/bench/llvm/optimized/DeclCXX.ll @@ -16015,12 +16015,11 @@ _ZNK5clang18CXXCtorInitializer12getAnyMemberEv.exit: ; preds = %9, %13 br label %34 23: ; preds = %1 - switch i64 %8, label %26 [ - i64 4, label %24 - i64 2, label %24 - ] + %24 = add nsw i64 %8, -2 + %switch.selectcmp.i = icmp ult i64 %24, 4 + br i1 %switch.selectcmp.i, label %24, label %27 -24: ; preds = %23, %23 +24: ; preds = %23 %25 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.sroa.0.0.copyload.i5 = load i32, ptr %25, align 8, !tbaa !460 br label %34 @@ -16044,7 +16043,7 @@ _ZNK5clang18CXXCtorInitializer12getAnyMemberEv.exit: ; preds = %9, %13 br label %34 34: ; preds = %26, %28, %24, %_ZNK5clang18CXXCtorInitializer12getAnyMemberEv.exit - %.sroa.0.0 = phi i32 [ %.sroa.0.0.copyload.i, %_ZNK5clang18CXXCtorInitializer12getAnyMemberEv.exit ], [ %.sroa.0.0.copyload.i5, %24 ], [ %33, %28 ], [ 0, %26 ] + %.sroa.0.0 = phi i32 [ %.sroa.0.0.copyload.i, %_ZNK5clang18CXXCtorInitializer12getAnyMemberEv.exit ], [ %.sroa.0.0.copyload.i5, %25 ], [ %33, %29 ], [ 0, %27 ] ret i32 %.sroa.0.0 } @@ -16093,12 +16092,11 @@ _ZNK5clang18CXXCtorInitializer12getAnyMemberEv.exit: ; preds = %9, %13 br label %.critedge 25: ; preds = %1 - switch i64 %8, label %28 [ - i64 4, label %26 - i64 2, label %26 - ] + %26 = add nsw i64 %8, -2 + %switch.selectcmp.i.i = icmp ult i64 %26, 4 + br i1 %switch.selectcmp.i.i, label %26, label %29 -26: ; preds = %25, %25 +26: ; preds = %25 %27 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.sroa.0.0.copyload.i5.i = load i32, ptr %27, align 8, !tbaa !460 br label %_ZNK5clang18CXXCtorInitializer17getSourceLocationEv.exit @@ -16122,7 +16120,7 @@ _ZNK5clang18CXXCtorInitializer12getAnyMemberEv.exit: ; preds = %9, %13 br label %_ZNK5clang18CXXCtorInitializer17getSourceLocationEv.exit _ZNK5clang18CXXCtorInitializer17getSourceLocationEv.exit: ; preds = %26, %28, %30 - %.sroa.0.0.i = phi i32 [ 0, %28 ], [ %.sroa.0.0.copyload.i5.i, %26 ], [ %35, %30 ] + %.sroa.0.0.i = phi i32 [ 0, %29 ], [ %.sroa.0.0.copyload.i5.i, %27 ], [ %35, %30 ] %36 = getelementptr inbounds nuw i8, ptr %0, i64 24 %.sroa.0.0.copyload.i = load i32, ptr %36, align 8, !tbaa !460 br label %.critedge diff --git a/bench/llvm/optimized/ItaniumDemangle.ll b/bench/llvm/optimized/ItaniumDemangle.ll index a393f71ea4f..effda2f9fb4 100644 --- a/bench/llvm/optimized/ItaniumDemangle.ll +++ b/bench/llvm/optimized/ItaniumDemangle.ll @@ -2562,14 +2562,16 @@ define dso_local noundef zeroext i1 @_ZNK4llvm23ItaniumPartialDemangler13isSpeci ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable define dso_local noundef zeroext i1 @_ZNK4llvm23ItaniumPartialDemangler6isDataEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %0) local_unnamed_addr #6 align 2 { - %2 = load ptr, ptr %0, align 8, !tbaa !75 - %3 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %4 = load i8, ptr %3, align 8, !tbaa !64 - %5 = icmp ne i8 %4, 19 - %6 = add i8 %4, -23 - %7 = icmp ult i8 %6, -2 - %8 = and i1 %5, %7 - ret i1 %8 +switch.return: + %1 = load ptr, ptr %0, align 8, !tbaa !75 + %2 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %3 = load i8, ptr %2, align 8, !tbaa !64 + %4 = icmp ugt i8 %3, 22 + %switch.cast = zext nneg i8 %3 to i23 + %switch.downshift = lshr i23 1572863, %switch.cast + %switch.masked = trunc i23 %switch.downshift to i1 + %5 = select i1 %4, i1 true, i1 %switch.masked + ret i1 %5 } ; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) diff --git a/bench/llvm/optimized/OpenMPKinds.ll b/bench/llvm/optimized/OpenMPKinds.ll index 3075d25c3a6..e8b9b80334c 100644 --- a/bench/llvm/optimized/OpenMPKinds.ll +++ b/bench/llvm/optimized/OpenMPKinds.ll @@ -1669,11 +1669,14 @@ _ZN4llvm12is_containedINS_8ArrayRefINS_3omp9DirectiveEEES3_EEbOT_RKT0_.exit: ; p ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local noundef zeroext i1 @_ZN5clang37isOpenMPTargetDataManagementDirectiveEN4llvm3omp9DirectiveE(i32 noundef %0) local_unnamed_addr #4 { - %2 = add i32 %0, -70 - %or.cond3 = icmp ult i32 %2, 3 - %3 = icmp eq i32 %0, 86 - %spec.select = or i1 %3, %or.cond3 - ret i1 %spec.select +switch.return: + %switch.tableidx = add i32 %0, -70 + %3 = icmp ult i32 %switch.tableidx, 17 + %switch.cast = trunc i32 %switch.tableidx to i17 + %switch.downshift = lshr i17 -65529, %switch.cast + %switch.masked = trunc i17 %switch.downshift to i1 + %2 = select i1 %1, i1 %switch.masked, i1 false + ret i1 %2 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/llvm/optimized/SemaExprMember.ll b/bench/llvm/optimized/SemaExprMember.ll index 951fc1a6a58..a87e2efdf33 100644 --- a/bench/llvm/optimized/SemaExprMember.ll +++ b/bench/llvm/optimized/SemaExprMember.ll @@ -431,19 +431,17 @@ _ZNK5clang12LookupResult12getFoundDeclEv.exit: ; preds = %42, %49 %.pre-phi = phi i32 [ %48, %42 ], [ %.pre16, %49 ] %51 = add nsw i32 %.pre-phi, -47 %52 = icmp ult i32 %51, 3 - br i1 %52, label %.critedge, label %53 - -53: ; preds = %_ZNK5clang12LookupResult12getFoundDeclEv.exit - %54 = icmp eq i32 %.pre-phi, 30 - %55 = icmp eq i32 %.pre-phi, 46 - %spec.select.i.i11 = or i1 %54, %55 + %53 = add nsw i32 %.pre-phi, -30 + %switch.and.i.i = and i32 %53, -17 + %switch.selectcmp.i.i = icmp eq i32 %switch.and.i.i, 0 + %54 = select i1 %52, i1 true, i1 %switch.selectcmp.i.i br label %.critedge .critedge.fold.split: ; preds = %40 br label %.critedge -.critedge: ; preds = %40, %.critedge.fold.split, %31, %53, %_ZNK5clang12LookupResult12getFoundDeclEv.exit, %_ZNK5clang9NamedDecl16isCXXClassMemberEv.exit, %4 - %.0 = phi i1 [ false, %4 ], [ true, %_ZNK5clang12LookupResult12getFoundDeclEv.exit ], [ false, %40 ], [ %spec.select.i.i11, %53 ], [ false, %31 ], [ %spec.select.i.i, %_ZNK5clang9NamedDecl16isCXXClassMemberEv.exit ], [ true, %.critedge.fold.split ] +.critedge: ; preds = %40, %.critedge.fold.split, %31, %_ZNK5clang9NamedDecl16isCXXClassMemberEv.exit, %4, %_ZNK5clang12LookupResult12getFoundDeclEv.exit + %.0 = phi i1 [ false, %4 ], [ false, %31 ], [ false, %40 ], [ %54, %_ZNK5clang12LookupResult12getFoundDeclEv.exit ], [ %spec.select.i.i, %_ZNK5clang9NamedDecl16isCXXClassMemberEv.exit ], [ true, %.critedge.fold.split ] ret i1 %.0 } diff --git a/bench/llvm/optimized/SemaFunctionEffects.ll b/bench/llvm/optimized/SemaFunctionEffects.ll index 8f5f30a5500..a953b2dc046 100644 --- a/bench/llvm/optimized/SemaFunctionEffects.ll +++ b/bench/llvm/optimized/SemaFunctionEffects.ll @@ -11426,16 +11426,15 @@ define internal noundef zeroext i1 @_ZN12_GLOBAL__N_18Analyzer22FunctionBodyASTV %.sroa.0.0.copyload = load i64, ptr %3, align 8, !tbaa !43 %.0.copyload.i.i.i.i.i.i.i.i.i = load i64, ptr %1, align 8 %4 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, 6 - switch i64 %4, label %6 [ - i64 4, label %5 - i64 2, label %5 - ] + %5 = add nsw i64 %4, -2 + %switch.selectcmp.i = icmp ult i64 %5, 4 + br i1 %switch.selectcmp.i, label %5, label %7 -5: ; preds = %2, %2 +5: ; preds = %2 store i64 2, ptr %3, align 8 br label %6 -6: ; preds = %2, %5 +6: ; preds = %6, %2 %7 = tail call noundef zeroext i1 @_ZN5clang30DynamicRecursiveASTVisitorBaseILb0EE30TraverseConstructorInitializerEPNS_18CXXCtorInitializerE(ptr noundef nonnull align 8 dereferenceable(12) %0, ptr noundef nonnull %1) #21 store i64 %.sroa.0.0.copyload, ptr %3, align 8, !tbaa !43 ret i1 %7 diff --git a/bench/llvm/optimized/TargetRegisterInfo.ll b/bench/llvm/optimized/TargetRegisterInfo.ll index 62fa841a60f..c7983f298cc 100644 --- a/bench/llvm/optimized/TargetRegisterInfo.ll +++ b/bench/llvm/optimized/TargetRegisterInfo.ll @@ -3756,24 +3756,22 @@ define dso_local i32 @_ZNK4llvm18TargetRegisterInfo16lookThruCopyLikeENS_8Regist %5 = tail call noundef ptr @_ZNK4llvm19MachineRegisterInfo10getVRegDefENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(504) %2, i32 %.sroa.07.0) #26 %6 = getelementptr inbounds nuw i8, ptr %5, i64 68 %7 = load i16, ptr %6, align 4, !tbaa !211 - switch i16 %7, label %14 [ - i16 20, label %9 - i16 12, label %8 - ] + %8 = add i16 %7, -12 + %switch.and.i = and i16 %8, -9 + %switch.selectcmp.i = icmp eq i16 %switch.and.i, 0 + br i1 %switch.selectcmp.i, label %9, label %15 8: ; preds = %4 - br label %9 - -9: ; preds = %4, %8 - %.sink16 = phi i64 [ 68, %8 ], [ 36, %4 ] - %10 = getelementptr inbounds nuw i8, ptr %5, i64 32 - %11 = load ptr, ptr %10, align 8, !tbaa !360 - %12 = getelementptr inbounds nuw i8, ptr %11, i64 %.sink16 - %storemerge = load i32, ptr %12, align 4, !tbaa !270 - %13 = icmp slt i32 %storemerge, 0 - br i1 %13, label %4, label %14 - -14: ; preds = %4, %9 + %9 = icmp eq i16 %7, 20 + %11 = getelementptr inbounds nuw i8, ptr %5, i64 32 + %12 = load ptr, ptr %11, align 8, !tbaa !360 + %. = select i1 %9, i64 36, i64 68 + %10 = getelementptr inbounds nuw i8, ptr %12, i64 %. + %11 = load i32, ptr %10, align 4, !tbaa !270 + %14 = icmp slt i32 %11, 0 + br i1 %14, label %4, label %15 + +15:; preds = %9, %4 %.sroa.0.0.ph = phi i32 [ %.sroa.07.0, %4 ], [ %storemerge, %9 ] ret i32 %.sroa.0.0.ph } @@ -3784,15 +3782,15 @@ declare noundef ptr @_ZNK4llvm19MachineRegisterInfo10getVRegDefENS_8RegisterE(pt define dso_local i32 @_ZNK4llvm18TargetRegisterInfo26lookThruSingleUseCopyChainENS_8RegisterEPKNS_19MachineRegisterInfoE(ptr nonnull readnone align 8 captures(none) %0, i32 %1, ptr noundef %2) unnamed_addr #0 align 2 { br label %4 -4: ; preds = %16, %3 - %.sroa.011.0 = phi i32 [ %1, %3 ], [ %storemerge, %16 ] +4: ; preds = %17, %3 + %.sroa.011.0 = phi i32 [ %1, %3 ], [ %storemerge, %17 ] %5 = tail call noundef ptr @_ZNK4llvm19MachineRegisterInfo10getVRegDefENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(504) %2, i32 %.sroa.011.0) #26 %6 = getelementptr inbounds nuw i8, ptr %5, i64 68 %7 = load i16, ptr %6, align 4, !tbaa !211 - switch i16 %7, label %8 [ - i16 20, label %11 - i16 12, label %10 - ] + %8 = add i16 %7, -12 + %switch.and.i = and i16 %8, -9 + %switch.selectcmp.i = icmp eq i16 %switch.and.i, 0 + br i1 %switch.selectcmp.i, label %11, label %9 8: ; preds = %4 %9 = tail call noundef zeroext i1 @_ZNK4llvm19MachineRegisterInfo15hasOneNonDBGUseENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(504) %2, i32 %.sroa.011.0) #26 @@ -3800,23 +3798,21 @@ define dso_local i32 @_ZNK4llvm18TargetRegisterInfo26lookThruSingleUseCopyChainE br label %.loopexit 10: ; preds = %4 - br label %11 - -11: ; preds = %4, %10 - %.sink24 = phi i64 [ 68, %10 ], [ 36, %4 ] - %12 = getelementptr inbounds nuw i8, ptr %5, i64 32 - %13 = load ptr, ptr %12, align 8, !tbaa !360 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 %.sink24 - %storemerge = load i32, ptr %14, align 4, !tbaa !270 - %15 = icmp slt i32 %storemerge, 0 - br i1 %15, label %16, label %.loopexit - -16: ; preds = %11 - %17 = tail call noundef zeroext i1 @_ZNK4llvm19MachineRegisterInfo15hasOneNonDBGUseENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(504) %2, i32 %storemerge) #26 - br i1 %17, label %4, label %.loopexit - -.loopexit: ; preds = %16, %11, %8 - %.sroa.016.1.ph = phi i32 [ %spec.select, %8 ], [ 0, %11 ], [ 0, %16 ] + %12 = icmp eq i16 %7, 20 + %13 = getelementptr inbounds nuw i8, ptr %5, i64 32 + %14 = load ptr, ptr %10, align 8, !tbaa !360 + %. = select i1 %12, i64 36, i64 68 + %12 = getelementptr inbounds nuw i8, ptr %14, i64 %. + %13 = load i32, ptr %12, align 4, !tbaa !270 + %16 = icmp slt i32 %13, 0 + br i1 %16, label %17, label %.loopexit + +17:; preds = %11 + %18 = tail call noundef zeroext i1 @_ZNK4llvm19MachineRegisterInfo15hasOneNonDBGUseENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(504) %2, i32 %storemerge) #26 + br i1 %18, label %4, label %.loopexit + +.loopexit:; preds = %17, %11, %9 + %.sroa.016.1.ph = phi i32 [ %spec.select, %9 ], [ 0, %11 ], [ 0, %17 ] ret i32 %.sroa.016.1.ph } diff --git a/bench/llvm/optimized/UnsafeBufferUsage.ll b/bench/llvm/optimized/UnsafeBufferUsage.ll index e5d939f39ef..3cc9bf7fd17 100644 --- a/bench/llvm/optimized/UnsafeBufferUsage.ll +++ b/bench/llvm/optimized/UnsafeBufferUsage.ll @@ -33370,21 +33370,19 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN5clang12ast_matchers22MatchDes %8 = and i32 %7, 126 %9 = add nsw i32 %8, -32 %10 = icmp ult i32 %9, 6 - br i1 %10, label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit.thread, label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit - -_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit: ; preds = %5 %11 = and i32 %7, 127 - switch i32 %11, label %12 [ - i32 16, label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit.thread - i32 8, label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit.thread - ] + %12 = add nsw i32 %11, -8 + %switch.and.i.i = and i32 %12, -9 + %switch.selectcmp.i.i = icmp eq i32 %switch.and.i.i, 0 + %13 = select i1 %10, i1 true, i1 %switch.selectcmp.i.i + br i1 %13, label %16, label %14 -12: ; preds = %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit +12: ; preds = %5 %13 = tail call noundef zeroext i1 @_ZN5clang30DynamicRecursiveASTVisitorBaseILb0EE12TraverseDeclEPNS_4DeclE(ptr noundef nonnull align 8 dereferenceable(12) %0, ptr noundef nonnull %1) #27 br label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit.thread -_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit.thread: ; preds = %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit, %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit, %5, %3, %2, %12 - %.0 = phi i1 [ false, %3 ], [ %13, %12 ], [ true, %2 ], [ true, %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit ], [ true, %5 ], [ true, %_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit ] +_ZN4llvm3isaIN5clang12FunctionDeclENS1_9BlockDeclEJNS1_14ObjCMethodDeclEEPNS1_4DeclEEEbRKT2_.exit.thread: ; preds = %5, %3, %2, %14 + %.0 = phi i1 [ false, %3 ], [ %15, %14 ], [ true, %2 ], [ true, %5 ] ret i1 %.0 } diff --git a/bench/lvgl/optimized/lv_textarea.ll b/bench/lvgl/optimized/lv_textarea.ll index b6647599946..8b7fbd5cf78 100644 --- a/bench/lvgl/optimized/lv_textarea.ll +++ b/bench/lvgl/optimized/lv_textarea.ll @@ -1779,14 +1779,19 @@ lv_textarea_get_cursor_pos.exit: ; preds = %1 %16 = getelementptr inbounds nuw i8, ptr %11, i64 %15 %17 = tail call i32 %14(ptr noundef %16, ptr noundef null) #10 %18 = tail call i32 @lv_font_get_line_height(ptr noundef %4) #10 - %19 = icmp eq i32 %17, 0 - %20 = icmp eq i32 %17, 10 - %21 = icmp eq i32 %17, 13 - %22 = or i1 %20, %21 - %or.cond3.i = or i1 %19, %22 - %spec.select = select i1 %or.cond3.i, i32 32, i32 %17 - %23 = tail call zeroext i16 @lv_font_get_glyph_width(ptr noundef %4, i32 noundef %spec.select, i32 noundef 0) #10 - %24 = zext i16 %23 to i32 + switch i32 %17, label %is_valid_but_non_printable_char.exit [ + i32 13, label %19 + i32 10, label %19 + i32 0, label %19 + ] + +19:; preds = %lv_textarea_get_cursor_pos.exit, %lv_textarea_get_cursor_pos.exit, %lv_textarea_get_cursor_pos.exit + br label %is_valid_but_non_printable_char.exit + +is_valid_but_non_printable_char.exit: ; preds = %lv_textarea_get_cursor_pos.exit, %19 + %20 = phi i32 [ 32, %19 ], [ %17, %lv_textarea_get_cursor_pos.exit ] + %21 = tail call zeroext i16 @lv_font_get_glyph_width(ptr noundef %4, i32 noundef %20, i32 noundef 0) #10 + %22 = zext i16 %21 to i32 call void @llvm.lifetime.start.p0(ptr nonnull %2) %25 = load ptr, ptr %9, align 8, !tbaa !22 call void @lv_label_get_letter_pos(ptr noundef %25, i32 noundef %8, ptr noundef nonnull %2) #10 @@ -1797,21 +1802,21 @@ lv_textarea_get_cursor_pos.exit: ; preds = %1 %30 = load ptr, ptr %9, align 8, !tbaa !22 %31 = getelementptr inbounds nuw i8, ptr %30, i64 40 %32 = load i32, ptr %31, align 8, !tbaa !54 - %33 = add i32 %29, %24 + %33 = add i32 %29, %22 %34 = add i32 %33, %32 %35 = getelementptr inbounds nuw i8, ptr %30, i64 48 %36 = load i32, ptr %35, align 8, !tbaa !65 %37 = icmp sgt i32 %34, %36 - br i1 %37, label %38, label %63 + br i1 %37, label %38, label %59 -38: ; preds = %lv_textarea_get_cursor_pos.exit +38: ; preds = %is_valid_but_non_printable_char.exit %39 = getelementptr inbounds nuw i8, ptr %0, i64 152 %40 = load i8, ptr %39, align 8 %41 = and i8 %40, 8 %42 = icmp eq i8 %41, 0 %43 = icmp ne i32 %28, 3 %or.cond = select i1 %42, i1 %43, i1 false - br i1 %or.cond, label %44, label %63 + br i1 %or.cond, label %44, label %59 44: ; preds = %38 store i32 0, ptr %2, align 4, !tbaa !27 @@ -1820,66 +1825,68 @@ lv_textarea_get_cursor_pos.exit: ; preds = %1 %47 = load i32, ptr %46, align 4, !tbaa !31 %48 = add nsw i32 %45, %47 store i32 %48, ptr %46, align 4, !tbaa !31 - br i1 %19, label %57, label %49 - -49: ; preds = %44 - %50 = load ptr, ptr @lv_text_encoded_size, align 8, !tbaa !57 - %51 = call zeroext i8 %50(ptr noundef %16) #10 - %52 = zext i8 %51 to i32 - %53 = add i32 %13, %52 - %54 = zext i32 %53 to i64 - %55 = getelementptr inbounds nuw i8, ptr %11, i64 %54 - %56 = call i32 %14(ptr noundef %55, ptr noundef null) #10 - br label %57 + %.not = icmp eq i32 %17, 0 + br i1 %.not, label %is_valid_but_non_printable_char.exit72, label %47 + +47:; preds = %42 + %48 = load ptr, ptr @lv_text_encoded_size, align 8, !tbaa !57 + %49 = call zeroext i8 %48(ptr noundef %16) #10 + %50 = zext i8 %49 to i32 + %51 = add i32 %13, %50 + %52 = zext i32 %51 to i64 + %53 = getelementptr inbounds nuw i8, ptr %11, i64 %52 + %54 = call i32 %14(ptr noundef %53, ptr noundef null) #10 + switch i32 %54, label %is_valid_but_non_printable_char.exit72 [ + i32 13, label %55 + i32 10, label %55 + i32 0, label %55 + ] + +55: ; preds = %47, %47, %47 + br label %is_valid_but_non_printable_char.exit72 + +is_valid_but_non_printable_char.exit72: ; preds = %42, %47, %55 + %.18184 = phi i32 [ %51, %47 ], [ %51, %55 ], [ %13, %42 ] + %56 = phi i32 [ %54, %47 ], [ 32, %55 ], [ 32, %42 ] + %57 = call zeroext i16 @lv_font_get_glyph_width(ptr noundef %4, i32 noundef %56, i32 noundef 0) #10 + %58 = zext i16 %57 to i32 + br label %59 -57: ; preds = %49, %44 - %.065 = phi i32 [ %56, %49 ], [ 0, %44 ] - %.1 = phi i32 [ %53, %49 ], [ %13, %44 ] - %58 = icmp eq i32 %.065, 0 - %59 = icmp eq i32 %.065, 10 - %or.cond.i71 = or i1 %58, %59 - %60 = icmp eq i32 %.065, 13 - %or.cond3.i72 = or i1 %60, %or.cond.i71 - %spec.select70 = select i1 %or.cond3.i72, i32 32, i32 %.065 - %61 = call zeroext i16 @lv_font_get_glyph_width(ptr noundef %4, i32 noundef %spec.select70, i32 noundef 0) #10 - %62 = zext i16 %61 to i32 - br label %63 - -63: ; preds = %57, %38, %lv_textarea_get_cursor_pos.exit - %.067 = phi i32 [ %62, %57 ], [ %24, %38 ], [ %24, %lv_textarea_get_cursor_pos.exit ] - %.0 = phi i32 [ %.1, %57 ], [ %13, %38 ], [ %13, %lv_textarea_get_cursor_pos.exit ] - %64 = getelementptr inbounds nuw i8, ptr %0, i64 136 - store i32 %.0, ptr %64, align 8, !tbaa !56 - %65 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 48) #10 +57: ; preds = %is_valid_but_non_printable_char.exit72, %36, %is_valid_but_non_printable_char.exit + %.065 = phi i32 [ %58, %is_valid_but_non_printable_char.exit72 ], [ %22, %36 ], [ %22, %is_valid_but_non_printable_char.exit ] + %.1 = phi i32 [ %.18184, %is_valid_but_non_printable_char.exit72 ], [ %13, %36 ], [ %13, %is_valid_but_non_printable_char.exit ] + %60 = getelementptr inbounds nuw i8, ptr %0, i64 136 + store i32 %.0, ptr %60, align 8, !tbaa !56 + %61 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 48) #10 + %62 = ptrtoint ptr %61 to i64 + %.sroa.0.0.extract.trunc.i73 = trunc i64 %62 to i32 + %63 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 16) #10 + %64 = ptrtoint ptr %63 to i64 + %.sroa.0.0.extract.trunc.i74 = trunc i64 %64 to i32 + %65 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 17) #10 %66 = ptrtoint ptr %65 to i64 %.sroa.0.0.extract.trunc.i73 = trunc i64 %66 to i32 - %67 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 16) #10 + %67 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 18) #10 %68 = ptrtoint ptr %67 to i64 %.sroa.0.0.extract.trunc.i74 = trunc i64 %68 to i32 - %69 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 17) #10 + %69 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 19) #10 %70 = ptrtoint ptr %69 to i64 %.sroa.0.0.extract.trunc.i75 = trunc i64 %70 to i32 - %71 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 18) #10 - %72 = ptrtoint ptr %71 to i64 - %.sroa.0.0.extract.trunc.i76 = trunc i64 %72 to i32 - %73 = call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 393216, i8 noundef zeroext 19) #10 - %74 = ptrtoint ptr %73 to i64 - %.sroa.0.0.extract.trunc.i77 = trunc i64 %74 to i32 - %75 = load i32, ptr %2, align 4, !tbaa !27 - %76 = add i32 %.sroa.0.0.extract.trunc.i76, %.sroa.0.0.extract.trunc.i73 + %71 = load i32, ptr %2, align 4, !tbaa !27 + %72 = add i32 %.sroa.0.0.extract.trunc.i76, %.sroa.0.0.extract.trunc.i73 + %73 = sub i32 %71, %72 + %74 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %75 = load i32, ptr %74, align 4, !tbaa !31 + %76 = add i32 %.sroa.0.0.extract.trunc.i74, %.sroa.0.0.extract.trunc.i73 %77 = sub i32 %75, %76 - %78 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %79 = load i32, ptr %78, align 4, !tbaa !31 - %80 = add i32 %.sroa.0.0.extract.trunc.i74, %.sroa.0.0.extract.trunc.i73 - %81 = sub i32 %79, %80 - %82 = add i32 %.sroa.0.0.extract.trunc.i73, -1 - %83 = add i32 %82, %.067 - %84 = add i32 %83, %75 - %85 = add i32 %84, %.sroa.0.0.extract.trunc.i77 - %86 = add i32 %18, -1 - %87 = add i32 %86, %.sroa.0.0.extract.trunc.i73 - %88 = add i32 %87, %.sroa.0.0.extract.trunc.i75 - %89 = add i32 %88, %79 + %78 = add i32 %.sroa.0.0.extract.trunc.i73, -1 + %79 = add i32 %78, %.067 + %80 = add i32 %79, %71 + %81 = add i32 %80, %.sroa.0.0.extract.trunc.i77 + %82 = add i32 %18, -1 + %83 = add i32 %82, %.sroa.0.0.extract.trunc.i73 + %84 = add i32 %83, %.sroa.0.0.extract.trunc.i75 + %85 = add i32 %84, %75 call void @llvm.lifetime.start.p0(ptr nonnull %3) %90 = getelementptr inbounds nuw i8, ptr %0, i64 120 %91 = load i32, ptr %90, align 8, !tbaa !29 @@ -1906,22 +1913,22 @@ lv_textarea_get_cursor_pos.exit: ; preds = %1 %109 = add nsw i32 %106, %99 store i32 %109, ptr %100, align 4, !tbaa !49 call void @lv_obj_invalidate_area(ptr noundef nonnull %0, ptr noundef nonnull %3) #10 - store i32 %77, ptr %90, align 8, !tbaa !29 - store i32 %81, ptr %92, align 4, !tbaa !30 - store i32 %85, ptr %95, align 8, !tbaa !48 - store i32 %89, ptr %98, align 4, !tbaa !49 + store i32 %73, ptr %90, align 8, !tbaa !29 + store i32 %77, ptr %92, align 4, !tbaa !30 + store i32 %81, ptr %95, align 8, !tbaa !48 + store i32 %85, ptr %98, align 4, !tbaa !49 %110 = load ptr, ptr %9, align 8, !tbaa !22 %111 = getelementptr inbounds nuw i8, ptr %110, i64 40 %112 = load i32, ptr %111, align 8, !tbaa !54 - %113 = add nsw i32 %112, %77 + %113 = add nsw i32 %112, %73 store i32 %113, ptr %3, align 4, !tbaa !29 %114 = getelementptr inbounds nuw i8, ptr %110, i64 44 %115 = load i32, ptr %114, align 4, !tbaa !55 - %116 = add nsw i32 %115, %81 + %116 = add nsw i32 %115, %77 store i32 %116, ptr %94, align 4, !tbaa !30 - %117 = add nsw i32 %112, %85 + %117 = add nsw i32 %112, %81 store i32 %117, ptr %97, align 4, !tbaa !48 - %118 = add nsw i32 %115, %89 + %118 = add nsw i32 %115, %85 store i32 %118, ptr %100, align 4, !tbaa !49 call void @lv_obj_invalidate_area(ptr noundef nonnull %0, ptr noundef nonnull %3) #10 call void @llvm.lifetime.end.p0(ptr nonnull %3) diff --git a/bench/nanobind/optimized/test_callbacks.ll b/bench/nanobind/optimized/test_callbacks.ll index 475b1c1ba12..626c83ec0b5 100644 --- a/bench/nanobind/optimized/test_callbacks.ll +++ b/bench/nanobind/optimized/test_callbacks.ll @@ -477,21 +477,23 @@ declare ptr @PyDict_GetItem(ptr noundef, ptr noundef) local_unnamed_addr #3 ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castI13callback_dataEENS_6objectEOT_NS_9rv_policyE(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(56) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTI13callback_data, ptr noundef nonnull align 8 dereferenceable(56) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #18 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyI13callback_dataEENS_9rv_policyES3_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTI13callback_data, ptr noundef nonnull align 8 dereferenceable(56) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #18 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyI13callback_dataEENS_9rv_policyES3_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #20 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyI13callback_dataEENS_9rv_policyES3_.exit + store ptr %5, ptr %0, align 8 ret void } diff --git a/bench/nanobind/optimized/test_holders.ll b/bench/nanobind/optimized/test_holders.ll index b8bd98a8b34..6b1890e958b 100644 --- a/bench/nanobind/optimized/test_holders.ll +++ b/bench/nanobind/optimized/test_holders.ll @@ -6584,19 +6584,20 @@ define internal noundef ptr @"_ZZN8nanobind6detail11func_createILb0ELb1EZL30nano call void @llvm.lifetime.start.p0(ptr nonnull %7) %12 = load ptr, ptr %6, align 8, !tbaa !211 call void @_ZNSt12__shared_ptrI9ExampleSTLN9__gnu_cxx12_Lock_policyE2EEC2IS0_vEERKSt10__weak_ptrIT_LS2_2EE(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %12) #25 - %or.cond.i = icmp ult i32 %3, 2 - %13 = add i32 %3, -5 - %14 = icmp ult i32 %13, 2 - %or.cond5.i = or i1 %or.cond.i, %14 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %3 - %15 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTI15SharedWrapperST, ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %spec.store.select.i, ptr noundef %4, ptr noundef null) #26 - %16 = getelementptr inbounds nuw i8, ptr %7, i64 8 - call void @_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #26 + %or.cond.i = icmp ult i32 %3, 7 + %switch.maskindex = trunc i32 %3 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %spec.store.select.i = select i1 %or.cond.i, i1 %switch.lobit, i1 false + %13 = select i1 %or.cond, i32 4, i32 %3 + %14 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTI15SharedWrapperST, ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %13, ptr noundef %4, ptr noundef null) #26 + %15 = getelementptr inbounds nuw i8, ptr %7, i64 8 + call void @_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #26 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %"_ZZN8nanobind6detail11func_createILb0ELb1EZL30nanobind_init_test_holders_extRNS_7module_EE4$_1215SharedWrapperSTJP9ExampleSTEJLm0EEJNS_5scopeENS_4nameEEEEP7_objectOT1_PFT2_DpT3_ESt16integer_sequenceImJXspT4_EEEDpRKT5_ENKUlPvPSB_PhNS_9rv_policyEPNS0_12cleanup_listEE_clESP_SQ_SR_SS_SU_.exit" "_ZZN8nanobind6detail11func_createILb0ELb1EZL30nanobind_init_test_holders_extRNS_7module_EE4$_1215SharedWrapperSTJP9ExampleSTEJLm0EEJNS_5scopeENS_4nameEEEEP7_objectOT1_PFT2_DpT3_ESt16integer_sequenceImJXspT4_EEEDpRKT5_ENKUlPvPSB_PhNS_9rv_policyEPNS0_12cleanup_listEE_clESP_SQ_SR_SS_SU_.exit": ; preds = %5, %11 - %.0.i = phi ptr [ %15, %11 ], [ inttoptr (i64 1 to ptr), %5 ] + %.0.i = phi ptr [ %14, %_ZN8nanobind6detail12infer_policyI15SharedWrapperSTEENS_9rv_policyES3_.exit ], [ inttoptr (i64 1 to ptr), %5 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) ret ptr %.0.i } @@ -6643,12 +6644,13 @@ define internal noundef ptr @"_ZZN8nanobind6detail11func_createILb0ELb1EZL30nano br label %"_ZZL30nanobind_init_test_holders_extRN8nanobind7module_EENK4$_13clER15SharedWrapperST.exit" "_ZZL30nanobind_init_test_holders_extRN8nanobind7module_EENK4$_13clER15SharedWrapperST.exit": ; preds = %11, %19, %22 - %or.cond.i.i = icmp ult i32 %3, 2 - %24 = add i32 %3, -5 - %25 = icmp ult i32 %24, 2 - %or.cond5.i.i = or i1 %or.cond.i.i, %25 - %spec.store.select.i.i = select i1 %or.cond5.i.i, i32 4, i32 %3 - %26 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTI15SharedWrapperST, ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %spec.store.select.i.i, ptr noundef %4, ptr noundef null) #26 + %or.cond.i.i = icmp ult i32 %3, 7 + %switch.maskindex = trunc i32 %3 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %spec.store.select.i.i = select i1 %or.cond.i.i, i1 %switch.lobit, i1 false + %25 = select i1 %or.cond, i32 4, i32 %3 + %26 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTI15SharedWrapperST, ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %25, ptr noundef %4, ptr noundef null) #26 call void @_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #26 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %"_ZZN8nanobind6detail11func_createILb0ELb1EZL30nanobind_init_test_holders_extRNS_7module_EE4$_1315SharedWrapperSTJRS5_EJLm0EEJNS_5scopeENS_4nameEEEEP7_objectOT1_PFT2_DpT3_ESt16integer_sequenceImJXspT4_EEEDpRKT5_ENKUlPvPSA_PhNS_9rv_policyEPNS0_12cleanup_listEE_clESO_SP_SQ_SR_ST_.exit" diff --git a/bench/nanobind/optimized/test_make_iterator.ll b/bench/nanobind/optimized/test_make_iterator.ll index 868d18c360c..44b3a4a8755 100644 --- a/bench/nanobind/optimized/test_make_iterator.ll +++ b/bench/nanobind/optimized/test_make_iterator.ll @@ -2644,21 +2644,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_19i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_19iterator_key_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEENS_6objectEOT_SH_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_ELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #21 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_ELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #21 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #24 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -2951,21 +2953,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_15i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_15iterator_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RKSE_JEEEEENS_6objectEOT_SH_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_ELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RKSD_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #21 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RKSE_JEEEEESH_SH_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_ELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RKSD_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #21 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RKSE_JEEEEESH_SH_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #24 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RKSE_JEEEEESH_SH_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -3353,21 +3357,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_21i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_21iterator_value_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEENS_6objectEOT_SH_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_ELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #21 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_ELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #21 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #24 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessINSt8__detail20_Node_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_ELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -3801,21 +3807,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_15i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_15iterator_accessINS_8iteratorEEELNS_9rv_policyE1ES4_S4_NS_6handleEJEEEEENS_6objectEOT_S6_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(33) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessINS_8iteratorEEELNS_9rv_policyE1ES3_S3_NS_6handleEJEEE, ptr noundef nonnull align 8 dereferenceable(33) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #21 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINS_8iteratorEEELNS_9rv_policyE1ES4_S4_NS_6handleEJEEEEES6_S6_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessINS_8iteratorEEELNS_9rv_policyE1ES3_S3_NS_6handleEJEEE, ptr noundef nonnull align 8 dereferenceable(33) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #21 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINS_8iteratorEEELNS_9rv_policyE1ES4_S4_NS_6handleEJEEEEES6_S6_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #24 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINS_8iteratorEEELNS_9rv_policyE1ES4_S4_NS_6handleEJEEEEES6_S6_.exit + store ptr %5, ptr %0, align 8 ret void } diff --git a/bench/nanobind/optimized/test_stl_bind_map.ll b/bench/nanobind/optimized/test_stl_bind_map.ll index b300c0957eb..86337d62498 100644 --- a/bench/nanobind/optimized/test_stl_bind_map.ll +++ b/bench/nanobind/optimized/test_stl_bind_map.ll @@ -6301,21 +6301,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_19i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RSC_JEEEEENS_6objectEOT_SG_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESD_SD_RSB_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RSC_JEEEEESG_SG_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESD_SD_RSB_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RSC_JEEEEESG_SG_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RSC_JEEEEESG_SG_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -8218,21 +8220,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_15i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RSD_JEEEEENS_6objectEOT_SG_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESD_SD_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RSD_JEEEEESG_SG_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESD_SD_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RSD_JEEEEESG_SG_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RSD_JEEEEESG_SG_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -8814,21 +8818,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_21i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RdJEEEEENS_6objectEOT_SG_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESD_SD_RdJEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RdJEEEEESG_SG_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESD_SD_RdJEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RdJEEEEESG_SG_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdEEEELNS_9rv_policyE1ESE_SE_RdJEEEEESG_SG_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -9943,21 +9949,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_19i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEENS_6objectEOT_SH_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -11664,21 +11672,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_15i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSE_JEEEEENS_6objectEOT_SH_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RSD_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSE_JEEEEESH_SH_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RSD_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSE_JEEEEESH_SH_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSE_JEEEEESH_SH_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -12178,21 +12188,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_21i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RdJEEEEENS_6objectEOT_SH_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RdJEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RdJEEEEESH_SH_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESE_SE_RdJEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RdJEEEEESH_SH_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RdJEEEEESH_SH_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -13136,21 +13148,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_19i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSC_JEEEEENS_6objectEOT_SH_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESE_SE_RSB_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSC_JEEEEESH_SH_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESE_SE_RSB_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSC_JEEEEESH_SH_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSC_JEEEEESH_SH_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -14878,21 +14892,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_15i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSE_JEEEEENS_6objectEOT_SH_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESE_SE_RSD_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSE_JEEEEESH_SH_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESE_SE_RSD_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSE_JEEEEESH_SH_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSE_JEEEEESH_SH_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -15471,21 +15487,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_21i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEENS_6objectEOT_SH_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESE_SE_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESE_SE_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessISt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdEEEELNS_9rv_policyE1ESF_SF_RSD_JEEEEESH_SH_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -16555,21 +16573,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_19i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSD_JEEEEENS_6objectEOT_SI_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSD_JEEEEESI_SI_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSC_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSD_JEEEEESI_SI_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_19iterator_key_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSD_JEEEEESI_SI_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -18348,21 +18368,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_15i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSF_JEEEEENS_6objectEOT_SI_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSE_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSF_JEEEEESI_SI_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSE_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSF_JEEEEESI_SI_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSF_JEEEEESI_SI_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -18862,21 +18884,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_21i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSE_JEEEEENS_6objectEOT_SI_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #20 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSE_JEEEEESI_SI_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESF_SF_RSD_JEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #20 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 -7: ; preds = %3 +7: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSE_JEEEEESI_SI_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #26 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_21iterator_value_accessINSt8__detail14_Node_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEKdELb0ELb1EEEEELNS_9rv_policyE1ESG_SG_RSE_JEEEEESI_SI_.exit + store ptr %5, ptr %0, align 8 ret void } diff --git a/bench/nanobind/optimized/test_stl_bind_vector.ll b/bench/nanobind/optimized/test_stl_bind_vector.ll index 634d8f7c3c9..da0f99b3026 100644 --- a/bench/nanobind/optimized/test_stl_bind_vector.ll +++ b/bench/nanobind/optimized/test_stl_bind_vector.ll @@ -5627,21 +5627,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_15i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_15iterator_accessIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEEELNS_9rv_policyE1ESA_SA_RjJEEEEENS_6objectEOT_SC_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEEELNS_9rv_policyE1ES9_S9_RjJEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #26 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 - -7: ; preds = %3 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEEELNS_9rv_policyE1ESA_SA_RjJEEEEESC_SC_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %spec.store.select.i = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEEELNS_9rv_policyE1ES9_S9_RjJEEE, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #26 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 + +6: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEEELNS_9rv_policyE1ESA_SA_RjJEEEEESC_SC_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #30 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEEELNS_9rv_policyE1ESA_SA_RjJEEEEESC_SC_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -8746,21 +8748,23 @@ define linkonce_odr hidden void @_ZN8nanobind6detail18make_iterator_implINS0_15i ; Function Attrs: mustprogress optsize uwtable define linkonce_odr hidden void @_ZN8nanobind4castINS_6detail14iterator_stateINS1_15iterator_accessISt13_Bit_iteratorEELNS_9rv_policyE1ES4_S4_bJEEEEENS_6objectEOT_S6_(ptr dead_on_unwind noalias writable sret(%"class.nanobind::object") align 8 %0, ptr noundef nonnull align 8 dereferenceable(33) %1, i32 noundef %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %or.cond.i = icmp ult i32 %2, 2 - %4 = add i32 %2, -5 - %5 = icmp ult i32 %4, 2 - %or.cond5.i = or i1 %or.cond.i, %5 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %2 - %6 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessISt13_Bit_iteratorEELNS_9rv_policyE1ES3_S3_bJEEE, ptr noundef nonnull align 8 dereferenceable(33) %1, i32 noundef %spec.store.select.i, ptr noundef null, ptr noundef null) #26 - %.not = icmp eq ptr %6, null - br i1 %.not, label %7, label %8 - -7: ; preds = %3 +_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessISt13_Bit_iteratorEELNS_9rv_policyE1ES4_S4_bJEEEEES6_S6_.exit: + %3 = icmp ult i32 %2, 7 + %switch.maskindex = trunc i32 %2 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %spec.store.select.i = select i1 %3, i1 %switch.lobit, i1 false + %4 = select i1 %or.cond, i32 4, i32 %2 + %5 = tail call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIN8nanobind6detail14iterator_stateINS0_15iterator_accessISt13_Bit_iteratorEELNS_9rv_policyE1ES3_S3_bJEEE, ptr noundef nonnull align 8 dereferenceable(33) %1, i32 noundef %4, ptr noundef null, ptr noundef null) #26 + %.not = icmp eq ptr %5, null + br i1 %.not, label %6, label %7 + +6: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessISt13_Bit_iteratorEELNS_9rv_policyE1ES4_S4_bJEEEEES6_S6_.exit tail call void @_ZN8nanobind6detail16raise_cast_errorEv() #30 unreachable -8: ; preds = %3 - store ptr %6, ptr %0, align 8 +8: ; preds = %_ZN8nanobind6detail12infer_policyINS0_14iterator_stateINS0_15iterator_accessISt13_Bit_iteratorEELNS_9rv_policyE1ES4_S4_bJEEEEES6_S6_.exit + store ptr %5, ptr %0, align 8 ret void } @@ -13039,12 +13043,13 @@ _ZZN8nanobind11bind_vectorISt6vectorIZL38nanobind_init_test_stl_bind_vector_extR %40 = getelementptr inbounds i8, ptr %39, i64 -4 store ptr %40, ptr %22, align 8, !tbaa !243 store i32 %.sroa.01.0.copyload.i, ptr %7, align 4 - %or.cond.i = icmp ult i32 %3, 2 - %41 = add i32 %3, -5 - %42 = icmp ult i32 %41, 2 - %or.cond5.i = or i1 %or.cond.i, %42 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %3 - %43 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EE2El, ptr noundef nonnull align 4 dereferenceable(4) %7, i32 noundef %spec.store.select.i, ptr noundef %4, ptr noundef null) #26 + %or.cond.i = icmp ult i32 %3, 7 + %switch.maskindex = trunc i32 %3 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %spec.store.select.i = select i1 %or.cond.i, i1 %switch.lobit, i1 false + %42 = select i1 %or.cond, i32 4, i32 %3 + %43 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTIZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EE2El, ptr noundef nonnull align 4 dereferenceable(4) %7, i32 noundef %42, ptr noundef %4, ptr noundef null) #26 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZZN8nanobind6detail11func_createILb0ELb1EZNS_11bind_vectorISt6vectorIZL38nanobind_init_test_stl_bind_vector_extRNS_7module_EE2ElSaIS6_EELNS_9rv_policyE1EJEEENS_6class_IT_JEEENS_6handleEPKcDpOT1_EUlRS8_lE0_S6_JSJ_lEJLm0ELm1EEJNS_5scopeENS_4nameENS_9is_methodENS_5arg_vEA50_cEEEP7_objectOT1_PFT2_DpT3_ESt16integer_sequenceImJXspT4_EEEDpRKT5_ENKUlPvPSR_PhS9_PNS0_12cleanup_listEE_clES15_S16_S17_S9_S19_.exit @@ -15492,12 +15497,13 @@ _ZZN8nanobind11bind_vectorISt6vectorIS1_IZL38nanobind_init_test_stl_bind_vector_ store ptr %38, ptr %42, align 8, !tbaa !243, !alias.scope !394 %43 = getelementptr inbounds nuw i8, ptr %7, i64 16 store ptr %40, ptr %43, align 8, !tbaa !244, !alias.scope !394 - %or.cond.i = icmp ult i32 %3, 2 - %44 = add i32 %3, -5 - %45 = icmp ult i32 %44, 2 - %or.cond5.i = or i1 %or.cond.i, %45 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %3 - %46 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTISt6vectorIZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EE2ElSaIS3_EE, ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %spec.store.select.i, ptr noundef %4, ptr noundef null) #26 + %or.cond.i = icmp ult i32 %3, 7 + %switch.maskindex = trunc i32 %3 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %spec.store.select.i = select i1 %or.cond.i, i1 %switch.lobit, i1 false + %45 = select i1 %spec.store.select.i, i32 4, i32 %3 + %46 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTISt6vectorIZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EE2ElSaIS3_EE, ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %45, ptr noundef %4, ptr noundef null) #26 %.val = load ptr, ptr %7, align 8 %.not.i.i.i = icmp eq ptr %.val, null br i1 %.not.i.i.i, label %_ZNSt6vectorIZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EE2ElSaIS3_EED2Ev.exit, label %47 @@ -20940,12 +20946,13 @@ _ZNSt6vectorIZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EE4E_n br label %"_ZZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EENK3$_0clEi.exit" "_ZZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EENK3$_0clEi.exit": ; preds = %"_ZZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EENK3$_0clEi.exit.loopexit", %11 - %or.cond.i = icmp ult i32 %3, 2 - %47 = add i32 %3, -5 - %48 = icmp ult i32 %47, 2 - %or.cond5.i = or i1 %or.cond.i, %48 - %spec.store.select.i = select i1 %or.cond5.i, i32 4, i32 %3 - %49 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTISt6vectorIZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EE4E_ncSaIS3_EE, ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %spec.store.select.i, ptr noundef %4, ptr noundef null) #26 + %or.cond.i = icmp ult i32 %3, 7 + %switch.maskindex = trunc i32 %3 to i8 + %switch.shifted = lshr i8 99, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %spec.store.select.i = select i1 %or.cond.i, i1 %switch.lobit, i1 false + %48 = select i1 %or.cond, i32 4, i32 %3 + %49 = call noundef ptr @_ZN8nanobind6detail11nb_type_putEPKSt9type_infoPvNS_9rv_policyEPNS0_12cleanup_listEPb(ptr noundef nonnull @_ZTISt6vectorIZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EE4E_ncSaIS3_EE, ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %48, ptr noundef %4, ptr noundef null) #26 %.val = load ptr, ptr %7, align 8 %.not.i.i.i = icmp eq ptr %.val, null br i1 %.not.i.i.i, label %_ZNSt6vectorIZL38nanobind_init_test_stl_bind_vector_extRN8nanobind7module_EE4E_ncSaIS3_EED2Ev.exit, label %50 diff --git a/bench/nuklear/optimized/unity.ll b/bench/nuklear/optimized/unity.ll index 151100ef042..fd1ebf8a2c7 100644 --- a/bench/nuklear/optimized/unity.ll +++ b/bench/nuklear/optimized/unity.ll @@ -59914,14 +59914,32 @@ define range(i32 0, 2) i32 @nk_filter_decimal(ptr readnone captures(none) %0, i3 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define range(i32 0, 2) i32 @nk_filter_hex(ptr noundef readnone captures(none) %0, i32 noundef %1) local_unnamed_addr #0 { - %3 = add i32 %1, -48 - %or.cond = icmp ult i32 %3, 10 - %4 = and i32 %1, -33 - %5 = add i32 %4, -65 - %6 = icmp ult i32 %5, 6 - %or.cond13.not = or i1 %or.cond, %6 - %.0 = zext i1 %or.cond13.not to i32 - ret i32 %.0 + %3 = add i32 %1, -58 + %or.cond = icmp ult i32 %3, -10 + br i1 %or.cond, label %switch.early.test, label %ret.false + +switch.early.test:; preds = %2 + switch i32 %1, label %switch.return [ + i32 102, label %ret.false + i32 101, label %ret.false + i32 100, label %ret.false + i32 99, label %ret.false + i32 98, label %ret.false + i32 97, label %ret.false + i32 70, label %ret.false + i32 69, label %ret.false + i32 68, label %ret.false + i32 67, label %ret.false + i32 66, label %ret.false + i32 65, label %ret.false + ] + +ret.false: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %2 + br label %switch.return + +switch.return: ; preds = %switch.early.test, %ret.false + %4 = phi i32 [ 1, %ret.false ], [ 0, %switch.early.test ] + ret i32 %4 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable diff --git a/bench/opencv/optimized/gcpubackend.ll b/bench/opencv/optimized/gcpubackend.ll index a9c7ce105bf..eba3c1ba755 100644 --- a/bench/opencv/optimized/gcpubackend.ll +++ b/bench/opencv/optimized/gcpubackend.ll @@ -9486,11 +9486,10 @@ declare noundef zeroext i1 @_ZNK2cv4gapi8GBackend4Priv11allowsMergeERKN3ade10Typ ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define internal noundef zeroext i1 @_ZNK12_GLOBAL__N_115GCPUBackendImpl13supportsConstEN2cv6GShapeE(ptr nonnull readnone align 8 captures(none) %0, i32 noundef %1) unnamed_addr #18 align 2 { - %3 = and i32 %1, -3 - %or.cond = icmp eq i32 %3, 1 - %4 = icmp eq i32 %1, 2 - %spec.select = or i1 %4, %or.cond - ret i1 %spec.select +switch.return: + %2 = add i32 %1, -1 + %4 = icmp ult i32 %2, 3 + ret i1 %4 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/openjdk/optimized/callGenerator.ll b/bench/openjdk/optimized/callGenerator.ll index 6b4c9f74f23..9c7df6f08f5 100644 --- a/bench/openjdk/optimized/callGenerator.ll +++ b/bench/openjdk/optimized/callGenerator.ll @@ -237,6 +237,7 @@ $_ZTV37LateInlineVectorReboxingCallGenerator = comdat any @.str.21 = private unnamed_addr constant [41 x i8] c"src/hotspot/share/opto/callGenerator.hpp\00", align 1 @.str.22 = private unnamed_addr constant [32 x i8] c"unique id only for late inlines\00", align 1 @llvm.global_ctors = appending global [0 x { i32, ptr, ptr }] zeroinitializer +@switch.table._ZN20VirtualCallGenerator8generateEP8JVMState = private unnamed_addr constant [4 x i32] [i32 1, i32 1, i32 0, i32 1], align 4 ; Function Attrs: mustprogress nounwind uwtable define hidden noundef ptr @_ZNK13CallGenerator2tfEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %0) local_unnamed_addr #0 align 2 { @@ -886,16 +887,23 @@ define hidden noundef ptr @_ZN20VirtualCallGenerator8generateEP8JVMState(ptr nou %59 = call noundef i32 @_ZNK8GraphKit7java_bcEv(ptr noundef nonnull align 8 dereferenceable(84) %9) #8 %60 = getelementptr inbounds nuw i8, ptr %58, i64 48 %61 = load i32, ptr %60, align 8 - %62 = and i32 %59, -2 - %or.cond.i.i = icmp eq i32 %62, 182 - %63 = icmp eq i32 %59, 185 - %spec.select.i.i = or i1 %63, %or.cond.i.i - %64 = zext i1 %spec.select.i.i to i32 - %65 = getelementptr inbounds nuw i8, ptr %9, i64 80 - %66 = load i32, ptr %65, align 8 - %67 = add i32 %66, %61 - %68 = add i32 %67, %64 - store i32 %68, ptr %65, align 8 + %switch.tableidx = add i32 %59, -182 + %or.cond.i.i = icmp ult i32 %switch.tableidx, 4 + br i1 %62, label %switch.lookup, label %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit + +switch.lookup:; preds = %53 + %63 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw i32, ptr @switch.table._ZN20VirtualCallGenerator8generateEP8JVMState, i64 %63 + %switch.load = load i32, ptr %switch.gep, align 4 + br label %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit + +_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit: ; preds = %53, %switch.lookup + %64 = phi i32 [ %switch.load, %switch.lookup ], [ 0, %53 ] + %65 = add nsw i32 %64, %61 + %66 = getelementptr inbounds nuw i8, ptr %9, i64 80 + %67 = load i32, ptr %66, align 8 + %68 = add nsw i32 %65, %67 + store i32 %68, ptr %66, align 8 %69 = call noundef ptr @_ZN8GraphKit13uncommon_trapEiP7ciKlassPKcbb(ptr noundef nonnull align 8 dereferenceable(84) %9, i32 noundef -9, ptr noundef null, ptr noundef nonnull @.str.5, i1 noundef zeroext false, i1 noundef zeroext false) #8 br label %212 @@ -1113,7 +1121,7 @@ _ZN13CallGenerator34is_inlined_method_handle_intrinsicEP8JVMStateP8ciMethod.exit %211 = call noundef ptr @_ZN8GraphKit13cast_not_nullEP4Nodeb(ptr noundef nonnull align 8 dereferenceable(84) %9, ptr noundef %.020, i1 noundef zeroext true) #8 br label %212 -212: ; preds = %87, %_ZN13CallGenerator34is_inlined_method_handle_intrinsicEP8JVMStateP8ciMethod.exit.thread, %53 +212: ; preds = %87, %_ZN13CallGenerator34is_inlined_method_handle_intrinsicEP8JVMStateP8ciMethod.exit.thread, %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit %213 = call noundef ptr @_ZN8GraphKit29transfer_exceptions_into_jvmsEv(ptr noundef nonnull align 8 dereferenceable(84) %9) #8 ret ptr %213 } diff --git a/bench/openjdk/optimized/ciInstanceKlass.ll b/bench/openjdk/optimized/ciInstanceKlass.ll index a38998d9989..6733d2f931b 100644 --- a/bench/openjdk/optimized/ciInstanceKlass.ll +++ b/bench/openjdk/optimized/ciInstanceKlass.ll @@ -1409,12 +1409,12 @@ _ZNK15ciInstanceKlass14box_klass_typeEv.exit: ; preds = %6, %_ZNK10ciMetadat br i1 %16, label %17, label %_ZNK15ciInstanceKlass14box_klass_typeEv.exit.thread 17: ; preds = %_ZNK15ciInstanceKlass14box_klass_typeEv.exit - %18 = icmp eq i8 %14, 7 - %19 = icmp eq i8 %14, 11 - %20 = or i1 %18, %19 + %18 = add nsw i8 %14, -7 + %switch.and.i.i = and i8 %18, -5 + %switch.selectcmp.i.i = icmp eq i8 %switch.and.i.i, 0 %21 = load i32, ptr @_ZN23java_lang_boxing_object18_long_value_offsetE, align 4 %22 = load i32, ptr @_ZN23java_lang_boxing_object13_value_offsetE, align 4 - %23 = select i1 %20, i32 %21, i32 %22 + %23 = select i1 %switch.selectcmp.i.i, i32 %21, i32 %22 %24 = icmp eq i32 %1, %23 br label %_ZNK15ciInstanceKlass14box_klass_typeEv.exit.thread diff --git a/bench/openjdk/optimized/g1CollectedHeap.ll b/bench/openjdk/optimized/g1CollectedHeap.ll index 6bd1374f1b7..ab18dac8de6 100644 --- a/bench/openjdk/optimized/g1CollectedHeap.ll +++ b/bench/openjdk/optimized/g1CollectedHeap.ll @@ -5433,6 +5433,15 @@ define hidden noundef zeroext i1 @_ZN15G1CollectedHeap18try_collect_fullgcEN7GCC %12 = getelementptr inbounds nuw i8, ptr %4, i64 20 %13 = getelementptr inbounds nuw i8, ptr %4, i64 33 %14 = getelementptr inbounds nuw i8, ptr %0, i64 76 + switch i32 %1, label %.split [ + i32 23, label %.split.us + i32 0, label %.split.us + i32 7, label %.split.us + i32 6, label %.split.us + i32 4, label %.split.us + ] + +.split.us: ; preds = %3, %3, %3, %3, %3 %15 = load i32, ptr %2, align 4 %16 = load i32, ptr %5, align 4 store ptr null, ptr %6, align 8 @@ -5447,24 +5456,14 @@ define hidden noundef zeroext i1 @_ZN15G1CollectedHeap18try_collect_fullgcEN7GCC call void @_ZN8VMThread7executeEP12VM_Operation(ptr noundef nonnull %4) #23 %.pre = load i8, ptr %13, align 1 %.pre23 = trunc i8 %.pre to i1 - switch i32 %1, label %.loopexit [ - i32 23, label %.split.us - i32 0, label %.split.us - i32 9, label %.split.us - i32 7, label %.split.us - i32 6, label %.split.us - i32 4, label %.split.us - ] + br i1 %.pre23, label %.loopexit, label %.lr.ph35 -.split.us: ; preds = %3, %3, %3, %3, %3, %3 - br i1 %.pre23, label %.loopexit, label %.lr.ph - -.lr.ph: ; preds = %.split.us, %_ZN11MutexLockerD2Ev.exit.us +.split.us: ; preds = %.split.us, %_ZN11MutexLockerD2Ev.exit.us %17 = load ptr, ptr @Heap_lock, align 8 %.not.i.i.us = icmp eq ptr %17, null br i1 %.not.i.i.us, label %_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread.us, label %18 -18: ; preds = %.lr.ph +18: ; preds = %.lr.ph35 call void @_ZN5Mutex4lockEv(ptr noundef nonnull align 8 dereferenceable(104) %17) #23 %19 = load i32, ptr %5, align 4 %20 = load i32, ptr %14, align 4 @@ -5472,7 +5471,7 @@ define hidden noundef zeroext i1 @_ZN15G1CollectedHeap18try_collect_fullgcEN7GCC call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %17) #23 br i1 %.not.us, label %_ZN11MutexLockerD2Ev.exit.us, label %.loopexit -_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread.us: ; preds = %.lr.ph +_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread.us: ; preds = %.lr.ph35 %21 = load i32, ptr %5, align 4 %22 = load i32, ptr %14, align 4 %.not11.us = icmp eq i32 %21, %22 @@ -5494,10 +5493,66 @@ _ZN11MutexLockerD2Ev.exit.us: ; preds = %_ZN11MutexLockerC2E call void @_ZN8VMThread7executeEP12VM_Operation(ptr noundef nonnull %4) #23 %25 = load i8, ptr %13, align 1 %26 = trunc i8 %25 to i1 - br i1 %26, label %.loopexit, label %.lr.ph + br i1 %26, label %.loopexit, label %.lr.ph35 + +.split: ; preds = %3 + %25 = icmp ne i32 %1, 9 + %26 = load i32, ptr %2, align 4 + %27 = load i32, ptr %5, align 4 + store ptr null, ptr %6, align 8 + store i8 1, ptr %7, align 8 + store i8 0, ptr %8, align 1 + store i32 %26, ptr %9, align 8 + store i32 %1, ptr %10, align 4 + store i8 0, ptr %11, align 8 + store i32 %27, ptr %12, align 4 + store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV16VM_G1CollectFull, i64 16), ptr %4, align 8 + store i8 0, ptr %13, align 1 + call void @_ZN8VMThread7executeEP12VM_Operation(ptr noundef nonnull %4) #23 + %28 = load i8, ptr %13, align 1 + %29 = trunc i8 %28 to i1 + %or.cond27 = select i1 %25, i1 true, i1 %29 + br i1 %or.cond27, label %.loopexit, label %.lr.ph.split + +.lr.ph.split: ; preds = %.split, %_ZN11MutexLockerD2Ev.exit + %30 = load ptr, ptr @Heap_lock, align 8 + %.not.i.i = icmp eq ptr %30, null + br i1 %.not.i.i, label %_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread, label %33 + +_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread: ; preds = %.lr.ph.split + %31 = load i32, ptr %5, align 4 + %32 = load i32, ptr %14, align 4 + %.not14 = icmp eq i32 %31, %32 + br i1 %.not14, label %_ZN11MutexLockerD2Ev.exit, label %.loopexit + +33: ; preds = %.lr.ph.split + call void @_ZN5Mutex4lockEv(ptr noundef nonnull align 8 dereferenceable(104) %30) #23 + %34 = load i32, ptr %5, align 4 + %35 = load i32, ptr %14, align 4 + %.not = icmp eq i32 %34, %35 + call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %30) #23 + br i1 %.not, label %_ZN11MutexLockerD2Ev.exit, label %.loopexit + +_ZN11MutexLockerD2Ev.exit: ; preds = %33, %_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread + call void @_ZN15VM_GC_OperationD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %4) #23 + %36 = load i32, ptr %2, align 4 + %37 = load i32, ptr %5, align 4 + store ptr null, ptr %6, align 8 + store i8 1, ptr %7, align 8 + store i8 0, ptr %8, align 1 + store i32 %36, ptr %9, align 8 + store i32 9, ptr %10, align 4 + store i8 0, ptr %11, align 8 + store i32 %37, ptr %12, align 4 + store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV16VM_G1CollectFull, i64 16), ptr %4, align 8 + store i8 0, ptr %13, align 1 + call void @_ZN8VMThread7executeEP12VM_Operation(ptr noundef nonnull %4) #23 + %38 = load i8, ptr %13, align 1 + %39 = trunc i8 %38 to i1 + br i1 %39, label %.loopexit, label %.lr.ph.split -.loopexit: ; preds = %_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread.us, %18, %_ZN11MutexLockerD2Ev.exit.us, %3, %.split.us - %.19.ph = phi i1 [ true, %.split.us ], [ %.pre23, %3 ], [ true, %_ZN11MutexLockerD2Ev.exit.us ], [ true, %18 ], [ true, %_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread.us ] +.loopexit: ; preds = %_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread.us, %18, %_ZN11MutexLockerD2Ev.exit.us, %_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread, %33, %_ZN11MutexLockerD2Ev.exit, %.split.us, %.split + %.19.ph = phi i1 [ true, %.split.us ], [ %29, %.split ], [ true, %_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread ], [ true, %_ZN11MutexLockerD2Ev.exit ], [ true, %33 ], [ true, %_ZN11MutexLockerD2Ev.exit.us ], [ true, %18 ], [ true, %_ZN11MutexLockerC2EP5MutexNS0_18SafepointCheckFlagE.exit.thread.us ] call void @_ZN15VM_GC_OperationD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %4) #23 ret i1 %.19.ph } diff --git a/bench/openjdk/optimized/graphKit.ll b/bench/openjdk/optimized/graphKit.ll index 591a02d31c9..717c93f67ab 100644 --- a/bench/openjdk/optimized/graphKit.ll +++ b/bench/openjdk/optimized/graphKit.ll @@ -180,6 +180,7 @@ $_ZTV8GraphKit = comdat any @_ZTV8AddINode = external unnamed_addr constant { [31 x ptr] }, align 8 @type2field = external local_unnamed_addr global [20 x i8], align 16 @llvm.global_ctors = appending global [0 x { i32, ptr, ptr }] zeroinitializer +@switch.table._ZN8GraphKit41record_profiled_arguments_for_speculationEP8ciMethodN9Bytecodes4CodeE = private unnamed_addr constant [4 x i32] [i32 1, i32 1, i32 0, i32 1], align 4 @_ZN8GraphKitC1EP8JVMState = hidden unnamed_addr alias void (ptr, ptr), ptr @_ZN8GraphKitC2EP8JVMState @_ZN8GraphKitC1Ev = hidden unnamed_addr alias void (ptr), ptr @_ZN8GraphKitC2Ev @@ -5460,12 +5461,19 @@ _ZN7ciField4typeEv.exit: ; preds = %65, %72 %93 = load ptr, ptr %6, align 8 %94 = getelementptr inbounds nuw i8, ptr %93, i64 48 %95 = load i32, ptr %94, align 8 - %96 = and i32 %.045, -2 - %or.cond.i.i = icmp eq i32 %96, 182 - %97 = icmp eq i32 %.045, 185 - %spec.select.i.i = or i1 %97, %or.cond.i.i - %98 = zext i1 %spec.select.i.i to i32 - %99 = add nsw i32 %95, %98 + %switch.tableidx = add i32 %.045, -182 + %or.cond.i.i = icmp ult i32 %switch.tableidx, 4 + br i1 %or.cond.i.i, label %switch.lookup, label %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit + +switch.lookup:; preds = %89 + %97 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw i32, ptr @switch.table._ZN8GraphKit41record_profiled_arguments_for_speculationEP8ciMethodN9Bytecodes4CodeE, i64 %97 + %switch.load = load i32, ptr %switch.gep, align 4 + br label %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit + +_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit: ; preds = %89, %switch.lookup + %98 = phi i32 [ %switch.load, %switch.lookup ], [ 0, %89 ] + %99 = add nsw i32 %98, %95 store i32 %99, ptr %1, align 4 %100 = getelementptr inbounds nuw i8, ptr %93, i64 40 %101 = load ptr, ptr %100, align 8 @@ -5607,8 +5615,8 @@ _ZN16ciBytecodeStream4nextEv.exit: ; preds = %_ZN16ciBytecodeStre store i32 %173, ptr %1, align 4 br label %.thread50 -.thread50: ; preds = %3, %50, %56, %57, %58, %59, %60, %61, %62, %63, %64, %89, %_ZN16ciBytecodeStream4nextEv.exit, %161, %163, %"_ZZN8GraphKit21compute_stack_effectsERiS0_ENK3$_0clEv.exit", %86, %84 - %.0 = phi i1 [ false, %3 ], [ true, %84 ], [ true, %86 ], [ true, %"_ZZN8GraphKit21compute_stack_effectsERiS0_ENK3$_0clEv.exit" ], [ true, %163 ], [ true, %161 ], [ true, %_ZN16ciBytecodeStream4nextEv.exit ], [ true, %89 ], [ true, %64 ], [ true, %63 ], [ true, %62 ], [ true, %61 ], [ true, %60 ], [ true, %59 ], [ true, %58 ], [ true, %57 ], [ true, %56 ], [ false, %50 ] +.thread50: ; preds = %3, %50, %56, %57, %58, %59, %60, %61, %62, %63, %64, %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit, %_ZN16ciBytecodeStream4nextEv.exit, %161, %163, %"_ZZN8GraphKit21compute_stack_effectsERiS0_ENK3$_0clEv.exit", %86, %84 + %.0 = phi i1 [ false, %3 ], [ true, %84 ], [ true, %86 ], [ true, %"_ZZN8GraphKit21compute_stack_effectsERiS0_ENK3$_0clEv.exit" ], [ true, %163 ], [ true, %161 ], [ true, %_ZN16ciBytecodeStream4nextEv.exit ], [ true, %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit ], [ true, %64 ], [ true, %63 ], [ true, %62 ], [ true, %61 ], [ true, %60 ], [ true, %59 ], [ true, %58 ], [ true, %57 ], [ true, %56 ], [ false, %50 ] ret i1 %.0 } @@ -13896,29 +13904,35 @@ define hidden void @_ZN8GraphKit41record_profiled_arguments_for_speculationEP8ci %12 = getelementptr inbounds nuw i8, ptr %11, i64 20 %13 = load i32, ptr %12, align 4 %14 = add i32 %13, -5 - %15 = and i32 %2, -2 - %or.cond.i = icmp eq i32 %15, 182 - %16 = icmp eq i32 %2, 185 - %spec.select.i = or i1 %16, %or.cond.i - %17 = zext i1 %spec.select.i to i32 - %18 = icmp sgt i32 %14, %17 + %switch.tableidx = add i32 %2, -182 + %or.cond.i = icmp ult i32 %switch.tableidx, 4 + br i1 %15, label %switch.lookup, label %_ZN9Bytecodes12has_receiverENS_4CodeE.exit + +switch.lookup:; preds = %8 + %16 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw i32, ptr @switch.table._ZN8GraphKit41record_profiled_arguments_for_speculationEP8ciMethodN9Bytecodes4CodeE, i64 %16 + %switch.load = load i32, ptr %switch.gep, align 4 + br label %_ZN9Bytecodes12has_receiverENS_4CodeE.exit + +_ZN9Bytecodes12has_receiverENS_4CodeE.exit: ; preds = %8, %switch.lookup + %17 = phi i32 [ %switch.load, %switch.lookup ], [ 0, %8 ] + %18 = icmp slt i32 %17, %14 %19 = load i32, ptr @TypeProfileArgsLimit, align 4 %20 = icmp sgt i32 %19, 0 %21 = select i1 %18, i1 %20, i1 false br i1 %21, label %.lr.ph, label %.loopexit -.lr.ph: ; preds = %8 +.lr.ph: ; preds = %_ZN9Bytecodes12has_receiverENS_4CodeE.exit %22 = getelementptr inbounds nuw i8, ptr %0, i64 64 %23 = getelementptr inbounds nuw i8, ptr %0, i64 56 %24 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %25 = or i1 %or.cond.i, %16 - %umax = zext i1 %25 to i64 + %25 = zext nneg i32 %17 to i64 %sext = zext nneg i32 %14 to i64 br label %26 26: ; preds = %.lr.ph, %_Z17is_reference_type9BasicTypeb.exit %27 = phi i32 [ %19, %.lr.ph ], [ %66, %_Z17is_reference_type9BasicTypeb.exit ] - %indvars.iv = phi i64 [ %umax, %.lr.ph ], [ %indvars.iv.next, %_Z17is_reference_type9BasicTypeb.exit ] + %indvars.iv = phi i64 [ %25, %.lr.ph ], [ %indvars.iv.next, %_Z17is_reference_type9BasicTypeb.exit ] %.01416 = phi i32 [ 0, %.lr.ph ], [ %.1, %_Z17is_reference_type9BasicTypeb.exit ] %28 = load ptr, ptr %10, align 8 %29 = getelementptr inbounds nuw i8, ptr %28, i64 24 @@ -13979,7 +13993,7 @@ _Z17is_reference_type9BasicTypeb.exit: ; preds = %26, %64 %69 = select i1 %67, i1 %68, i1 false br i1 %69, label %26, label %.loopexit, !llvm.loop !38 -.loopexit: ; preds = %_Z17is_reference_type9BasicTypeb.exit, %8, %3 +.loopexit: ; preds = %_Z17is_reference_type9BasicTypeb.exit, %_ZN9Bytecodes12has_receiverENS_4CodeE.exit, %3 ret void } diff --git a/bench/openjdk/optimized/hb-ot-shaper-arabic.ll b/bench/openjdk/optimized/hb-ot-shaper-arabic.ll index 069b7357a74..d5101777b5f 100644 --- a/bench/openjdk/optimized/hb-ot-shaper-arabic.ll +++ b/bench/openjdk/optimized/hb-ot-shaper-arabic.ll @@ -978,10 +978,10 @@ _ZL14arabic_joiningP11hb_buffer_t.exit: ; preds = %_ZL14arabic_joining br label %.lr.ph.i15 .lr.ph.i15: ; preds = %203, %.lr.ph.preheader.i - %indvars.iv.i16 = phi i64 [ 1, %.lr.ph.preheader.i ], [ %indvars.iv.next.i17, %203 ] + %indvars.iv.i16 = phi i64 [ 1, %.lr.ph.preheader.i ], [ %indvars.iv.next.i17, %_ZL12hb_in_rangesIjJjjEEbT_S0_S0_DpT0_.exit.i ] %197 = getelementptr inbounds nuw %struct.hb_glyph_info_t, ptr %.pre35, i64 %indvars.iv.i16 %198 = load i32, ptr %197, align 4 - switch i32 %198, label %203 [ + switch i32 %198, label %_ZL12hb_in_rangesIjJjjEEbT_S0_S0_DpT0_.exit.i [ i32 6159, label %199 i32 6157, label %199 i32 6156, label %199 diff --git a/bench/openjdk/optimized/library_call.ll b/bench/openjdk/optimized/library_call.ll index afd76a13ef3..bfbbb725caf 100644 --- a/bench/openjdk/optimized/library_call.ll +++ b/bench/openjdk/optimized/library_call.ll @@ -548,6 +548,7 @@ $_ZTV14LibraryCallKit = comdat any @_ZTV16OverflowMulLNode = external unnamed_addr constant { [30 x ptr] }, align 8 @llvm.global_ctors = appending global [5 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.130, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_162ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.131, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_0ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.132, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_107ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.133, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_80ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.134, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE65ELS1_60ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE }] @llvm.used = appending global [5 x ptr] [ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_0ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_107ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_162ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_80ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE65ELS1_60ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE], section "llvm.metadata" +@switch.table._ZN14LibraryCallKitC2EP8JVMStateP16LibraryIntrinsic = private unnamed_addr constant [4 x i32] [i32 1, i32 1, i32 0, i32 1], align 4 @switch.table._ZN14LibraryCallKit19inline_unsafe_fenceE13vmIntrinsicID = private unnamed_addr constant [4 x i32] [i32 214, i32 218, i32 219, i32 221], align 4 @switch.table._ZN14LibraryCallKit17inline_fp_min_maxE13vmIntrinsicID = private unnamed_addr constant [16 x i32] [i32 1, i32 1, i32 2, i32 2, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 1, i32 1, i32 2, i32 2], align 4 @switch.table._ZN14LibraryCallKit28mo_decorator_for_access_kindENS_10AccessKindE = private unnamed_addr constant [5 x i64] [i64 64, i64 128, i64 1024, i64 256, i64 512], align 8 @@ -1107,19 +1108,26 @@ _ZN8ciMethod16java_code_at_bciEi.exit: ; preds = %_ZN8ciMethod4codeEv %45 = load i32, ptr %44, align 4 %46 = getelementptr inbounds nuw i8, ptr %23, i64 48 %47 = load i32, ptr %46, align 8 - %48 = and i32 %45, -2 - %or.cond.i.i = icmp eq i32 %48, 182 - %49 = icmp eq i32 %45, 185 - %spec.select.i.i = or i1 %49, %or.cond.i.i - %50 = zext i1 %spec.select.i.i to i32 - %51 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %52 = load i32, ptr %51, align 8 - %53 = add i32 %52, %47 - %54 = add i32 %53, %50 + %switch.tableidx = add i32 %45, -182 + %or.cond.i.i = icmp ult i32 %switch.tableidx, 4 + br i1 %48, label %switch.lookup, label %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit + +switch.lookup:; preds = %_ZN8ciMethod16java_code_at_bciEi.exit + %49 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw i32, ptr @switch.table._ZN14LibraryCallKitC2EP8JVMStateP16LibraryIntrinsic, i64 %49 + %switch.load = load i32, ptr %switch.gep, align 4 + br label %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit + +_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit: ; preds = %_ZN8ciMethod16java_code_at_bciEi.exit, %switch.lookup + %50 = phi i32 [ %switch.load, %switch.lookup ], [ 0, %_ZN8ciMethod16java_code_at_bciEi.exit ] + %51 = add nsw i32 %50, %47 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %53 = load i32, ptr %52, align 8 + %54 = add nsw i32 %51, %53 br label %55 -55: ; preds = %_ZN8ciMethod16java_code_at_bciEi.exit, %10 - %.sink = phi i32 [ %54, %_ZN8ciMethod16java_code_at_bciEi.exit ], [ %12, %10 ] +55: ; preds = %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit, %10 + %.sink = phi i32 [ %54, %_ZN11ciSignature15arg_size_for_bcEN9Bytecodes4CodeE.exit ], [ %12, %10 ] %56 = getelementptr inbounds nuw i8, ptr %0, i64 104 store i32 %.sink, ptr %56, align 8 ret void @@ -7099,15 +7107,15 @@ define hidden noundef zeroext i1 @_ZN14LibraryCallKit17inline_array_sortEv(ptr n %69 = add i8 %63, -7 %switch.and.i.i = and i8 %69, -5 %switch.selectcmp.i.i = icmp eq i8 %switch.and.i.i, 0 - br label %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i - -_ZN7Matcher18supports_simd_sortE9BasicType.exit.i: ; preds = %68, %61 - %.0.i.i = phi i1 [ false, %61 ], [ %switch.selectcmp.i.i, %68 ] %70 = icmp eq ptr %23, null - %or.cond.i = or i1 %70, %.0.i.i + %or.cond.i = or i1 %70, %switch.selectcmp.i.i br i1 %or.cond.i, label %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread, label %71 -71: ; preds = %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i +_ZN7Matcher18supports_simd_sortE9BasicType.exit.i:; preds = %61 + %.old.i = icmp eq ptr %23, null + br i1 %.old.i, label %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread, label %71 + +71: ; preds = %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i, %68 %72 = getelementptr inbounds nuw i8, ptr %23, i64 16 %73 = load ptr, ptr %72, align 8 %74 = icmp eq ptr %73, null @@ -7160,8 +7168,8 @@ _ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit: ; pre %111 = tail call noundef ptr @_ZN8GraphKit17make_runtime_callEiPK8TypeFuncPhPKcPK7TypePtrP4NodeSA_SA_SA_SA_SA_SA_SA_(ptr noundef nonnull align 8 dereferenceable(84) %0, i32 noundef 1, ptr noundef %109, ptr noundef nonnull %3, ptr noundef nonnull @.str.67, ptr noundef %110, ptr noundef %105, ptr noundef %108, ptr noundef %31, ptr noundef %35, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null) #13 br label %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread -_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread: ; preds = %66, %71, %37, %75, %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i, %41, %5, %58, %96, %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit, %1, %104 - %.0 = phi i1 [ false, %1 ], [ false, %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit ], [ true, %104 ], [ true, %96 ], [ false, %58 ], [ false, %5 ], [ false, %41 ], [ false, %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i ], [ false, %75 ], [ false, %37 ], [ false, %71 ], [ false, %66 ] +_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread: ; preds = %68, %66, %71, %37, %75, %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i, %41, %5, %58, %96, %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit, %1, %104 + %.0 = phi i1 [ false, %1 ], [ false, %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit ], [ true, %104 ], [ true, %96 ], [ false, %58 ], [ false, %5 ], [ false, %41 ], [ false, %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i ], [ false, %75 ], [ false, %37 ], [ false, %71 ], [ false, %66 ], [ false, %68 ] ret i1 %.0 } @@ -7263,15 +7271,15 @@ define hidden noundef zeroext i1 @_ZN14LibraryCallKit22inline_array_partitionEv( %78 = add i8 %72, -7 %switch.and.i.i = and i8 %78, -5 %switch.selectcmp.i.i = icmp eq i8 %switch.and.i.i, 0 - br label %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i - -_ZN7Matcher18supports_simd_sortE9BasicType.exit.i: ; preds = %77, %70 - %.0.i.i = phi i1 [ false, %70 ], [ %switch.selectcmp.i.i, %77 ] %79 = icmp eq ptr %24, null - %or.cond.i = or i1 %79, %.0.i.i + %or.cond.i = or i1 %79, %switch.selectcmp.i.i br i1 %or.cond.i, label %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread, label %80 -80: ; preds = %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i +_ZN7Matcher18supports_simd_sortE9BasicType.exit.i:; preds = %70 + %.old.i = icmp eq ptr %24, null + br i1 %.old.i, label %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread, label %80 + +80: ; preds = %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i, %77 %81 = getelementptr inbounds nuw i8, ptr %24, i64 16 %82 = load ptr, ptr %81, align 8 %83 = icmp eq ptr %82, null @@ -7361,8 +7369,8 @@ _ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit: ; pre store ptr %125, ptr %144, align 8 br label %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread -_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread: ; preds = %75, %80, %46, %84, %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i, %50, %6, %67, %129, %143, %105, %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit, %1 - %.0 = phi i1 [ false, %1 ], [ false, %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit ], [ true, %105 ], [ true, %143 ], [ true, %129 ], [ false, %67 ], [ false, %6 ], [ false, %50 ], [ false, %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i ], [ false, %84 ], [ false, %46 ], [ false, %80 ], [ false, %75 ] +_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit.thread: ; preds = %77, %75, %80, %46, %84, %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i, %50, %6, %67, %129, %143, %105, %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit, %1 + %.0 = phi i1 [ false, %1 ], [ false, %_ZN14LibraryCallKit26check_array_sort_argumentsEP4NodeS1_R9BasicType.exit ], [ true, %105 ], [ true, %143 ], [ true, %129 ], [ false, %67 ], [ false, %6 ], [ false, %50 ], [ false, %_ZN7Matcher18supports_simd_sortE9BasicType.exit.i ], [ false, %84 ], [ false, %46 ], [ false, %80 ], [ false, %75 ], [ false, %77 ] ret i1 %.0 } @@ -56243,15 +56251,15 @@ define hidden noundef zeroext i1 @_ZN14LibraryCallKit26check_array_sort_argument %38 = add i8 %32, -7 %switch.and.i = and i8 %38, -5 %switch.selectcmp.i = icmp eq i8 %switch.and.i, 0 - br label %_ZN7Matcher18supports_simd_sortE9BasicType.exit - -_ZN7Matcher18supports_simd_sortE9BasicType.exit: ; preds = %30, %37 - %.0.i = phi i1 [ false, %30 ], [ %switch.selectcmp.i, %37 ] %39 = icmp eq ptr %2, null - %or.cond = or i1 %39, %.0.i + %or.cond = or i1 %39, %switch.selectcmp.i br i1 %or.cond, label %_ZN7Matcher18supports_simd_sortE9BasicType.exit.thread, label %40 -40: ; preds = %_ZN7Matcher18supports_simd_sortE9BasicType.exit +_ZN7Matcher18supports_simd_sortE9BasicType.exit:; preds = %30 + %.old = icmp eq ptr %2, null + br i1 %.old, label %_ZN7Matcher18supports_simd_sortE9BasicType.exit.thread, label %40 + +40: ; preds = %37, %_ZN7Matcher18supports_simd_sortE9BasicType.exit %41 = getelementptr inbounds nuw i8, ptr %2, i64 16 %42 = load ptr, ptr %41, align 8 %43 = icmp eq ptr %42, null @@ -56284,8 +56292,8 @@ _ZN7Matcher18supports_simd_sortE9BasicType.exit: ; preds = %30, %37 %66 = icmp ne ptr %64, %65 br label %_ZN7Matcher18supports_simd_sortE9BasicType.exit.thread -_ZN7Matcher18supports_simd_sortE9BasicType.exit.thread: ; preds = %35, %60, %44, %40, %_ZN7Matcher18supports_simd_sortE9BasicType.exit, %27, %10, %4, %6 - %.0 = phi i1 [ false, %27 ], [ false, %4 ], [ false, %10 ], [ false, %_ZN7Matcher18supports_simd_sortE9BasicType.exit ], [ false, %44 ], [ %66, %60 ], [ false, %6 ], [ false, %40 ], [ false, %35 ] +_ZN7Matcher18supports_simd_sortE9BasicType.exit.thread: ; preds = %37, %35, %60, %44, %40, %_ZN7Matcher18supports_simd_sortE9BasicType.exit, %27, %10, %4, %6 + %.0 = phi i1 [ false, %27 ], [ false, %4 ], [ false, %10 ], [ false, %_ZN7Matcher18supports_simd_sortE9BasicType.exit ], [ false, %44 ], [ %66, %60 ], [ false, %6 ], [ false, %40 ], [ false, %35 ], [ false, %37 ] ret i1 %.0 } diff --git a/bench/openjdk/optimized/synchronizer.ll b/bench/openjdk/optimized/synchronizer.ll index b4a6b4a2b73..693ec6537e7 100644 --- a/bench/openjdk/optimized/synchronizer.ll +++ b/bench/openjdk/optimized/synchronizer.ll @@ -2883,10 +2883,9 @@ define hidden void @_ZN18ObjectSynchronizer22owned_monitors_iterateEP14MonitorCl %6 = getelementptr inbounds nuw i8, ptr %.sroa.0.04.i.i, i64 64 %7 = load volatile ptr, ptr %6, align 8 %magicptr.i.i.i = ptrtoint ptr %7 to i64 - switch i64 %magicptr.i.i.i, label %8 [ - i64 2, label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i" - i64 0, label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i" - ] + %switch.and.i.i.i.i = and i64 %magicptr.i.i.i, -3 + %switch.selectcmp.i.not.i.i.i = icmp eq i64 %switch.and.i.i.i.i, 0 + br i1 %switch.selectcmp.i.not.i.i.i, label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i", label %8 8: ; preds = %.lr.ph.i.i %9 = load volatile ptr, ptr %6, align 8 @@ -2899,7 +2898,7 @@ define hidden void @_ZN18ObjectSynchronizer22owned_monitors_iterateEP14MonitorCl tail call void %13(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %.sroa.0.04.i.i) #19 br label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i" -"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i": ; preds = %11, %8, %.lr.ph.i.i, %.lr.ph.i.i +"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i": ; preds = %11, %8, %.lr.ph.i.i %.not.i.i = icmp eq ptr %5, null br i1 %.not.i.i, label %"_ZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_.exit", label %.lr.ph.i.i, !llvm.loop !39 @@ -2921,10 +2920,9 @@ define hidden void @_ZN18ObjectSynchronizer22owned_monitors_iterateEP14MonitorCl %5 = getelementptr inbounds nuw i8, ptr %.sroa.0.04.i.i, i64 64 %6 = load volatile ptr, ptr %5, align 8 %magicptr.i.i.i = ptrtoint ptr %6 to i64 - switch i64 %magicptr.i.i.i, label %7 [ - i64 2, label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES6_.exit.i.i" - i64 0, label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES6_.exit.i.i" - ] + %switch.and.i.i.i.i = and i64 %magicptr.i.i.i, -3 + %switch.selectcmp.i.not.i.i.i = icmp eq i64 %switch.and.i.i.i.i, 0 + br i1 %switch.selectcmp.i.not.i.i.i, label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES6_.exit.i.i", label %7 7: ; preds = %.lr.ph.i.i %8 = load volatile ptr, ptr %5, align 8 @@ -2933,7 +2931,7 @@ define hidden void @_ZN18ObjectSynchronizer22owned_monitors_iterateEP14MonitorCl tail call void %10(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %.sroa.0.04.i.i) #19 br label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES6_.exit.i.i" -"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES6_.exit.i.i": ; preds = %7, %.lr.ph.i.i, %.lr.ph.i.i +"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES6_.exit.i.i": ; preds = %7, %.lr.ph.i.i %.not.i.i = icmp eq ptr %4, null br i1 %.not.i.i, label %"_ZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureE3$_0EEvS2_T_.exit", label %.lr.ph.i.i, !llvm.loop !40 @@ -4614,10 +4612,9 @@ define hidden void @_ZN18ObjectSynchronizer32release_monitors_owned_by_threadEP1 %7 = getelementptr inbounds nuw i8, ptr %.sroa.0.04.i.i.i, i64 64 %8 = load volatile ptr, ptr %7, align 8 %magicptr.i.i.i.i = ptrtoint ptr %8 to i64 - switch i64 %magicptr.i.i.i.i, label %9 [ - i64 2, label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i.i" - i64 0, label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i.i" - ] + %switch.and.i.i.i.i.i = and i64 %magicptr.i.i.i.i, -3 + %switch.selectcmp.i.not.i.i.i.i = icmp eq i64 %switch.and.i.i.i.i.i, 0 + br i1 %switch.selectcmp.i.not.i.i.i.i, label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i.i", label %9 9: ; preds = %.lr.ph.i.i.i %10 = load volatile ptr, ptr %7, align 8 @@ -4630,7 +4627,7 @@ define hidden void @_ZN18ObjectSynchronizer32release_monitors_owned_by_threadEP1 call void %14(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %.sroa.0.04.i.i.i) #19 br label %"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i.i" -"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i.i": ; preds = %12, %9, %.lr.ph.i.i.i, %.lr.ph.i.i.i +"_ZZN18ObjectSynchronizer31owned_monitors_iterate_filteredIZNS_22owned_monitors_iterateEP14MonitorClosureP10JavaThreadE3$_0EEvS2_T_ENKUlP13ObjectMonitorE_clES8_.exit.i.i.i": ; preds = %12, %9, %.lr.ph.i.i.i %.not.i.i.i = icmp eq ptr %6, null br i1 %.not.i.i.i, label %_ZN18ObjectSynchronizer22owned_monitors_iterateEP14MonitorClosureP10JavaThread.exit, label %.lr.ph.i.i.i, !llvm.loop !39 @@ -4887,12 +4884,11 @@ define hidden void @_ZN18ObjectSynchronizer26log_in_use_monitor_detailsEP12outpu %12 = getelementptr inbounds nuw i8, ptr %.sroa.0.03.i, i64 64 %13 = load volatile ptr, ptr %12, align 8 %magicptr.i.i.i = ptrtoint ptr %13 to i64 - switch i64 %magicptr.i.i.i, label %"_ZZN18ObjectSynchronizer26log_in_use_monitor_detailsEP12outputStreambENK3$_1clEP13ObjectMonitor.exit.thread.i.i" [ - i64 2, label %14 - i64 0, label %14 - ] + %switch.and.i.i.i.i = and i64 %magicptr.i.i.i, -3 + %switch.selectcmp.i.not.i.i.i = icmp eq i64 %switch.and.i.i.i.i, 0 + br i1 %switch.selectcmp.i.not.i.i.i, label %14, label %"_ZZN18ObjectSynchronizer26log_in_use_monitor_detailsEP12outputStreambENK3$_1clEP13ObjectMonitor.exit.thread.i.i" -14: ; preds = %11, %11 +14: ; preds = %11 %15 = getelementptr inbounds nuw i8, ptr %.sroa.0.03.i, i64 192 %16 = load volatile i32, ptr %15, align 8 %17 = sext i32 %16 to i64 diff --git a/bench/openjdk/optimized/threadService.ll b/bench/openjdk/optimized/threadService.ll index 75f3d2461f2..671e0ebd364 100644 --- a/bench/openjdk/optimized/threadService.ll +++ b/bench/openjdk/optimized/threadService.ll @@ -1627,10 +1627,9 @@ _ZN13DeadlockCycle10add_threadEP10JavaThread.exit: ; preds = %.critedge, %111 %134 = getelementptr inbounds nuw i8, ptr %.075175, i64 64 %135 = load volatile ptr, ptr %134, align 8 %magicptr = ptrtoint ptr %135 to i64 - switch i64 %magicptr, label %136 [ - i64 2, label %.thread - i64 0, label %.thread - ] + %switch.and.i = and i64 %magicptr, -3 + %switch.selectcmp.i.not = icmp eq i64 %switch.and.i, 0 + br i1 %switch.selectcmp.i.not, label %.thread, label %136 136: ; preds = %133 %137 = tail call noundef ptr @_ZN7Threads26owning_thread_from_monitorEP11ThreadsListP13ObjectMonitor(ptr noundef %0, ptr noundef nonnull %.075175) #13 @@ -1723,8 +1722,8 @@ _ZNK7oopDesc4is_aEP5Klass.exit.thread: ; preds = %_ZNK7oopDesc5klassE %181 = icmp eq ptr %180, null br i1 %181, label %_ZN13ThreadService28is_virtual_or_carrier_threadEP10JavaThread.exit118.thread, label %.thread -.thread: ; preds = %127, %133, %133, %152, %136, %125, %179 - %.189150 = phi ptr [ %180, %179 ], [ %.087174, %152 ], [ %.087174, %133 ], [ %137, %136 ], [ %.087174, %125 ], [ %.087174, %133 ], [ %spec.select, %127 ] +.thread: ; preds = %127, %152, %133, %136, %125, %179 + %.189150 = phi ptr [ %180, %179 ], [ %.087174, %152 ], [ %.087174, %133 ], [ %137, %136 ], [ %.087174, %125 ], [ %spec.select, %127 ] %182 = tail call noundef ptr @_ZNK10JavaThread9threadObjEv(ptr noundef nonnull align 8 dereferenceable(1800) %.189150) #13 %.not.i120 = icmp eq ptr %182, null br i1 %.not.i120, label %_ZNK7oopDesc4is_aEP5Klass.exit.thread9.i124, label %183 diff --git a/bench/openusd/optimized/adapterManager.ll b/bench/openusd/optimized/adapterManager.ll index a76844a00bd..ee8b1a14639 100644 --- a/bench/openusd/optimized/adapterManager.ll +++ b/bench/openusd/optimized/adapterManager.ll @@ -397,7 +397,7 @@ _ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit: ; preds = %12 %19 = and i1 %18, %17 br i1 %19, label %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread7, label %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread -_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread: ; preds = %4, %_ZNK32pxrInternal_v0_24__pxrReserved__18Usd_PrimDataHandlecvbEv.exit.i.i, %2, %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit +_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread: ; preds = %4, %2, %_ZNK32pxrInternal_v0_24__pxrReserved__18Usd_PrimDataHandlecvbEv.exit.i.i, %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit %20 = load atomic i8, ptr @_ZGVZN32pxrInternal_v0_24__pxrReserved__25UsdImaging_AdapterManager14LookupAdaptersERKNS_7UsdPrimEE5empty acquire, align 8 %21 = icmp eq i8 %20, 0 br i1 %21, label %22, label %35, !prof !8 @@ -415,7 +415,7 @@ _ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread: ; preds = %4, tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN32pxrInternal_v0_24__pxrReserved__25UsdImaging_AdapterManager14LookupAdaptersERKNS_7UsdPrimEE5empty) #20 br label %35 -_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread7: ; preds = %10, %12, %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit +_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread7: ; preds = %12, %10, %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit %26 = load ptr, ptr %5, align 8 %.not.i.i = icmp eq ptr %26, null br i1 %.not.i.i, label %31, label %27 diff --git a/bench/openusd/optimized/dataSourcePrim.ll b/bench/openusd/optimized/dataSourcePrim.ll index ef57dcc51b1..cbfda888d2c 100644 --- a/bench/openusd/optimized/dataSourcePrim.ll +++ b/bench/openusd/optimized/dataSourcePrim.ll @@ -7173,7 +7173,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__18HdPrimOriginSchema10OriginPathD2Ev.exit: call void @_ZN32pxrInternal_v0_24__pxrReserved__7SdfPathD2Ev(ptr noundef nonnull align 4 dereferenceable(8) %12) #23 br label %common.resume -_ZN32pxrInternal_v0_24__pxrReserved__7SdfPathD2Ev.exit.sink.split: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__12TfStaticDataINS_40HdPrimOriginSchemaTokens_StaticTokenTypeENS_27Tf_StaticDataDefaultFactoryIS1_EEEptEv.exit, %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit, %33, %_ZNK32pxrInternal_v0_24__pxrReserved__18Usd_PrimDataHandlecvbEv.exit.i.i, %36 +_ZN32pxrInternal_v0_24__pxrReserved__7SdfPathD2Ev.exit.sink.split: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__12TfStaticDataINS_40HdPrimOriginSchemaTokens_StaticTokenTypeENS_27Tf_StaticDataDefaultFactoryIS1_EEEptEv.exit, %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit, %_ZNK32pxrInternal_v0_24__pxrReserved__18Usd_PrimDataHandlecvbEv.exit.i.i, %33, %36 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) br label %_ZN32pxrInternal_v0_24__pxrReserved__7SdfPathD2Ev.exit diff --git a/bench/pola-rs/optimized/1nb2gyhm0tinqn6ey8ai4djfd.ll b/bench/pola-rs/optimized/1nb2gyhm0tinqn6ey8ai4djfd.ll index db16e4e6dcc..397707f9e9e 100644 --- a/bench/pola-rs/optimized/1nb2gyhm0tinqn6ey8ai4djfd.ll +++ b/bench/pola-rs/optimized/1nb2gyhm0tinqn6ey8ai4djfd.ll @@ -151352,7 +151352,7 @@ define hidden noundef zeroext i1 @_ZN11polars_core3fmt11format_blob17ha49529ae12 br i1 %or.cond, label %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit41, label %switch.early.test switch.early.test: ; preds = %29 - switch i8 %31, label %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit46 [ + switch i8 %31, label %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit45 [ i8 126, label %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit41 i8 125, label %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit41 i8 124, label %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit41 @@ -151372,7 +151372,7 @@ switch.early.test: ; preds = %29 i8 58, label %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit41 ] -_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit41: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %29 +_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit41: ; preds = %29, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test call void @llvm.lifetime.start.p0(ptr nonnull %10) call void @llvm.lifetime.start.p0(ptr nonnull %9) %37 = zext nneg i8 %31 to i32 @@ -151442,7 +151442,7 @@ _ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit51: ; preds = %._crit_e br label %.loopexit .loopexit: ; preds = %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit46, %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit41, %42, %3, %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit51, %45 - %.sroa.0.2 = phi i1 [ false, %45 ], [ true, %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit51 ], [ true, %3 ], [ true, %42 ], [ true, %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit41 ], [ true, %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit46 ] + %.sroa.0.2 = phi i1 [ false, %45 ], [ true, %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit50 ], [ true, %3 ], [ true, %42 ], [ true, %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit40 ], [ true, %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit45 ] call void @llvm.lifetime.end.p0(ptr nonnull %12) ret i1 %.sroa.0.2 } diff --git a/bench/pola-rs/optimized/4k9mmppgjee0j2w63yqma6wuu.ll b/bench/pola-rs/optimized/4k9mmppgjee0j2w63yqma6wuu.ll index f671d6e385c..24465738439 100644 --- a/bench/pola-rs/optimized/4k9mmppgjee0j2w63yqma6wuu.ll +++ b/bench/pola-rs/optimized/4k9mmppgjee0j2w63yqma6wuu.ll @@ -150011,46 +150011,46 @@ define internal fastcc noundef zeroext i1 @_ZN11polars_plan3dsl13function_expr7s br label %4 4: ; preds = %switch.early.test.i, %2 - %5 = phi ptr [ %42, %switch.early.test.i ], [ %0, %2 ] + %5 = phi ptr [ %42, %switch.early.test.i.i.i.i ], [ %0, %2 ] %.not.i.i = icmp eq ptr %5, %3 - br i1 %.not.i.i, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hb855eda4f3059619E.exit, label %6 - -6: ; preds = %4 - %7 = getelementptr inbounds nuw i8, ptr %5, i64 1 - %8 = load i8, ptr %5, align 1, !noalias !12550, !noundef !3 - %9 = icmp sgt i8 %8, -1 - br i1 %9, label %20, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i" - -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i": ; preds = %6 - %10 = and i8 %8, 31 - %11 = zext nneg i8 %10 to i32 - %12 = icmp ne ptr %7, %3 - tail call void @llvm.assume(i1 %12) - %13 = getelementptr inbounds nuw i8, ptr %5, i64 2 - %14 = load i8, ptr %7, align 1, !noalias !12550, !noundef !3 - %15 = shl nuw nsw i32 %11, 6 - %16 = and i8 %14, 63 - %17 = zext nneg i8 %16 to i32 - %18 = or disjoint i32 %15, %17 - %19 = icmp samesign ugt i8 %8, -33 - br i1 %19, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i", label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i" - -20: ; preds = %6 - %21 = zext nneg i8 %8 to i32 + br i1 %.not.i.i, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hb855eda4f3059619E.exit, label %5 + +5: ; preds = %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17hb3fe0bc4d8ab6667E.exit.i" + %6 = getelementptr inbounds nuw i8, ptr %4, i64 1 + %7 = load i8, ptr %4, align 1, !noalias !12550, !noundef !3 + %8 = icmp sgt i8 %7, -1 + br i1 %8, label %19, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i": ; preds = %5 + %9 = and i8 %7, 31 + %10 = zext nneg i8 %9 to i32 + %11 = icmp ne ptr %6, %3 + tail call void @llvm.assume(i1 %11) + %12 = getelementptr inbounds nuw i8, ptr %4, i64 2 + %13 = load i8, ptr %6, align 1, !noalias !12550, !noundef !3 + %14 = shl nuw nsw i32 %10, 6 + %15 = and i8 %13, 63 + %16 = zext nneg i8 %15 to i32 + %17 = or disjoint i32 %14, %16 + %18 = icmp samesign ugt i8 %7, -33 + br i1 %18, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i", label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i" + +6: ; preds = %5 + %20 = zext nneg i8 %7 to i32 br label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i" - %22 = icmp ne ptr %13, %3 + %22 = icmp ne ptr %12, %3 tail call void @llvm.assume(i1 %22) %23 = getelementptr inbounds nuw i8, ptr %5, i64 3 - %24 = load i8, ptr %13, align 1, !noalias !12550, !noundef !3 - %25 = shl nuw nsw i32 %17, 6 + %24 = load i8, ptr %12, align 1, !noalias !12550, !noundef !3 + %25 = shl nuw nsw i32 %16, 6 %26 = and i8 %24, 63 %27 = zext nneg i8 %26 to i32 %28 = or disjoint i32 %25, %27 - %29 = shl nuw nsw i32 %11, 12 + %29 = shl nuw nsw i32 %10, 12 %30 = or disjoint i32 %28, %29 - %31 = icmp samesign ugt i8 %8, -17 + %31 = icmp samesign ugt i8 %7, -17 br i1 %31, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i", label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i" "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i" @@ -150058,7 +150058,7 @@ define internal fastcc noundef zeroext i1 @_ZN11polars_plan3dsl13function_expr7s tail call void @llvm.assume(i1 %32) %33 = getelementptr inbounds nuw i8, ptr %5, i64 4 %34 = load i8, ptr %23, align 1, !noalias !12550, !noundef !3 - %35 = shl nuw nsw i32 %11, 18 + %35 = shl nuw nsw i32 %10, 18 %36 = and i32 %35, 1835008 %37 = shl nuw nsw i32 %28, 6 %38 = and i8 %34, 63 @@ -150068,16 +150068,15 @@ define internal fastcc noundef zeroext i1 @_ZN11polars_plan3dsl13function_expr7s %.not.not.i = icmp eq i32 %41, 1114112 br i1 %.not.not.i, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hb855eda4f3059619E.exit, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i" -"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i", %20, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i" - %42 = phi ptr [ %33, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i" ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i" ], [ %13, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i" ], [ %7, %20 ] - %spec.select.i7.i = phi i32 [ %41, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i" ], [ %30, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i" ], [ %18, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i" ], [ %21, %20 ] - %spec.select.i7.fr.i = freeze i32 %spec.select.i7.i - %43 = add i32 %spec.select.i7.fr.i, -33 - %.sroa.0.0.i.i.i.i = icmp ult i32 %43, 15 +"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i", %6, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i" + %42 = phi ptr [ %33, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i" ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i" ], [ %12, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i" ], [ %6, %19 ] + %spec.select.i7.i = phi i32 [ %41, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i" ], [ %30, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit14.i.i.i" ], [ %17, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h325b837559daa90aE.exit12.i.i.i" ], [ %20, %19 ] + %42 = add nsw i32 %spec.select.i7.i, -33 + %.sroa.0.0.i.i.i.i = icmp ult i32 %42, 15 br i1 %.sroa.0.0.i.i.i.i, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hb855eda4f3059619E.exit, label %switch.early.test.i switch.early.test.i: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i" - switch i32 %spec.select.i7.fr.i, label %4 [ + switch i32 %spec.select.i7.i, label %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17hb3fe0bc4d8ab6667E.exit.i" [ i32 126, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hb855eda4f3059619E.exit i32 125, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hb855eda4f3059619E.exit i32 124, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hb855eda4f3059619E.exit @@ -150098,7 +150097,7 @@ switch.early.test.i: ; preds = %"_ZN81_$LT$core..st ] _ZN4core4iter6traits8iterator8Iterator8try_fold17hb855eda4f3059619E.exit: ; preds = %4, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.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 - %44 = phi i1 [ false, %switch.early.test.i ], [ true, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i" ], [ true, %4 ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i" ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ], [ false, %switch.early.test.i ] + %44 = phi i1 [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.thread.i" ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ false, %switch.early.test.i.i.i.i ], [ true, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47adbff103174036E.exit.i" ], [ true, %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17hb3fe0bc4d8ab6667E.exit.i" ] ret i1 %44 } diff --git a/bench/postgres/optimized/command.ll b/bench/postgres/optimized/command.ll index 19db9ec3dfb..4bc3bb6e6d1 100644 --- a/bench/postgres/optimized/command.ll +++ b/bench/postgres/optimized/command.ll @@ -8760,7 +8760,7 @@ ignore_slash_options.exit: ; preds = %.lr.ph.i, %14, %11 ; Function Attrs: nounwind uwtable define internal fastcc range(i32 2, 6) i32 @exec_command_shell_escape(ptr noundef %0, i1 noundef zeroext %1) unnamed_addr #0 { %3 = tail call ptr @psql_scan_slash_option(ptr noundef %0, i32 noundef 4, ptr noundef null, i1 noundef zeroext false) #17 - br i1 %1, label %4, label %18 + br i1 %1, label %4, label %16 4: ; preds = %2 %5 = tail call i32 @fflush(ptr noundef null) @@ -8783,29 +8783,32 @@ define internal fastcc range(i32 2, 6) i32 @exec_command_shell_escape(ptr nounde 13: ; preds = %11, %6 %.010.i = phi i32 [ %12, %11 ], [ %10, %6 ] tail call void @SetShellResultVariables(i32 noundef %.010.i) #17 - switch i32 %.010.i, label %do_shell.exit [ - i32 -1, label %14 - i32 127, label %14 + switch i32 %.010.i, label %do_shell.exit.thread [ + i32 -1, label %do_shell.exit + i32 127, label %do_shell.exit ] -14: ; preds = %13, %13 - tail call void (i32, i32, ptr, ...) @pg_log_generic(i32 noundef 4, i32 noundef 0, ptr noundef nonnull @.str.302) #17 - br label %do_shell.exit +14: ; preds = %13 + tail call void @free(ptr noundef %3) #17 + br label %15 -do_shell.exit: ; preds = %13, %14 - %15 = icmp ne i32 %.010.i, 127 - %16 = icmp ne i32 %.010.i, -1 - %or.cond.not.i = and i1 %15, %16 +do_shell.exit: ; preds = %13, %13 + tail call void (i32, i32, ptr, ...) @pg_log_generic(i32 noundef 4, i32 noundef 0, ptr noundef nonnull @.str.302) #17 + %14 = add nsw i32 %.010.i, 1 + %or.cond.not.i = and i32 %14, -129 + %switch.selectcmp.i.not = icmp eq i32 %switch.and.i, 0 tail call void @free(ptr noundef %3) #17 - %17 = select i1 %or.cond.not.i, i32 2, i32 5 - br label %19 + br i1 %switch.selectcmp.i.not, label %17, label %15 -18: ; preds = %2 +18: ; preds = %14, %do_shell.exit + br label %17 + +16: ; preds = %2 tail call void @free(ptr noundef %3) #17 br label %19 -19: ; preds = %18, %do_shell.exit - %.0 = phi i32 [ %17, %do_shell.exit ], [ 2, %18 ] +19: ; preds = %18, %do_shell.exit, %16 + %.0 = phi i32 [ 2, %16 ], [ 2, %15 ], [ 5, %do_shell.exit ] ret i32 %.0 } diff --git a/bench/postgres/optimized/parser.ll b/bench/postgres/optimized/parser.ll index 4f550054e94..ea3986c0f35 100644 --- a/bench/postgres/optimized/parser.ll +++ b/bench/postgres/optimized/parser.ll @@ -75,7 +75,7 @@ define dso_local range(i32 333, 332) i32 @filtered_base_yylex() local_unnamed_ad base_yylex_location.exit: ; preds = %17, %10, %7, %1 %.022 = phi i32 [ %2, %1 ], [ %6, %7 ], [ %6, %10 ], [ %6, %17 ] - switch i32 %.022, label %84 [ + switch i32 %.022, label %83 [ i32 500, label %20 i32 618, label %20 i32 625, label %20 @@ -140,7 +140,7 @@ base_yylex_location.exit36: ; preds = %base_yylex_location store ptr %21, ptr @base_yylloc, align 8 store ptr %22, ptr @base_yytext, align 8 store i1 true, ptr @have_lookahead, align 1 - switch i32 %.022, label %84 [ + switch i32 %.022, label %83 [ i32 500, label %39 i32 618, label %40 i32 625, label %42 @@ -156,7 +156,7 @@ base_yylex_location.exit36: ; preds = %base_yylex_location br label %84 40: ; preds = %base_yylex_location.exit36 - switch i32 %23, label %84 [ + switch i32 %23, label %83 [ i32 377, label %41 i32 527, label %41 i32 578, label %41 @@ -256,7 +256,7 @@ base_yylex_location.exit45.thread: ; preds = %54, %base_yylex_loc br i1 %.not.i46, label %switch.early.test.i, label %check_uescapechar.exit.thread switch.early.test.i: ; preds = %67 - switch i8 %69, label %76 [ + switch i8 %69, label %check_uescapechar.exit [ i8 43, label %check_uescapechar.exit.thread i8 39, label %check_uescapechar.exit.thread i8 34, label %check_uescapechar.exit.thread @@ -293,7 +293,7 @@ check_uescapechar.exit.thread: ; preds = %switch.early.test.i br label %84 84: ; preds = %46, %39, %base_yylex_location.exit36, %41, %40, %82, %42, %44, %80, %base_yylex_location.exit - %.0 = phi i32 [ %.022, %base_yylex_location.exit ], [ %.022, %base_yylex_location.exit36 ], [ %spec.store.select, %82 ], [ 328, %80 ], [ 618, %40 ], [ 839, %41 ], [ %spec.select, %39 ], [ %43, %42 ], [ %spec.select27, %46 ], [ %45, %44 ] + %.0 = phi i32 [ %.022, %base_yylex_location.exit ], [ %.022, %base_yylex_location.exit36 ], [ %spec.store.select, %81 ], [ 328, %79 ], [ 618, %40 ], [ 839, %41 ], [ %spec.select, %39 ], [ %43, %42 ], [ %spec.select27, %46 ], [ %45, %44 ] call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0) ret i32 %.0 } diff --git a/bench/postgres/optimized/walreceiverfuncs.ll b/bench/postgres/optimized/walreceiverfuncs.ll index 18e41976206..b07d8686198 100644 --- a/bench/postgres/optimized/walreceiverfuncs.ll +++ b/bench/postgres/optimized/walreceiverfuncs.ll @@ -177,7 +177,7 @@ declare i64 @time(ptr noundef) local_unnamed_addr #3 declare void @ConditionVariableBroadcast(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable -define dso_local zeroext i1 @WalRcvStreaming() local_unnamed_addr #0 { +define dso_local noundef zeroext i1 @WalRcvStreaming() local_unnamed_addr #0 { %1 = load ptr, ptr @WalRcv, align 8 %2 = getelementptr inbounds nuw i8, ptr %1, i64 2226 %3 = tail call i8 asm sideeffect "\09lock\09\09\09\0A\09xchgb\09$0,$1\09\0A", "=q,=*m,0,*m,~{memory},~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) %2, i8 1, ptr nonnull elementtype(i8) %2) #8, !srcloc !7 @@ -195,14 +195,17 @@ define dso_local zeroext i1 @WalRcvStreaming() local_unnamed_addr #0 { %10 = load i64, ptr %9, align 8 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #8, !srcloc !10 store i8 0, ptr %2, align 2 - %11 = icmp eq i32 %8, 1 - br i1 %11, label %12, label %26 + switch i32 %8, label %ret.false [ + i32 1, label %12 + i32 4, label %switch.return + i32 2, label %switch.return + ] 12: ; preds = %6 %13 = tail call i64 @time(ptr noundef null) #8 %14 = sub i64 %13, %10 %15 = icmp sgt i64 %14, 10 - br i1 %15, label %16, label %26 + br i1 %15, label %16, label %switch.return 16: ; preds = %12 %17 = tail call i8 asm sideeffect "\09lock\09\09\09\0A\09xchgb\09$0,$1\09\0A", "=q,=*m,0,*m,~{memory},~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) %2, i8 1, ptr nonnull elementtype(i8) %2) #8, !srcloc !7 @@ -221,7 +224,7 @@ define dso_local zeroext i1 @WalRcvStreaming() local_unnamed_addr #0 { 23: ; preds = %20 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #8, !srcloc !11 store i8 0, ptr %2, align 2 - br label %26 + br label %switch.return 24: ; preds = %20 store i32 0, ptr %7, align 8 @@ -231,13 +234,12 @@ define dso_local zeroext i1 @WalRcvStreaming() local_unnamed_addr #0 { tail call void @ConditionVariableBroadcast(ptr noundef nonnull %25) #8 br label %26 -26: ; preds = %23, %12, %24, %6 - %.022 = phi i32 [ %8, %6 ], [ 1, %12 ], [ 0, %24 ], [ 1, %23 ] - %27 = add i32 %.022, -1 - %or.cond = icmp ult i32 %27, 2 - %28 = icmp eq i32 %.022, 4 - %or.cond3 = or i1 %28, %or.cond - ret i1 %or.cond3 +26: ; preds = %6, %24 + br label %switch.return + +switch.return:; preds = %6, %6, %22, %12, %26 + %24 = phi i1 [ false, %ret.false ], [ true, %22 ], [ true, %6 ], [ true, %6 ], [ true, %11 ] + ret i1 %24 } ; Function Attrs: nounwind uwtable diff --git a/bench/rocksdb/optimized/string_util.ll b/bench/rocksdb/optimized/string_util.ll index 05e5e41ff49..2bd382bbf96 100644 --- a/bench/rocksdb/optimized/string_util.ll +++ b/bench/rocksdb/optimized/string_util.ll @@ -889,16 +889,20 @@ define noundef zeroext i1 @_ZN7rocksdb20ConsumeDecimalNumberEPNS_5SliceEPm(ptr n ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef zeroext i1 @_ZN7rocksdb13isSpecialCharEc(i8 noundef signext %0) local_unnamed_addr #9 { - %2 = icmp eq i8 %0, 92 - %3 = icmp eq i8 %0, 35 - %or.cond = or i1 %2, %3 - %4 = icmp eq i8 %0, 58 - %or.cond5 = or i1 %4, %or.cond - %5 = icmp eq i8 %0, 13 - %or.cond8 = or i1 %5, %or.cond5 - %6 = icmp eq i8 %0, 10 - %or.cond11 = or i1 %6, %or.cond8 - ret i1 %or.cond11 + switch i8 %0, label %ret.false [ + i8 92, label %switch.return + i8 58, label %switch.return + i8 35, label %switch.return + i8 13, label %switch.return + i8 10, label %switch.return + ] + +ret.false:; preds = %1 + br label %switch.return + +switch.return: ; preds = %1, %1, %1, %1, %1, %ret.false + %2 = phi i1 [ false, %ret.false ], [ true, %1 ], [ true, %1 ], [ true, %1 ], [ true, %1 ], [ true, %1 ] + ret i1 %2 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable @@ -961,13 +965,13 @@ define void @_ZN7rocksdb18EscapeOptionStringERKNSt7__cxx1112basic_stringIcSt11ch ret void .lr.ph: ; preds = %2, %56 - %.sroa.016.020 = phi ptr [ %59, %56 ], [ %5, %2 ] + %.sroa.016.020 = phi ptr [ %59, %55 ], [ %5, %2 ] %9 = load i8, ptr %.sroa.016.020, align 1, !tbaa !13 %10 = load i64, ptr %4, align 8, !tbaa !10 %11 = add i64 %10, 1 %12 = load ptr, ptr %0, align 8, !tbaa !30 %13 = icmp eq ptr %12, %3 - switch i8 %9, label %47 [ + switch i8 %9, label %_ZN7rocksdb13isSpecialCharEc.exit [ i8 92, label %14 i8 58, label %14 i8 35, label %14 diff --git a/bench/rust-analyzer-rs/optimized/kcxpblerbqo90m6.ll b/bench/rust-analyzer-rs/optimized/kcxpblerbqo90m6.ll index dfff15a27a7..d449d01fe9d 100644 --- a/bench/rust-analyzer-rs/optimized/kcxpblerbqo90m6.ll +++ b/bench/rust-analyzer-rs/optimized/kcxpblerbqo90m6.ll @@ -12407,17 +12407,17 @@ define hidden void @_ZN3ide9doc_links15intra_doc_links20parse_intra_doc_link17he store ptr %6, ptr %3, align 8, !noalias !1788 store ptr %9, ptr %10, align 8, !noalias !1788 %25 = call fastcc noundef i32 @_ZN4core4iter6traits8iterator8Iterator3nth17hb2f4a4a543c536e3E(ptr noalias noundef align 8 dereferenceable(16) %3, i64 noundef %21), !range !1790, !noalias !1772 + %25 = add nsw i32 %24, -32 + %switch.and.i.i.i.i.i.i.i = and i32 %25, -33 + %switch.selectcmp.i.i.i.i.i.i.i = icmp eq i32 %switch.and.i.i.i.i.i.i.i, 0 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !1788 - switch i32 %25, label %"_ZN3ide9doc_links15intra_doc_links20parse_intra_doc_link28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hb939c2ae1c886559E.exit.thread.i.i.i.i" [ - i32 32, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h0b163ea16981aa07E.exit.i.i.i" - i32 64, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h0b163ea16981aa07E.exit.i.i.i" - ] + br i1 %switch.selectcmp.i.i.i.i.i.i.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h0b163ea16981aa07E.exit.i.i.i", label %"_ZN3ide9doc_links15intra_doc_links20parse_intra_doc_link28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hb939c2ae1c886559E.exit.thread.i.i.i.i" "_ZN3ide9doc_links15intra_doc_links20parse_intra_doc_link28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hb939c2ae1c886559E.exit.thread.i.i.i.i": ; preds = %24, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h39564f5417398afdE.exit.i.i.i.i.i", %.lr.ph.i.i.i.i %26 = icmp eq ptr %19, %16 br i1 %26, label %.loopexit.i.i.i, label %.lr.ph.i.i.i.i -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h0b163ea16981aa07E.exit.i.i.i": ; preds = %24, %24 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h0b163ea16981aa07E.exit.i.i.i": ; preds = %24 %27 = getelementptr inbounds nuw i8, ptr %18, i64 8 %28 = load i64, ptr %27, align 8, !noalias !1791, !noundef !9 %29 = add i64 %28, 1 @@ -12563,17 +12563,17 @@ define hidden { ptr, i64 } @_ZN3ide9doc_links15intra_doc_links23strip_prefixes_s store ptr %0, ptr %2, align 8, !noalias !1845 store ptr %9, ptr %10, align 8, !noalias !1845 %25 = call fastcc noundef i32 @_ZN4core4iter6traits8iterator8Iterator3nth17hb2f4a4a543c536e3E(ptr noalias noundef align 8 dereferenceable(16) %2, i64 noundef %21), !range !1790, !noalias !1831 + %25 = add nsw i32 %24, -32 + %switch.and.i.i.i.i.i.i.i = and i32 %25, -33 + %switch.selectcmp.i.i.i.i.i.i.i = icmp eq i32 %switch.and.i.i.i.i.i.i.i, 0 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !1845 - switch i32 %25, label %"_ZN3ide9doc_links15intra_doc_links23strip_prefixes_suffixes28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hd98e70897087a0f9E.exit.thread.i.i.i.i" [ - i32 32, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h176e6304c14d10f5E.exit.i.i.i" - i32 64, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h176e6304c14d10f5E.exit.i.i.i" - ] + br i1 %switch.selectcmp.i.i.i.i.i.i.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h176e6304c14d10f5E.exit.i.i.i", label %"_ZN3ide9doc_links15intra_doc_links23strip_prefixes_suffixes28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hd98e70897087a0f9E.exit.thread.i.i.i.i" "_ZN3ide9doc_links15intra_doc_links23strip_prefixes_suffixes28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hd98e70897087a0f9E.exit.thread.i.i.i.i": ; preds = %24, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h39564f5417398afdE.exit.i.i.i.i.i", %.lr.ph.i.i.i.i %26 = icmp eq ptr %19, %16 br i1 %26, label %.loopexit.i.i.i, label %.lr.ph.i.i.i.i -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h176e6304c14d10f5E.exit.i.i.i": ; preds = %24, %24 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h176e6304c14d10f5E.exit.i.i.i": ; preds = %24 %27 = getelementptr inbounds nuw i8, ptr %18, i64 8 %28 = load i64, ptr %27, align 8, !noalias !1847, !noundef !9 %29 = add i64 %28, 1 diff --git a/bench/rustfmt-rs/optimized/4ext43viwbyeinhu.ll b/bench/rustfmt-rs/optimized/4ext43viwbyeinhu.ll index 38383e629f6..13b06960d6f 100644 --- a/bench/rustfmt-rs/optimized/4ext43viwbyeinhu.ll +++ b/bench/rustfmt-rs/optimized/4ext43viwbyeinhu.ll @@ -2106,14 +2106,14 @@ define internal fastcc void @"_ZN110_$LT$core..iter..adapters..enumerate..Enumer %.pn1.in.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.4.0.copyload, i64 16 %.pn3.in.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.4.0.copyload, i64 8 %40 = icmp ne ptr %.sroa.5.0.copyload, null - %41 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 634 - %42 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 633 - %43 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 770 - %44 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 769 + %41 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 770 + %42 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 769 + %43 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 634 + %44 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 633 br label %45 45: ; preds = %136, %4 - %46 = phi i64 [ %138, %136 ], [ %19, %4 ] + %46 = phi i64 [ %138, %137 ], [ %19, %4 ] call void @llvm.lifetime.start.p0(ptr nonnull %15), !noalias !230 invoke void @"_ZN96_$LT$rustfmt_nightly..comment..LineClasses$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf50c52572b7985a8E"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [2 x i64] }) align 8 captures(none) dereferenceable(32) %15, ptr noalias noundef nonnull align 8 dereferenceable(80) %17) to label %47 unwind label %152, !noalias !237 @@ -2154,10 +2154,10 @@ define internal fastcc void @"_ZN110_$LT$core..iter..adapters..enumerate..Enumer to label %_ZN15rustfmt_nightly5utils13is_empty_line17h92814a0856eb6a83E.exit.i.i.i unwind label %.loopexit.split-lp.i.i.i, !noalias !258 .body.i.i.i: ; preds = %126, %100, %63, %.loopexit.split-lp.i.i.i, %.loopexit.i.i.i - %.pn.i.i.i = phi { ptr, i32 } [ %127, %126 ], [ %64, %63 ], [ %101, %100 ], [ %lpad.loopexit.i.i.i, %.loopexit.i.i.i ], [ %lpad.loopexit.split-lp.i.i.i, %.loopexit.split-lp.i.i.i ] - %.1.i.i.i = phi i1 [ false, %126 ], [ false, %63 ], [ false, %100 ], [ true, %.loopexit.i.i.i ], [ true, %.loopexit.split-lp.i.i.i ] + %.pn.i.i.i = phi { ptr, i32 } [ %127, %127 ], [ %64, %63 ], [ %101, %100 ], [ %lpad.loopexit.i.i.i, %.loopexit.i.i.i ], [ %lpad.loopexit.split-lp.i.i.i, %.loopexit.split-lp.i.i.i ] + %.1.i.i.i = phi i1 [ false, %127 ], [ false, %63 ], [ false, %100 ], [ true, %.loopexit.i.i.i ], [ true, %.loopexit.split-lp.i.i.i ] invoke fastcc void @"_ZN4core3ptr111drop_in_place$LT$$LP$usize$C$$LP$rustfmt_nightly..comment..FullCodeCharKind$C$alloc..string..String$RP$$RP$$GT$17hce76c55b76a4f000E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %21) #40 - to label %132 unwind label %133, !noalias !259 + to label %133 unwind label %133, !noalias !259 .loopexit.i.i.i: ; preds = %72 %lpad.loopexit.i.i.i = landingpad { ptr, i32 } @@ -2316,29 +2316,29 @@ _ZN15rustfmt_nightly5utils13is_empty_line17h92814a0856eb6a83E.exit.thread.i.i.i: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %11, i64 24, i1 false), !alias.scope !320, !noalias !321 call void @llvm.lifetime.end.p0(ptr nonnull %11), !noalias !250 call void @llvm.assume(i1 %40) - switch i8 %51, label %110 [ - i8 9, label %113 - i8 7, label %113 - ] - -110: ; preds = %104 - store i8 1, ptr %43, align 1, !noalias !322 - %111 = load i8, ptr %44, align 1, !range !29, !noalias !322, !noundef !14 - %112 = trunc nuw i8 %111 to i1 - br i1 %112, label %116, label %_ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i + %110 = add nsw i8 %51, -7 + %switch.and.i.i.i.i.i = and i8 %110, -3 + %switch.selectcmp.i.i.i.i.i = icmp eq i8 %switch.and.i.i.i.i.i, 0 + br i1 %switch.selectcmp.i.i.i.i.i, label %114, label %111 -113: ; preds = %104, %104 +113: ; preds = %104 store i8 1, ptr %41, align 1, !noalias !322 %114 = load i8, ptr %42, align 1, !range !29, !noalias !322, !noundef !14 %115 = trunc nuw i8 %114 to i1 - br i1 %115, label %118, label %_ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i + br i1 %115, label %117, label %_ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i + +116: ; preds = %104 + store i8 1, ptr %43, align 1, !noalias !322 + %115 = load i8, ptr %44, align 1, !range !29, !noalias !322, !noundef !14 + %116 = trunc nuw i8 %115 to i1 + br i1 %116, label %119, label %_ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i -116: ; preds = %110 - %117 = and i8 %51, 13 - %.0.i2.i.i.i.i = icmp ne i8 %117, 4 +117: ; preds = %111 + %118 = and i8 %51, 13 + %.0.i.i.i.i.i = icmp ne i8 %118, 4 br label %_ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i -118: ; preds = %113 +118: ; preds = %114 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !325 store i32 0, ptr %7, align 4, !noalias !325 %119 = invoke { ptr, i64 } @_ZN4core4char7methods15encode_utf8_raw17hd036586f94355cb7E.llvm.15131964271339581801(i32 noundef 92, ptr noalias noundef nonnull align 1 %7, i64 noundef 4) @@ -2358,7 +2358,7 @@ _ZN15rustfmt_nightly5utils13is_empty_line17h92814a0856eb6a83E.exit.thread.i.i.i: br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17h3b564e2d007c0689E.exit.i.i.i.i" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17h3b564e2d007c0689E.exit.i.i.i.i": ; preds = %121, %.noexc23.i.i.i - %.0.i3.i.i.i.i = phi i1 [ %125, %121 ], [ false, %.noexc23.i.i.i ] + %.0.i3.i.i.i.i = phi i1 [ %125, %122 ], [ false, %.noexc23.i.i.i ] call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !325 br label %_ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i @@ -2368,8 +2368,8 @@ _ZN15rustfmt_nightly5utils13is_empty_line17h92814a0856eb6a83E.exit.thread.i.i.i: invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h65321bb4306ac23aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %12) #40 to label %.body.i.i.i unwind label %133, !noalias !258 -_ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17h3b564e2d007c0689E.exit.i.i.i.i", %116, %113, %110 - %.0.shrunk.i.i.i.i = phi i1 [ %.0.i3.i.i.i.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17h3b564e2d007c0689E.exit.i.i.i.i" ], [ true, %110 ], [ %.0.i2.i.i.i.i, %116 ], [ false, %113 ] +_ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17h3b564e2d007c0689E.exit.i.i.i.i", %117, %114, %111 + %.0.shrunk.i.i.i.i = phi i1 [ %.0.i3.i.i.i.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17h3b564e2d007c0689E.exit.i.i.i.i" ], [ true, %111 ], [ %.0.i.i.i.i.i, %117 ], [ false, %114 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.i.i, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !noalias !333 call void @llvm.lifetime.end.p0(ptr nonnull %12), !noalias !250 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !334 @@ -2385,7 +2385,7 @@ _ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i: ; p %130 = load ptr, ptr %6, align 8, !noalias !334, !nonnull !14, !noundef !14 %131 = load i64, ptr %35, align 8, !noalias !334, !noundef !14 invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17ha49f72b365eb0ed2E.llvm.17249484671449717553"(ptr noalias noundef nonnull readonly align 1 %24, ptr noundef nonnull %130, i64 noundef %128, i64 noundef %131) - to label %136 unwind label %.body.i, !noalias !237 + to label %137 unwind label %.body.i, !noalias !237 132: ; preds = %.body.i.i.i br i1 %.1.i.i.i, label %135, label %.body.thread.i @@ -2417,7 +2417,7 @@ _ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i: ; p call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %16, i64 32, i1 false), !noalias !347 call void @llvm.lifetime.end.p0(ptr nonnull %16), !noalias !230 invoke void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6e18df9b4b98bebeE.llvm.17249484671449717553"(ptr noalias noundef nonnull align 8 dereferenceable(80) %17) - to label %142 unwind label %140, !noalias !237 + to label %143 unwind label %140, !noalias !237 140: ; preds = %139 %141 = landingpad { ptr, i32 } @@ -2448,7 +2448,7 @@ _ZN15rustfmt_nightly5utils16indent_next_line17h6bdec64a42dd4121E.exit.i.i.i: ; p unreachable common.resume.i: ; preds = %.body.thread.i, %140 - %common.resume.op.i = phi { ptr, i32 } [ %141, %140 ], [ %eh.lpad-body6.i, %.body.thread.i ] + %common.resume.op.i = phi { ptr, i32 } [ %141, %141 ], [ %eh.lpad-body6.i, %.body.thread.i ] resume { ptr, i32 } %common.resume.op.i 152: ; preds = %45 @@ -2464,7 +2464,7 @@ common.resume.i: ; preds = %.body.thread.i, %14 unreachable .body.thread.i: ; preds = %152, %135, %132, %.body.i - %eh.lpad-body6.i = phi { ptr, i32 } [ %lpad.thr_comm.i, %152 ], [ %lpad.thr_comm.split-lp.i, %.body.i ], [ %.pn.i.i.i, %132 ], [ %.pn.i.i.i, %135 ] + %eh.lpad-body6.i = phi { ptr, i32 } [ %lpad.thr_comm.i, %153 ], [ %lpad.thr_comm.split-lp.i, %.body.i ], [ %.pn.i.i.i, %133 ], [ %.pn.i.i.i, %136 ] invoke void @"_ZN4core3ptr58drop_in_place$LT$rustfmt_nightly..comment..LineClasses$GT$17hae629beaa09c273bE"(ptr noalias noundef nonnull align 8 dereferenceable(80) %17) #40 to label %common.resume.i unwind label %153, !noalias !237 diff --git a/bench/sdl/optimized/SDL_joystick.ll b/bench/sdl/optimized/SDL_joystick.ll index 701a13c1f7b..37df04d13b4 100644 --- a/bench/sdl/optimized/SDL_joystick.ll +++ b/bench/sdl/optimized/SDL_joystick.ll @@ -8312,13 +8312,14 @@ define hidden noundef zeroext i1 @SDL_IsJoystickDualSenseEdge(i16 noundef zeroex ; Function Attrs: nounwind uwtable define hidden zeroext i1 @SDL_IsJoystickNintendoSwitchPro(i16 noundef zeroext %0, i16 noundef zeroext %1) local_unnamed_addr #1 { - %3 = zext i16 %0 to i32 - %4 = zext i16 %1 to i32 - %5 = tail call i32 @GuessControllerType(i32 noundef %3, i32 noundef %4) #13 - %6 = icmp eq i32 %5, 38 - %7 = icmp eq i32 %5, 42 - %8 = or i1 %6, %7 - ret i1 %8 +switch.return: + %4 = zext i16 %0 to i32 + %3 = zext i16 %1 to i32 + %4 = tail call i32 @GuessControllerType(i32 noundef %2, i32 noundef %3) #13 + %5 = add i32 %4, -38 + %switch.and = and i32 %5, -5 + %switch.selectcmp = icmp eq i32 %switch.and, 0 + ret i1 %switch.selectcmp } ; Function Attrs: nounwind uwtable diff --git a/bench/slurm/optimized/launch.ll b/bench/slurm/optimized/launch.ll index fcb03f6ddc7..af64dc7cce5 100644 --- a/bench/slurm/optimized/launch.ll +++ b/bench/slurm/optimized/launch.ll @@ -455,19 +455,22 @@ declare i32 @get_log_level() local_unnamed_addr #1 declare void @log_var(i32 noundef, ptr noundef, ...) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable -define dso_local zeroext i1 @launch_common_step_retry_errno(i32 noundef %0) local_unnamed_addr #6 { - %2 = icmp eq i32 %0, 11 - %3 = icmp eq i32 %0, 2037 - %or.cond = or i1 %2, %3 - %4 = icmp eq i32 %0, 2079 - %or.cond3 = or i1 %4, %or.cond - %5 = icmp eq i32 %0, 2016 - %or.cond5 = or i1 %5, %or.cond3 - %6 = icmp eq i32 %0, 2059 - %or.cond7 = or i1 %6, %or.cond5 - %7 = icmp eq i32 %0, 5004 - %or.cond9 = or i1 %7, %or.cond7 - ret i1 %or.cond9 +define dso_local noundef zeroext i1 @launch_common_step_retry_errno(i32 noundef %0) local_unnamed_addr #6 { + switch i32 %0, label %ret.false [ + i32 5004, label %switch.return + i32 2079, label %switch.return + i32 2059, label %switch.return + i32 2037, label %switch.return + i32 2016, label %switch.return + i32 11, label %switch.return + ] + +ret.false:; preds = %1 + br label %switch.return + +switch.return: ; preds = %1, %1, %1, %1, %1, %1, %ret.false + %2 = phi i1 [ false, %ret.false ], [ true, %1 ], [ true, %1 ], [ true, %1 ], [ true, %1 ], [ true, %1 ], [ true, %1 ] + ret i1 %2 } ; Function Attrs: nounwind uwtable diff --git a/bench/spdlog/optimized/bundled_fmtlib_format.ll b/bench/spdlog/optimized/bundled_fmtlib_format.ll index a73bda14329..4f7f6d1397e 100644 --- a/bench/spdlog/optimized/bundled_fmtlib_format.ll +++ b/bench/spdlog/optimized/bundled_fmtlib_format.ll @@ -26110,23 +26110,23 @@ define linkonce_odr dso_local ptr @_ZN3fmt3v116detail5writeIcNS0_14basic_appende %7 = load i32, ptr %2, align 4, !tbaa !112 %8 = trunc i32 %7 to i8 %9 = and i8 %8, 7 - %.off.i = add nsw i8 %9, -2 - %switch.i = icmp ult i8 %.off.i, 5 - br i1 %switch.i, label %20, label %10 - -10: ; preds = %4 - %11 = and i32 %7, 56 - %12 = icmp ne i32 %11, 32 - %13 = and i32 %7, 11264 - %or.cond.not.i = icmp eq i32 %13, 0 - %or.cond.i = and i1 %12, %or.cond.not.i - br i1 %or.cond.i, label %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit, label %14 + %.off.i = add nsw i8 %9, -7 + %switch.i = icmp ult i8 %.off.i, -5 + br i1 %switch.i, label %11, label %20 -14: ; preds = %10 +14: ; preds = %4 + %12 = and i32 %7, 56 + %13 = icmp ne i32 %12, 32 + %14 = and i32 %7, 11264 + %or.cond.not.i = icmp eq i32 %14, 0 + %or.cond.i = and i1 %13, %or.cond.not.i + br i1 %or.cond.i, label %16, label %15 + +15: ; preds = %11 tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.45) #38 unreachable -_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %10 +_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %11 %15 = and i32 %7, 7 %16 = icmp eq i32 %15, 1 %17 = zext i1 %16 to i8 @@ -26157,7 +26157,7 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %10 br label %.critedge.i .critedge.i: ; preds = %..critedge.i_crit_edge, %20 - %26 = phi i32 [ %.pre, %..critedge.i_crit_edge ], [ %7, %20 ] + %26 = phi i32 [ %.pre, %..critedge.i_crit_edge ], [ %7, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit ] %27 = lshr i32 %26, 10 %28 = and i32 %27, 3 %29 = zext nneg i32 %28 to i64 @@ -26171,12 +26171,12 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %10 br label %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit _ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit: ; preds = %22, %.critedge.i - %.sroa.010.0.i = phi ptr [ %34, %.critedge.i ], [ %0, %22 ] + %.sroa.010.0.i = phi ptr [ %34, %.critedge.i ], [ %0, %23 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %35 35: ; preds = %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit - %.sroa.08.0 = phi ptr [ %19, %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit ], [ %.sroa.010.0.i, %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit ] + %.sroa.08.0 = phi ptr [ %19, %16 ], [ %.sroa.010.0.i, %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit ] ret ptr %.sroa.08.0 } diff --git a/bench/tokenizers-rs/optimized/1k9vblvd5jyd3qmf.ll b/bench/tokenizers-rs/optimized/1k9vblvd5jyd3qmf.ll index 54b8abb1051..819f36c710f 100644 --- a/bench/tokenizers-rs/optimized/1k9vblvd5jyd3qmf.ll +++ b/bench/tokenizers-rs/optimized/1k9vblvd5jyd3qmf.ll @@ -6092,16 +6092,35 @@ define hidden noundef zeroext i1 @"_ZN4core4char7methods22_$LT$impl$u20$char$GT$ %2 = load i32, ptr %0, align 4, !range !905, !noundef !15 %3 = add nsw i32 %2, -33 %.0 = icmp ult i32 %3, 15 - %4 = add nsw i32 %2, -58 - %.04 = icmp ult i32 %4, 7 - %5 = add nsw i32 %2, -91 - %.05 = icmp ult i32 %5, 6 - %6 = add nsw i32 %2, -123 - %.06 = icmp ult i32 %6, 4 - %7 = or i1 %.0, %.04 - %8 = or i1 %.05, %7 - %9 = or i1 %.06, %8 - ret i1 %9 + br i1 %.0, label %switch.return, label %switch.early.test + +switch.early.test:; preds = %1 + switch i32 %2, label %ret.false [ + i32 126, label %switch.return + i32 125, label %switch.return + i32 124, label %switch.return + i32 123, label %switch.return + i32 96, label %switch.return + i32 95, label %switch.return + i32 94, label %switch.return + i32 93, label %switch.return + i32 92, label %switch.return + i32 91, label %switch.return + i32 64, label %switch.return + i32 63, label %switch.return + i32 62, label %switch.return + i32 61, label %switch.return + i32 60, label %switch.return + i32 59, label %switch.return + i32 58, label %switch.return + ] + +ret.false: ; preds = %switch.early.test + br label %switch.return + +switch.return: ; preds = %1, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %ret.false + %4 = phi i1 [ false, %ret.false ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %1 ] + ret i1 %4 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -21155,37 +21174,17 @@ define hidden void @"_ZN91_$LT$tokenizers..pre_tokenizers..metaspace..Metaspace$ ; Function Attrs: nonlazybind uwtable define hidden noundef zeroext i1 @_ZN10tokenizers14pre_tokenizers11punctuation7is_punc17heda7ddf708529f4fE(i32 noundef %0) unnamed_addr #2 { - %2 = add i32 %0, -33 - %.0.i = icmp ult i32 %2, 15 - br i1 %.0.i, label %5, label %switch.early.test + %2 = alloca i32, align 4 + store i32 %0, ptr %2, align 4 + %3 = call noundef zeroext i1 @"_ZN4core4char7methods22_$LT$impl$u20$char$GT$20is_ascii_punctuation17hd1c6461aca1a7cc9E.llvm.787574339177529159"(ptr noalias noundef nonnull readonly align 4 dereferenceable(switch.early.test) %2) + br i1 %3, label %6, label %4 switch.early.test: ; preds = %1 - switch i32 %0, label %3 [ - i32 126, label %5 - i32 125, label %5 - i32 124, label %5 - i32 123, label %5 - i32 96, label %5 - i32 95, label %5 - i32 94, label %5 - i32 93, label %5 - i32 92, label %5 - i32 91, label %5 - i32 64, label %5 - i32 63, label %5 - i32 62, label %5 - i32 61, label %5 - i32 60, label %5 - i32 59, label %5 - i32 58, label %5 - ] - -3: ; preds = %switch.early.test - %4 = tail call noundef zeroext i1 @_ZN18unicode_categories17UnicodeCategories14is_punctuation17he7d2a917fef1699eE.llvm.787574339177529159(i32 noundef %0) + %5 = tail call noundef zeroext i1 @_ZN18unicode_categories17UnicodeCategories14is_punctuation17he7d2a917fef1699eE.llvm.787574339177529159(i32 noundef %0) br label %5 -5: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %1, %3 - %.0 = phi i1 [ %4, %3 ], [ true, %switch.early.test ], [ true, %1 ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ], [ true, %switch.early.test ] +5: ; preds = %1, %4 + %.0 = phi i1 [ %5, %4 ], [ true, %1 ] ret i1 %.0 } diff --git a/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll b/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll index cf1daaacad4..31256765539 100644 --- a/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll +++ b/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll @@ -63489,10 +63489,13 @@ define hidden noundef zeroext i1 @"_ZN5typst11foundations4auto14Smart$LT$T$GT$13 ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden noundef zeroext i1 @"_ZN5typst11foundations4auto14Smart$LT$T$GT$13is_custom_and17h274076d902ea3d77E"(i8 noundef %0) unnamed_addr #2 personality ptr @rust_eh_personality { - %2 = icmp ne i8 %0, 4 - %switch.i.i = icmp ugt i8 %0, 1 - %spec.select = and i1 %2, %switch.i.i - ret i1 %spec.select +switch.return: + %switch.i.i = icmp ugt i8 %0, 4 + %switch.cast = trunc i8 %0 to i5 + %switch.downshift = lshr i5 12, %switch.cast + %switch.masked = trunc i5 %switch.downshift to i1 + %2 = select i1 %1, i1 true, i1 %switch.masked + ret i1 %2 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll index 102c517e899..7bbfad30d52 100644 --- a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll +++ b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll @@ -116912,7 +116912,7 @@ _ZN4core7unicode12unicode_data11white_space6lookup17h8b10c0607161acb4E.llvm.1697 i32 8233, label %_ZN5typst4text10smartquote12is_ignorable17hd62510065d4ab5aeE.llvm.16978709814855407318.exit.thread ] -_ZN5typst4text10smartquote12is_ignorable17hd62510065d4ab5aeE.llvm.16978709814855407318.exit.thread: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %20, %.critedge6.i, %.critedge6.i, %.critedge6.i, %.critedge6.i, %.critedge6.i, %.critedge6.i, %.critedge6.i, %_ZN4core7unicode12unicode_data11white_space6lookup17h8b10c0607161acb4E.llvm.16978709814855407318.exit.i +_ZN5typst4text10smartquote12is_ignorable17hd62510065d4ab5aeE.llvm.16978709814855407318.exit.thread: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %.critedge6.i, %.critedge6.i, %.critedge6.i, %.critedge6.i, %.critedge6.i, %.critedge6.i, %.critedge6.i, %_ZN4core7unicode12unicode_data11white_space6lookup17h8b10c0607161acb4E.llvm.16978709814855407318.exit.i, %20 %47 = add i64 %15, -1 store i64 %47, ptr %0, align 8 %.sroa.3.0.in.v.i10 = select i1 %2, i64 56, i64 24 @@ -116933,8 +116933,8 @@ _ZN5typst4text10smartquote12is_ignorable17hd62510065d4ab5aeE.llvm.16978709814855 br label %50 50: ; preds = %_ZN5typst4text10smartquote12is_ignorable17hd62510065d4ab5aeE.llvm.16978709814855407318.exit.thread, %49, %48, %17 - %.sroa.5.0 = phi i64 [ %.sroa.3.0.i, %17 ], [ %.sroa.3.0.i14, %_ZN5typst4text10smartquote12is_ignorable17hd62510065d4ab5aeE.llvm.16978709814855407318.exit.thread ], [ 3, %49 ], [ %..i, %48 ] - %.sroa.0.0.i.pn = phi ptr [ %.sroa.0.0.i, %17 ], [ %.sroa.0.0.i13, %_ZN5typst4text10smartquote12is_ignorable17hd62510065d4ab5aeE.llvm.16978709814855407318.exit.thread ], [ %anon.43c633cc9d0c07b847282a0596e0d119.1061.anon.43c633cc9d0c07b847282a0596e0d119.1060.i, %49 ], [ %anon.43c633cc9d0c07b847282a0596e0d119.1062.anon.43c633cc9d0c07b847282a0596e0d119.1021.i, %48 ] + %.sroa.5.0 = phi i64 [ %.sroa.3.0.i, %17 ], [ %.sroa.3.0.i14, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$20is_ascii_punctuation17h23a9a1c7f9a13358E.exit.thread" ], [ 3, %49 ], [ %..i, %48 ] + %.sroa.0.0.i.pn = phi ptr [ %.sroa.0.0.i, %17 ], [ %.sroa.0.0.i13, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$20is_ascii_punctuation17h23a9a1c7f9a13358E.exit.thread" ], [ %anon.43c633cc9d0c07b847282a0596e0d119.1061.anon.43c633cc9d0c07b847282a0596e0d119.1060.i, %49 ], [ %anon.43c633cc9d0c07b847282a0596e0d119.1062.anon.43c633cc9d0c07b847282a0596e0d119.1021.i, %48 ] %.pn17 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i.pn, 0 %51 = insertvalue { ptr, i64 } %.pn17, i64 %.sroa.5.0, 1 ret { ptr, i64 } %51 diff --git a/bench/typst-rs/optimized/4qskctz4kwc33g7b.ll b/bench/typst-rs/optimized/4qskctz4kwc33g7b.ll index 9c53a8468b9..e2470f5de6e 100644 --- a/bench/typst-rs/optimized/4qskctz4kwc33g7b.ll +++ b/bench/typst-rs/optimized/4qskctz4kwc33g7b.ll @@ -164784,7 +164784,7 @@ define void @"_ZN76_$LT$typst..text..TextDir$u20$as$u20$typst..foundations..cast call void @llvm.lifetime.end.p0(ptr nonnull %7) %33 = load i8, ptr %8, align 8, !range !1323, !noundef !4 %trunc = trunc nuw i8 %33 to i1 - br i1 %trunc, label %37, label %40 + br i1 %trunc, label %41, label %37 34: ; preds = %"_ZN94_$LT$typst..foundations..auto..Smart$LT$T$GT$$u20$as$u20$typst..foundations..cast..Reflect$GT$8castable17hd059b571f81f21f2E.exit.thread28" %35 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -164794,36 +164794,36 @@ define void @"_ZN76_$LT$typst..text..TextDir$u20$as$u20$typst..foundations..cast tail call void @"_ZN4core3ptr53drop_in_place$LT$typst..foundations..value..Value$GT$17h54cec887ca59b7d7E.llvm.7325118056162354838"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) br label %36 -36: ; preds = %37, %44, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h530d178225a0875aE.exit", %34 +36: ; preds = %41, %44, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h530d178225a0875aE.exit", %34 ret void 37: ; preds = %"_ZN94_$LT$typst..foundations..auto..Smart$LT$T$GT$$u20$as$u20$typst..foundations..cast..Reflect$GT$8castable17hd059b571f81f21f2E.exit.thread" - %38 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %.sroa.8.8..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.8, i64 6 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(16) %.sroa.8.8..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %38, i64 16, i1 false) + %38 = getelementptr inbounds nuw i8, ptr %8, i64 1 + %39 = load i8, ptr %38, align 1, !range !7752, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %8) - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 2 dereferenceable(16) %.sroa.8.8..sroa_idx, i64 16, i1 false) - store i8 1, ptr %0, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.8) - br label %36 + %40 = and i8 %39, 6 + %switch = icmp eq i8 %40, 2 + br i1 %switch, label %45, label %"_ZN5typst11foundations4auto14Smart$LT$T$GT$13is_custom_and17h274076d902ea3d77E.exit" 40: ; preds = %"_ZN94_$LT$typst..foundations..auto..Smart$LT$T$GT$$u20$as$u20$typst..foundations..cast..Reflect$GT$8castable17hd059b571f81f21f2E.exit.thread" - %41 = getelementptr inbounds nuw i8, ptr %8, i64 1 - %42 = load i8, ptr %41, align 1, !range !7752, !noundef !4 + %41 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %.sroa.8.8..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.8, i64 6 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(16) %.sroa.8.8..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %42, i64 16, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %8) + %43 = getelementptr inbounds nuw i8, ptr %0, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 2 dereferenceable(16) %.sroa.8.8..sroa_idx, i64 16, i1 false) + store i8 1, ptr %0, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.8) - %43 = and i8 %42, 6 - %switch = icmp eq i8 %43, 2 - br i1 %switch, label %46, label %44 + br label %36 -44: ; preds = %40 +44: ; preds = %37 %45 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 %42, ptr %45, align 1 + store i8 %39, ptr %45, align 1 store i8 0, ptr %0, align 8 br label %36 -46: ; preds = %40 +46: ; preds = %37 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.03) call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(15) %6, i8 0, i64 15, i1 false) @@ -164840,7 +164840,7 @@ define void @"_ZN76_$LT$typst..text..TextDir$u20$as$u20$typst..foundations..cast %50 = getelementptr inbounds nuw i8, ptr %5, i64 24 store i64 0, ptr %50, align 8 %51 = invoke noundef zeroext i1 @_ZN4core3fmt5write17h4311bce0ee536615E(ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6e01a69b2c234dfdc5e23dbc943ea0bc.251, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5) - to label %57 unwind label %52 + to label %56 unwind label %52 52: ; preds = %58, %46 %53 = landingpad { ptr, i32 } @@ -164880,7 +164880,7 @@ define void @"_ZN76_$LT$typst..text..TextDir$u20$as$u20$typst..foundations..cast unreachable .thread: ; preds = %56, %52, %62 - %.pn22 = phi { ptr, i32 } [ %53, %56 ], [ %lpad.thr_comm, %62 ], [ %53, %52 ] + %.pn22 = phi { ptr, i32 } [ %53, %55 ], [ %lpad.thr_comm, %61 ], [ %53, %51 ] resume { ptr, i32 } %.pn22 62: ; preds = %13, %"_ZN94_$LT$typst..foundations..auto..Smart$LT$T$GT$$u20$as$u20$typst..foundations..cast..Reflect$GT$8castable17hd059b571f81f21f2E.exit.thread28", %.noexc17 diff --git a/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll b/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll index f72534ed09f..2b41b71594b 100644 --- a/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll +++ b/bench/typst-rs/optimized/d6l9ieo9tcw33dn.ll @@ -166163,12 +166163,12 @@ define void @"_ZN94_$LT$typst..visualize..color..ChromaComponent$u20$as$u20$typs ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define noundef zeroext i1 @"_ZN94_$LT$typst..visualize..color..ChromaComponent$u20$as$u20$typst..foundations..cast..Reflect$GT$8castable17h7d85124c68bd73d2E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %0) unnamed_addr #22 { - %2 = load i8, ptr %0, align 8, !range !8861, !alias.scope !35989, !noundef !4 - %.off.i = add nsw i8 %2, -3 - %switch.i = icmp ult i8 %.off.i, 2 - %3 = icmp eq i8 %2, 7 - %spec.select = or i1 %switch.i, %3 - ret i1 %spec.select +switch.lookup: + %1 = load i8, ptr %0, align 8, !range !8861, !alias.scope !35989, !noundef !4 + %switch.cast = zext nneg i8 %1 to i30 + %switch.downshift = lshr i30 152, %switch.cast + %switch.masked = trunc i30 %switch.downshift to i1 + ret i1 %switch.masked } ; Function Attrs: nonlazybind uwtable @@ -166881,12 +166881,12 @@ define void @"_ZN85_$LT$typst..visualize..color..Weight$u20$as$u20$typst..founda ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define noundef zeroext i1 @"_ZN85_$LT$typst..visualize..color..Weight$u20$as$u20$typst..foundations..cast..Reflect$GT$8castable17h382b7ec143f8fc06E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %0) unnamed_addr #22 { - %2 = load i8, ptr %0, align 8, !range !8861, !alias.scope !36147, !noundef !4 - %.off.i = add nsw i8 %2, -3 - %switch.i = icmp ult i8 %.off.i, 2 - %3 = icmp eq i8 %2, 7 - %spec.select = or i1 %switch.i, %3 - ret i1 %spec.select +switch.lookup: + %1 = load i8, ptr %0, align 8, !range !8861, !alias.scope !36147, !noundef !4 + %switch.cast = zext nneg i8 %1 to i30 + %switch.downshift = lshr i30 152, %switch.cast + %switch.masked = trunc i30 %switch.downshift to i1 + ret i1 %switch.masked } ; Function Attrs: nonlazybind uwtable diff --git a/bench/uv-rs/optimized/4geuf6q2je9x06sx9nzr61rkq.ll b/bench/uv-rs/optimized/4geuf6q2je9x06sx9nzr61rkq.ll index ccf8934c289..cdb8657179b 100644 --- a/bench/uv-rs/optimized/4geuf6q2je9x06sx9nzr61rkq.ll +++ b/bench/uv-rs/optimized/4geuf6q2je9x06sx9nzr61rkq.ll @@ -13733,8 +13733,8 @@ _ZN5alloc6string6String4push17h65f6c624e4e39ab4E.exit: ; preds = %._crit_edge, % br label %198 140: ; preds = %.lr.ph, %"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit53" - %141 = phi ptr [ %128, %.lr.ph ], [ %203, %"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit53" ] - %142 = phi { ptr, ptr } [ %127, %.lr.ph ], [ %202, %"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit53" ] + %141 = phi ptr [ %128, %.lr.ph ], [ %203, %"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit50" ] + %142 = phi { ptr, ptr } [ %127, %.lr.ph ], [ %202, %"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit50" ] %143 = extractvalue { ptr, ptr } %142, 1 store ptr %141, ptr %11, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %10) @@ -13750,7 +13750,7 @@ _ZN5alloc6string6String4push17h65f6c624e4e39ab4E.exit: ; preds = %._crit_edge, % br i1 %150, label %"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit53", label %.lr.ph.i35 .lr.ph.i35: ; preds = %140, %.backedge.i43 - %151 = phi ptr [ %187, %.backedge.i43 ], [ %146, %140 ] + %151 = phi ptr [ %187, %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i" ], [ %146, %140 ] %152 = getelementptr inbounds nuw i8, ptr %151, i64 1 %153 = load i8, ptr %151, align 1, !noalias !2204, !noundef !22 %154 = icmp sgt i8 %153, -1 @@ -13804,46 +13804,45 @@ _ZN5alloc6string6String4push17h65f6c624e4e39ab4E.exit: ; preds = %._crit_edge, % br i1 %.not.i46, label %"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit53", label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.thread.i37" "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.thread.i37": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.i45", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit14.i.i.i44", %165, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit12.i.i.i36" - %187 = phi ptr [ %178, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.i45" ], [ %152, %165 ], [ %168, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit14.i.i.i44" ], [ %158, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit12.i.i.i36" ] - %188 = phi i32 [ %186, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.i45" ], [ %166, %165 ], [ %175, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit14.i.i.i44" ], [ %163, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit12.i.i.i36" ] - %.fr.i38 = freeze i32 %188 - %189 = and i32 %.fr.i38, 2097119 + %187 = phi ptr [ %178, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.i42" ], [ %152, %165 ], [ %168, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit14.i.i.i41" ], [ %158, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit12.i.i.i36" ] + %188 = phi i32 [ %186, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.i42" ], [ %166, %165 ], [ %175, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit14.i.i.i41" ], [ %163, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h44eba1abacb2a1bdE.llvm.4228390610739757595.exit12.i.i.i36" ] + %189 = and i32 %188, 2097119 %190 = add nsw i32 %189, -65 %or.cond3.i.i.i.i39 = icmp ult i32 %190, 26 br i1 %or.cond3.i.i.i.i39, label %.backedge.i43, label %191 191: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.thread.i37" - %192 = icmp samesign ugt i32 %.fr.i38, 127 + %192 = icmp samesign ugt i32 %188, 127 br i1 %192, label %193, label %195 193: ; preds = %191 - %194 = call noundef zeroext i1 @_ZN4core7unicode12unicode_data10alphabetic6lookup17hf6c61809ad39aba6E(i32 noundef range(i32 0, 1114112) %.fr.i38), !noalias !2211 - br i1 %194, label %.backedge.i43, label %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i" + %194 = call noundef zeroext i1 @_ZN4core7unicode12unicode_data10alphabetic6lookup17hf6c61809ad39aba6E(i32 noundef range(i32 0, 1114112) %188), !noalias !2211 + br i1 %194, label %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i", label %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$15is_alphanumeric17hb42f9dc4e64b7c86E.exit.i.i.i" 195: ; preds = %191 - %.old.i.i.i.i40 = add nsw i32 %.fr.i38, -48 + %.old.i.i.i.i40 = add nsw i32 %188, -48 %or.cond2.old.i.i.i.i41 = icmp ult i32 %.old.i.i.i.i40, 10 - br i1 %or.cond2.old.i.i.i.i41, label %.backedge.i43, label %switch.early.test.i42 + br i1 %or.cond2.old.i.i.i.i41, label %.backedge.i43, label %switch.early.test.i.i.i "_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i": ; preds = %193 - %196 = call noundef zeroext i1 @_ZN4core7unicode12unicode_data1n6lookup17h366630de253aeea5E(i32 noundef range(i32 0, 1114112) %.fr.i38), !noalias !2211 - br i1 %196, label %.backedge.i43, label %switch.early.test.i42 + %196 = call noundef zeroext i1 @_ZN4core7unicode12unicode_data1n6lookup17h366630de253aeea5E(i32 noundef range(i32 0, 1114112) %188), !noalias !2211 + br i1 %196, label %.backedge.i43, label %switch.early.test.i.i.i + +switch.early.test.i.i.i: ; preds = %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$15is_alphanumeric17hb42f9dc4e64b7c86E.exit.i.i.i", %195 + switch i32 %188, label %199 [ + i32 95, label %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i" + i32 46, label %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i" + i32 45, label %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i" + ] -.backedge.i43: ; preds = %switch.early.test.i42, %switch.early.test.i42, %switch.early.test.i42, %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i", %195, %193, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.thread.i37" +.backedge.i43: ; preds = %switch.early.test.i.i.i, %switch.early.test.i.i.i, %switch.early.test.i.i.i, %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i", %195, %193, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.thread.i37" %197 = icmp eq ptr %187, %149 br i1 %197, label %"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit53", label %.lr.ph.i35 -switch.early.test.i42: ; preds = %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17h4ca183bbe142f72bE.exit.i", %195 - switch i32 %.fr.i38, label %199 [ - i32 95, label %.backedge.i43 - i32 46, label %.backedge.i43 - i32 45, label %.backedge.i43 - ] - 198: ; preds = %"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hbcc57ac2b29dcbacE.llvm.4228390610739757595.exit", %199, %_ZN5alloc6string6String4push17h65f6c624e4e39ab4E.exit ret void -199: ; preds = %switch.early.test.i42 +199: ; preds = %switch.early.test.i.i.i %200 = load ptr, ptr %11, align 8, !nonnull !22, !align !188, !noundef !22 %.sroa.49.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17h303c24df2bc9b995E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %.sroa.49.0..sroa_idx, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %200) @@ -13852,7 +13851,7 @@ switch.early.test.i42: ; preds = %"_ZN4core4iter6trai call void @llvm.lifetime.end.p0(ptr nonnull %12) br label %198 -"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit53": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.i45", %.backedge.i43, %140 +"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h2bbc305269b79162E.exit53": ; preds = %.backedge.i43, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7392693d4e9517b0E.exit.i45", %140 call void @llvm.lifetime.start.p0(ptr nonnull %9) store ptr %11, ptr %9, align 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17hfa007a9b3996379dE", ptr %.sroa.422.0..sroa_idx, align 8 diff --git a/bench/wasmtime-rs/optimized/4bsmuvpz9r22ks1w.ll b/bench/wasmtime-rs/optimized/4bsmuvpz9r22ks1w.ll index 9898b531865..7cba31d3c62 100644 --- a/bench/wasmtime-rs/optimized/4bsmuvpz9r22ks1w.ll +++ b/bench/wasmtime-rs/optimized/4bsmuvpz9r22ks1w.ll @@ -5606,12 +5606,14 @@ _ZN17cranelift_codegen2ir5types4Type4bits17h6ac7b92b6381a3ecE.exit: ; preds = %1 ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define noundef zeroext i1 @_ZN17cranelift_codegen8machinst7helpers25ty_has_int_representation17h8c3afe63d37b70b6E(i16 noundef %0) unnamed_addr #11 { - %.off.i = add i16 %0, -118 - %switch.i = icmp ult i16 %.off.i, 5 - %2 = and i16 %0, -2 - %switch.i1 = icmp eq i16 %2, 126 - %.0 = or i1 %switch.i, %switch.i1 - ret i1 %.0 +switch.return: + %switch.tableidx = add i16 %0, -118 + %1 = icmp ult i16 %switch.tableidx, 10 + %switch.cast = trunc i16 %switch.tableidx to i10 + %switch.downshift = lshr i10 -225, %switch.cast + %switch.masked = trunc i10 %switch.downshift to i1 + %2 = select i1 %1, i1 %switch.masked, i1 false + ret i1 %2 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/wireshark/optimized/packet-cip.ll b/bench/wireshark/optimized/packet-cip.ll index 2498a84953f..7b6c62e326c 100644 --- a/bench/wireshark/optimized/packet-cip.ll +++ b/bench/wireshark/optimized/packet-cip.ll @@ -9155,18 +9155,26 @@ define hidden void @load_cip_request_data(ptr noundef %0, ptr noundef %1) local_ } ; Function Attrs: null_pointer_is_valid sspstrong uwtable -define hidden zeroext i1 @should_dissect_cip_response(ptr noundef %0, i32 noundef %1, i8 noundef zeroext %2) local_unnamed_addr #3 { +define hidden noundef zeroext i1 @should_dissect_cip_response(ptr noundef %0, i32 noundef %1, i8 noundef zeroext %2) local_unnamed_addr #3 { switch.early.test: %3 = tail call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %1) - %4 = icmp ne i32 %3, 0 - %5 = icmp eq i8 %2, 0 - %or.cond.not21 = or i1 %5, %4 - %6 = icmp eq i8 %2, 10 - %or.cond5.not18 = or i1 %6, %or.cond.not21 - %7 = add i8 %2, -29 - %8 = icmp ult i8 %7, 2 - %or.cond11.not = or i1 %8, %or.cond5.not18 - ret i1 %or.cond11.not + %.fr = freeze i32 %3 + %5 = icmp eq i32 %.fr, 0 + br i1 %5, label %switch.early.test22, label %switch.return + +switch.early.test22:; preds = %switch.early.test + %4 = icmp ult i8 %2, 31 + br i1 %4, label %switch.lookup, label %switch.return + +switch.lookup:; preds = %switch.early.test22 + %switch.cast = zext nneg i8 %2 to i31 + %switch.downshift = lshr i31 -536869887, %switch.cast + %switch.masked = trunc i31 %switch.downshift to i1 + br label %switch.return + +switch.return: ; preds = %switch.early.test22, %switch.lookup, %switch.early.test + %5 = phi i1 [ true, %switch.early.test ], [ %switch.masked, %switch.lookup ], [ false, %switch.early.test22 ] + ret i1 %5 } ; Function Attrs: null_pointer_is_valid sspstrong uwtable @@ -9225,7 +9233,7 @@ load_cip_request_data.exit: ; preds = %30, %31 br i1 %.not, label %switch.early.test, label %34 switch.early.test: ; preds = %load_cip_request_data.exit - switch i8 %8, label %245 [ + switch i8 %8, label %should_dissect_cip_response.exit [ i8 30, label %34 i8 29, label %34 i8 10, label %34 @@ -9476,7 +9484,7 @@ dissect_cip_get_attribute_list_rsp.exit: ; preds = %41, %.thread73.i %154 = load i32, ptr %153, align 4 %155 = getelementptr inbounds nuw i8, ptr %7, i64 16 %156 = load i32, ptr %155, align 4 - switch i32 %154, label %.lr.ph.us.i.i78 [ + switch i32 %154, label %.lr.ph.us.i.i79 [ i32 -1, label %dissect_cip_get_attribute_single_rsp.exit i32 0, label %.lr.ph.us.us.i.i63 ] @@ -9487,7 +9495,7 @@ dissect_cip_get_attribute_list_rsp.exit: ; preds = %41, %.thread73.i br i1 %exitcond52.not.i.i69, label %.split39.us.i.i70, label %.lr.ph.us.us.i.i63, !llvm.loop !8 .lr.ph.us.us.i.i63: ; preds = %148, %._crit_edge.split.split.us.us.us.i.i68 - %.02732.us.us.i.i64 = phi i64 [ %157, %._crit_edge.split.split.us.us.us.i.i68 ], [ 0, %148 ] + %.02732.us.us.i.i64 = phi i64 [ %157, %._crit_edge.split.split.us.us.us.i.i69 ], [ 0, %148 ] %158 = getelementptr %struct.attribute_val_array, ptr @all_attribute_vals, i64 %.02732.us.us.i.i64 %159 = load i64, ptr %158, align 16 %160 = getelementptr inbounds nuw i8, ptr %158, i64 8 @@ -9496,7 +9504,7 @@ dissect_cip_get_attribute_list_rsp.exit: ; preds = %41, %.thread73.i br label %162 162: ; preds = %174, %.lr.ph.us.us.i.i63 - %.02630.us31.us.us.i.i66 = phi i64 [ 0, %.lr.ph.us.us.i.i63 ], [ %175, %174 ] + %.02630.us31.us.us.i.i66 = phi i64 [ 0, %.lr.ph.us.us.i.i64 ], [ %175, %174 ] %163 = getelementptr %struct.attribute_info, ptr %161, i64 %.02630.us31.us.us.i.i66 %164 = load i32, ptr %163, align 8 %165 = icmp eq i32 %164, %152 @@ -9525,7 +9533,7 @@ dissect_cip_get_attribute_list_rsp.exit: ; preds = %41, %.thread73.i br i1 %exitcond55.not.i.i84, label %.split39.us.i.i70, label %.lr.ph.us.i.i78, !llvm.loop !8 177: ; preds = %.lr.ph.us.i.i78, %189 - %.02630.us33.i.i81 = phi i64 [ 0, %.lr.ph.us.i.i78 ], [ %190, %189 ] + %.02630.us33.i.i81 = phi i64 [ 0, %.lr.ph.us.i.i79 ], [ %190, %189 ] %178 = getelementptr %struct.attribute_info, ptr %194, i64 %.02630.us33.i.i81 %179 = load i32, ptr %178, align 8 %180 = icmp eq i32 %179, %152 @@ -9549,7 +9557,7 @@ dissect_cip_get_attribute_list_rsp.exit: ; preds = %41, %.thread73.i br i1 %exitcond54.not.i.i82, label %._crit_edge.split.split.us34.i.i83, label %177, !llvm.loop !11 .lr.ph.us.i.i78: ; preds = %148, %._crit_edge.split.split.us34.i.i83 - %.02732.us.i.i79 = phi i64 [ %176, %._crit_edge.split.split.us34.i.i83 ], [ 0, %148 ] + %.02732.us.i.i79 = phi i64 [ %176, %._crit_edge.split.split.us34.i.i84 ], [ 0, %148 ] %191 = getelementptr %struct.attribute_val_array, ptr @all_attribute_vals, i64 %.02732.us.i.i79 %192 = load i64, ptr %191, align 16 %193 = getelementptr inbounds nuw i8, ptr %191, i64 8 @@ -9567,7 +9575,7 @@ dissect_cip_get_attribute_list_rsp.exit: ; preds = %41, %.thread73.i br i1 %exitcond56.not.i.i74, label %dissect_cip_get_attribute_single_rsp.exit, label %.preheader.i.i72, !llvm.loop !12 .preheader.i.i72: ; preds = %.split39.us.i.i70, %196 - %.144.i.i73 = phi i64 [ %197, %196 ], [ 0, %.split39.us.i.i70 ] + %.144.i.i73 = phi i64 [ %197, %196 ], [ 0, %.split39.us.i.i71 ] %198 = getelementptr %struct.attribute_info, ptr @cip_get_attribute.class_attribute_vals, i64 %.144.i.i73 %199 = getelementptr inbounds nuw i8, ptr %198, i64 8 %200 = load i32, ptr %199, align 8 @@ -9575,7 +9583,7 @@ dissect_cip_get_attribute_list_rsp.exit: ; preds = %41, %.thread73.i br i1 %201, label %cip_get_attribute.exit.i75, label %196 cip_get_attribute.exit.i75: ; preds = %170, %185, %.preheader.i.i72 - %.0.i.i76 = phi ptr [ %178, %185 ], [ %198, %.preheader.i.i72 ], [ %163, %170 ] + %.0.i.i76 = phi ptr [ %178, %185 ], [ %198, %.preheader.i.i73 ], [ %163, %170 ] %.not.i77 = icmp eq ptr %.0.i.i76, null br i1 %.not.i77, label %dissect_cip_get_attribute_single_rsp.exit, label %202 @@ -9649,7 +9657,7 @@ dissect_cip_find_next_object_rsp.exit: ; preds = %210, %.loopexit.i br label %dissect_cip_get_attribute_single_rsp.exit dissect_cip_get_attribute_single_rsp.exit: ; preds = %196, %202, %cip_get_attribute.exit.i75, %.split39.us.i.i70, %148, %34, %232, %dissect_cip_find_next_object_rsp.exit, %145, %142, %139, %dissect_cip_get_attribute_list_rsp.exit, %35 - %.060 = phi i32 [ 0, %34 ], [ %36, %35 ], [ %.0.i, %dissect_cip_get_attribute_list_rsp.exit ], [ %141, %139 ], [ 2, %142 ], [ %147, %145 ], [ 1, %232 ], [ %.020.i, %dissect_cip_find_next_object_rsp.exit ], [ %205, %202 ], [ 0, %cip_get_attribute.exit.i75 ], [ 0, %.split39.us.i.i70 ], [ 0, %148 ], [ 0, %196 ] + %.060 = phi i32 [ 0, %34 ], [ %36, %35 ], [ %.0.i, %dissect_cip_get_attribute_list_rsp.exit ], [ %141, %139 ], [ 2, %142 ], [ %147, %145 ], [ 1, %232 ], [ %.020.i, %dissect_cip_find_next_object_rsp.exit ], [ %205, %202 ], [ 0, %cip_get_attribute.exit.i76 ], [ 0, %.split39.us.i.i71 ], [ 0, %148 ], [ 0, %196 ] %235 = add i32 %.060, %14 %236 = call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %235) %237 = icmp sgt i32 %236, 0 @@ -9668,7 +9676,7 @@ dissect_cip_get_attribute_single_rsp.exit: ; preds = %196, %202, %cip_get br label %245 245: ; preds = %switch.early.test, %241 - %.0 = phi i32 [ %244, %241 ], [ 0, %switch.early.test ] + %.0 = phi i32 [ %244, %241 ], [ 0, %switch.early.test22.i ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 %.0 @@ -10158,15 +10166,15 @@ define internal fastcc void @dissect_cip_object_specific_service(ptr noundef %0, br i1 %.not50, label %switch.early.test, label %25 switch.early.test: ; preds = %23 - switch i8 %.045, label %44 [ + switch i8 %.045, label %should_dissect_cip_response.exit [ i8 30, label %25 i8 29, label %25 i8 10, label %25 i8 0, label %25 ] -25: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %23, %22 - %.str.2944..str.180 = phi ptr [ @.str.180, %switch.early.test ], [ @.str.180, %switch.early.test ], [ @.str.180, %switch.early.test ], [ @.str.180, %switch.early.test ], [ @.str.180, %23 ], [ @.str.2944, %22 ] +25: ; preds = %23, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %22 + %.str.2944..str.180 = phi ptr [ @.str.180, %23 ], [ @.str.180, %switch.early.test22.i ], [ @.str.180, %switch.early.test22.i ], [ @.str.180, %switch.early.test22.i ], [ @.str.180, %switch.early.test22.i ], [ @.str.2944, %22 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) %26 = tail call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %14) %27 = load i32, ptr @ett_cmd_data, align 4 @@ -10187,7 +10195,7 @@ switch.early.test: ; preds = %23 br label %dissect_cip_service.exit dissect_cip_service.exit: ; preds = %25, %33 - %.0.i = phi i32 [ %35, %33 ], [ 0, %25 ] + %.0.i = phi i32 [ %35, %32 ], [ 0, %should_dissect_cip_response.exit.thread ] %36 = add i32 %.0.i, %14 %37 = call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %36) %38 = icmp sgt i32 %37, 0 diff --git a/bench/wireshark/optimized/protobuf_lang_tree.ll b/bench/wireshark/optimized/protobuf_lang_tree.ll index ffce53c8492..4616d1c079f 100644 --- a/bench/wireshark/optimized/protobuf_lang_tree.ll +++ b/bench/wireshark/optimized/protobuf_lang_tree.ll @@ -1609,22 +1609,28 @@ define hidden noundef ptr @pbl_create_field_node(ptr noundef %0, i32 noundef %1, %22 = getelementptr inbounds nuw i8, ptr %9, i64 72 store ptr %21, ptr %22, align 8 %23 = tail call i32 @str_to_val(ptr noundef %3, ptr noundef nonnull @protobuf_field_type, i32 noundef 0) - %24 = and i32 %23, -2 - %or.cond.i = icmp eq i32 %24, 10 - %25 = icmp eq i32 %23, 14 - %or.cond3.i = or i1 %25, %or.cond.i - %spec.store.select.i = select i1 %or.cond3.i, i32 0, i32 %23 - %26 = getelementptr inbounds nuw i8, ptr %9, i64 68 - store i32 %spec.store.select.i, ptr %26, align 4 - %27 = tail call i32 @g_strcmp0(ptr noundef %2, ptr noundef nonnull @.str.8) - %28 = icmp eq i32 %27, 0 - %29 = getelementptr inbounds nuw i8, ptr %9, i64 89 - %30 = zext i1 %28 to i8 - store i8 %30, ptr %29, align 1 + switch i32 %23, label %ret.false.i [ + i32 14, label %pbl_get_simple_type_enum_value_by_typename.exit + i32 11, label %pbl_get_simple_type_enum_value_by_typename.exit + i32 10, label %pbl_get_simple_type_enum_value_by_typename.exit + ] + +ret.false.i:; preds = %7 + br label %pbl_get_simple_type_enum_value_by_typename.exit + +pbl_get_simple_type_enum_value_by_typename.exit:; preds = %7, %7, %7, %ret.false.i + %24 = phi i32 [ %23, %ret.false.i ], [ 0, %7 ], [ 0, %7 ], [ 0, %7 ] + %25 = getelementptr inbounds nuw i8, ptr %9, i64 68 + store i32 %24, ptr %25, align 4 + %26 = tail call i32 @g_strcmp0(ptr noundef %2, ptr noundef nonnull @.str.8) + %27 = icmp eq i32 %26, 0 + %28 = getelementptr inbounds nuw i8, ptr %9, i64 89 + %29 = zext i1 %27 to i8 + store i8 %29, ptr %28, align 1 %.not.i = icmp eq ptr %6, null br i1 %.not.i, label %pbl_get_option_by_name.exit.thread, label %31 -31: ; preds = %7 +31: ; preds = %pbl_get_simple_type_enum_value_by_typename.exit %32 = getelementptr inbounds nuw i8, ptr %6, i64 40 %33 = load ptr, ptr %32, align 8 %.not7.i = icmp eq ptr %33, null @@ -1647,7 +1653,7 @@ pbl_get_option_by_name.exit: ; preds = %31 %40 = tail call noalias ptr @g_strdup(ptr noundef nonnull %37) %41 = getelementptr inbounds nuw i8, ptr %9, i64 96 store ptr %40, ptr %41, align 8 - switch i32 %spec.store.select.i, label %pbl_get_option_by_name.exit.thread [ + switch i32 %24, label %pbl_get_option_by_name.exit.thread [ i32 5, label %42 i32 17, label %42 i32 15, label %42 @@ -1731,10 +1737,10 @@ pbl_get_option_by_name.exit: ; preds = %31 br i1 %77, label %.lr.ph.i, label %.critedge.i .lr.ph.i: ; preds = %71, %.backedge.i - %78 = phi ptr [ %87, %.backedge.i ], [ %40, %71 ] - %.034.i = phi ptr [ %.0.be.i, %.backedge.i ], [ %74, %71 ] + %78 = phi ptr [ %87, %.backedge.i ], [ %40, %70 ] + %.034.i = phi ptr [ %.0.be.i, %.backedge.i ], [ %74, %70 ] %79 = load i8, ptr %78, align 1 - switch i8 %79, label %102 [ + switch i8 %79, label %101 [ i8 0, label %.critedge.i i8 92, label %80 ] @@ -1743,7 +1749,7 @@ pbl_get_option_by_name.exit: ; preds = %31 %81 = getelementptr i8, ptr %78, i64 1 store ptr %81, ptr %8, align 8 %82 = load i8, ptr %81, align 1 - switch i8 %82, label %89 [ + switch i8 %82, label %88 [ i8 120, label %83 i8 88, label %83 ] @@ -1773,7 +1779,7 @@ pbl_get_option_by_name.exit: ; preds = %31 br label %.backedge.i 94: ; preds = %89 - switch i8 %82, label %101 [ + switch i8 %82, label %100 [ i8 97, label %102 i8 98, label %95 i8 102, label %96 @@ -1804,16 +1810,16 @@ pbl_get_option_by_name.exit: ; preds = %31 101: ; preds = %94 br label %102 -102: ; preds = %101, %100, %99, %98, %97, %96, %95, %94, %.lr.ph.i - %.sink.i = phi i8 [ 7, %94 ], [ 8, %95 ], [ 12, %96 ], [ 10, %97 ], [ 13, %98 ], [ 9, %99 ], [ 11, %100 ], [ %82, %101 ], [ %79, %.lr.ph.i ] - %103 = phi ptr [ %81, %94 ], [ %81, %95 ], [ %81, %96 ], [ %81, %97 ], [ %81, %98 ], [ %81, %99 ], [ %81, %100 ], [ %81, %101 ], [ %78, %.lr.ph.i ] +102: ; preds = %100, %99, %98, %97, %96, %95, %94, %93, %.lr.ph.i + %.sink.i = phi i8 [ 7, %93 ], [ 8, %94 ], [ 12, %95 ], [ 10, %96 ], [ 13, %97 ], [ 9, %98 ], [ 11, %99 ], [ %82, %100 ], [ %79, %.lr.ph.i ] + %103 = phi ptr [ %81, %93 ], [ %80, %94 ], [ %81, %95 ], [ %81, %96 ], [ %81, %97 ], [ %81, %98 ], [ %81, %99 ], [ %81, %100 ], [ %78, %.lr.ph.i ] store i8 %.sink.i, ptr %.034.i, align 1 %104 = getelementptr i8, ptr %103, i64 1 store ptr %104, ptr %8, align 8 br label %.backedge.i .critedge.i: ; preds = %.backedge.i, %.lr.ph.i, %71 - %.0.lcssa.i = phi ptr [ %74, %71 ], [ %.0.be.i, %.backedge.i ], [ %.034.i, %.lr.ph.i ] + %.0.lcssa.i = phi ptr [ %74, %70 ], [ %.0.be.i, %.backedge.i ], [ %.034.i, %.lr.ph.i ] store i8 0, ptr %.0.lcssa.i, align 1 %105 = ptrtoint ptr %.0.lcssa.i to i64 %106 = ptrtoint ptr %74 to i64 @@ -1823,13 +1829,13 @@ pbl_get_option_by_name.exit: ; preds = %31 br label %protobuf_string_unescape.exit protobuf_string_unescape.exit: ; preds = %66, %68, %.critedge.i - %.024.i = phi ptr [ %74, %.critedge.i ], [ null, %68 ], [ null, %66 ] + %.024.i = phi ptr [ %74, %.critedge.i ], [ null, %67 ], [ null, %65 ] call void @llvm.lifetime.end.p0(ptr nonnull %8) %109 = getelementptr inbounds nuw i8, ptr %9, i64 112 store ptr %.024.i, ptr %109, align 8 br label %pbl_get_option_by_name.exit.thread -pbl_get_option_by_name.exit.thread: ; preds = %7, %31, %42, %45, %48, %51, %54, %59, %62, %protobuf_string_unescape.exit, %38, %35, %pbl_get_option_by_name.exit +pbl_get_option_by_name.exit.thread: ; preds = %pbl_get_simple_type_enum_value_by_typename.exit, %31, %42, %45, %48, %51, %54, %59, %62, %protobuf_string_unescape.exit, %38, %35, %pbl_get_option_by_name.exit ret ptr %9 } diff --git a/bench/yara-x-rs/optimized/6lvluxz0xcnue8xe38nauwxln.ll b/bench/yara-x-rs/optimized/6lvluxz0xcnue8xe38nauwxln.ll index ad7b1040784..06ffa97d2aa 100644 --- a/bench/yara-x-rs/optimized/6lvluxz0xcnue8xe38nauwxln.ll +++ b/bench/yara-x-rs/optimized/6lvluxz0xcnue8xe38nauwxln.ll @@ -26296,7 +26296,7 @@ default.unreachable: ; preds = %155 br i1 %.not.i14.i.i.i, label %.loopexit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %484, %.backedge.i.i.i - %486 = phi ptr [ %522, %.backedge.i.i.i ], [ %479, %484 ] + %486 = phi ptr [ %522, %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17hc5a1dd1922c1a0a2E.exit.i.i.i" ], [ %479, %484 ] %487 = getelementptr inbounds nuw i8, ptr %486, i64 1 %488 = load i8, ptr %486, align 1, !noalias !3803, !noundef !4 %489 = icmp sgt i8 %488, -1 @@ -26352,23 +26352,22 @@ default.unreachable: ; preds = %155 "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.thread.i.i.i": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.i.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7c39fbd8269e3d9bE.exit14.i.i.i.i.i", %500, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7c39fbd8269e3d9bE.exit12.i.i.i.i.i" %522 = phi ptr [ %513, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.i.i.i" ], [ %503, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7c39fbd8269e3d9bE.exit14.i.i.i.i.i" ], [ %493, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7c39fbd8269e3d9bE.exit12.i.i.i.i.i" ], [ %487, %500 ] %spec.select.i7.i.i.i = phi i32 [ %521, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.i.i.i" ], [ %510, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7c39fbd8269e3d9bE.exit14.i.i.i.i.i" ], [ %498, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7c39fbd8269e3d9bE.exit12.i.i.i.i.i" ], [ %501, %500 ] - %spec.select.i7.fr.i.i.i = freeze i32 %spec.select.i7.i.i.i - %523 = add i32 %spec.select.i7.fr.i.i.i, -127 - %spec.select.i.i.i.i.i.i = icmp ult i32 %523, -95 - br i1 %spec.select.i.i.i.i.i.i, label %switch.early.test.i.i.i, label %.backedge.i.i.i + %523 = add nsw i32 %spec.select.i7.i.i.i, -32 + %spec.select.i.i.i.i.i.i = icmp ult i32 %523, 95 + br i1 %spec.select.i.i.i.i.i.i, label %.backedge.i.i.i, label %switch.early.test.i.i.i.i.i + +switch.early.test.i.i.i.i.i: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.thread.i.i.i" + switch i32 %spec.select.i7.i.i.i, label %.loopexit68.i.i [ + i32 13, label %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17hc5a1dd1922c1a0a2E.exit.i.i.i" + i32 10, label %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17hc5a1dd1922c1a0a2E.exit.i.i.i" + i32 9, label %"_ZN4core4iter6traits8iterator8Iterator3all5check28_$u7b$$u7b$closure$u7d$$u7d$17hc5a1dd1922c1a0a2E.exit.i.i.i" + ] -.backedge.i.i.i: ; preds = %switch.early.test.i.i.i, %switch.early.test.i.i.i, %switch.early.test.i.i.i, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.thread.i.i.i" +.backedge.i.i.i: ; preds = %switch.early.test.i.i.i.i.i, %switch.early.test.i.i.i.i.i, %switch.early.test.i.i.i.i.i, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.thread.i.i.i" %.not.i.i.i.i = icmp eq ptr %522, %485 br i1 %.not.i.i.i.i, label %.loopexit.i.i, label %.lr.ph.i.i.i -switch.early.test.i.i.i: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.thread.i.i.i" - switch i32 %spec.select.i7.fr.i.i.i, label %.loopexit68.i.i [ - i32 13, label %.backedge.i.i.i - i32 10, label %.backedge.i.i.i - i32 9, label %.backedge.i.i.i - ] - -.loopexit.i.i: ; preds = %.backedge.i.i.i, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.i.i.i", %484 +switch.early.test.i.i.i: ; preds = %.backedge.i.i.i, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h14215ee060ede1a6E.exit.i.i.i", %484 call void @llvm.experimental.noalias.scope.decl(metadata !3810) %524 = load i64, ptr %85, align 8, !alias.scope !3810, !noalias !3813, !noundef !4 %525 = icmp ult i64 %524, 576460752303423488 @@ -26938,7 +26937,7 @@ select.unfold.i.i.i: ; preds = %._crit_edge.i.i.i.i invoke fastcc void @"_ZN4core3ptr56drop_in_place$LT$yara_x..compiler..warnings..Warning$GT$17h5c572c36928cf475E"(i64 %.val15.i.i.i, ptr %.val16.i.i.i) #51 to label %.body.i.i unwind label %751, !noalias !3813 -.loopexit68.i.i: ; preds = %switch.early.test.i.i.i, %.noexc51.i.i, %.loopexit.i.i, %482, %476 +.loopexit68.i.i: ; preds = %switch.early.test.i.i.i.i.i, %.noexc51.i.i, %.loopexit.i.i, %482, %476 %767 = getelementptr inbounds nuw i8, ptr %458, i64 64 %.val46.i.i = load i32, ptr %767, align 8, !alias.scope !3890, !noalias !3792, !noundef !4 %768 = getelementptr inbounds nuw i8, ptr %458, i64 68 diff --git a/bench/yara-x-rs/optimized/7kdrv2ks7wriy60c55s9rwzp3.ll b/bench/yara-x-rs/optimized/7kdrv2ks7wriy60c55s9rwzp3.ll index 878dee8c391..5b056c68c7f 100644 --- a/bench/yara-x-rs/optimized/7kdrv2ks7wriy60c55s9rwzp3.ll +++ b/bench/yara-x-rs/optimized/7kdrv2ks7wriy60c55s9rwzp3.ll @@ -223,6 +223,7 @@ target triple = "x86_64-unknown-linux-gnu" @"switch.table._ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h562a0ad9c4dae945E.1599" = private unnamed_addr constant [42 x ptr] [ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.109, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.110, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.111, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.112, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.113, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.114, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.115, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.116, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.117, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.118, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.119, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.120, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.121, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.122, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.123, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.124, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.125, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.126, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.127, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.128, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.129, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.130, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.131, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.132, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.133, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.134, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.135, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.136, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.137, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.138, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.139, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.140, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.141, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.142, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.143, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.144, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.145, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.146, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.147, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.148, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.149, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.150], align 8 @"switch.table._ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h6ac0d0e1ebe03b6dE" = private unnamed_addr constant [3 x i64] [i64 8, i64 13, i64 15], align 8 @"switch.table._ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h6ac0d0e1ebe03b6dE.1600" = private unnamed_addr constant [3 x ptr] [ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.202, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.203, ptr @anon.828c7d0e2a3e1195b6b60d15d45f1915.204], align 8 +@switch.table._ZN8wasmtime7runtime5types8FuncType27with_finality_and_supertype17hb04df057d19eaccfE.1601 = private unnamed_addr constant [9 x i64] [i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 1, i64 1, i64 0], align 8 ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define hidden { i32, ptr } @"_ZN100_$LT$cranelift_entity..iter..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b6a8b50593f1578E"(ptr noalias noundef align 8 captures(none) dereferenceable(24) %0) unnamed_addr #0 personality ptr @rust_eh_personality { @@ -99218,7 +99219,7 @@ define hidden void @_ZN8wasmtime7runtime5types8FuncType27with_finality_and_super br i1 %69, label %423, label %66 70: ; preds = %.invoke287, %77, %.else - %.sroa.011.0 = phi i8 [ 1, %.else ], [ 0, %.invoke287 ], [ 1, %77 ] + %.sroa.011.0 = phi i8 [ 1, %.else ], [ 0, %.invoke289 ], [ 1, %77 ] %71 = landingpad { ptr, i32 } cleanup br label %68 @@ -99247,7 +99248,7 @@ define hidden void @_ZN8wasmtime7runtime5types8FuncType27with_finality_and_super to label %68 unwind label %404 80: ; preds = %.invoke288, %93, %82 - %.sroa.011.2 = phi i8 [ 1, %82 ], [ 0, %.invoke288 ], [ 1, %93 ] + %.sroa.011.2 = phi i8 [ 1, %82 ], [ 0, %.invoke290 ], [ 1, %93 ] %81 = landingpad { ptr, i32 } cleanup br label %79 @@ -99349,47 +99350,65 @@ define hidden void @_ZN8wasmtime7runtime5types8FuncType27with_finality_and_super %114 = icmp eq i64 %108, 0 br i1 %114, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i", label %.preheader18.i -.preheader18.i: ; preds = %110, %.preheader18.i - %.sroa.07.0.i.i = phi i64 [ %120, %.preheader18.i ], [ 0, %110 ] - %.sroa.09.0.i.i = phi i64 [ %121, %.preheader18.i ], [ 0, %110 ] +.preheader18.i: ; preds = %110, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h287481bd3ee3c9b2E.exit.i.i" + %.sroa.07.0.i.i = phi i64 [ %120, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h287481bd3ee3c9b2E.exit.i.i" ], [ 0, %110 ] + %.sroa.09.0.i.i = phi i64 [ %121, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h287481bd3ee3c9b2E.exit.i.i" ], [ 0, %110 ] %115 = getelementptr inbounds nuw { i32, [3 x i32] }, ptr %107, i64 %.sroa.09.0.i.i %.val.i.i = load i32, ptr %115, align 4, !range !11605, !alias.scope !11606, !noalias !11609, !noundef !8 %116 = icmp samesign ult i32 %.val.i.i, 16 - %117 = add nsw i32 %.val.i.i, -8 - %switch.i.i.i.i.i = icmp ult i32 %117, -6 - %or.cond.not.i.i.i.i.i = and i1 %116, %switch.i.i.i.i.i - %118 = icmp ne i32 %.val.i.i, 10 - %.sroa.0.0.i.i.i.i.i = and i1 %118, %or.cond.not.i.i.i.i.i - %119 = zext i1 %.sroa.0.0.i.i.i.i.i to i64 - %120 = add i64 %.sroa.07.0.i.i, %119 + br i1 %116, label %switch.early.test.i.i.i.i.i, label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h287481bd3ee3c9b2E.exit.i.i" + +switch.early.test.i.i.i.i.i:; preds = %.preheader17.i + %switch.tableidx = add nsw i32 %.val.i.i, -2 + %117 = icmp ult i32 %switch.tableidx, 9 + br i1 %117, label %switch.lookup, label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h287481bd3ee3c9b2E.exit.i.i" + +switch.lookup: ; preds = %switch.early.test.i.i.i.i.i + %118 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table._ZN8wasmtime7runtime5types8FuncType27with_finality_and_supertype17hb04df057d19eaccfE.1601, i64 %118 + %switch.load = load i64, ptr %switch.gep, align 8 + br label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h287481bd3ee3c9b2E.exit.i.i" + +"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h287481bd3ee3c9b2E.exit.i.i": ; preds = %.preheader17.i, %switch.lookup, %switch.early.test.i.i.i.i.i + %119 = phi i64 [ %switch.load, %switch.lookup ], [ 1, %switch.early.test.i.i.i.i.i ], [ 0, %.preheader17.i ] + %120 = add i64 %119, %.sroa.07.0.i.i %121 = add nuw i64 %.sroa.09.0.i.i, 1 %122 = icmp eq i64 %121, %108 br i1 %122, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i", label %.preheader18.i -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i": ; preds = %.preheader18.i, %110 - %.sroa.04.0.i.i = phi i64 [ 0, %110 ], [ %120, %.preheader18.i ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i": ; preds = %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h287481bd3ee3c9b2E.exit.i.i", %110 + %.sroa.04.0.i.i = phi i64 [ 0, %110 ], [ %120, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h287481bd3ee3c9b2E.exit.i.i" ] %123 = icmp eq i64 %112, 0 br i1 %123, label %.loopexit229, label %.preheader.i -.preheader.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i", %.preheader.i - %.sroa.07.0.i4.i = phi i64 [ %129, %.preheader.i ], [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i" ] - %.sroa.09.0.i5.i = phi i64 [ %130, %.preheader.i ], [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i" ] +.preheader.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i", %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h6d8b8727fdacadcdE.exit.i.i" + %.sroa.07.0.i4.i = phi i64 [ %129, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h6d8b8727fdacadcdE.exit.i.i" ], [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i" ] + %.sroa.09.0.i5.i = phi i64 [ %130, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h6d8b8727fdacadcdE.exit.i.i" ], [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i" ] %124 = getelementptr inbounds nuw { i32, [3 x i32] }, ptr %111, i64 %.sroa.09.0.i5.i %.val.i6.i = load i32, ptr %124, align 4, !range !11605, !alias.scope !11610, !noalias !11613, !noundef !8 %125 = icmp samesign ult i32 %.val.i6.i, 16 - %126 = add nsw i32 %.val.i6.i, -8 - %switch.i.i.i.i7.i = icmp ult i32 %126, -6 - %or.cond.not.i.i.i.i8.i = and i1 %125, %switch.i.i.i.i7.i - %127 = icmp ne i32 %.val.i6.i, 10 - %.sroa.0.0.i.i.i.i9.i = and i1 %127, %or.cond.not.i.i.i.i8.i - %128 = zext i1 %.sroa.0.0.i.i.i.i9.i to i64 - %129 = add i64 %.sroa.07.0.i4.i, %128 + br i1 %125, label %switch.early.test.i.i.i.i9.i, label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h6d8b8727fdacadcdE.exit.i.i" + +switch.early.test.i.i.i.i9.i:; preds = %.preheader.i + %switch.tableidx297 = add nsw i32 %.val.i6.i, -2 + %126 = icmp ult i32 %switch.tableidx297, 9 + br i1 %126, label %switch.lookup298, label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h6d8b8727fdacadcdE.exit.i.i" + +switch.lookup298: ; preds = %switch.early.test.i.i.i.i9.i + %127 = zext nneg i32 %switch.tableidx297 to i64 + %switch.gep299 = getelementptr inbounds nuw i64, ptr @switch.table._ZN8wasmtime7runtime5types8FuncType27with_finality_and_supertype17hb04df057d19eaccfE.1601, i64 %127 + %switch.load300 = load i64, ptr %switch.gep299, align 8 + br label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h6d8b8727fdacadcdE.exit.i.i" + +"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h6d8b8727fdacadcdE.exit.i.i": ; preds = %.preheader.i, %switch.lookup298, %switch.early.test.i.i.i.i9.i + %128 = phi i64 [ %switch.load300, %switch.lookup298 ], [ 1, %switch.early.test.i.i.i.i9.i ], [ 0, %.preheader.i ] + %129 = add i64 %128, %.sroa.07.0.i4.i %130 = add nuw i64 %.sroa.09.0.i5.i, 1 %131 = icmp eq i64 %130, %112 br i1 %131, label %.loopexit229, label %.preheader.i -.loopexit229: ; preds = %.preheader.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i" - %.sroa.04.0.i10.i = phi i64 [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i" ], [ %129, %.preheader.i ] +.loopexit229: ; preds = %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h6d8b8727fdacadcdE.exit.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i" + %.sroa.04.0.i10.i = phi i64 [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h03e256003dad0eb2E.exit.i" ], [ %129, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h6d8b8727fdacadcdE.exit.i.i" ] store ptr %107, ptr %48, align 8, !alias.scope !11598, !noalias !11614 %132 = getelementptr inbounds nuw i8, ptr %48, i64 8 store i64 %108, ptr %132, align 8, !alias.scope !11598, !noalias !11614 @@ -100454,12 +100473,12 @@ switch.lookup.i.i.i33.i: ; preds = %.noexc94 call void @llvm.lifetime.end.p0(ptr nonnull %48) call void @llvm.lifetime.end.p0(ptr nonnull %49) invoke fastcc void @"_ZN4core3ptr116drop_in_place$LT$smallvec..SmallVec$LT$$u5b$wasmtime..runtime..type_registry..RegisteredType$u3b$$u20$4$u5d$$GT$$GT$17h3b6e126865a8fa1cE"(ptr noalias noundef align 8 dereferenceable(264) %50) - to label %.invoke288 unwind label %412 + to label %.invoke290 unwind label %412 .invoke288: ; preds = %.invoke289 call void @llvm.lifetime.end.p0(ptr nonnull %50) invoke void @"_ZN4core3ptr77drop_in_place$LT$alloc..vec..Vec$LT$wasmtime..runtime..types..ValType$GT$$GT$17ha25aa82dc6a48a9dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %51) - to label %.invoke287 unwind label %80 + to label %.invoke289 unwind label %80 .invoke287: ; preds = %.invoke288 call void @llvm.lifetime.end.p0(ptr nonnull %51) diff --git a/bench/z3/optimized/add_bounds_tactic.ll b/bench/z3/optimized/add_bounds_tactic.ll index d4f3876ba3a..01240ba46fe 100644 --- a/bench/z3/optimized/add_bounds_tactic.ll +++ b/bench/z3/optimized/add_bounds_tactic.ll @@ -5674,7 +5674,7 @@ define linkonce_odr hidden noundef ptr @_ZNK7obj_mapI4exprSt4pairI8rationalbEE9f br i1 %.not2736.i, label %_ZNK14core_hashtableIN7obj_mapI4exprSt4pairI8rationalbEE13obj_map_entryE8obj_hashINS5_8key_dataEE10default_eqIS8_EE9find_coreERKS8_.exit, label %.lr.ph38.i .lr.ph.i: ; preds = %2, %28 - %.035.i = phi ptr [ %29, %28 ], [ %16, %2 ] + %.035.i = phi ptr [ %29, %27 ], [ %16, %2 ] %19 = load ptr, ptr %.035.i, align 8, !tbaa !196 %20 = icmp ult ptr %19, inttoptr (i64 2 to ptr) br i1 %20, label %26, label %21 @@ -5697,7 +5697,7 @@ define linkonce_odr hidden noundef ptr @_ZNK7obj_mapI4exprSt4pairI8rationalbEE9f br i1 %.not.i, label %.preheader.i, label %.lr.ph.i, !llvm.loop !198 .lr.ph38.i: ; preds = %.preheader.i, %.lr.ph38.i.backedge - %.137.i = phi ptr [ %.137.i.be, %.lr.ph38.i.backedge ], [ %14, %.preheader.i ] + %.137.i = phi ptr [ %.137.i.be, %.lr.ph37.i.backedge ], [ %14, %.preheader.i ] %30 = load ptr, ptr %.137.i, align 8, !tbaa !196 %31 = icmp ult ptr %30, inttoptr (i64 2 to ptr) br i1 %31, label %37, label %32 @@ -5723,11 +5723,11 @@ define linkonce_odr hidden noundef ptr @_ZNK7obj_mapI4exprSt4pairI8rationalbEE9f br i1 %.not27.old.i, label %_ZNK14core_hashtableIN7obj_mapI4exprSt4pairI8rationalbEE13obj_map_entryE8obj_hashINS5_8key_dataEE10default_eqIS8_EE9find_coreERKS8_.exit, label %.lr.ph38.i.backedge .lr.ph38.i.backedge: ; preds = %40, %37 - %.137.i.be = phi ptr [ %39, %37 ], [ %.old.i, %40 ] + %.137.i.be = phi ptr [ %39, %35 ], [ %.old.i, %38 ] br label %.lr.ph38.i, !llvm.loop !199 _ZNK14core_hashtableIN7obj_mapI4exprSt4pairI8rationalbEE13obj_map_entryE8obj_hashINS5_8key_dataEE10default_eqIS8_EE9find_coreERKS8_.exit: ; preds = %26, %21, %40, %37, %32, %.preheader.i - %.026.i = phi ptr [ null, %.preheader.i ], [ %.137.i, %32 ], [ null, %40 ], [ null, %37 ], [ null, %26 ], [ %.035.i, %21 ] + %.026.i = phi ptr [ null, %.preheader.i ], [ %.137.i, %30 ], [ null, %38 ], [ null, %35 ], [ null, %25 ], [ %.035.i, %20 ] %41 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8, !tbaa !129 invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %41, ptr noundef nonnull align 8 dereferenceable(33) %4) to label %.noexc.i.i.i unwind label %42 diff --git a/bench/z3/optimized/dl_cmds.ll b/bench/z3/optimized/dl_cmds.ll index 021fa458c9d..40cb946efb3 100644 --- a/bench/z3/optimized/dl_cmds.ll +++ b/bench/z3/optimized/dl_cmds.ll @@ -3342,7 +3342,7 @@ _ZNK4decl13get_family_idEv.exit.thread: ; preds = %3, %_ZNK4decl13get_ br i1 %.not.i.i, label %.preheader.i.i, label %.lr.ph.i.i, !llvm.loop !452 .lr.ph38.i.i: ; preds = %.preheader.i.i, %.lr.ph38.i.i.backedge - %.137.i.i = phi ptr [ %.137.i.i.be, %.lr.ph38.i.i.backedge ], [ %25, %.preheader.i.i ] + %.137.i.i = phi ptr [ %.137.i.i.be, %.lr.ph37.i.i.backedge ], [ %25, %.preheader.i.i ] %40 = load ptr, ptr %.137.i.i, align 8, !tbaa !450 %41 = icmp ult ptr %40, inttoptr (i64 2 to ptr) br i1 %41, label %47, label %42 @@ -3368,13 +3368,13 @@ _ZNK4decl13get_family_idEv.exit.thread: ; preds = %3, %_ZNK4decl13get_ br i1 %.not27.old.i.i, label %.loopexit, label %.lr.ph38.i.i.backedge .lr.ph38.i.i.backedge: ; preds = %50, %47 - %.137.i.i.be = phi ptr [ %49, %47 ], [ %.old.i.i, %50 ] + %.137.i.i.be = phi ptr [ %49, %46 ], [ %.old.i.i, %49 ] br label %.lr.ph38.i.i, !llvm.loop !454 .loopexit: ; preds = %36, %50, %47, %.preheader.i.i %51 = tail call ptr @__cxa_allocate_exception(i64 48) #20 invoke void @_ZN13cmd_exceptionC2EPKc(ptr noundef nonnull align 8 dereferenceable(48) %51, ptr noundef nonnull @.str.19) - to label %52 unwind label %53 + to label %51 unwind label %53 52: ; preds = %.loopexit tail call void @__cxa_throw(ptr nonnull %51, ptr nonnull @_ZTI13cmd_exception, ptr nonnull @_ZN17default_exceptionD2Ev) #23 @@ -3389,8 +3389,8 @@ _ZNK14core_hashtableI14obj_hash_entryI9func_declE12obj_ptr_hashIS1_E6ptr_eqIS1_E ret void 55: ; preds = %53, %12 - %.sink = phi ptr [ %51, %53 ], [ %10, %12 ] - %.pn = phi { ptr, i32 } [ %54, %53 ], [ %13, %12 ] + %.sink = phi ptr [ %51, %52 ], [ %10, %12 ] + %.pn = phi { ptr, i32 } [ %54, %52 ], [ %13, %12 ] tail call void @__cxa_free_exception(ptr nonnull %.sink) #20 resume { ptr, i32 } %.pn } diff --git a/bench/z3/optimized/elim_unconstrained.ll b/bench/z3/optimized/elim_unconstrained.ll index b5c2635ff84..dd03e3b1924 100644 --- a/bench/z3/optimized/elim_unconstrained.ll +++ b/bench/z3/optimized/elim_unconstrained.ll @@ -5937,7 +5937,7 @@ _ZN17scoped_ptr_vectorIN26model_reconstruction_trail5entryEE9push_backEPS1_.exit br i1 %.not1.i.i.i.i, label %_ZNK7obj_mapI4exprPS0_E5beginEv.exit, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %35, %50 - %.sroa.0.0.i.i = phi ptr [ %51, %50 ], [ %43, %35 ] + %.sroa.0.0.i.i = phi ptr [ %51, %49 ], [ %43, %35 ] %48 = load ptr, ptr %.sroa.0.0.i.i, align 8, !tbaa !199 %49 = icmp ult ptr %48, inttoptr (i64 2 to ptr) br i1 %49, label %50, label %_ZNK7obj_mapI4exprPS0_E5beginEv.exit @@ -5948,7 +5948,7 @@ _ZN17scoped_ptr_vectorIN26model_reconstruction_trail5entryEE9push_backEPS1_.exit br i1 %.not.i.i.i.i, label %_ZNK7obj_mapI4exprPS0_E5beginEv.exit, label %.lr.ph.i.i.i.i, !llvm.loop !202 _ZNK7obj_mapI4exprPS0_E5beginEv.exit: ; preds = %.lr.ph.i.i.i.i, %50, %35 - %.sroa.0.1.i.i = phi ptr [ %43, %35 ], [ %.sroa.0.0.i.i, %.lr.ph.i.i.i.i ], [ %47, %50 ] + %.sroa.0.1.i.i = phi ptr [ %43, %35 ], [ %.sroa.0.0.i.i, %.lr.ph.i.i.i.i ], [ %47, %49 ] %52 = getelementptr inbounds nuw %"class.obj_map::obj_map_entry", ptr %43, i64 %46 %.not19 = icmp eq ptr %.sroa.0.1.i.i, %52 br i1 %.not19, label %._crit_edge, label %.lr.ph @@ -5967,7 +5967,7 @@ _ZNK7obj_mapI4exprPS0_E5beginEv.exit: ; preds = %.lr.ph.i.i.i.i, %50 br i1 %.not1.i.i, label %_ZN14core_hashtableIN7obj_mapI4exprPS1_E13obj_map_entryE8obj_hashINS3_8key_dataEE10default_eqIS6_EE8iteratorppEv.exit, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %.lr.ph, %59 - %.sroa.014.1 = phi ptr [ %60, %59 ], [ %56, %.lr.ph ] + %.sroa.014.1 = phi ptr [ %60, %57 ], [ %56, %.lr.ph ] %57 = load ptr, ptr %.sroa.014.1, align 8, !tbaa !199 %58 = icmp ult ptr %57, inttoptr (i64 2 to ptr) br i1 %58, label %59, label %_ZN14core_hashtableIN7obj_mapI4exprPS1_E13obj_map_entryE8obj_hashINS3_8key_dataEE10default_eqIS6_EE8iteratorppEv.exit @@ -5978,7 +5978,7 @@ _ZNK7obj_mapI4exprPS0_E5beginEv.exit: ; preds = %.lr.ph.i.i.i.i, %50 br i1 %.not.i.i, label %_ZN14core_hashtableIN7obj_mapI4exprPS1_E13obj_map_entryE8obj_hashINS3_8key_dataEE10default_eqIS6_EE8iteratorppEv.exit, label %.lr.ph.i.i, !llvm.loop !202 _ZN14core_hashtableIN7obj_mapI4exprPS1_E13obj_map_entryE8obj_hashINS3_8key_dataEE10default_eqIS6_EE8iteratorppEv.exit: ; preds = %.lr.ph.i.i, %59, %.lr.ph - %.sroa.014.2 = phi ptr [ %56, %.lr.ph ], [ %.sroa.014.1, %.lr.ph.i.i ], [ %60, %59 ] + %.sroa.014.2 = phi ptr [ %56, %.lr.ph ], [ %.sroa.014.1, %.lr.ph.i.i ], [ %60, %57 ] %.not = icmp eq ptr %.sroa.014.2, %52 br i1 %.not, label %._crit_edge, label %.lr.ph } diff --git a/bench/zed-rs/optimized/7ytobmn0xkq5d7tylhffnrtk5.ll b/bench/zed-rs/optimized/7ytobmn0xkq5d7tylhffnrtk5.ll index f0e21c3fff3..ab7f4401d39 100644 --- a/bench/zed-rs/optimized/7ytobmn0xkq5d7tylhffnrtk5.ll +++ b/bench/zed-rs/optimized/7ytobmn0xkq5d7tylhffnrtk5.ll @@ -742,6 +742,7 @@ target triple = "x86_64-unknown-linux-gnu" @"switch.table._ZN110_$LT$core..result..Result$LT$T$C$E$GT$$u20$as$u20$wasmtime..runtime..component..func..typed..ComponentType$GT$9typecheck17hfd340bba851bdd5cE.llvm.9243646390802613332.228" = private unnamed_addr constant [23 x ptr] [ptr @anon.7ca032e49b70be033f95827ae61fcc89.511, ptr @anon.7ca032e49b70be033f95827ae61fcc89.512, ptr @anon.7ca032e49b70be033f95827ae61fcc89.513, ptr @anon.7ca032e49b70be033f95827ae61fcc89.514, ptr @anon.7ca032e49b70be033f95827ae61fcc89.515, ptr @anon.7ca032e49b70be033f95827ae61fcc89.516, ptr @anon.7ca032e49b70be033f95827ae61fcc89.517, ptr @anon.7ca032e49b70be033f95827ae61fcc89.518, ptr @anon.7ca032e49b70be033f95827ae61fcc89.519, ptr @anon.7ca032e49b70be033f95827ae61fcc89.520, ptr @anon.7ca032e49b70be033f95827ae61fcc89.521, ptr @anon.7ca032e49b70be033f95827ae61fcc89.522, ptr @anon.7ca032e49b70be033f95827ae61fcc89.523, ptr @anon.7ca032e49b70be033f95827ae61fcc89.524, ptr @anon.7ca032e49b70be033f95827ae61fcc89.525, ptr @anon.7ca032e49b70be033f95827ae61fcc89.526, ptr @anon.7ca032e49b70be033f95827ae61fcc89.527, ptr @anon.7ca032e49b70be033f95827ae61fcc89.528, ptr @anon.7ca032e49b70be033f95827ae61fcc89.529, ptr @anon.7ca032e49b70be033f95827ae61fcc89.530, ptr poison, ptr @anon.7ca032e49b70be033f95827ae61fcc89.532, ptr @anon.7ca032e49b70be033f95827ae61fcc89.533], align 8 @"switch.table._ZN88_$LT$$u5b$T$u5d$$u20$as$u20$wasmtime..runtime..component..func..typed..ComponentType$GT$9typecheck17hb594d68a8d9af972E" = private unnamed_addr constant [23 x i64] [i64 4, i64 2, i64 2, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 4, i64 6, i64 6, i64 7, i64 poison, i64 5, i64 5, i64 4, i64 6, i64 6, i64 14, i64 17], align 8 @"switch.table._ZN88_$LT$$u5b$T$u5d$$u20$as$u20$wasmtime..runtime..component..func..typed..ComponentType$GT$9typecheck17hb594d68a8d9af972E.232" = private unnamed_addr constant [23 x ptr] [ptr @anon.7ca032e49b70be033f95827ae61fcc89.511, ptr @anon.7ca032e49b70be033f95827ae61fcc89.512, ptr @anon.7ca032e49b70be033f95827ae61fcc89.513, ptr @anon.7ca032e49b70be033f95827ae61fcc89.514, ptr @anon.7ca032e49b70be033f95827ae61fcc89.515, ptr @anon.7ca032e49b70be033f95827ae61fcc89.516, ptr @anon.7ca032e49b70be033f95827ae61fcc89.517, ptr @anon.7ca032e49b70be033f95827ae61fcc89.518, ptr @anon.7ca032e49b70be033f95827ae61fcc89.519, ptr @anon.7ca032e49b70be033f95827ae61fcc89.520, ptr @anon.7ca032e49b70be033f95827ae61fcc89.521, ptr @anon.7ca032e49b70be033f95827ae61fcc89.522, ptr @anon.7ca032e49b70be033f95827ae61fcc89.523, ptr @anon.7ca032e49b70be033f95827ae61fcc89.524, ptr @anon.7ca032e49b70be033f95827ae61fcc89.525, ptr poison, ptr @anon.7ca032e49b70be033f95827ae61fcc89.527, ptr @anon.7ca032e49b70be033f95827ae61fcc89.528, ptr @anon.7ca032e49b70be033f95827ae61fcc89.529, ptr @anon.7ca032e49b70be033f95827ae61fcc89.530, ptr @anon.7ca032e49b70be033f95827ae61fcc89.531, ptr @anon.7ca032e49b70be033f95827ae61fcc89.532, ptr @anon.7ca032e49b70be033f95827ae61fcc89.533], align 8 +@switch.table._ZN8wasmtime7runtime5types8FuncType27with_finality_and_supertype17h80bd8911e7d78aafE.233 = private unnamed_addr constant [6 x i64] [i64 0, i64 0, i64 0, i64 1, i64 1, i64 0], align 8 @switch.table._ZN8wasmtime7runtime9component4func5typed4desc17h24ca97d9f436202aE.llvm.9243646390802613332 = private unnamed_addr constant [23 x i64] [i64 4, i64 2, i64 2, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 3, i64 4, i64 6, i64 6, i64 7, i64 4, i64 5, i64 5, i64 4, i64 6, i64 6, i64 14, i64 17], align 8 @switch.table._ZN8wasmtime7runtime9component4func5typed4desc17h24ca97d9f436202aE.llvm.9243646390802613332.233 = private unnamed_addr constant [23 x ptr] [ptr @anon.7ca032e49b70be033f95827ae61fcc89.511, ptr @anon.7ca032e49b70be033f95827ae61fcc89.512, ptr @anon.7ca032e49b70be033f95827ae61fcc89.513, ptr @anon.7ca032e49b70be033f95827ae61fcc89.514, ptr @anon.7ca032e49b70be033f95827ae61fcc89.515, ptr @anon.7ca032e49b70be033f95827ae61fcc89.516, ptr @anon.7ca032e49b70be033f95827ae61fcc89.517, ptr @anon.7ca032e49b70be033f95827ae61fcc89.518, ptr @anon.7ca032e49b70be033f95827ae61fcc89.519, ptr @anon.7ca032e49b70be033f95827ae61fcc89.520, ptr @anon.7ca032e49b70be033f95827ae61fcc89.521, ptr @anon.7ca032e49b70be033f95827ae61fcc89.522, ptr @anon.7ca032e49b70be033f95827ae61fcc89.523, ptr @anon.7ca032e49b70be033f95827ae61fcc89.524, ptr @anon.7ca032e49b70be033f95827ae61fcc89.525, ptr @anon.7ca032e49b70be033f95827ae61fcc89.526, ptr @anon.7ca032e49b70be033f95827ae61fcc89.527, ptr @anon.7ca032e49b70be033f95827ae61fcc89.528, ptr @anon.7ca032e49b70be033f95827ae61fcc89.529, ptr @anon.7ca032e49b70be033f95827ae61fcc89.530, ptr @anon.7ca032e49b70be033f95827ae61fcc89.531, ptr @anon.7ca032e49b70be033f95827ae61fcc89.532, ptr @anon.7ca032e49b70be033f95827ae61fcc89.533], align 8 @"switch.table._ZN8wasmtime7runtime9component6linker15Linker$LT$T$GT$9typecheck28_$u7b$$u7b$closure$u7d$$u7d$17h19ae03925000120eE.llvm.9243646390802613332" = private unnamed_addr constant [7 x ptr] [ptr @anon.7ca032e49b70be033f95827ae61fcc89.534, ptr @anon.7ca032e49b70be033f95827ae61fcc89.535, ptr @anon.7ca032e49b70be033f95827ae61fcc89.536, ptr @anon.7ca032e49b70be033f95827ae61fcc89.79, ptr @anon.7ca032e49b70be033f95827ae61fcc89.537, ptr @anon.7ca032e49b70be033f95827ae61fcc89.538, ptr @anon.7ca032e49b70be033f95827ae61fcc89.539], align 8 @@ -110105,47 +110106,65 @@ define hidden void @_ZN8wasmtime7runtime5types8FuncType27with_finality_and_super %135 = icmp eq i64 %129, 0 br i1 %135, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i", label %.preheader18.i -.preheader18.i: ; preds = %131, %.preheader18.i - %.sroa.07.0.i.i = phi i64 [ %141, %.preheader18.i ], [ 0, %131 ] - %.sroa.09.0.i.i = phi i64 [ %142, %.preheader18.i ], [ 0, %131 ] +.preheader18.i: ; preds = %131, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17had5fe27a354367ffE.exit.i.i" + %.sroa.07.0.i.i = phi i64 [ %141, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17had5fe27a354367ffE.exit.i.i" ], [ 0, %131 ] + %.sroa.09.0.i.i = phi i64 [ %142, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17had5fe27a354367ffE.exit.i.i" ], [ 0, %131 ] %136 = getelementptr inbounds { i32, [3 x i32] }, ptr %128, i64 %.sroa.09.0.i.i %.val.i.i = load i32, ptr %136, align 4, !range !29849, !alias.scope !29850, !noalias !29853, !noundef !4 %137 = icmp samesign ult i32 %.val.i.i, 13 - %138 = add nsw i32 %.val.i.i, -5 - %switch.i.i.i.i.i = icmp ult i32 %138, -3 - %or.cond.not.i.i.i.i.i = and i1 %137, %switch.i.i.i.i.i - %139 = icmp ne i32 %.val.i.i, 7 - %.sroa.0.0.i.i.i.i.i = and i1 %139, %or.cond.not.i.i.i.i.i - %140 = zext i1 %.sroa.0.0.i.i.i.i.i to i64 - %141 = add i64 %.sroa.07.0.i.i, %140 + br i1 %137, label %switch.early.test.i.i.i.i.i, label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17had5fe27a354367ffE.exit.i.i" + +switch.early.test.i.i.i.i.i:; preds = %.preheader17.i + %switch.tableidx = add nsw i32 %.val.i.i, -2 + %138 = icmp ult i32 %switch.tableidx, 6 + br i1 %138, label %switch.lookup, label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17had5fe27a354367ffE.exit.i.i" + +switch.lookup: ; preds = %switch.early.test.i.i.i.i.i + %139 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table._ZN8wasmtime7runtime5types8FuncType27with_finality_and_supertype17h80bd8911e7d78aafE.233, i64 %139 + %switch.load = load i64, ptr %switch.gep, align 8 + br label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17had5fe27a354367ffE.exit.i.i" + +"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17had5fe27a354367ffE.exit.i.i": ; preds = %.preheader17.i, %switch.lookup, %switch.early.test.i.i.i.i.i + %140 = phi i64 [ %switch.load, %switch.lookup ], [ 1, %switch.early.test.i.i.i.i.i ], [ 0, %.preheader17.i ] + %141 = add i64 %140, %.sroa.07.0.i.i %142 = add nuw i64 %.sroa.09.0.i.i, 1 %143 = icmp eq i64 %142, %129 br i1 %143, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i", label %.preheader18.i -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i": ; preds = %.preheader18.i, %131 - %.sroa.04.0.i.i = phi i64 [ 0, %131 ], [ %141, %.preheader18.i ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i": ; preds = %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17had5fe27a354367ffE.exit.i.i", %131 + %.sroa.04.0.i.i = phi i64 [ 0, %131 ], [ %141, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17had5fe27a354367ffE.exit.i.i" ] %144 = icmp eq i64 %133, 0 br i1 %144, label %.loopexit230, label %.preheader.i -.preheader.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i", %.preheader.i - %.sroa.07.0.i4.i = phi i64 [ %150, %.preheader.i ], [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i" ] - %.sroa.09.0.i5.i = phi i64 [ %151, %.preheader.i ], [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i" ] +.preheader.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i", %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfe3703d424c6c6c8E.exit.i.i" + %.sroa.07.0.i4.i = phi i64 [ %150, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfe3703d424c6c6c8E.exit.i.i" ], [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i" ] + %.sroa.09.0.i5.i = phi i64 [ %151, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfe3703d424c6c6c8E.exit.i.i" ], [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i" ] %145 = getelementptr inbounds { i32, [3 x i32] }, ptr %132, i64 %.sroa.09.0.i5.i %.val.i6.i = load i32, ptr %145, align 4, !range !29849, !alias.scope !29854, !noalias !29857, !noundef !4 %146 = icmp samesign ult i32 %.val.i6.i, 13 - %147 = add nsw i32 %.val.i6.i, -5 - %switch.i.i.i.i7.i = icmp ult i32 %147, -3 - %or.cond.not.i.i.i.i8.i = and i1 %146, %switch.i.i.i.i7.i - %148 = icmp ne i32 %.val.i6.i, 7 - %.sroa.0.0.i.i.i.i9.i = and i1 %148, %or.cond.not.i.i.i.i8.i - %149 = zext i1 %.sroa.0.0.i.i.i.i9.i to i64 - %150 = add i64 %.sroa.07.0.i4.i, %149 + br i1 %146, label %switch.early.test.i.i.i.i9.i, label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfe3703d424c6c6c8E.exit.i.i" + +switch.early.test.i.i.i.i9.i:; preds = %.preheader.i + %switch.tableidx273 = add nsw i32 %.val.i6.i, -2 + %147 = icmp ult i32 %switch.tableidx273, 6 + br i1 %147, label %switch.lookup274, label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfe3703d424c6c6c8E.exit.i.i" + +switch.lookup274: ; preds = %switch.early.test.i.i.i.i9.i + %148 = zext nneg i32 %switch.tableidx273 to i64 + %switch.gep275 = getelementptr inbounds nuw i64, ptr @switch.table._ZN8wasmtime7runtime5types8FuncType27with_finality_and_supertype17h80bd8911e7d78aafE.233, i64 %148 + %switch.load276 = load i64, ptr %switch.gep275, align 8 + br label %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfe3703d424c6c6c8E.exit.i.i" + +"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfe3703d424c6c6c8E.exit.i.i": ; preds = %.preheader.i, %switch.lookup274, %switch.early.test.i.i.i.i9.i + %149 = phi i64 [ %switch.load276, %switch.lookup274 ], [ 1, %switch.early.test.i.i.i.i9.i ], [ 0, %.preheader.i ] + %150 = add i64 %149, %.sroa.07.0.i4.i %151 = add nuw i64 %.sroa.09.0.i5.i, 1 %152 = icmp eq i64 %151, %133 br i1 %152, label %.loopexit230, label %.preheader.i -.loopexit230: ; preds = %.preheader.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i" - %.sroa.04.0.i10.i = phi i64 [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i" ], [ %150, %.preheader.i ] +.loopexit230: ; preds = %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfe3703d424c6c6c8E.exit.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i" + %.sroa.04.0.i10.i = phi i64 [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf431f7988b648351E.exit.i" ], [ %150, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfe3703d424c6c6c8E.exit.i.i" ] store ptr %128, ptr %53, align 8, !alias.scope !29842, !noalias !29858 %153 = getelementptr inbounds nuw i8, ptr %53, i64 8 store i64 %129, ptr %153, align 8, !alias.scope !29842, !noalias !29858 diff --git a/bench/zxing/optimized/Content.ll b/bench/zxing/optimized/Content.ll index fbed544be2b..8979ffe808e 100644 --- a/bench/zxing/optimized/Content.ll +++ b/bench/zxing/optimized/Content.ll @@ -3739,14 +3739,14 @@ define internal fastcc void @"_ZZNK5ZXing7Content4typeEvENK3$_0clENS_3ECIEii"(pt %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 %13 = load ptr, ptr %12, align 8, !tbaa !93 %spec.select.i = icmp ult i32 %.0, 171 - br i1 %spec.select.i, label %14, label %63 + br i1 %spec.select.i, label %14, label %56 14: ; preds = %11 %15 = add nsw i32 %.0, -28 %or.cond = icmp ult i32 %15, -27 %.not = icmp eq i32 %.0, 25 %or.cond10 = or i1 %.not, %or.cond - br i1 %or.cond10, label %63, label %16 + br i1 %or.cond10, label %56, label %16 16: ; preds = %14 %17 = load ptr, ptr %6, align 8, !tbaa !3 @@ -3766,159 +3766,152 @@ define internal fastcc void @"_ZZNK5ZXing7Content4typeEvENK3$_0clENS_3ECIEii"(pt br label %.lr.ph.i.i.i.i.i .lr.ph.i.i.i.i.i: ; preds = %40, %.lr.ph.preheader.i.i.i.i.i - %.069.i.i.i.i.i = phi i64 [ %42, %40 ], [ %23, %.lr.ph.preheader.i.i.i.i.i ] - %.sroa.037.068.i.i.i.i.i = phi ptr [ %41, %40 ], [ %19, %.lr.ph.preheader.i.i.i.i.i ] + %.069.i.i.i.i.i = phi i64 [ %42, %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit24.i.i.i.i.i" ], [ %23, %.lr.ph.preheader.i.i.i.i.i ] + %.sroa.037.068.i.i.i.i.i = phi ptr [ %41, %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit24.i.i.i.i.i" ], [ %19, %.lr.ph.preheader.i.i.i.i.i ] %26 = load i8, ptr %.sroa.037.068.i.i.i.i.i, align 1, !tbaa !14 - %.fr54.i.i.i.i.i = freeze i8 %26 - %27 = icmp ult i8 %.fr54.i.i.i.i.i, 32 - br i1 %27, label %switch.early.test.i.i.i.i.i, label %28 + %27 = icmp ult i8 %26, 32 + br i1 %27, label %switch.early.test.i.i.i.i.i.i.i, label %28 -switch.early.test.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i - switch i8 %.fr54.i.i.i.i.i, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" [ - i8 13, label %28 +switch.early.test.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i + switch i8 %26, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" [ + i8 13, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit.i.i.i.i.i" i8 10, label %28 i8 9, label %28 ] -28: ; preds = %switch.early.test.i.i.i.i.i, %switch.early.test.i.i.i.i.i, %switch.early.test.i.i.i.i.i, %.lr.ph.i.i.i.i.i +28: ; preds = %switch.early.test.i.i.i.i.i.i.i, %switch.early.test.i.i.i.i.i.i.i, %switch.early.test.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i %29 = getelementptr inbounds nuw i8, ptr %.sroa.037.068.i.i.i.i.i, i64 1 %30 = load i8, ptr %29, align 1, !tbaa !14 - %.fr55.i.i.i.i.i = freeze i8 %30 - %31 = icmp ult i8 %.fr55.i.i.i.i.i, 32 - br i1 %31, label %switch.early.test46.i.i.i.i.i, label %32 + %30 = icmp ult i8 %30, 32 + br i1 %30, label %switch.early.test.i.i17.i.i.i.i.i, label %32 -switch.early.test46.i.i.i.i.i: ; preds = %28 - switch i8 %.fr55.i.i.i.i.i, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit" [ - i8 13, label %32 +switch.early.test.i.i17.i.i.i.i.i: ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit.i.i.i.i.i" + switch i8 %29, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit" [ + i8 13, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit18.i.i.i.i.i" i8 10, label %32 i8 9, label %32 ] -32: ; preds = %switch.early.test46.i.i.i.i.i, %switch.early.test46.i.i.i.i.i, %switch.early.test46.i.i.i.i.i, %28 +32: ; preds = %switch.early.test.i.i17.i.i.i.i.i, %switch.early.test.i.i17.i.i.i.i.i, %switch.early.test.i.i17.i.i.i.i.i, %28 %33 = getelementptr inbounds nuw i8, ptr %.sroa.037.068.i.i.i.i.i, i64 2 %34 = load i8, ptr %33, align 1, !tbaa !14 - %.fr56.i.i.i.i.i = freeze i8 %34 - %35 = icmp ult i8 %.fr56.i.i.i.i.i, 32 - br i1 %35, label %switch.early.test47.i.i.i.i.i, label %36 + %33 = icmp ult i8 %34, 32 + br i1 %33, label %switch.early.test.i.i20.i.i.i.i.i, label %36 -switch.early.test47.i.i.i.i.i: ; preds = %32 - switch i8 %.fr56.i.i.i.i.i, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit26" [ - i8 13, label %36 +switch.early.test.i.i20.i.i.i.i.i: ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit18.i.i.i.i.i" + switch i8 %32, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit33" [ + i8 13, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit21.i.i.i.i.i" i8 10, label %36 i8 9, label %36 ] -36: ; preds = %switch.early.test47.i.i.i.i.i, %switch.early.test47.i.i.i.i.i, %switch.early.test47.i.i.i.i.i, %32 +36: ; preds = %switch.early.test.i.i20.i.i.i.i.i, %switch.early.test.i.i20.i.i.i.i.i, %switch.early.test.i.i20.i.i.i.i.i, %32 %37 = getelementptr inbounds nuw i8, ptr %.sroa.037.068.i.i.i.i.i, i64 3 %38 = load i8, ptr %37, align 1, !tbaa !14 - %.fr57.i.i.i.i.i = freeze i8 %38 - %39 = icmp ult i8 %.fr57.i.i.i.i.i, 32 - br i1 %39, label %switch.early.test48.i.i.i.i.i, label %40 + %36 = icmp ult i8 %38, 32 + br i1 %36, label %switch.early.test.i.i23.i.i.i.i.i, label %40 -switch.early.test48.i.i.i.i.i: ; preds = %36 - switch i8 %.fr57.i.i.i.i.i, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit28" [ - i8 13, label %40 +switch.early.test.i.i23.i.i.i.i.i: ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit21.i.i.i.i.i" + switch i8 %35, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit35" [ + i8 13, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit24.i.i.i.i.i" i8 10, label %40 i8 9, label %40 ] -40: ; preds = %switch.early.test48.i.i.i.i.i, %switch.early.test48.i.i.i.i.i, %switch.early.test48.i.i.i.i.i, %36 +40: ; preds = %switch.early.test.i.i23.i.i.i.i.i, %switch.early.test.i.i23.i.i.i.i.i, %switch.early.test.i.i23.i.i.i.i.i, %36 %41 = getelementptr inbounds nuw i8, ptr %.sroa.037.068.i.i.i.i.i, i64 4 %42 = add nsw i64 %.069.i.i.i.i.i, -1 %43 = icmp sgt i64 %.069.i.i.i.i.i, 1 br i1 %43, label %.lr.ph.i.i.i.i.i, label %._crit_edge.i.i.i.i.i, !llvm.loop !94 ._crit_edge.i.i.i.i.i: ; preds = %40, %16 - %.sroa.037.0.lcssa.i.i.i.i.i = phi ptr [ %19, %16 ], [ %scevgep.i.i.i.i.i, %40 ] + %.sroa.037.0.lcssa.i.i.i.i.i = phi ptr [ %19, %16 ], [ %scevgep.i.i.i.i.i, %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit24.i.i.i.i.i" ] %.pre-phi.i.i.i.i.i = ptrtoint ptr %.sroa.037.0.lcssa.i.i.i.i.i to i64 %44 = sub i64 %22, %.pre-phi.i.i.i.i.i switch i64 %44, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" [ i64 3, label %45 - i64 2, label %50 - i64 1, label %55 + i64 2, label %45 + i64 1, label %49 ] 45: ; preds = %._crit_edge.i.i.i.i.i %46 = load i8, ptr %.sroa.037.0.lcssa.i.i.i.i.i, align 1, !tbaa !14 - %.fr.i.i.i.i.i = freeze i8 %46 - %47 = icmp ult i8 %.fr.i.i.i.i.i, 32 - br i1 %47, label %switch.early.test49.i.i.i.i.i, label %48 - -switch.early.test49.i.i.i.i.i: ; preds = %45 - switch i8 %.fr.i.i.i.i.i, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" [ - i8 13, label %48 - i8 10, label %48 - i8 9, label %48 - ] - -48: ; preds = %switch.early.test49.i.i.i.i.i, %switch.early.test49.i.i.i.i.i, %switch.early.test49.i.i.i.i.i, %45 - %49 = getelementptr inbounds nuw i8, ptr %.sroa.037.0.lcssa.i.i.i.i.i, i64 1 - br label %50 - -50: ; preds = %48, %._crit_edge.i.i.i.i.i - %.sroa.037.1.i.i.i.i.i = phi ptr [ %49, %48 ], [ %.sroa.037.0.lcssa.i.i.i.i.i, %._crit_edge.i.i.i.i.i ] - %51 = load i8, ptr %.sroa.037.1.i.i.i.i.i, align 1, !tbaa !14 - %.fr52.i.i.i.i.i = freeze i8 %51 - %52 = icmp ult i8 %.fr52.i.i.i.i.i, 32 - br i1 %52, label %switch.early.test50.i.i.i.i.i, label %53 + %43 = icmp ult i8 %46, 32 + br i1 %43, label %switch.early.test.i.i26.i.i.i.i.i, label %53 -switch.early.test50.i.i.i.i.i: ; preds = %50 - switch i8 %.fr52.i.i.i.i.i, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" [ +48: ; preds = %45 + switch i8 %42, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" [ i8 13, label %53 - i8 10, label %53 - i8 9, label %53 + i8 10, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit27.i.i.i.i.i" + i8 9, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit27.i.i.i.i.i" ] -53: ; preds = %switch.early.test50.i.i.i.i.i, %switch.early.test50.i.i.i.i.i, %switch.early.test50.i.i.i.i.i, %50 - %54 = getelementptr inbounds nuw i8, ptr %.sroa.037.1.i.i.i.i.i, i64 1 +53: ; preds = %switch.early.test.i.i26.i.i.i.i.i, %switch.early.test.i.i26.i.i.i.i.i, %switch.early.test.i.i26.i.i.i.i.i, %45 + %54 = getelementptr inbounds nuw i8, ptr %.sroa.037.0.lcssa.i.i.i.i.i, i64 1 br label %55 55: ; preds = %53, %._crit_edge.i.i.i.i.i - %.sroa.037.2.i.i.i.i.i = phi ptr [ %54, %53 ], [ %.sroa.037.0.lcssa.i.i.i.i.i, %._crit_edge.i.i.i.i.i ] + %.sroa.037.2.i.i.i.i.i = phi ptr [ %54, %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit27.i.i.i.i.i" ], [ %.sroa.037.0.lcssa.i.i.i.i.i, %._crit_edge.i.i.i.i.i ] %56 = load i8, ptr %.sroa.037.2.i.i.i.i.i, align 1, !tbaa !14 - %.fr53.i.i.i.i.i = freeze i8 %56 - %57 = icmp ult i8 %.fr53.i.i.i.i.i, 32 - br i1 %57, label %switch.early.test51.i.i.i.i.i, label %58 + %47 = icmp ult i8 %56, 32 + br i1 %47, label %switch.early.test.i.i29.i.i.i.i.i, label %58 -switch.early.test51.i.i.i.i.i: ; preds = %55 - switch i8 %.fr53.i.i.i.i.i, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" [ - i8 13, label %58 +switch.early.test.i.i29.i.i.i.i.i: ; preds = %45 + switch i8 %56, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" [ + i8 13, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit30.i.i.i.i.i" i8 10, label %58 i8 9, label %58 ] -58: ; preds = %switch.early.test51.i.i.i.i.i, %switch.early.test51.i.i.i.i.i, %switch.early.test51.i.i.i.i.i, %55 - br label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" +58: ; preds = %switch.early.test.i.i29.i.i.i.i.i, %switch.early.test.i.i29.i.i.i.i.i, %switch.early.test.i.i29.i.i.i.i.i, %55 + %48 = getelementptr inbounds nuw i8, ptr %.sroa.036.1.i.i.i.i.i, i64 1 + br label %49 + +49: ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit30.i.i.i.i.i", %._crit_edge.i.i.i.i.i + %.sroa.036.2.i.i.i.i.i = phi ptr [ %48, %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit30.i.i.i.i.i" ], [ %.sroa.036.0.lcssa.i.i.i.i.i, %._crit_edge.i.i.i.i.i ] + %50 = load i8, ptr %.sroa.036.2.i.i.i.i.i, align 1, !tbaa !14 + %51 = icmp ult i8 %50, 32 + br i1 %51, label %switch.early.test.i.i32.i.i.i.i.i, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" + +switch.early.test.i.i32.i.i.i.i.i: ; preds = %49 + switch i8 %50, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit33.thread.i.i.i.i.i" [ + i8 13, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" + i8 10, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" + i8 9, label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" + ] -"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit": ; preds = %switch.early.test46.i.i.i.i.i - %59 = getelementptr inbounds nuw i8, ptr %.sroa.037.068.i.i.i.i.i, i64 1 +"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit": ; preds = %switch.early.test.i.i32.i.i.i.i.i br label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" -"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit26": ; preds = %switch.early.test47.i.i.i.i.i - %60 = getelementptr inbounds nuw i8, ptr %.sroa.037.068.i.i.i.i.i, i64 2 +"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit26": ; preds = %switch.early.test.i.i17.i.i.i.i.i + %60 = getelementptr inbounds nuw i8, ptr %.sroa.037.068.i.i.i.i.i, i64 1 br label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" -"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit28": ; preds = %switch.early.test48.i.i.i.i.i - %61 = getelementptr inbounds nuw i8, ptr %.sroa.037.068.i.i.i.i.i, i64 3 +"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit28": ; preds = %switch.early.test.i.i20.i.i.i.i.i + %61 = getelementptr inbounds nuw i8, ptr %.sroa.037.068.i.i.i.i.i, i64 2 br label %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" -"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit": ; preds = %switch.early.test.i.i.i.i.i, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit", %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit26", %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit28", %._crit_edge.i.i.i.i.i, %switch.early.test49.i.i.i.i.i, %switch.early.test50.i.i.i.i.i, %switch.early.test51.i.i.i.i.i, %58 - %.sroa.08.0.in.sroa.speculated.i.i.i.i.i = phi ptr [ %.sroa.037.1.i.i.i.i.i, %switch.early.test50.i.i.i.i.i ], [ %21, %._crit_edge.i.i.i.i.i ], [ %.sroa.037.0.lcssa.i.i.i.i.i, %switch.early.test49.i.i.i.i.i ], [ %21, %58 ], [ %.sroa.037.2.i.i.i.i.i, %switch.early.test51.i.i.i.i.i ], [ %61, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit28" ], [ %60, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit26" ], [ %59, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit" ], [ %.sroa.037.068.i.i.i.i.i, %switch.early.test.i.i.i.i.i ] - %62 = icmp ne ptr %21, %.sroa.08.0.in.sroa.speculated.i.i.i.i.i +"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit": ; preds = %switch.early.test.i.i23.i.i.i.i.i + %54 = getelementptr inbounds nuw i8, ptr %.sroa.036.055.i.i.i.i.i, i64 3 br label %63 -63: ; preds = %14, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit", %11 - %64 = phi i1 [ true, %11 ], [ false, %14 ], [ %62, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" ] - %65 = getelementptr inbounds nuw i8, ptr %13, i64 16 - %66 = load ptr, ptr %65, align 8, !tbaa !65 - %67 = getelementptr inbounds nuw i8, ptr %13, i64 32 - %68 = load ptr, ptr %67, align 8, !tbaa !69 - %.not.i = icmp eq ptr %66, %68 +63: ; preds = %switch.early.test.i.i.i.i.i.i.i, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit", %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit33", %63, %._crit_edge.i.i.i.i.i, %48, %switch.early.test.i.i29.i.i.i.i.i, %49, %switch.early.test.i.i32.i.i.i.i.i, %switch.early.test.i.i32.i.i.i.i.i, %switch.early.test.i.i32.i.i.i.i.i, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit" + %64 = phi ptr [ %.sroa.036.0.lcssa.i.i.i.i.i, %switch.early.test.i.i26.i.i.i.i.i ], [ %21, %49 ], [ %21, %switch.early.test.i.i32.i.i.i.i.i ], [ %21, %switch.early.test.i.i32.i.i.i.i.i ], [ %.sroa.036.2.i.i.i.i.i, %"_ZN9__gnu_cxx5__ops10_Iter_predIZZNK5ZXing7Content4typeEvENK3$_0clENS2_3ECIEiiEUlT_E_EclINS_17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEbS6_.exit33.thread.i.i.i.i.i" ], [ %21, %switch.early.test.i.i32.i.i.i.i.i ], [ %.sroa.036.1.i.i.i.i.i, %switch.early.test.i.i29.i.i.i.i.i ], [ %21, %._crit_edge.i.i.i.i.i ], [ %54, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit35" ], [ %61, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit33" ], [ %52, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit.loopexit.split.loop.exit" ], [ %.sroa.036.055.i.i.i.i.i, %switch.early.test.i.i.i.i.i.i.i ] + %55 = icmp ne ptr %21, %64 + br label %56 + +56:; preds = %14, %63, %11 + %57 = phi i1 [ true, %11 ], [ false, %14 ], [ %55, %"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEZZNK5ZXing7Content4typeEvENK3$_0clENS8_3ECIEiiEUlT_E_EbSC_SC_T0_.exit" ] + %58 = getelementptr inbounds nuw i8, ptr %13, i64 16 + %59 = load ptr, ptr %58, align 8, !tbaa !65 + %60 = getelementptr inbounds nuw i8, ptr %13, i64 32 + %61 = load ptr, ptr %60, align 8, !tbaa !69 + %.not.i = icmp eq ptr %59, %61 %.sroa.2.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %13, i64 24 %.sroa.2.0.copyload.i11.i = load i32, ptr %.sroa.2.0..sroa_idx.i.i, align 8 br i1 %.not.i, label %83, label %69 -69: ; preds = %63 +69: ; preds = %56 %70 = add i32 %.sroa.2.0.copyload.i11.i, 1 store i32 %70, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !tbaa !68 %71 = icmp eq i32 %.sroa.2.0.copyload.i11.i, 63 @@ -3926,30 +3919,30 @@ switch.early.test51.i.i.i.i.i: ; preds = %55 72: ; preds = %69 store i32 0, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !tbaa !68 - %73 = getelementptr inbounds nuw i8, ptr %66, i64 8 - store ptr %73, ptr %65, align 8, !tbaa !65 + %73 = getelementptr inbounds nuw i8, ptr %59, i64 8 + store ptr %73, ptr %58, align 8, !tbaa !65 br label %_ZNSt13_Bit_iteratorppEi.exit.i _ZNSt13_Bit_iteratorppEi.exit.i: ; preds = %72, %69 %74 = zext nneg i32 %.sroa.2.0.copyload.i11.i to i64 %75 = shl nuw i64 1, %74 - br i1 %64, label %76, label %79 + br i1 %57, label %76, label %79 76: ; preds = %_ZNSt13_Bit_iteratorppEi.exit.i - %77 = load i64, ptr %66, align 8, !tbaa !95 + %77 = load i64, ptr %59, align 8, !tbaa !95 %78 = or i64 %77, %75 - store i64 %78, ptr %66, align 8, !tbaa !95 + store i64 %78, ptr %59, align 8, !tbaa !95 br label %_ZNSt6vectorIbSaIbEE9push_backEb.exit 79: ; preds = %_ZNSt13_Bit_iteratorppEi.exit.i %80 = xor i64 %75, -1 - %81 = load i64, ptr %66, align 8, !tbaa !95 + %81 = load i64, ptr %59, align 8, !tbaa !95 %82 = and i64 %81, %80 - store i64 %82, ptr %66, align 8, !tbaa !95 + store i64 %82, ptr %59, align 8, !tbaa !95 br label %_ZNSt6vectorIbSaIbEE9push_backEb.exit -83: ; preds = %63 - tail call void @_ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr %66, i32 %.sroa.2.0.copyload.i11.i, i1 noundef zeroext %64) +83: ; preds = %56 + tail call void @_ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr %59, i32 %.sroa.2.0.copyload.i11.i, i1 noundef zeroext %57) br label %_ZNSt6vectorIbSaIbEE9push_backEb.exit _ZNSt6vectorIbSaIbEE9push_backEb.exit: ; preds = %76, %79, %83 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..a09d268fa35 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/174473 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""