diff --git a/bench/abc/optimized/saigRetMin.ll b/bench/abc/optimized/saigRetMin.ll index 3a3d3b81609..e46746d730d 100644 --- a/bench/abc/optimized/saigRetMin.ll +++ b/bench/abc/optimized/saigRetMin.ll @@ -1673,7 +1673,6 @@ define noalias noundef ptr @Saig_ManGetRegistersToExclude(ptr noundef readonly c br label %.critedge2 .critedge2: ; preds = %1, %.critedge2.loopexit, %.critedge.preheader - %.not = phi i1 [ true, %.critedge.preheader ], [ false, %.critedge2.loopexit ], [ true, %1 ] %.val657490 = phi i32 [ %.val67, %.critedge.preheader ], [ %.val67, %.critedge2.loopexit ], [ %.val6768, %1 ] %.0.lcssa = phi i1 [ true, %.critedge.preheader ], [ %42, %.critedge2.loopexit ], [ true, %1 ] %43 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #14 @@ -1683,8 +1682,7 @@ define noalias noundef ptr @Saig_ManGetRegistersToExclude(ptr noundef readonly c %45 = tail call noalias dereferenceable_or_null(800) ptr @malloc(i64 noundef 800) #14 %46 = getelementptr inbounds nuw i8, ptr %43, i64 8 store ptr %45, ptr %46, align 8, !tbaa !28 - %brmerge = or i1 %.0.lcssa, %.not - br i1 %brmerge, label %.critedge4, label %.lr.ph76 + br i1 %.0.lcssa, label %.critedge4, label %.lr.ph76 .lr.ph76: ; preds = %.critedge2 %47 = getelementptr inbounds nuw i8, ptr %0, i64 24 diff --git a/bench/abseil-cpp/optimized/cord.ll b/bench/abseil-cpp/optimized/cord.ll index 4e5e4d9d8fe..5d22cd2a16f 100644 --- a/bench/abseil-cpp/optimized/cord.ll +++ b/bench/abseil-cpp/optimized/cord.ll @@ -6401,13 +6401,12 @@ define dso_local range(i64 0, 8589934592) i64 @_ZNK4absl4Cord16ExpectedChecksumE %11 = getelementptr inbounds nuw i8, ptr %6, i64 24 %12 = tail call i32 @_ZNK4absl12crc_internal12CrcCordState8ChecksumEv(ptr noundef nonnull align 8 dereferenceable(8) %11) %13 = zext i32 %12 to i64 - br label %14 + %14 = or disjoint i64 %13, 4294967296 + br label %15 14: ; preds = %1, %4, %10 - %.sroa.03.0 = phi i64 [ %13, %10 ], [ 0, %4 ], [ 0, %1 ] - %.sroa.2.0 = phi i64 [ 4294967296, %10 ], [ 0, %4 ], [ 0, %1 ] - %.sroa.03.0.insert.insert = or disjoint i64 %.sroa.2.0, %.sroa.03.0 - ret i64 %.sroa.03.0.insert.insert + %.sroa.03.0 = phi i64 [ %14, %10 ], [ 0, %4 ], [ 0, %1 ] + ret i64 %.sroa.2.0 } declare i32 @_ZNK4absl12crc_internal12CrcCordState8ChecksumEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 diff --git a/bench/abseil-cpp/optimized/symbolize.ll b/bench/abseil-cpp/optimized/symbolize.ll index 8e04444e364..0be5a785e4d 100644 --- a/bench/abseil-cpp/optimized/symbolize.ll +++ b/bench/abseil-cpp/optimized/symbolize.ll @@ -594,7 +594,7 @@ _ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvm %50 = tail call ptr @__errno_location() #25 %51 = load i32, ptr %50, align 4, !tbaa !10 %52 = icmp eq i32 %51, 4 - br i1 %52, label %..lr.ph.split.us.i_crit_edge.i45, label %.thread39.i.i44, !llvm.loop !12 + br i1 %52, label %..lr.ph.split.us.i_crit_edge.i45, label %.thread, !llvm.loop !12 ..lr.ph.split.us.i_crit_edge.i45: ; preds = %49 br label %.lr.ph.split.us.i.i36, !llvm.loop !12 @@ -622,15 +622,11 @@ _ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvm %61 = icmp samesign ult i64 %59, 64 br i1 %61, label %.lr.ph.split.us.preheader.i.i29, label %.preheader -.thread39.i.i44: ; preds = %49 - tail call void (i32, ptr, i32, ptr, ...) @_ZN4absl16raw_log_internal6RawLogENS_11LogSeverityEPKciS3_z(i32 noundef 1, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str, i64 114), i32 noundef 532, ptr noundef nonnull @.str.5, i32 noundef %51) - br label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread - .preheader: ; preds = %.outer.i.i39 %62 = getelementptr inbounds nuw i8, ptr %7, i64 60 %63 = load i16, ptr %62, align 4, !tbaa !20 %.not28148.not = icmp eq i16 %63, 0 - br i1 %.not28148.not, label %.thread, label %.lr.ph153 + br i1 %.not28148.not, label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread, label %.lr.ph153 .lr.ph153: ; preds = %.preheader %64 = getelementptr inbounds nuw i8, ptr %8, i64 24 @@ -665,7 +661,7 @@ _ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvm 72: ; preds = %.lr.ph.i55 %73 = icmp eq i64 %70, 0 - br i1 %73, label %.thread, label %74 + br i1 %73, label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread, label %74 74: ; preds = %72 %75 = add nsw i64 %70, %.028.ph72.i.i50 @@ -675,7 +671,7 @@ _ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvm %77 = tail call ptr @__errno_location() #25 %78 = load i32, ptr %77, align 4, !tbaa !10 %79 = icmp eq i32 %78, 4 - br i1 %79, label %..lr.ph.split.us.i_crit_edge.i65, label %.thread.sink.split, !llvm.loop !12 + br i1 %79, label %..lr.ph.split.us.i_crit_edge.i65, label %.thread, !llvm.loop !12 ..lr.ph.split.us.i_crit_edge.i65: ; preds = %76 br label %.lr.ph.split.us.i.i56, !llvm.loop !12 @@ -740,7 +736,7 @@ _ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvm %100 = tail call ptr @__errno_location() #25 %101 = load i32, ptr %100, align 4, !tbaa !10 %102 = icmp eq i32 %101, 4 - br i1 %102, label %.lr.ph.split.us.i, label %.thread.sink.split, !llvm.loop !12 + br i1 %102, label %.lr.ph.split.us.i, label %.thread, !llvm.loop !12 .lr.ph.split.us.i: ; preds = %99, %97 %.sroa.37.19 = phi i64 [ 0, %99 ], [ %98, %97 ] @@ -770,7 +766,7 @@ _ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exi %.sroa.21.20 = phi i64 [ 0, %95 ], [ %.sroa.21.18.lcssa, %.outer.i ] %.2.i = phi i64 [ %.030.ph70.i, %95 ], [ %109, %.outer.i ] %112 = icmp slt i64 %.2.i, 0 - br i1 %112, label %.thread, label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.thread118 + br i1 %112, label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread, label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.thread118 _ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.thread118: ; preds = %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit68, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit %.2.i124 = phi i64 [ %.2.i, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit ], [ 0, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit68 ] @@ -782,26 +778,20 @@ _ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exi 113: ; preds = %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.thread118 %bcmp = call i32 @bcmp(ptr nonnull %5, ptr %1, i64 %2) %114 = icmp eq i32 %bcmp, 0 - br i1 %114, label %.thread, label %115 + br i1 %114, label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread, label %115 115: ; preds = %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.thread118, %113 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %.thread, label %66, !llvm.loop !28 - -.thread.sink.split: ; preds = %76, %99 - %.lcssa.sink = phi i32 [ %101, %99 ], [ %78, %76 ] - tail call void (i32, ptr, i32, ptr, ...) @_ZN4absl16raw_log_internal6RawLogENS_11LogSeverityEPKciS3_z(i32 noundef 1, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str, i64 114), i32 noundef 532, ptr noundef nonnull @.str.5, i32 noundef %.lcssa.sink) - br label %.thread + br i1 %exitcond.not, label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread, label %66, !llvm.loop !28 -.thread: ; preds = %115, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit, %113, %72, %.thread.sink.split, %.preheader - %.not28142 = phi i1 [ false, %.preheader ], [ true, %.thread.sink.split ], [ true, %72 ], [ false, %115 ], [ true, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit ], [ true, %113 ] - %.4 = phi i1 [ undef, %.preheader ], [ false, %.thread.sink.split ], [ false, %72 ], [ undef, %115 ], [ false, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit ], [ true, %113 ] - %spec.select = and i1 %.not28142, %.4 +_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread.sink.split:; preds = %49, %76, %99 + %.not28142 = phi i32 [ %101, %99 ], [ %78, %76 ], [ %51, %49 ] + tail call void (i32, ptr, i32, ptr, ...) @_ZN4absl16raw_log_internal6RawLogENS_11LogSeverityEPKciS3_z(i32 noundef 1, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str, i64 114), i32 noundef 532, ptr noundef nonnull @.str.5, i32 noundef %.not28142) br label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread -_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread: ; preds = %45, %.thread39.i.i44, %.thread - %.2 = phi i1 [ %spec.select, %.thread ], [ false, %.thread39.i.i44 ], [ false, %45 ] +_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread: ; preds = %45, %113, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit, %115, %72, %.thread, %.preheader + %.2 = phi i1 [ false, %.preheader ], [ false, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit48.thread.sink.split ], [ false, %72 ], [ false, %115 ], [ false, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit ], [ true, %113 ], [ false, %45 ] call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile19ReadFromOffsetExactEPvml.exit.thread @@ -3538,10 +3528,8 @@ _ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exi br i1 %.not56, label %13, label %.thread .thread: ; preds = %61, %6, %50, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.thread, %.thread63 - %.not5682 = phi i1 [ true, %.thread63 ], [ true, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.thread ], [ true, %50 ], [ false, %6 ], [ false, %61 ] - %.1 = phi i1 [ true, %.thread63 ], [ false, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.thread ], [ false, %50 ], [ undef, %6 ], [ undef, %61 ] - %spec.select57 = and i1 %.not5682, %.1 - ret i1 %spec.select57 + %.not5682 = phi i1 [ true, %.thread63 ], [ false, %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.thread ], [ false, %50 ], [ false, %6 ], [ false, %61 ] + ret i1 %.not5682 } ; Function Attrs: mustprogress noinline uwtable diff --git a/bench/arrow/optimized/api_vector.ll b/bench/arrow/optimized/api_vector.ll index 6bcc5ac46b1..604299177b5 100644 --- a/bench/arrow/optimized/api_vector.ll +++ b/bench/arrow/optimized/api_vector.ll @@ -41267,54 +41267,57 @@ define linkonce_odr noundef zeroext i1 @_ZZN5arrow7compute8internal22GetFunction %7 = getelementptr inbounds i8, ptr %2, i64 %5 %.val.i.i.i.i.i = load i64, ptr %6, align 8, !tbaa !128 %.val3.i.i.i.i.i = load i64, ptr %7, align 8, !tbaa !128 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %9 = load i64, ptr %8, align 8, !tbaa !1262 - %10 = getelementptr inbounds i8, ptr %1, i64 %9 - %11 = getelementptr inbounds i8, ptr %2, i64 %9 - %12 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %13 = load ptr, ptr %12, align 8, !tbaa !62 - %14 = load ptr, ptr %10, align 8, !tbaa !59 - %15 = ptrtoint ptr %13 to i64 + %8 = icmp eq i64 %.val.i.i.i.i.i, %.val3.i.i.i.i.i + %9 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %10 = load i64, ptr %9, align 8, !tbaa !1262 + %11 = getelementptr inbounds i8, ptr %1, i64 %10 + %12 = getelementptr inbounds i8, ptr %2, i64 %10 + %13 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %14 = load ptr, ptr %13, align 8, !tbaa !62 + %15 = load ptr, ptr %11, align 8, !tbaa !59 %16 = ptrtoint ptr %14 to i64 - %17 = sub i64 %15, %16 - %18 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %19 = load ptr, ptr %18, align 8, !tbaa !62 - %20 = load ptr, ptr %11, align 8, !tbaa !59 - %21 = ptrtoint ptr %19 to i64 + %17 = ptrtoint ptr %15 to i64 + %18 = sub i64 %16, %17 + %19 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %20 = load ptr, ptr %19, align 8, !tbaa !62 + %21 = load ptr, ptr %12, align 8, !tbaa !59 %22 = ptrtoint ptr %20 to i64 - %23 = sub i64 %21, %22 - %.not.i.i.i.i.i.i = icmp eq i64 %17, %23 + %23 = ptrtoint ptr %21 to i64 + %24 = sub i64 %22, %23 + %.not.i.i.i.i.i.i = icmp eq i64 %18, %24 br i1 %.not.i.i.i.i.i.i, label %.preheader.i.i.i.i.i.i, label %_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEC2INS_8internal13PropertyTupleIJNS6_18DataMemberPropertyIS3_lEENS8_IS3_St6vectorINS0_7SortKeyESaISB_EEEEEEEEERKS3_SH_RKT_.exit .preheader.i.i.i.i.i.i: ; preds = %3 - %24 = icmp eq ptr %13, %14 + %24 = icmp eq ptr %14, %15 br i1 %24, label %_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEC2INS_8internal13PropertyTupleIJNS6_18DataMemberPropertyIS3_lEENS8_IS3_St6vectorINS0_7SortKeyESaISB_EEEEEEEEERKS3_SH_RKT_.exit, label %.lr.ph.i.i.i.i.i.i 25: ; preds = %.lr.ph.i.i.i.i.i.i %26 = add nuw i64 %.01012.i.i.i.i.i.i, 1 - %27 = load ptr, ptr %12, align 8, !tbaa !62 - %28 = load ptr, ptr %10, align 8, !tbaa !59 - %29 = ptrtoint ptr %27 to i64 + %27 = load ptr, ptr %13, align 8, !tbaa !62 + %28 = load ptr, ptr %11, align 8, !tbaa !59 %30 = ptrtoint ptr %28 to i64 - %31 = sub i64 %29, %30 - %32 = sdiv exact i64 %31, 48 - %.not15.i.i.i.i.i.i = icmp ult i64 %26, %32 - br i1 %.not15.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i, label %_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEC2INS_8internal13PropertyTupleIJNS6_18DataMemberPropertyIS3_lEENS8_IS3_St6vectorINS0_7SortKeyESaISB_EEEEEEEEERKS3_SH_RKT_.exit, !llvm.loop !817 - -.lr.ph.i.i.i.i.i.i: ; preds = %.preheader.i.i.i.i.i.i, %25 - %33 = phi ptr [ %28, %25 ], [ %14, %.preheader.i.i.i.i.i.i ] - %.01012.i.i.i.i.i.i = phi i64 [ %26, %25 ], [ 0, %.preheader.i.i.i.i.i.i ] - %34 = getelementptr inbounds nuw %"class.arrow::compute::SortKey", ptr %33, i64 %.01012.i.i.i.i.i.i - %35 = load ptr, ptr %11, align 8, !tbaa !59 - %36 = getelementptr inbounds nuw %"class.arrow::compute::SortKey", ptr %35, i64 %.01012.i.i.i.i.i.i - %37 = tail call noundef zeroext i1 @_ZNK5arrow7compute7SortKey6EqualsERKS1_(ptr noundef nonnull align 8 dereferenceable(44) %34, ptr noundef nonnull align 8 dereferenceable(44) %36) - br i1 %37, label %25, label %_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEC2INS_8internal13PropertyTupleIJNS6_18DataMemberPropertyIS3_lEENS8_IS3_St6vectorINS0_7SortKeyESaISB_EEEEEEEEERKS3_SH_RKT_.exit - -_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEC2INS_8internal13PropertyTupleIJNS6_18DataMemberPropertyIS3_lEENS8_IS3_St6vectorINS0_7SortKeyESaISB_EEEEEEEEERKS3_SH_RKT_.exit: ; preds = %25, %.lr.ph.i.i.i.i.i.i, %3, %.preheader.i.i.i.i.i.i - %.011.i.i.i.i.i.i = phi i1 [ false, %3 ], [ true, %.preheader.i.i.i.i.i.i ], [ %37, %.lr.ph.i.i.i.i.i.i ], [ %37, %25 ] - %38 = icmp eq i64 %.val.i.i.i.i.i, %.val3.i.i.i.i.i - %39 = and i1 %38, %.011.i.i.i.i.i.i - ret i1 %39 + %31 = ptrtoint ptr %29 to i64 + %32 = sub i64 %30, %31 + %33 = sdiv exact i64 %32, 48 + %.not15.i.i.i.i.i.i = icmp ult i64 %27, %33 + br i1 %.not15.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i, label %_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEclINS_8internal18DataMemberPropertyIS3_St6vectorINS0_7SortKeyESaIS9_EEEEEEvRKT_m.exit.loopexit.i.i.i.i, !llvm.loop !817 + +.lr.ph.i.i.i.i.i.i:; preds = %.preheader.i.i.i.i.i.i, %26 + %.01012.i.i.i.i.i.i = phi ptr [ %29, %26 ], [ %15, %.preheader.i.i.i.i.i.i ] + %.01012.i.i.i.i.i.i = phi i64 [ %27, %26 ], [ 0, %.preheader.i.i.i.i.i.i ] + %35 = getelementptr inbounds nuw %"class.arrow::compute::SortKey", ptr %34, i64 %.01012.i.i.i.i.i.i + %36 = load ptr, ptr %12, align 8, !tbaa !59 + %37 = getelementptr inbounds nuw %"class.arrow::compute::SortKey", ptr %36, i64 %.01012.i.i.i.i.i.i + %38 = tail call noundef zeroext i1 @_ZNK5arrow7compute7SortKey6EqualsERKS1_(ptr noundef nonnull align 8 dereferenceable(44) %35, ptr noundef nonnull align 8 dereferenceable(44) %37) + br i1 %38, label %26, label %_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEclINS_8internal18DataMemberPropertyIS3_St6vectorINS0_7SortKeyESaIS9_EEEEEEvRKT_m.exit.loopexit.i.i.i.i + +_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEclINS_8internal18DataMemberPropertyIS3_St6vectorINS0_7SortKeyESaIS9_EEEEEEvRKT_m.exit.loopexit.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %25 + %39 = and i1 %8, %38 + br label %_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEC2INS_8internal13PropertyTupleIJNS6_18DataMemberPropertyIS3_lEENS8_IS3_St6vectorINS0_7SortKeyESaISB_EEEEEEEEERKS3_SH_RKT_.exit + +_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEC2INS_8internal13PropertyTupleIJNS6_18DataMemberPropertyIS3_lEENS8_IS3_St6vectorINS0_7SortKeyESaISB_EEEEEEEEERKS3_SH_RKT_.exit: ; preds = %3, %.preheader.i.i.i.i.i.i, %_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEclINS_8internal18DataMemberPropertyIS3_St6vectorINS0_7SortKeyESaIS9_EEEEEEvRKT_m.exit.loopexit.i.i.i.i + %.011.i.i.i.i.i.i = phi i1 [ false, %3 ], [ %8, %.preheader.i.i.i.i.i.i ], [ %39, %_ZN5arrow7compute8internal11CompareImplINS0_14SelectKOptionsEEclINS_8internal18DataMemberPropertyIS3_St6vectorINS0_7SortKeyESaIS9_EEEEEEvRKT_m.exit.loopexit.i.i.i.i ] + ret i1 %.011.i.i.i.i.i.i } ; Function Attrs: mustprogress uwtable diff --git a/bench/arrow/optimized/io_util.ll b/bench/arrow/optimized/io_util.ll index 2be5d0c9824..4135e78708f 100644 --- a/bench/arrow/optimized/io_util.ll +++ b/bench/arrow/optimized/io_util.ll @@ -696,13 +696,12 @@ define range(i64 0, 8589934592) i64 @_ZN5arrow8internal21ErrnoFromStatusDetailER %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val = load i32, ptr %8, align 8, !tbaa !24 %9 = zext i32 %.val to i64 - br label %10 + %10 = or disjoint i64 %9, 4294967296 + br label %11 10: ; preds = %1, %7 - %.sroa.0.0 = phi i64 [ %9, %7 ], [ 0, %1 ] - %.sroa.2.0 = phi i64 [ 4294967296, %7 ], [ 0, %1 ] - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.2.0, %.sroa.0.0 - ret i64 %.sroa.0.0.insert.insert + %.sroa.0.0 = phi i64 [ %10, %7 ], [ 0, %1 ] + ret i64 %.sroa.2.0 } ; Function Attrs: mustprogress uwtable diff --git a/bench/assimp/optimized/glTF2Exporter.ll b/bench/assimp/optimized/glTF2Exporter.ll index b8ba7501aff..dd30c2d0500 100644 --- a/bench/assimp/optimized/glTF2Exporter.ll +++ b/bench/assimp/optimized/glTF2Exporter.ll @@ -47228,25 +47228,21 @@ _ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit: ; preds = %90, %.critedge2.i, store i32 %112, ptr %5, align 4 %113 = load i32, ptr %4, align 4 %114 = icmp sgt i32 %.175, -19 - br i1 %114, label %115, label %120 + br i1 %114, label %115, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95 115: ; preds = %110 %116 = sub nsw i32 1, %.175 %117 = zext nneg i32 %116 to i64 %118 = getelementptr inbounds nuw i64, ptr @_ZZN9rapidjson8internal8DigitGenERKNS0_5DiyFpES3_mPcPiS5_E6kPow10, i64 %117 %119 = load i64, ptr %118, align 8 - br label %120 - -120: ; preds = %110, %115 - %121 = phi i64 [ %119, %115 ], [ 0, %110 ] - %122 = mul i64 %121, %14 - %123 = icmp uge i64 %108, %122 - %124 = sub i64 %99, %108 - %.not21.i88 = icmp ult i64 %124, %11 - %or.cond22.i89 = or i1 %.not21.i88, %123 + %120 = mul i64 %119, %14 + %121 = icmp uge i64 %108, %120 + %122 = sub i64 %99, %108 + %.not21.i88 = icmp ult i64 %122, %11 + %or.cond22.i89 = or i1 %.not21.i88, %121 br i1 %or.cond22.i89, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95, label %.lr.ph.i90 -.lr.ph.i90: ; preds = %120 +.lr.ph.i90: ; preds = %115 %125 = sext i32 %113 to i64 %126 = getelementptr i8, ptr %3, i64 %125 %127 = getelementptr i8, ptr %126, i64 -1 @@ -47255,12 +47251,12 @@ _ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit: ; preds = %90, %.critedge2.i, 128: ; preds = %.critedge2.i92, %.lr.ph.i90 %.023.i91 = phi i64 [ %108, %.lr.ph.i90 ], [ %129, %.critedge2.i92 ] %129 = add i64 %.023.i91, %11 - %130 = icmp ult i64 %129, %122 + %130 = icmp ult i64 %129, %120 br i1 %130, label %.critedge2.i92, label %131 131: ; preds = %128 - %132 = sub i64 %122, %.023.i91 - %133 = sub nuw i64 %129, %122 + %132 = sub i64 %120, %.023.i91 + %133 = sub nuw i64 %129, %120 %134 = icmp ugt i64 %132, %133 br i1 %134, label %.critedge2.i92, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95 @@ -47268,13 +47264,13 @@ _ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit: ; preds = %90, %.critedge2.i, %135 = load i8, ptr %127, align 1 %136 = add i8 %135, -1 store i8 %136, ptr %127, align 1 - %137 = icmp uge i64 %129, %122 + %137 = icmp uge i64 %129, %120 %138 = sub i64 %99, %129 %.not.i93 = icmp ult i64 %138, %11 %or.cond.i94 = or i1 %137, %.not.i93 br i1 %or.cond.i94, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95, label %128, !llvm.loop !494 -_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95: ; preds = %131, %.critedge2.i92, %120 +_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95: ; preds = %131, %.critedge2.i92, %110, %115 br label %139, !llvm.loop !496 139: ; preds = %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95, %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit diff --git a/bench/assimp/optimized/glTFExporter.ll b/bench/assimp/optimized/glTFExporter.ll index f12879fb5fd..a67ad8238a7 100644 --- a/bench/assimp/optimized/glTFExporter.ll +++ b/bench/assimp/optimized/glTFExporter.ll @@ -18607,7 +18607,7 @@ _ZN9rapidjson8internal19CountDecimalDigit32Ej.exit: ; preds = %6, %20, %22, %24, br i1 %or.cond.i, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit, label %87, !llvm.loop !190 _ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit: ; preds = %90, %.critedge2.i, %74 - br label %139, !llvm.loop !191 + br label %137, !llvm.loop !191 .critedge87: ; preds = %.critedge, %107 %.175 = phi i32 [ %109, %107 ], [ 0, %.critedge ] @@ -18644,56 +18644,52 @@ _ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit: ; preds = %90, %.critedge2.i, store i32 %112, ptr %5, align 4 %113 = load i32, ptr %4, align 4 %114 = icmp sgt i32 %.175, -19 - br i1 %114, label %115, label %120 + br i1 %114, label %115, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95 115: ; preds = %110 %116 = sub nsw i32 1, %.175 %117 = zext nneg i32 %116 to i64 %118 = getelementptr inbounds nuw i64, ptr @_ZZN9rapidjson8internal8DigitGenERKNS0_5DiyFpES3_mPcPiS5_E6kPow10, i64 %117 %119 = load i64, ptr %118, align 8 - br label %120 - -120: ; preds = %110, %115 - %121 = phi i64 [ %119, %115 ], [ 0, %110 ] - %122 = mul i64 %121, %14 - %123 = icmp uge i64 %108, %122 - %124 = sub i64 %99, %108 - %.not21.i88 = icmp ult i64 %124, %11 - %or.cond22.i89 = or i1 %.not21.i88, %123 + %120 = mul i64 %119, %14 + %121 = icmp uge i64 %108, %120 + %122 = sub i64 %99, %108 + %.not21.i88 = icmp ult i64 %122, %11 + %or.cond22.i89 = or i1 %.not21.i88, %121 br i1 %or.cond22.i89, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95, label %.lr.ph.i90 -.lr.ph.i90: ; preds = %120 +.lr.ph.i90: ; preds = %115 %125 = sext i32 %113 to i64 %126 = getelementptr i8, ptr %3, i64 %125 %127 = getelementptr i8, ptr %126, i64 -1 - br label %128 - -128: ; preds = %.critedge2.i92, %.lr.ph.i90 - %.023.i91 = phi i64 [ %108, %.lr.ph.i90 ], [ %129, %.critedge2.i92 ] - %129 = add i64 %.023.i91, %11 - %130 = icmp ult i64 %129, %122 - br i1 %130, label %.critedge2.i92, label %131 + br label %126 -131: ; preds = %128 - %132 = sub i64 %122, %.023.i91 - %133 = sub nuw i64 %129, %122 - %134 = icmp ugt i64 %132, %133 - br i1 %134, label %.critedge2.i92, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95 - -.critedge2.i92: ; preds = %131, %128 - %135 = load i8, ptr %127, align 1 - %136 = add i8 %135, -1 - store i8 %136, ptr %127, align 1 - %137 = icmp uge i64 %129, %122 - %138 = sub i64 %99, %129 - %.not.i93 = icmp ult i64 %138, %11 - %or.cond.i94 = or i1 %137, %.not.i93 - br i1 %or.cond.i94, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95, label %128, !llvm.loop !190 - -_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95: ; preds = %131, %.critedge2.i92, %120 - br label %139, !llvm.loop !192 - -139: ; preds = %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95, %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit +131: ; preds = %.critedge2.i92, %.lr.ph.i90 + %.023.i91 = phi i64 [ %108, %.lr.ph.i90 ], [ %127, %.critedge2.i92 ] + %127 = add i64 %.023.i91, %11 + %134 = icmp ult i64 %127, %120 + br i1 %134, label %.critedge2.i92, label %129 + +.critedge2.i92: ; preds = %131 + %130 = sub i64 %120, %.023.i91 + %131 = sub nuw i64 %127, %120 + %132 = icmp ugt i64 %130, %131 + br i1 %132, label %.critedge2.i92, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95 + +.critedge2.i92:; preds = %129, %131 + %133 = load i8, ptr %125, align 1 + %134 = add i8 %133, -1 + store i8 %134, ptr %125, align 1 + %135 = icmp uge i64 %127, %120 + %136 = sub i64 %99, %127 + %.not.i93 = icmp ult i64 %136, %11 + %or.cond.i94 = or i1 %135, %.not.i93 + br i1 %or.cond.i94, label %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95, label %126, !llvm.loop !190 + +_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95: ; preds = %129, %.critedge2.i92, %110, %115 + br label %137, !llvm.loop !192 + +137: ; preds = %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit95, %_ZN9rapidjson8internal10GrisuRoundEPcimmmm.exit ret void } diff --git a/bench/bdwgc/optimized/gc.ll b/bench/bdwgc/optimized/gc.ll index 2a2221cef09..ebf663a6e00 100644 --- a/bench/bdwgc/optimized/gc.ll +++ b/bench/bdwgc/optimized/gc.ll @@ -31701,7 +31701,8 @@ GC_check_heap_proc.exit: ; preds = %418, %284, %281 .thread97: ; preds = %446, %453 %456 = load i32, ptr @GC_print_stats, align 4, !tbaa !3 %457 = icmp ne i32 %456, 0 - br label %460 + %458 = and i1 %.not648694, %457 + br label %461 458: ; preds = %432 %459 = load i32, ptr @GC_print_stats, align 4, !tbaa !3 @@ -31709,7 +31710,7 @@ GC_check_heap_proc.exit: ; preds = %418, %284, %281 br i1 %.not99, label %473, label %460 460: ; preds = %.thread97, %458 - %461 = phi i1 [ %457, %.thread97 ], [ true, %458 ] + %461 = phi i1 [ %458, %.thread97 ], [ %.not648694, %459 ] %462 = load i32, ptr @world_stopped_total_time, align 4, !tbaa !3 %463 = load i32, ptr @world_stopped_total_divisor, align 4, !tbaa !3 %464 = icmp slt i32 %462, 0 @@ -31724,7 +31725,6 @@ GC_check_heap_proc.exit: ; preds = %418, %284, %281 store i32 %469, ptr @world_stopped_total_time, align 4, !tbaa !3 %470 = add i32 %.040, 1 store i32 %470, ptr @world_stopped_total_divisor, align 4, !tbaa !3 - %or.cond12 = and i1 %.not648694, %461 br i1 %or.cond12, label %471, label %473 471: ; preds = %460 @@ -42985,14 +42985,14 @@ tailrecurse: ; preds = %39, %4 define internal fastcc i64 @GC_descr_obj_size(ptr noundef readonly captures(none) %0) unnamed_addr #1 { br label %tailrecurse -tailrecurse: ; preds = %9, %1 - %accumulator.tr = phi i64 [ 1, %1 ], [ %14, %9 ] - %.tr = phi ptr [ %0, %1 ], [ %13, %9 ] +tailrecurse: ; preds = %10, %1 + %accumulator.tr = phi i64 [ 1, %1 ], [ %15, %10 ] + %.tr = phi ptr [ %0, %1 ], [ %14, %10 ] %2 = load i64, ptr %.tr, align 8, !tbaa !41 - switch i64 %2, label %23 [ + switch i64 %2, label %24 [ i64 1, label %3 - i64 2, label %9 - i64 3, label %15 + i64 2, label %10 + i64 3, label %16 ] 3: ; preds = %tailrecurse @@ -43001,39 +43001,40 @@ tailrecurse: ; preds = %9, %1 %6 = getelementptr inbounds nuw i8, ptr %.tr, i64 8 %7 = load i64, ptr %6, align 8, !tbaa !41 %8 = mul i64 %7, %5 - br label %common.ret + %9 = mul i64 %8, %accumulator.tr + br label %common.ret33 -9: ; preds = %tailrecurse - %10 = getelementptr inbounds nuw i8, ptr %.tr, i64 8 - %11 = load i64, ptr %10, align 8, !tbaa !41 - %12 = getelementptr inbounds nuw i8, ptr %.tr, i64 16 - %13 = load ptr, ptr %12, align 8, !tbaa !41 - %14 = mul i64 %11, %accumulator.tr +10: ; preds = %tailrecurse + %11 = getelementptr inbounds nuw i8, ptr %.tr, i64 8 + %12 = load i64, ptr %11, align 8, !tbaa !41 + %13 = getelementptr inbounds nuw i8, ptr %.tr, i64 16 + %14 = load ptr, ptr %13, align 8, !tbaa !41 + %15 = mul i64 %12, %accumulator.tr br label %tailrecurse -common.ret: ; preds = %3, %23, %15 - %.pn = phi i64 [ %22, %15 ], [ %8, %3 ], [ 0, %23 ] - %common.ret.op = mul i64 %.pn, %accumulator.tr - ret i64 %common.ret.op - -15: ; preds = %tailrecurse - %16 = getelementptr inbounds nuw i8, ptr %.tr, i64 8 - %17 = load ptr, ptr %16, align 8, !tbaa !41 - %18 = tail call fastcc i64 @GC_descr_obj_size(ptr noundef %17) - %19 = getelementptr inbounds nuw i8, ptr %.tr, i64 16 - %20 = load ptr, ptr %19, align 8, !tbaa !41 - %21 = tail call fastcc i64 @GC_descr_obj_size(ptr noundef %20) - %22 = add i64 %21, %18 +common.ret: ; preds = %24, %3, %16 + %.pn = phi i64 [ %accumulator.ret.tr, %16 ], [ %9, %3 ], [ 0, %24 ] + ret i64 %.pn + +16: ; preds = %tailrecurse + %17 = getelementptr inbounds nuw i8, ptr %.tr, i64 8 + %18 = load ptr, ptr %17, align 8, !tbaa !41 + %19 = tail call fastcc i64 @GC_descr_obj_size(ptr noundef %18) + %20 = getelementptr inbounds nuw i8, ptr %.tr, i64 16 + %21 = load ptr, ptr %20, align 8, !tbaa !41 + %22 = tail call fastcc i64 @GC_descr_obj_size(ptr noundef %21) + %23 = add i64 %22, %19 + %accumulator.ret.tr = mul i64 %23, %accumulator.tr br label %common.ret -23: ; preds = %tailrecurse - %24 = load ptr, ptr @GC_current_warn_proc, align 8, !tbaa !12 - %25 = icmp eq ptr %24, inttoptr (i64 -1 to ptr) - br i1 %25, label %common.ret, label %26 +26: ; preds = %tailrecurse + %27 = load ptr, ptr @GC_current_warn_proc, align 8, !tbaa !12 + %26 = icmp eq ptr %25, inttoptr (i64 -1 to ptr) + br i1 %26, label %common.ret33, label %27 -26: ; preds = %23 - %27 = load ptr, ptr @GC_on_abort, align 8, !tbaa !12 - tail call void %27(ptr noundef nonnull @.str.227) #46 +27: ; preds = %24 + %28 = load ptr, ptr @GC_on_abort, align 8, !tbaa !12 + tail call void %28(ptr noundef nonnull @.str.227) #46 tail call void @abort() #50 unreachable } diff --git a/bench/boost/optimized/to_chars.ll b/bench/boost/optimized/to_chars.ll index 7efc88bf44f..215ea485c9e 100644 --- a/bench/boost/optimized/to_chars.ll +++ b/bench/boost/optimized/to_chars.ll @@ -6430,15 +6430,18 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE8generateImEET_S5_Pmm.exi %.not13.i1393 = icmp samesign ult i32 %.0811.i1389, 2 br i1 %.not13.i1393, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394, label %.lr.ph.i1387, !llvm.loop !46 -_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394: ; preds = %.lr.ph.i1387, %1245 - %.0.lcssa.i1386 = phi i64 [ 1, %1245 ], [ %spec.select.i1392, %.lr.ph.i1387 ] - %1255 = mul i64 %.0.lcssa.i1386, %1248 +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394: ; preds = %.lr.ph.i1387 + %1255 = mul i64 %spec.select.i1392, %1248 + br label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394 + +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394: ; preds = %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394.loopexit, %1245 + %.0.lcssa.i1386 = phi i64 [ %1248, %1245 ], [ %1255, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394.loopexit ] %1256 = and i32 %518, 1 %.not1087 = icmp eq i32 %1256, 0 br i1 %.not1087, label %1264, label %1257 1257: ; preds = %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394 - %1258 = and i64 %1255, 4294967295 + %1258 = and i64 %.0.lcssa.i1386, 4294967295 %1259 = mul nuw nsw i64 %1258, 10 %1260 = lshr i64 %1259, 32 %1261 = trunc nuw nsw i64 %1260 to i8 @@ -6448,7 +6451,7 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394: ; preds = %.lr.p br label %1264 1264: ; preds = %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394, %1257 - %.0993 = phi i64 [ %1259, %1257 ], [ %1255, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394 ] + %.0993 = phi i64 [ %1259, %1257 ], [ %.0.lcssa.i1386, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394 ] %.45 = phi ptr [ %1263, %1257 ], [ %.32045, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394 ] %1265 = icmp samesign ugt i32 %1234, 1 br i1 %1265, label %.lr.ph2501.preheader, label %.thread2128 @@ -6506,12 +6509,15 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394: ; preds = %.lr.p %1285 = mul i64 %.0910.i1399, %.0910.i1399 %1286 = lshr i32 %.0811.i1398, 1 %.not13.i1402 = icmp samesign ult i32 %.0811.i1398, 2 - br i1 %.not13.i1402, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403, label %.lr.ph.i1396, !llvm.loop !46 + br i1 %.not13.i1402, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403.loopexit, label %.lr.ph.i1396, !llvm.loop !46 + +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403.loopexit: ; preds = %.lr.ph.i1396 + %1287 = mul i64 %spec.select.i1401, %1279 + br label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403 -_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403: ; preds = %.lr.ph.i1396, %1281 - %.0.lcssa.i1395 = phi i64 [ 1, %1281 ], [ %spec.select.i1401, %.lr.ph.i1396 ] - %1287 = mul i64 %.0.lcssa.i1395, %1279 - %1288 = and i64 %1287, 4294967295 +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403: ; preds = %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403.loopexit, %1281 + %.0.lcssa.i1395 = phi i64 [ %1279, %1281 ], [ %1287, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403.loopexit ] + %1288 = and i64 %.0.lcssa.i1395, 4294967295 %1289 = mul nuw nsw i64 %1288, 10 br label %1290 @@ -6593,16 +6599,19 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %1328 = mul i64 %.0910.i1410, %.0910.i1410 %1329 = lshr i32 %.0811.i1409, 1 %.not13.i1413 = icmp samesign ult i32 %.0811.i1409, 2 - br i1 %.not13.i1413, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414, label %.lr.ph.i1407, !llvm.loop !46 + br i1 %.not13.i1413, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414.loopexit, label %.lr.ph.i1407, !llvm.loop !46 + +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414.loopexit: ; preds = %.lr.ph.i1407 + %1330 = mul i64 %spec.select.i1412, %1323 + br label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 -_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414: ; preds = %.lr.ph.i1407, %1320 - %.0.lcssa.i1406 = phi i64 [ 1, %1320 ], [ %spec.select.i1412, %.lr.ph.i1407 ] - %1330 = mul i64 %.0.lcssa.i1406, %1323 +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414: ; preds = %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414.loopexit, %1320 + %.0.lcssa.i1406 = phi i64 [ %1323, %1320 ], [ %1330, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414.loopexit ] %1331 = icmp eq i32 %.09172043, 0 br i1 %1331, label %1376, label %1332 1332: ; preds = %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 - %1333 = and i64 %1330, 4294967295 + %1333 = and i64 %.0.lcssa.i1406, 4294967295 %1334 = mul nuw nsw i64 %1333, 100 br label %1335 @@ -6698,7 +6707,7 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %1377 = phi i32 [ %.pre2631, %1358 ], [ %517, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 ] %1378 = phi i32 [ %.pre2630, %1358 ], [ %522, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 ] %1379 = phi i64 [ %.pre2629, %1358 ], [ %.fr2381, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 ] - %.6999 = phi i64 [ %.3996, %1358 ], [ %1330, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 ] + %.6999 = phi i64 [ %.3996, %1358 ], [ %.0.lcssa.i1406, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 ] %.4992 = phi i32 [ %.2990, %1358 ], [ %1234, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 ] %.20937 = phi i32 [ %.18935, %1358 ], [ 0, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 ] %.24896 = phi i32 [ %.22894, %1358 ], [ %.08722044.fr, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414 ] @@ -6926,10 +6935,13 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %.not13.i1442 = icmp samesign ult i32 %.0811.i1438, 2 br i1 %.not13.i1442, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443, label %.lr.ph.i1436, !llvm.loop !46 -_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443: ; preds = %.lr.ph.i1436, %1491 - %.0.lcssa.i1435 = phi i64 [ 1, %1491 ], [ %spec.select.i1441, %.lr.ph.i1436 ] - %1497 = mul i64 %.0.lcssa.i1435, %1489 - %1498 = and i64 %1497, 4294967295 +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443: ; preds = %.lr.ph.i1436 + %1497 = mul i64 %spec.select.i1441, %1489 + br label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443 + +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443: ; preds = %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443.loopexit, %1491 + %.0.lcssa.i1435 = phi i64 [ %1489, %1491 ], [ %1497, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443.loopexit ] + %1498 = and i64 %.0.lcssa.i1435, 4294967295 %1499 = mul nuw nsw i64 %1498, 10 br label %1500 @@ -7024,16 +7036,19 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %1543 = mul i64 %.0910.i1451, %.0910.i1451 %1544 = lshr i32 %.0811.i1450, 1 %.not13.i1454 = icmp samesign ult i32 %.0811.i1450, 2 - br i1 %.not13.i1454, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455, label %.lr.ph.i1448, !llvm.loop !46 + br i1 %.not13.i1454, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455.loopexit, label %.lr.ph.i1448, !llvm.loop !46 + +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455.loopexit: ; preds = %.lr.ph.i1448 + %1545 = mul i64 %spec.select.i1453, %1539 + br label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 -_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455: ; preds = %.lr.ph.i1448, %1535 - %.0.lcssa.i1447 = phi i64 [ 1, %1535 ], [ %spec.select.i1453, %.lr.ph.i1448 ] - %1545 = mul i64 %.0.lcssa.i1447, %1539 +_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455: ; preds = %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455.loopexit, %1535 + %.0.lcssa.i1447 = phi i64 [ %1539, %1535 ], [ %1545, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455.loopexit ] %1546 = icmp eq i32 %.09172043, 0 br i1 %1546, label %1588, label %1547 1547: ; preds = %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 - %1548 = and i64 %1545, 4294967295 + %1548 = and i64 %.0.lcssa.i1447, 4294967295 %1549 = mul nuw nsw i64 %1548, 100 br label %1550 @@ -7126,7 +7141,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj9ENS1_24extended_cache_long_ %1590 = phi i32 [ %.pre2633, %1573 ], [ %522, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 ] %1591 = phi i64 [ %.pre2632, %1573 ], [ %.fr2381, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 ] %.51006 = phi i32 [ %.31004, %1573 ], [ %1398, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 ] - %.4981 = phi i64 [ %.1978, %1573 ], [ %1545, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 ] + %.4981 = phi i64 [ %.1978, %1573 ], [ %.0.lcssa.i1447, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 ] %.26943 = phi i32 [ %.24941, %1573 ], [ 0, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 ] %.30902 = phi i32 [ %.28900, %1573 ], [ %.08722044.fr, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 ] %.60 = phi ptr [ %.57, %1573 ], [ %.32045, %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455 ] diff --git a/bench/boost/optimized/topology.ll b/bench/boost/optimized/topology.ll index de2ddcc60cb..55794a73ad2 100644 --- a/bench/boost/optimized/topology.ll +++ b/bench/boost/optimized/topology.ll @@ -22843,30 +22843,23 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr .critedge: ; preds = %49, %50 %54 = getelementptr inbounds nuw i8, ptr %.021.ptr43, i64 8 %55 = load i32, ptr %54, align 8 - %.sroa.6.0.extract.shift = and i32 %55, -16777216 - %56 = and i32 %55, 16711680 - %57 = and i32 %55, 65535 br label %.critedge28 .critedge28: ; preds = %45, %50, %.critedge - %.sroa.037.1 = phi i32 [ %57, %.critedge ], [ 1024, %50 ], [ 0, %45 ] - %.sroa.4.1 = phi i32 [ %56, %.critedge ], [ 0, %50 ], [ 0, %45 ] - %.sroa.6.3 = phi i32 [ %.sroa.6.0.extract.shift, %.critedge ], [ 0, %50 ], [ 0, %45 ] - %58 = load ptr, ptr %5, align 8, !tbaa !10 - %59 = icmp eq ptr %58, %7 - br i1 %59, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %.sroa.037.1 = phi i32 [ %55, %.critedge ], [ 1024, %50 ], [ 0, %45 ] + %56 = load ptr, ptr %5, align 8, !tbaa !10 + %57 = icmp eq ptr %56, %7 + br i1 %57, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %.critedge28 %60 = load i64, ptr %7, align 8, !tbaa !12 %61 = add i64 %60, 1 - call void @_ZdlPvm(ptr noundef %58, i64 noundef %61) #34 + call void @_ZdlPvm(ptr noundef %56, i64 noundef %61) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %.critedge28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.1, %.sroa.037.1 - %.sroa.037.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.6.3 - ret i32 %.sroa.037.0.insert.insert + ret i32 %.sroa.037.1 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i30: ; preds = %41 %62 = load i64, ptr %7, align 8, !tbaa !12 diff --git a/bench/box2d/optimized/shape.ll b/bench/box2d/optimized/shape.ll index b28e1e6280e..7235a2987bb 100644 --- a/bench/box2d/optimized/shape.ll +++ b/bench/box2d/optimized/shape.ll @@ -3776,16 +3776,14 @@ define i64 @b2Shape_GetParentChain(i64 %0) local_unnamed_addr #0 { %22 = zext i16 %21 to i64 %23 = shl nuw i64 %22, 48 %24 = and i64 %0, 281470681743360 - %25 = zext i32 %19 to i64 + %25 = or disjoint i64 %23, %24 + %26 = zext i32 %19 to i64 + %27 = or disjoint i64 %25, %26 br label %.thread .thread: ; preds = %12, %1, %15 - %.sroa.09.1 = phi i64 [ %25, %15 ], [ 0, %1 ], [ 0, %12 ] - %.sroa.3.1 = phi i64 [ %24, %15 ], [ 0, %1 ], [ 0, %12 ] - %.sroa.5.1 = phi i64 [ %23, %15 ], [ 0, %1 ], [ 0, %12 ] - %.sroa.3.0.insert.insert = or disjoint i64 %.sroa.3.1, %.sroa.09.1 - %.sroa.09.0.insert.insert = or disjoint i64 %.sroa.3.0.insert.insert, %.sroa.5.1 - ret i64 %.sroa.09.0.insert.insert + %.sroa.09.1 = phi i64 [ %27, %15 ], [ 0, %1 ], [ 0, %12 ] + ret i64 %.sroa.5.1 } ; Function Attrs: nounwind uwtable diff --git a/bench/c3c/optimized/parse_global.ll b/bench/c3c/optimized/parse_global.ll index 57063d2a79d..11625b25855 100644 --- a/bench/c3c/optimized/parse_global.ll +++ b/bench/c3c/optimized/parse_global.ll @@ -5485,13 +5485,13 @@ define internal fastcc noundef zeroext i1 @parse_contracts(ptr noundef %0, ptr n .critedge.i: ; preds = %47 tail call void @advance(ptr noundef nonnull %0) #8 %53 = select i1 %30, i8 16, i8 0 - br label %54 + %54 = or disjoint i8 %.1.i, %53 + br label %55 54: ; preds = %.critedge.i, %19 - %.065.i = phi i8 [ %53, %.critedge.i ], [ 0, %19 ] - %.064.i = phi i8 [ %.1.i, %.critedge.i ], [ 0, %19 ] - %55 = load i32, ptr %9, align 8 - %.off.i = add i32 %55, -64 + %.065.i = phi i8 [ %54, %.critedge.i ], [ 0, %19 ] + %56 = load i32, ptr %9, align 8 + %.off.i = add i32 %56, -64 %switch.i = icmp ult i32 %.off.i, 9 br i1 %switch.i, label %58, label %56 @@ -5510,9 +5510,8 @@ define internal fastcc noundef zeroext i1 @parse_contracts(ptr noundef %0, ptr n %63 = getelementptr inbounds nuw i8, ptr %22, i64 40 %64 = load i8, ptr %63, align 8 %65 = and i8 %64, -32 - %66 = or i8 %.064.i, %.065.i - %67 = or i8 %66, %65 - store i8 %67, ptr %63, align 8 + %66 = or i8 %66, %.065.i + store i8 %66, ptr %64, align 8 tail call void @advance(ptr noundef nonnull %0) #8 %68 = tail call zeroext i1 @try_consume(ptr noundef nonnull %0, i32 noundef 7) #8 br i1 %68, label %69, label %75 @@ -5891,7 +5890,7 @@ parse_doc_optreturn.exit: ; preds = %extend_span_with_to br label %12 parse_contract_param.exit.thread: ; preds = %217, %211, %201, %124, %113, %119, %72, %50, %45, %56, %2, %253, %252, %248 - %.0 = phi i1 [ false, %252 ], [ false, %253 ], [ true, %248 ], [ true, %2 ], [ false, %56 ], [ false, %45 ], [ false, %50 ], [ false, %72 ], [ false, %119 ], [ false, %113 ], [ false, %124 ], [ false, %201 ], [ false, %211 ], [ false, %217 ] + %.0 = phi i1 [ false, %252 ], [ false, %253 ], [ true, %248 ], [ true, %2 ], [ false, %57 ], [ false, %45 ], [ false, %50 ], [ false, %72 ], [ false, %119 ], [ false, %113 ], [ false, %124 ], [ false, %201 ], [ false, %211 ], [ false, %217 ] ret i1 %.0 } diff --git a/bench/casadi/optimized/interpolant.ll b/bench/casadi/optimized/interpolant.ll index 788182563c3..26c4311de83 100644 --- a/bench/casadi/optimized/interpolant.ll +++ b/bench/casadi/optimized/interpolant.ll @@ -5005,6 +5005,10 @@ define noundef i64 @_ZNK6casadi11Interpolant10coeff_sizeEv(ptr noundef nonnull r %.pre.i = load i64, ptr %7, align 8, !tbaa !60 br label %.lr.ph.i +._crit_edge.loopexit.i: ; preds = %.lr.ph.i + %13 = mul nsw i64 %19, %4 + br label %_ZN6casadi11Interpolant10coeff_sizeERKSt6vectorIxSaIxEEx.exit + .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i %13 = phi i64 [ %16, %.lr.ph.i ], [ %.pre.i, %.lr.ph.preheader.i ] %.011.i = phi i64 [ %14, %.lr.ph.i ], [ 0, %.lr.ph.preheader.i ] @@ -5015,12 +5019,11 @@ define noundef i64 @_ZNK6casadi11Interpolant10coeff_sizeEv(ptr noundef nonnull r %17 = sub nsw i64 %16, %13 %18 = mul nsw i64 %17, %.0910.i %exitcond.not.i = icmp eq i64 %14, %12 - br i1 %exitcond.not.i, label %_ZN6casadi11Interpolant10coeff_sizeERKSt6vectorIxSaIxEEx.exit, label %.lr.ph.i, !llvm.loop !163 + br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !163 -_ZN6casadi11Interpolant10coeff_sizeERKSt6vectorIxSaIxEEx.exit: ; preds = %.lr.ph.i, %1 - %.09.lcssa.i = phi i64 [ 1, %1 ], [ %18, %.lr.ph.i ] - %19 = mul nsw i64 %.09.lcssa.i, %4 - ret i64 %19 +_ZN6casadi11Interpolant10coeff_sizeERKSt6vectorIxSaIxEEx.exit: ; preds = %1, %._crit_edge.loopexit.i + %.09.lcssa.i = phi i64 [ %4, %1 ], [ %13, %._crit_edge.loopexit.i ] + ret i64 %.09.lcssa.i } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable @@ -5040,10 +5043,13 @@ define noundef i64 @_ZN6casadi11Interpolant10coeff_sizeERKSt6vectorIxSaIxEEx(ptr %.pre = load i64, ptr %5, align 8, !tbaa !60 br label %.lr.ph -._crit_edge: ; preds = %.lr.ph, %2 - %.09.lcssa = phi i64 [ 1, %2 ], [ %17, %.lr.ph ] - %11 = mul nsw i64 %.09.lcssa, %1 - ret i64 %11 +._crit_edge: ; preds = %.lr.ph + %11 = mul nsw i64 %17, %1 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %2 + %.09.lcssa = phi i64 [ %1, %2 ], [ %11, %._crit_edge.loopexit ] + ret i64 %.09.lcssa .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %12 = phi i64 [ %15, %.lr.ph ], [ %.pre, %.lr.ph.preheader ] @@ -7556,6 +7562,10 @@ _ZNK6casadi11Interpolant10arg_valuesEx.exit: ; preds = %20 %.pre.i.i = load i64, ptr %34, align 8, !tbaa !60 br label %.lr.ph.i.i +._crit_edge.loopexit.i.i: ; preds = %.lr.ph.i.i + %40 = mul nsw i64 %46, %31 + br label %_ZNK6casadi11Interpolant10coeff_sizeEv.exit + .lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.preheader.i.i %40 = phi i64 [ %43, %.lr.ph.i.i ], [ %.pre.i.i, %.lr.ph.preheader.i.i ] %.011.i.i = phi i64 [ %41, %.lr.ph.i.i ], [ 0, %.lr.ph.preheader.i.i ] @@ -7566,12 +7576,11 @@ _ZNK6casadi11Interpolant10arg_valuesEx.exit: ; preds = %20 %44 = sub nsw i64 %43, %40 %45 = mul nsw i64 %44, %.0910.i.i %exitcond.not.i.i = icmp eq i64 %41, %39 - br i1 %exitcond.not.i.i, label %_ZNK6casadi11Interpolant10coeff_sizeEv.exit, label %.lr.ph.i.i, !llvm.loop !163 + br i1 %exitcond.not.i.i, label %._crit_edge.loopexit.i.i, label %.lr.ph.i.i, !llvm.loop !163 -_ZNK6casadi11Interpolant10coeff_sizeEv.exit: ; preds = %.lr.ph.i.i, %28 - %.09.lcssa.i.i = phi i64 [ 1, %28 ], [ %45, %.lr.ph.i.i ] - %46 = mul nsw i64 %.09.lcssa.i.i, %31 - tail call void @_ZN6casadi8Sparsity5denseExx(ptr dead_on_unwind writable sret(%"class.casadi::Sparsity") align 8 %0, i64 noundef %46, i64 noundef 1) +_ZNK6casadi11Interpolant10coeff_sizeEv.exit: ; preds = %28, %._crit_edge.loopexit.i.i + %.09.lcssa.i.i = phi i64 [ %31, %28 ], [ %40, %._crit_edge.loopexit.i.i ] + tail call void @_ZN6casadi8Sparsity5denseExx(ptr dead_on_unwind writable sret(%"class.casadi::Sparsity") align 8 %0, i64 noundef %.09.lcssa.i.i, i64 noundef 1) br label %123 _ZNK6casadi11Interpolant10arg_valuesEx.exit.thread: ; preds = %20, %_ZNK6casadi11Interpolant10arg_valuesEx.exit diff --git a/bench/casadi/optimized/mx_function.ll b/bench/casadi/optimized/mx_function.ll index 02f1b40b3a4..15956770ae6 100644 --- a/bench/casadi/optimized/mx_function.ll +++ b/bench/casadi/optimized/mx_function.ll @@ -21161,7 +21161,7 @@ _ZSt8_DestroyIPSt6vectorIN6casadi2MXESaIS2_EES4_EvT_S6_RSaIT0_E.exit.i.i655: ; p %1103 = load ptr, ptr %1025, align 8, !tbaa !150 %1104 = load ptr, ptr %1024, align 8, !tbaa !41 %.not1061 = icmp eq ptr %1103, %1104 - br i1 %.not1061, label %._crit_edge1038, label %.lr.ph1037 + br i1 %.not1061, label %_ZNSt6vectorIS_IN6casadi2MXESaIS1_EESaIS3_EE9push_backERKS3_.exit685, label %.lr.ph1037 .lr.ph1037: ; preds = %1096 %1105 = xor i64 %1100, -1 @@ -21332,13 +21332,9 @@ _ZN6casadi2MXaSERKS0_.exit673: ; preds = %_ZN6casadi2MXaSERKS ._crit_edge1038.loopexit: ; preds = %.critedge %.pre1131 = load i64, ptr %1098, align 8, !tbaa !52 - br label %._crit_edge1038 - -._crit_edge1038: ; preds = %._crit_edge1038.loopexit, %1096 - %1175 = phi i64 [ %.pre1131, %._crit_edge1038.loopexit ], [ %1102, %1096 ] - %1176 = and i64 %1175, %1100 - %.not910 = icmp eq i64 %1176, 0 - br i1 %.not910, label %1177, label %_ZNSt6vectorIS_IN6casadi2MXESaIS1_EESaIS3_EE9push_backERKS3_.exit685 + %1175 = and i64 %.pre1131, %1100 + %1176 = icmp eq i64 %1175, 0 + br i1 %1176, label %1177, label %_ZNSt6vectorIS_IN6casadi2MXESaIS1_EESaIS3_EE9push_backERKS3_.exit685 1177: ; preds = %._crit_edge1038 %1178 = load ptr, ptr %800, align 8, !tbaa !409 @@ -21366,7 +21362,7 @@ _ZN6casadi2MXaSERKS0_.exit673: ; preds = %_ZN6casadi2MXaSERKS catch ptr @_ZTISt9exception br label %1196 -_ZNSt6vectorIS_IN6casadi2MXESaIS1_EESaIS3_EE9push_backERKS3_.exit685: ; preds = %.noexc683, %1183, %._crit_edge1038 +_ZNSt6vectorIS_IN6casadi2MXESaIS1_EESaIS3_EE9push_backERKS3_.exit685: ; preds = %1096, %.noexc683, %1183, %._crit_edge1038 %1186 = load ptr, ptr %42, align 8, !tbaa !18 %1187 = load ptr, ptr %896, align 8, !tbaa !15 %.not4.i.i.i.i686 = icmp eq ptr %1186, %1187 @@ -22176,7 +22172,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit800: ; preds = %_Z br label %1459 1459: ; preds = %.sink.split1480, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i799, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit800 - %.pn326.pn.pn.pn.pn.pn883 = phi { ptr, i32 } [ %.pn326.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit800 ], [ %.pn326.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i799 ], [ %.pn326.pn.pn.pn.pn.pn883.ph, %.sink.split1480 ] + %.pn326.pn.pn.pn.pn.pn883 = phi { ptr, i32 } [ %.pn326.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit800 ], [ %.pn326.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i799 ], [ %.pn326.pn.pn.pn.pn.pn883.ph, %.sink.split1481 ] call void @__cxa_free_exception(ptr %1400) #27 br label %1460 diff --git a/bench/ceres/optimized/dogleg_strategy.ll b/bench/ceres/optimized/dogleg_strategy.ll index 205153a1bb2..f104ae90995 100644 --- a/bench/ceres/optimized/dogleg_strategy.ll +++ b/bench/ceres/optimized/dogleg_strategy.ll @@ -627,7 +627,7 @@ define hidden { double, i64 } @_ZN5ceres8internal14DoglegStrategy11ComputeStepER 20: ; preds = %.critedge48 %21 = getelementptr inbounds nuw i8, ptr %0, i64 180 %22 = load i32, ptr %21, align 4, !tbaa !53 - switch i32 %22, label %122 [ + switch i32 %22, label %123 [ i32 0, label %23 i32 1, label %24 ] @@ -847,15 +847,14 @@ _ZN5ceres8internal12LinearSolver7SummaryD2Ev.exit53: ; preds = %112, %_ZNKSt7__c %119 = zext i32 %.sroa.9.1 to i64 %120 = shl nuw i64 %119, 32 %121 = zext i32 %83 to i64 - br label %122 + %122 = or disjoint i64 %120, %121 + br label %123 122: ; preds = %20, %23, %24, %_ZN5ceres8internal12LinearSolver7SummaryD2Ev.exit53 %.sroa.063.0 = phi double [ %81, %_ZN5ceres8internal12LinearSolver7SummaryD2Ev.exit53 ], [ -1.000000e+00, %24 ], [ -1.000000e+00, %23 ], [ -1.000000e+00, %20 ] - %.sroa.464.0 = phi i64 [ %121, %_ZN5ceres8internal12LinearSolver7SummaryD2Ev.exit53 ], [ 0, %24 ], [ 0, %23 ], [ 0, %20 ] - %.sroa.9.0 = phi i64 [ %120, %_ZN5ceres8internal12LinearSolver7SummaryD2Ev.exit53 ], [ 0, %24 ], [ 0, %23 ], [ 0, %20 ] + %.sroa.464.0 = phi i64 [ %122, %_ZN5ceres8internal12LinearSolver7SummaryD2Ev.exit53 ], [ 0, %24 ], [ 0, %23 ], [ 0, %20 ] %.fca.0.insert = insertvalue { double, i64 } poison, double %.sroa.063.0, 0 - %.sroa.464.8.insert.insert = or disjoint i64 %.sroa.9.0, %.sroa.464.0 - %.fca.1.insert = insertvalue { double, i64 } %.fca.0.insert, i64 %.sroa.464.8.insert.insert, 1 + %.fca.1.insert = insertvalue { double, i64 } %.fca.0.insert, i64 %.sroa.464.0, 1 ret { double, i64 } %.fca.1.insert } diff --git a/bench/ceres/optimized/polynomial.ll b/bench/ceres/optimized/polynomial.ll index aefaf99c9cc..50b86b9fb3b 100644 --- a/bench/ceres/optimized/polynomial.ll +++ b/bench/ceres/optimized/polynomial.ll @@ -20682,13 +20682,12 @@ _ZN5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLin1ELin1ELi1ELin1ELin1EEELin1E .preheader.us.i.i.i.i.i.i.i.i: ; preds = %._crit_edge.us.i.i.i.i.i.i.i.i, %.preheader.us.i.i.preheader.i.i.i.i.i.i %167 = phi i1 [ false, %._crit_edge.us.i.i.i.i.i.i.i.i ], [ true, %.preheader.us.i.i.preheader.i.i.i.i.i.i ] %.0810.us.i.sroa.phi.i.sroa.speculated.i.i.i.i.i.i = phi double [ %.sroa.0.8.vec.extract.i.i.i.i.i.i, %._crit_edge.us.i.i.i.i.i.i.i.i ], [ %.sroa.0.0.vec.extract.i.i.i.i.i.i, %.preheader.us.i.i.preheader.i.i.i.i.i.i ] - %.0810.us.i.i.i.i.i.i.i.i = phi i64 [ 1, %._crit_edge.us.i.i.i.i.i.i.i.i ], [ 0, %.preheader.us.i.i.preheader.i.i.i.i.i.i ] - %168 = mul nuw nsw i64 %.0810.us.i.i.i.i.i.i.i.i, %160 - %invariant.gep.us.i.i.i.i.i.i.i.i = getelementptr double, ptr %34, i64 %168 - br label %169 + %.0810.us.i.i.i.i.i.i.i.i = phi i64 [ %160, %._crit_edge.us.i.i.i.i.i.i.i.i ], [ 0, %.preheader.us.i.i.preheader.i.i.i.i.i.i ] + %invariant.gep.us.i.i.i.i.i.i.i.i = getelementptr double, ptr %34, i64 %.0810.us.i.i.i.i.i.i.i.i + br label %168 169: ; preds = %169, %.preheader.us.i.i.i.i.i.i.i.i - %.09.us.i.i.i.i.i.i.i.i = phi i64 [ 0, %.preheader.us.i.i.i.i.i.i.i.i ], [ %175, %169 ] + %.09.us.i.i.i.i.i.i.i.i = phi i64 [ 0, %.preheader.us.i.i.i.i.i.i.i.i ], [ %175, %168 ] %gep.us.i.i.i.i.i.i.i.i = getelementptr double, ptr %invariant.gep.us.i.i.i.i.i.i.i.i, i64 %.09.us.i.i.i.i.i.i.i.i %170 = getelementptr inbounds nuw double, ptr %3, i64 %.09.us.i.i.i.i.i.i.i.i %171 = load double, ptr %170, align 8, !tbaa !19 diff --git a/bench/clamav/optimized/dlp.ll b/bench/clamav/optimized/dlp.ll index 5b35845a4b9..f712a1b5849 100644 --- a/bench/clamav/optimized/dlp.ll +++ b/bench/clamav/optimized/dlp.ll @@ -854,14 +854,9 @@ define range(i32 0, 2) i32 @dlp_has_ssn(ptr noundef %0, i64 noundef %1) local_un %51 = icmp ult ptr %50, %5 br i1 %51, label %.lr.ph.split.us.i6, label %contains_ssn.exit12.loopexit -contains_ssn.exit12.loopexit: ; preds = %49, %45 - %.023.i10.ph = phi i32 [ 1, %45 ], [ 0, %49 ] - %52 = or i32 %.023.i10.ph, %.023.i - br label %contains_ssn.exit12 - -contains_ssn.exit12: ; preds = %contains_ssn.exit12.loopexit, %2 - %53 = phi i32 [ 0, %2 ], [ %52, %contains_ssn.exit12.loopexit ] - ret i32 %53 +contains_ssn.exit12.loopexit: ; preds = %45, %49, %2 + %.023.i10.ph = phi i32 [ 0, %2 ], [ %.023.i, %49 ], [ 1, %45 ] + ret i32 %.023.i10.ph } ; Function Attrs: nounwind uwtable diff --git a/bench/clamav/optimized/scantree.ll b/bench/clamav/optimized/scantree.ll index ad357658dbd..19d7f34a9b2 100644 --- a/bench/clamav/optimized/scantree.ll +++ b/bench/clamav/optimized/scantree.ll @@ -436,11 +436,10 @@ define noundef range(i32 0, 4) i32 @_ZN8ScanTree8FindProcEP8FindData(ptr noundef resume { ptr, i32 } %66 67: ; preds = %57 - %or.cond4 = and i1 %.ph79, %.ph80 %68 = getelementptr inbounds nuw i8, ptr %0, i64 8208 %69 = load i32, ptr %68, align 8 %70 = icmp ne i32 %69, 1 - %or.cond69.not = select i1 %or.cond4, i1 %70, i1 false + %or.cond69.not = select i1 %.ph79, i1 %70, i1 false br i1 %or.cond69.not, label %.thread95, label %71 71: ; preds = %67 diff --git a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll index 8ead6206cbf..7340ab652c2 100644 --- a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll +++ b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll @@ -1866,8 +1866,7 @@ define hidden void @_ZN12clap_builder6output13help_template8AutoHelp10write_help br i1 %or.cond.i31, label %.backedge.i.i26, label %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h5c9a5ad8bf840250E.llvm.7816201618593889606.exit34" "_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h5c9a5ad8bf840250E.llvm.7816201618593889606.exit34": ; preds = %45, %.backedge.us.i.i14, %56, %.backedge.i.i26, %1 - %.lcssa.i.i3958 = phi i1 [ false, %1 ], [ %.lcssa.i.i39, %.backedge.i.i26 ], [ %.lcssa.i.i39, %56 ], [ %.lcssa.i.i39, %.backedge.us.i.i14 ], [ %.lcssa.i.i39, %45 ] - %.lcssa.i.i1941 = phi i1 [ false, %1 ], [ true, %56 ], [ false, %.backedge.i.i26 ], [ true, %45 ], [ false, %.backedge.us.i.i14 ] + %.lcssa.i.i3958 = phi i1 [ false, %1 ], [ true, %56 ], [ %.lcssa.i.i39, %.backedge.i.i26 ], [ true, %45 ], [ %.lcssa.i.i39, %.backedge.us.i.i14 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !355) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !355 %60 = getelementptr inbounds nuw i8, ptr %5, i64 184 @@ -1895,8 +1894,7 @@ _ZN12clap_builder7builder7command7Command23has_visible_subcommands17h33da8fae85c _ZN12clap_builder7builder7command7Command23has_visible_subcommands17h33da8fae85ccf465E.exit: ; preds = %66 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !355 - %brmerge = or i1 %.lcssa.i.i3958, %.lcssa.i.i1941 - br i1 %brmerge, label %.split6, label %.split + br i1 %.lcssa.i.i3958, label %.split6, label %.split .split6: ; preds = %_ZN12clap_builder7builder7command7Command23has_visible_subcommands17h33da8fae85ccf465E.exit.thread, %_ZN12clap_builder7builder7command7Command23has_visible_subcommands17h33da8fae85ccf465E.exit call void @_ZN12clap_builder6output13help_template12HelpTemplate20write_templated_help17h7ba8a0fd121e4435E(ptr noalias noundef nonnull align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 1 @anon.d61c2e717104e98006f69608d75dbe7b.41.llvm.7816201618593889606, i64 noundef 81) diff --git a/bench/cmake/optimized/cmNinjaTargetGenerator.ll b/bench/cmake/optimized/cmNinjaTargetGenerator.ll index 0b1a31a7abb..8c73b1d0224 100644 --- a/bench/cmake/optimized/cmNinjaTargetGenerator.ll +++ b/bench/cmake/optimized/cmNinjaTargetGenerator.ll @@ -25117,7 +25117,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt17basic_strin to label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEE7cmValue.exit unwind label %603 _Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEE7cmValue.exit: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit.i.i, %304 - %.0.i1935.not = phi i1 [ true, %304 ], [ false, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit.i.i ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] + %.0.i1935.not = phi i1 [ %4, %304 ], [ false, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit.i.i ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] %307 = phi i1 [ %306, %304 ], [ false, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit.i.i ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] %308 = zext i1 %307 to i32 call void @llvm.lifetime.start.p0(ptr nonnull %77) @@ -27356,8 +27356,7 @@ _ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit unwind label %917 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit: ; preds = %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRKS5_EEEvRS6_PT_DpOT0_.exit.i, %1098 - %or.cond.not = and i1 %4, %.0.i1935.not - br i1 %or.cond.not, label %1099, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit917 + br i1 %.0.i1935.not, label %1099, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit917 1099: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit %1100 = getelementptr inbounds nuw i8, ptr %0, i64 192 diff --git a/bench/coreutils-rs/optimized/2fxrwnovw97v41kk.ll b/bench/coreutils-rs/optimized/2fxrwnovw97v41kk.ll index dfc7415bbb9..d0d49b53c24 100644 --- a/bench/coreutils-rs/optimized/2fxrwnovw97v41kk.ll +++ b/bench/coreutils-rs/optimized/2fxrwnovw97v41kk.ll @@ -5144,10 +5144,11 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %77 i32 1, label %._crit_edge.i ] -._crit_edge.i: ; preds = %.lr.ph.i, %.preheader - %.013.lcssa.i = phi i64 [ 1, %.preheader ], [ %spec.select.i, %.lr.ph.i ] - %.012.lcssa.i = phi i64 [ %25, %.preheader ], [ %75, %.lr.ph.i ] - %71 = mul i64 %.012.lcssa.i, %.013.lcssa.i +._crit_edge.i: ; preds = %.preheader + br label %"_ZN4core3num21_$LT$impl$u20$u64$GT$3pow17hfc6702fd0fc8148cE.exit" + +._crit_edge.loopexit.i:; preds = %.lr.ph.i + %71 = mul i64 %spec.select.i, %75 br label %"_ZN4core3num21_$LT$impl$u20$u64$GT$3pow17hfc6702fd0fc8148cE.exit" .lr.ph.i: ; preds = %.preheader, %.lr.ph.i @@ -5161,10 +5162,10 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %77 %74 = lshr i32 %.017.i, 1 %75 = mul i64 %.01216.i, %.01216.i %76 = icmp ugt i32 %.017.i, 3 - br i1 %76, label %.lr.ph.i, label %._crit_edge.i + br i1 %76, label %.lr.ph.i, label %._crit_edge.loopexit.i -"_ZN4core3num21_$LT$impl$u20$u64$GT$3pow17hfc6702fd0fc8148cE.exit": ; preds = %.preheader, %._crit_edge.i - %.011.i = phi i64 [ %71, %._crit_edge.i ], [ 1, %.preheader ] +"_ZN4core3num21_$LT$impl$u20$u64$GT$3pow17hfc6702fd0fc8148cE.exit": ; preds = %.preheader, %._crit_edge.i, %._crit_edge.loopexit.i + %.011.i = phi i64 [ 1, %.preheader ], [ %71, %._crit_edge.loopexit.i ], [ %25, %._crit_edge.fold.split.i ] %.not = icmp ult i64 %2, %.011.i br i1 %.not, label %77, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit36 diff --git a/bench/coreutils-rs/optimized/3hxvjlp3c9mnf678.ll b/bench/coreutils-rs/optimized/3hxvjlp3c9mnf678.ll index 6126c2240da..36e818f1770 100644 --- a/bench/coreutils-rs/optimized/3hxvjlp3c9mnf678.ll +++ b/bench/coreutils-rs/optimized/3hxvjlp3c9mnf678.ll @@ -280,19 +280,20 @@ define hidden noundef i8 @"_ZN166_$LT$clap_builder..builder..value_hint..ValueHi ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind memory(none) uwtable define hidden noundef i64 @"_ZN4core3num21_$LT$impl$u20$i64$GT$3pow17h46f3f76ba4990e7aE.llvm.6876384978452292205"(i64 noundef %0, i32 noundef %1) unnamed_addr #4 { switch i32 %1, label %.lr.ph [ - i32 0, label %3 - i32 1, label %._crit_edge + i32 0, label %._crit_edge + i32 1, label %._crit_edge.fold.split ] -3: ; preds = %2, %._crit_edge - %.011 = phi i64 [ %4, %._crit_edge ], [ 1, %2 ] +3: ; preds = %2 + br label %._crit_edge + +._crit_edge: ; preds = %2, %._crit_edge.fold.split, %._crit_edge.loopexit + %.011 = phi i64 [ 1, %2 ], [ %3, %._crit_edge.loopexit ], [ %0, %._crit_edge.fold.split ] ret i64 %.011 -._crit_edge: ; preds = %.lr.ph, %2 - %.013.lcssa = phi i64 [ 1, %2 ], [ %spec.select, %.lr.ph ] - %.012.lcssa = phi i64 [ %0, %2 ], [ %8, %.lr.ph ] - %4 = mul i64 %.012.lcssa, %.013.lcssa - br label %3 +._crit_edge: ; preds = %.lr.ph + %3 = mul i64 %7, %spec.select + br label %._crit_edge .lr.ph: ; preds = %2, %.lr.ph %.017 = phi i32 [ %7, %.lr.ph ], [ %1, %2 ] diff --git a/bench/coreutils-rs/optimized/x8pbloshhgr8d49.ll b/bench/coreutils-rs/optimized/x8pbloshhgr8d49.ll index 0e2824d65ef..1cffc77515f 100644 --- a/bench/coreutils-rs/optimized/x8pbloshhgr8d49.ll +++ b/bench/coreutils-rs/optimized/x8pbloshhgr8d49.ll @@ -7096,7 +7096,8 @@ _ZN4core4char7methods15encode_utf8_raw17ha5a8bd16826d1590E.exit: ; preds = %6, % %.sroa.0.1.insert.ext = zext i8 %47 to i32 %.sroa.0.1.insert.shift = shl nuw nsw i32 %.sroa.0.1.insert.ext, 8 %.pre = zext i8 %46 to i32 - br label %51 + %48 = or disjoint i32 %.sroa.0.1.insert.shift, %.pre + br label %52 48: ; preds = %36 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.c5cd9b7f6d3ddbb063a5fce8757df4c7.77, i64 noundef 52, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c5cd9b7f6d3ddbb063a5fce8757df4c7.79) #24 @@ -7106,16 +7107,14 @@ _ZN4core4char7methods15encode_utf8_raw17ha5a8bd16826d1590E.exit: ; preds = %6, % %50 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr80drop_in_place$LT$alloc..vec..Vec$LT$core..ops..range..Range$LT$usize$GT$$GT$$GT$17h38dd6806bb532a3aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10) #26 - to label %64 unwind label %62 + to label %65 unwind label %62 51: ; preds = %44, %41 - %.sroa.0.0.insert.ext.pre-phi = phi i32 [ %.pre, %44 ], [ %11, %41 ] - %.sroa.0.0 = phi i32 [ %.sroa.0.1.insert.shift, %44 ], [ 0, %41 ] - %52 = phi i64 [ 2, %44 ], [ 1, %41 ] - %.sroa.0.0.insert.insert = or disjoint i32 %.sroa.0.0, %.sroa.0.0.insert.ext.pre-phi - %53 = getelementptr inbounds nuw i8, ptr %9, i64 24 + %.sroa.0.0.insert.ext.pre-phi = phi i32 [ %48, %44 ], [ %11, %41 ] + %.sroa.0.0 = phi i64 [ 2, %44 ], [ 1, %41 ] + %54 = getelementptr inbounds nuw i8, ptr %9, i64 24 %.sroa.47.sroa.4.0..sroa.47.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 40 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %53, i8 0, i64 16, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %54, i8 0, i64 16, i1 false) store i64 %spec.select, ptr %.sroa.47.sroa.4.0..sroa.47.0..sroa_idx.sroa_idx, align 8 %.sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 48 store ptr %spec.select25, ptr %.sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx, align 8 @@ -7126,9 +7125,9 @@ _ZN4core4char7methods15encode_utf8_raw17ha5a8bd16826d1590E.exit: ; preds = %6, % %.sroa.47.sroa.5.sroa.6.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 72 store i64 %spec.select, ptr %.sroa.47.sroa.5.sroa.6.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx, align 8 %.sroa.47.sroa.5.sroa.7.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 80 - store i64 %52, ptr %.sroa.47.sroa.5.sroa.7.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx, align 8 + store i64 %53, ptr %.sroa.47.sroa.5.sroa.7.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx, align 8 %.sroa.47.sroa.5.sroa.8.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 88 - store i32 %.sroa.0.0.insert.insert, ptr %.sroa.47.sroa.5.sroa.8.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx, align 8 + store i32 %.sroa.0.0.insert.ext.pre-phi, ptr %.sroa.47.sroa.5.sroa.8.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx, align 8 %.sroa.47.sroa.5.sroa.9.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 92 store i32 %11, ptr %.sroa.47.sroa.5.sroa.9.0..sroa.47.sroa.5.0..sroa.47.0..sroa_idx.sroa_idx.sroa_idx, align 4 %.sroa.47.sroa.6.0..sroa.47.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 96 diff --git a/bench/cpython/optimized/_testbuffer.ll b/bench/cpython/optimized/_testbuffer.ll index 33f2cc52483..886bb124dcb 100644 --- a/bench/cpython/optimized/_testbuffer.ll +++ b/bench/cpython/optimized/_testbuffer.ll @@ -5416,9 +5416,12 @@ verify_structure.exit.i.i: ; preds = %.lr.ph.i41.i.i, %36 %exitcond.not.i46.i.i = icmp eq i64 %375, %369 br i1 %exitcond.not.i46.i.i, label %init_len.exit.i.i, label %.lr.ph.i45.i.i, !llvm.loop !61 -init_len.exit.i.i: ; preds = %.lr.ph.i45.i.i, %.loopexit.i.i - %376 = phi i64 [ 1, %.loopexit.i.i ], [ %374, %.lr.ph.i45.i.i ] - %377 = mul i64 %376, %335 +init_len.exit.i.i: ; preds = %.lr.ph.i45.i.i + %376 = mul i64 %374, %335 + br label %init_len.exit.i.i + +init_len.exit.i.i: ; preds = %init_len.exit.i.loopexit.i, %.loopexit.i.i + %377 = phi i64 [ %335, %.loopexit.i.i ], [ %376, %init_len.exit.i.loopexit.i ] store i64 %377, ptr %113, align 8, !tbaa !37 %378 = tail call i32 @PyBuffer_IsContiguous(ptr noundef nonnull %111, i8 noundef signext 67) #14 %.not37.i.i = icmp eq i32 %378, 0 diff --git a/bench/curl/optimized/mprintf.ll b/bench/curl/optimized/mprintf.ll index fd04c3f2eef..031b1d757a4 100644 --- a/bench/curl/optimized/mprintf.ll +++ b/bench/curl/optimized/mprintf.ll @@ -274,7 +274,7 @@ addbyter.exit50: ; preds = %32, %28 %.2346.i183.ph = phi i32 [ %.0344.i, %291 ], [ %.1345.i, %113 ], [ %.1345.i, %109 ] %.0368.i181.ph = phi i64 [ 16, %291 ], [ 16, %113 ], [ 8, %109 ] %.ph = phi i1 [ true, %291 ], [ true, %113 ], [ false, %109 ] - %.ph368 = phi i1 [ false, %291 ], [ false, %113 ], [ true, %109 ] + %.ph368 = phi i1 [ false, %291 ], [ false, %113 ], [ %72, %109 ] %.0397.i176.ph = phi i1 [ true, %291 ], [ %72, %113 ], [ %72, %109 ] %.2367.i.ph = phi i64 [ %294, %291 ], [ %82, %113 ], [ %82, %109 ] %116 = icmp eq i32 %.0370.i, -1 @@ -339,9 +339,8 @@ addbyter.exit50: ; preds = %32, %28 %135 = sub i32 324, %134 %136 = sub nsw i32 %.1376.i, %135 %137 = sub nsw i32 %spec.store.select5.i, %135 - %or.cond.i = and i1 %.ph368, %.0397.i176.ph %138 = icmp slt i32 %137, 1 - %or.cond8.i = select i1 %or.cond.i, i1 %138, i1 false + %or.cond8.i = select i1 %.ph368, i1 %138, i1 false br i1 %or.cond8.i, label %.thread, label %140 .thread: ; preds = %.loopexit366 @@ -2611,7 +2610,7 @@ define internal fastcc i32 @formatf.specialized.2(ptr noundef captures(none) %0, %.234610.ph = phi i32 [ %.0344, %271 ], [ %.1345, %111 ], [ %.1345, %107 ] %.03688.ph = phi i64 [ 16, %271 ], [ 16, %111 ], [ 8, %107 ] %.ph = phi i1 [ true, %271 ], [ true, %111 ], [ false, %107 ] - %.ph38 = phi i1 [ false, %271 ], [ false, %111 ], [ true, %107 ] + %.ph38 = phi i1 [ false, %271 ], [ false, %111 ], [ %70, %107 ] %.03973.ph = phi i1 [ true, %271 ], [ %70, %111 ], [ %70, %107 ] %.2367.ph = phi i64 [ %274, %271 ], [ %80, %111 ], [ %80, %107 ] %114 = icmp eq i32 %.0370, -1 @@ -2676,9 +2675,8 @@ define internal fastcc i32 @formatf.specialized.2(ptr noundef captures(none) %0, %133 = sub i32 324, %132 %134 = sub nsw i32 %.1376, %133 %135 = sub nsw i32 %spec.store.select5, %133 - %or.cond = and i1 %.ph38, %.03973.ph %136 = icmp slt i32 %135, 1 - %or.cond8 = select i1 %or.cond, i1 %136, i1 false + %or.cond8 = select i1 %.ph38, i1 %136, i1 false br i1 %or.cond8, label %.thread, label %138 .thread: ; preds = %.loopexit36 @@ -3625,7 +3623,7 @@ define internal fastcc i32 @formatf.specialized.3(ptr noundef captures(none) %0, %.234613.ph = phi i32 [ %.0344, %286 ], [ %.1345, %109 ], [ %.1345, %105 ] %.036811.ph = phi i64 [ 16, %286 ], [ 16, %109 ], [ 8, %105 ] %.ph = phi i1 [ true, %286 ], [ true, %109 ], [ false, %105 ] - %.ph107 = phi i1 [ false, %286 ], [ false, %109 ], [ true, %105 ] + %.ph107 = phi i1 [ false, %286 ], [ false, %109 ], [ %70, %105 ] %.03976.ph = phi i1 [ true, %286 ], [ %70, %109 ], [ %70, %105 ] %.2367.ph = phi i64 [ %289, %286 ], [ %80, %109 ], [ %80, %105 ] %112 = icmp eq i32 %.0370, -1 @@ -3690,9 +3688,8 @@ define internal fastcc i32 @formatf.specialized.3(ptr noundef captures(none) %0, %131 = sub i32 324, %130 %132 = sub nsw i32 %.1376, %131 %133 = sub nsw i32 %spec.store.select5, %131 - %or.cond = and i1 %.ph107, %.03976.ph %134 = icmp slt i32 %133, 1 - %or.cond8 = select i1 %or.cond, i1 %134, i1 false + %or.cond8 = select i1 %.ph107, i1 %134, i1 false br i1 %or.cond8, label %.thread23, label %136 .thread23: ; preds = %.loopexit105 @@ -4733,7 +4730,7 @@ alloc_addbyter.exit97: ; preds = %.lr.ph279 %.234626.ph = phi i32 [ %.0344, %373 ], [ %.1345, %144 ], [ %.1345, %140 ] %.036824.ph = phi i64 [ 16, %373 ], [ 16, %144 ], [ 8, %140 ] %.ph = phi i1 [ true, %373 ], [ true, %144 ], [ false, %140 ] - %.ph114 = phi i1 [ false, %373 ], [ false, %144 ], [ true, %140 ] + %.ph114 = phi i1 [ false, %373 ], [ false, %144 ], [ %96, %140 ] %.039719.ph = phi i1 [ true, %373 ], [ %96, %144 ], [ %96, %140 ] %.2367.ph = phi i64 [ %376, %373 ], [ %106, %144 ], [ %106, %140 ] %147 = icmp eq i32 %.0370, -1 @@ -4798,9 +4795,8 @@ alloc_addbyter.exit97: ; preds = %.lr.ph279 %166 = sub i32 324, %165 %167 = sub nsw i32 %.1376, %166 %168 = sub nsw i32 %spec.store.select5, %166 - %or.cond = and i1 %.ph114, %.039719.ph %169 = icmp slt i32 %168, 1 - %or.cond8 = select i1 %or.cond, i1 %169, i1 false + %or.cond8 = select i1 %.ph114, i1 %169, i1 false br i1 %or.cond8, label %.thread36, label %171 .thread36: ; preds = %.loopexit112 diff --git a/bench/curl/optimized/url.ll b/bench/curl/optimized/url.ll index df8bb109b0c..0d8dad1247c 100644 --- a/bench/curl/optimized/url.ll +++ b/bench/curl/optimized/url.ll @@ -4920,7 +4920,7 @@ xfer_may_multiplex.exit: ; preds = %22, %26 %28 = load i64, ptr %27, align 8, !tbaa !291 %29 = and i64 %28, 8 %.not = icmp eq i64 %29, 0 - br i1 %.not, label %36, label %30 + br i1 %.not, label %37, label %30 30: ; preds = %xfer_may_multiplex.exit %31 = load ptr, ptr %9, align 8, !tbaa !200 @@ -4929,54 +4929,55 @@ xfer_may_multiplex.exit: ; preds = %22, %26 %34 = and i32 %33, -1073741821 %.not15 = icmp eq i32 %34, 0 %35 = select i1 %.not15, i8 0, i8 2 - br label %36 - -36: ; preds = %30, %xfer_may_multiplex.exit - %37 = phi i8 [ 0, %xfer_may_multiplex.exit ], [ %35, %30 ] - %38 = getelementptr inbounds nuw i8, ptr %1, i64 952 - %39 = load i64, ptr %38, align 8 - %40 = and i64 %39, 4 - %.not16 = icmp eq i64 %40, 0 - br i1 %.not16, label %51, label %41 - -41: ; preds = %36 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 3416 - %43 = load i64, ptr %42, align 8, !tbaa !292 - %44 = and i64 %43, 8 - %.not17 = icmp eq i64 %44, 0 - br i1 %.not17, label %51, label %45 - -45: ; preds = %41 - %46 = load ptr, ptr %9, align 8, !tbaa !200 - %47 = getelementptr inbounds nuw i8, ptr %46, i64 148 - %48 = load i32, ptr %47, align 4, !tbaa !213 - %49 = and i32 %48, -1073741821 - %.not18 = icmp eq i32 %49, 0 - %50 = select i1 %.not18, i8 0, i8 4 - br label %51 + %36 = or disjoint i8 %35, %.0.i + br label %37 -51: ; preds = %45, %41, %36 - %52 = phi i8 [ 0, %41 ], [ 0, %36 ], [ %50, %45 ] - %53 = or disjoint i8 %37, %.0.i +45: ; preds = %30, %xfer_may_multiplex.exit + %38 = phi i8 [ %.0.i, %xfer_may_multiplex.exit ], [ %36, %30 ] + %47 = getelementptr inbounds nuw i8, ptr %1, i64 952 + %48 = load i64, ptr %47, align 8 + %49 = and i64 %48, 4 + %.not18 = icmp eq i64 %49, 0 + br i1 %.not18, label %52, label %42 + +51: ; preds = %45 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 3416 + %44 = load i64, ptr %43, align 8, !tbaa !292 + %45 = and i64 %44, 8 + %.not17 = icmp eq i64 %45, 0 + br i1 %.not17, label %52, label %46 + +46: ; preds = %42 + %47 = load ptr, ptr %9, align 8, !tbaa !200 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 148 + %49 = load i32, ptr %48, align 4, !tbaa !213 + %50 = and i32 %49, -1073741821 + %.not18 = icmp eq i32 %50, 0 + %51 = select i1 %.not18, i8 0, i8 4 + br label %52 + +52: ; preds = %46, %42, %37 + %53 = phi i8 [ 0, %42 ], [ 0, %37 ], [ %51, %46 ] %54 = getelementptr inbounds nuw i8, ptr %6, i64 24 - %55 = or disjoint i8 %52, %53 - store i8 %55, ptr %54, align 8 - %56 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %57 = load ptr, ptr %56, align 8, !tbaa !192 - %58 = getelementptr inbounds nuw i8, ptr %1, i64 64 - %59 = load i64, ptr %58, align 8, !tbaa !284 - %60 = call zeroext i1 @Curl_cpool_find(ptr noundef nonnull %0, ptr noundef %57, i64 noundef %59, ptr noundef nonnull @url_match_conn, ptr noundef nonnull @url_match_result, ptr noundef nonnull %6) #11 - %61 = load ptr, ptr %6, align 8, !tbaa !293 - store ptr %61, ptr %2, align 8, !tbaa !221 - %62 = load i8, ptr %54, align 8 - %63 = lshr i8 %62, 4 - %.lobit = and i8 %63, 1 + %55 = and i8 %38, -5 + %56 = or disjoint i8 %53, %55 + store i8 %56, ptr %54, align 8 + %57 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %58 = load ptr, ptr %57, align 8, !tbaa !192 + %59 = getelementptr inbounds nuw i8, ptr %1, i64 64 + %60 = load i64, ptr %59, align 8, !tbaa !284 + %61 = call zeroext i1 @Curl_cpool_find(ptr noundef nonnull %0, ptr noundef %58, i64 noundef %60, ptr noundef nonnull @url_match_conn, ptr noundef nonnull @url_match_result, ptr noundef nonnull %6) #11 + %62 = load ptr, ptr %6, align 8, !tbaa !293 + store ptr %62, ptr %2, align 8, !tbaa !221 + %63 = load i8, ptr %54, align 8 + %64 = lshr i8 %63, 4 + %.lobit = and i8 %64, 1 store i8 %.lobit, ptr %3, align 1, !tbaa !203 - %64 = lshr i8 %62, 3 + %64 = lshr i8 %63, 3 %.lobit19 = and i8 %64, 1 store i8 %.lobit19, ptr %4, align 1, !tbaa !203 call void @llvm.lifetime.end.p0(ptr nonnull %6) - ret i1 %60 + ret i1 %61 } ; Function Attrs: nounwind uwtable diff --git a/bench/darktable/optimized/Cr2Decoder.ll b/bench/darktable/optimized/Cr2Decoder.ll index 3fecbbbbd61..708f982fd5e 100644 --- a/bench/darktable/optimized/Cr2Decoder.ll +++ b/bench/darktable/optimized/Cr2Decoder.ll @@ -219,8 +219,7 @@ $_ZZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKczE3buf = comdat an @_ZZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKczE3buf = linkonce_odr hidden thread_local global %"struct.std::array.139" zeroinitializer, comdat, align 1 @_ZTIN8rawspeed19RawDecoderExceptionE = external constant ptr @_ZTVN8rawspeed19RawDecoderExceptionE = external unnamed_addr constant { [6 x ptr] }, align 8 -@switch.table._ZNK8rawspeed10Cr2Decoder14getSubSamplingEv = private unnamed_addr constant [3 x i64] [i64 4294967296, i64 8589934592, i64 4294967296], align 8 -@switch.table._ZNK8rawspeed10Cr2Decoder14getSubSamplingEv.11 = private unnamed_addr constant [3 x i64] [i64 1, i64 2, i64 2], align 8 +@switch.table._ZNK8rawspeed10Cr2Decoder14getSubSamplingEv = private unnamed_addr constant [3 x i64] [i64 4294967297, i64 8589934594, i64 4294967298], align 8 @switch.table._ZNK8rawspeed10Cr2Decoder20decodeCanonColorDataEv = private unnamed_addr constant [8 x i32] [i32 25, i32 34, i32 63, i32 63, i32 71, i32 63, i32 63, i32 63], align 4 ; Function Attrs: mustprogress uwtable @@ -1360,7 +1359,7 @@ define hidden noundef zeroext i1 @_ZNK8rawspeed10Cr2Decoder12isSubSampledEv(ptr } ; Function Attrs: mustprogress uwtable -define hidden range(i64 4294967296, 8589934596) i64 @_ZNK8rawspeed10Cr2Decoder14getSubSamplingEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(112) %0) local_unnamed_addr #0 align 2 { +define hidden range(i64 4294967297, 8589934595) i64 @_ZNK8rawspeed10Cr2Decoder14getSubSamplingEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(112) %0) local_unnamed_addr #0 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 96 %3 = load ptr, ptr %2, align 8, !tbaa !16 %4 = tail call noundef ptr @_ZNK8rawspeed7TiffIFD17getEntryRecursiveENS_7TiffTagE(ptr noundef nonnull align 8 dereferenceable(104) %3, i16 noundef zeroext 1) #29 @@ -1385,7 +1384,7 @@ define hidden range(i64 4294967296, 8589934596) i64 @_ZNK8rawspeed10Cr2Decoder14 %11 = getelementptr inbounds nuw i8, ptr %4, i64 44 %12 = load i32, ptr %11, align 4, !tbaa !85 %13 = icmp ult i32 %12, 47 - br i1 %13, label %22, label %14 + br i1 %13, label %20, label %14 14: ; preds = %10 %15 = tail call noundef zeroext i16 @_ZNK8rawspeed9TiffEntry6getU16Ej(ptr noundef nonnull align 8 dereferenceable(48) %4, i32 noundef 46) @@ -1401,15 +1400,11 @@ switch.lookup: ; preds = %14 %19 = zext nneg i16 %15 to i64 %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table._ZNK8rawspeed10Cr2Decoder14getSubSamplingEv, i64 %19 %switch.load = load i64, ptr %switch.gep, align 8 - %20 = zext nneg i16 %15 to i64 - %switch.gep7 = getelementptr inbounds nuw i64, ptr @switch.table._ZNK8rawspeed10Cr2Decoder14getSubSamplingEv.11, i64 %20 - %switch.load8 = load i64, ptr %switch.gep7, align 8 - %21 = or disjoint i64 %switch.load8, %switch.load - br label %22 - -22: ; preds = %switch.lookup, %10 - %.sroa.0.0.insert.insert = phi i64 [ 4294967297, %10 ], [ %21, %switch.lookup ] - ret i64 %.sroa.0.0.insert.insert + br label %20 + +20:; preds = %switch.lookup, %10 + %.sroa.5.0 = phi i64 [ 4294967297, %10 ], [ %switch.load, %switch.lookup ] + ret i64 %.sroa.5.0 } declare noundef zeroext i16 @_ZNK8rawspeed9TiffEntry6getU16Ej(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) local_unnamed_addr #1 diff --git a/bench/darktable/optimized/accelerators.ll b/bench/darktable/optimized/accelerators.ll index 00de23bfdee..05b8ffd4aea 100644 --- a/bench/darktable/optimized/accelerators.ll +++ b/bench/darktable/optimized/accelerators.ll @@ -1658,16 +1658,16 @@ _action_find_definition.exit.thread101: ; preds = %_action_find_defini %219 = getelementptr inbounds nuw i8, ptr %0, i64 16 %220 = load i32, ptr %219, align 8, !tbaa !89 %.not14.i = icmp ne i32 %220, 0 + %221 = or i1 %3, %.not14.i + %222 = select i1 %221, ptr @.str.201, ptr @.str.5 br label %_shortcut_is_speed.exit _shortcut_is_speed.exit: ; preds = %197, %203, %206, %210, %213, %218 - %.not91 = phi i1 [ true, %213 ], [ true, %210 ], [ true, %206 ], [ true, %203 ], [ true, %197 ], [ %.not14.i, %218 ] - %221 = or i1 %3, %.not91 - %222 = select i1 %221, ptr @.str.201, ptr @.str.5 + %.not91 = phi ptr [ @.str.201, %213 ], [ @.str.201, %210 ], [ @.str.201, %206 ], [ @.str.201, %203 ], [ @.str.201, %197 ], [ %222, %218 ] %223 = tail call ptr @dcgettext(ptr noundef null, ptr noundef nonnull @.str.115, i32 noundef 5) #24 %224 = load float, ptr %193, align 8, !tbaa !125 %225 = fpext reassoc nsz arcp contract afn float %224 to double - %226 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %199, i64 noundef %200, ptr noundef nonnull @.str.200, ptr noundef nonnull %222, ptr noundef %223, double noundef %225) #24 + %226 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %199, i64 noundef %200, ptr noundef nonnull @.str.200, ptr noundef nonnull %.not91, ptr noundef %223, double noundef %225) #24 br label %227 227: ; preds = %_shortcut_is_speed.exit, %185, %183, %_action_find_definition.exit.thread101 @@ -13920,15 +13920,17 @@ _action_find_elements.exit: ; preds = %131, %150, %_action %202 = getelementptr inbounds nuw i8, ptr %23, i64 16 %203 = load i32, ptr %202, align 8, !tbaa !89 %.not14.i134 = icmp ne i32 %203, 0 - br label %_shortcut_is_speed.exit135 + %204 = and i1 %.lcssa, %.not14.i134 + br i1 %204, label %.preheader.preheader, label %.loopexit + +_shortcut_is_speed.exit135: ; preds = %183, %186, %189, %193, %196 + br i1 %.lcssa, label %.preheader.preheader, label %.loopexit -_shortcut_is_speed.exit135: ; preds = %183, %186, %189, %193, %196, %201 - %204 = phi i1 [ true, %196 ], [ true, %193 ], [ true, %189 ], [ true, %186 ], [ true, %183 ], [ %.not14.i134, %201 ] - %or.cond3 = and i1 %.lcssa, %204 - br i1 %or.cond3, label %.preheader, label %.loopexit +_shortcut_is_speed.exit135: ; preds = %201, %_shortcut_is_speed.exit135 + br label %.preheader .preheader: ; preds = %_shortcut_is_speed.exit135, %235 - %.182 = phi ptr [ %237, %235 ], [ %.081.lcssa, %_shortcut_is_speed.exit135 ] + %.182 = phi ptr [ %237, %235 ], [ %.081.lcssa, %.preheader.preheader ] %205 = load i32, ptr %.182, align 8, !tbaa !94 %206 = icmp eq i32 %205, 4 br i1 %206, label %207, label %235 @@ -13983,10 +13985,10 @@ _shortcut_is_speed.exit135: ; preds = %183, %186, %189, %1 %.old2.not = icmp eq ptr %237, null br i1 %.old2.not, label %.loopexit, label %.preheader -.loopexit: ; preds = %235, %112, %114, %.critedge114, %65, %67, %180, %207, %210, %231, %.critedge, %_shortcut_is_speed.exit135, %_shortcut_is_speed.exit126.thread, %75, %_shortcut_is_speed.exit126, %_shortcut_is_speed.exit.thread, %60, %35, %_shortcut_is_speed.exit, %32, %33, %29 - %.184 = phi i32 [ 400, %.critedge ], [ 400, %29 ], [ 400, %33 ], [ 400, %32 ], [ 400, %35 ], [ 400, %_shortcut_is_speed.exit ], [ 400, %60 ], [ 400, %_shortcut_is_speed.exit.thread ], [ 400, %75 ], [ 400, %_shortcut_is_speed.exit126 ], [ 400, %_shortcut_is_speed.exit126.thread ], [ 400, %_shortcut_is_speed.exit135 ], [ %.487, %180 ], [ 400, %210 ], [ %spec.select117, %231 ], [ 400, %207 ], [ %74, %67 ], [ 300, %65 ], [ %130, %.critedge114 ], [ 300, %114 ], [ 400, %112 ], [ 400, %235 ] - %.178 = phi i32 [ 0, %.critedge ], [ 0, %29 ], [ 0, %33 ], [ 0, %32 ], [ 0, %35 ], [ 0, %_shortcut_is_speed.exit ], [ 0, %60 ], [ 0, %_shortcut_is_speed.exit.thread ], [ 0, %75 ], [ 0, %_shortcut_is_speed.exit126 ], [ 0, %_shortcut_is_speed.exit126.thread ], [ 0, %_shortcut_is_speed.exit135 ], [ %spec.select116, %180 ], [ 0, %210 ], [ 1, %231 ], [ 0, %207 ], [ 1, %67 ], [ 1, %65 ], [ 1, %.critedge114 ], [ 1, %114 ], [ 1, %112 ], [ 0, %235 ] - %.1 = phi ptr [ null, %.critedge ], [ %31, %29 ], [ %34, %33 ], [ null, %32 ], [ null, %35 ], [ null, %_shortcut_is_speed.exit ], [ null, %60 ], [ null, %_shortcut_is_speed.exit.thread ], [ null, %75 ], [ null, %_shortcut_is_speed.exit126 ], [ null, %_shortcut_is_speed.exit126.thread ], [ null, %_shortcut_is_speed.exit135 ], [ %.4, %180 ], [ null, %210 ], [ %232, %231 ], [ null, %207 ], [ %72, %67 ], [ null, %65 ], [ %128, %.critedge114 ], [ null, %114 ], [ null, %112 ], [ null, %235 ] +.loopexit: ; preds = %235, %201, %112, %114, %.critedge114, %65, %67, %180, %207, %210, %231, %.critedge, %_shortcut_is_speed.exit135, %_shortcut_is_speed.exit126.thread, %75, %_shortcut_is_speed.exit126, %_shortcut_is_speed.exit.thread, %60, %35, %_shortcut_is_speed.exit, %32, %33, %29 + %.184 = phi i32 [ 400, %.critedge ], [ 400, %29 ], [ 400, %33 ], [ 400, %32 ], [ 400, %35 ], [ 400, %_shortcut_is_speed.exit ], [ 400, %60 ], [ 400, %_shortcut_is_speed.exit.thread ], [ 400, %75 ], [ 400, %_shortcut_is_speed.exit126 ], [ 400, %_shortcut_is_speed.exit126.thread ], [ 400, %_shortcut_is_speed.exit135 ], [ %.487, %180 ], [ 400, %210 ], [ %spec.select117, %231 ], [ 400, %207 ], [ %74, %67 ], [ 300, %65 ], [ %130, %.critedge114 ], [ 300, %114 ], [ 400, %112 ], [ 400, %201 ], [ 400, %235 ] + %.178 = phi i32 [ 0, %.critedge ], [ 0, %29 ], [ 0, %33 ], [ 0, %32 ], [ 0, %35 ], [ 0, %_shortcut_is_speed.exit ], [ 0, %60 ], [ 0, %_shortcut_is_speed.exit.thread ], [ 0, %75 ], [ 0, %_shortcut_is_speed.exit126 ], [ 0, %_shortcut_is_speed.exit126.thread ], [ 0, %_shortcut_is_speed.exit135 ], [ %spec.select116, %180 ], [ 0, %210 ], [ 1, %231 ], [ 0, %207 ], [ 1, %67 ], [ 1, %65 ], [ 1, %.critedge114 ], [ 1, %114 ], [ 1, %112 ], [ 0, %201 ], [ 0, %235 ] + %.1 = phi ptr [ null, %.critedge ], [ %31, %29 ], [ %34, %33 ], [ null, %32 ], [ null, %35 ], [ null, %_shortcut_is_speed.exit ], [ null, %60 ], [ null, %_shortcut_is_speed.exit.thread ], [ null, %75 ], [ null, %_shortcut_is_speed.exit126 ], [ null, %_shortcut_is_speed.exit126.thread ], [ null, %_shortcut_is_speed.exit135 ], [ %.4, %180 ], [ null, %210 ], [ %232, %231 ], [ null, %207 ], [ %72, %67 ], [ null, %65 ], [ %128, %.critedge114 ], [ null, %114 ], [ null, %112 ], [ null, %201 ], [ null, %235 ] %238 = load i32, ptr %23, align 8, !tbaa !82 %.not112 = icmp eq i32 %238, 0 %spec.select118 = select i1 %.not112, i32 0, i32 %.178 diff --git a/bench/darktable/optimized/gtk.ll b/bench/darktable/optimized/gtk.ll index 2c97199cd37..59c72810006 100644 --- a/bench/darktable/optimized/gtk.ll +++ b/bench/darktable/optimized/gtk.ll @@ -678,39 +678,35 @@ define range(i32 0, 2) i32 @dt_gui_get_scroll_delta(ptr noundef %0, ptr noundef switch i32 %6, label %dt_gui_get_scroll_deltas.exit [ i32 2, label %.sink.split.i i32 3, label %.thread47.i - i32 0, label %7 - i32 1, label %8 - i32 4, label %9 + i32 0, label %.sink.split.i + i32 1, label %13 + i32 4, label %7 ] 7: ; preds = %4 - br label %.thread47.i - -8: ; preds = %4 - br label %.thread47.i - -9: ; preds = %4 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %11 = load double, ptr %10, align 8, !tbaa !60 - %12 = fcmp reassoc nsz arcp contract afn une double %11, 0.000000e+00 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %9 = load double, ptr %8, align 8, !tbaa !60 + %10 = fcmp reassoc nsz arcp contract afn une double %9, 0.000000e+00 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 80 %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !61 %13 = fcmp reassoc nsz arcp contract afn une double %.pre, 0.000000e+00 - %or.cond = select i1 %12, i1 true, i1 %13 + %or.cond = select i1 %10, i1 true, i1 %13 br i1 %or.cond, label %.thread47.i, label %dt_gui_get_scroll_deltas.exit -.sink.split.i: ; preds = %4 - br label %.thread47.i +.sink.split.i: ; preds = %7 + %12 = fadd reassoc nsz arcp contract afn double %.pre, %9 + br label %13 + +.sink.split.i: ; preds = %4, %4 + br label %13 -.thread47.i: ; preds = %9, %4, %8, %7, %.sink.split.i - %.2.ph = phi double [ -1.000000e+00, %.sink.split.i ], [ 0.000000e+00, %8 ], [ 0.000000e+00, %7 ], [ 1.000000e+00, %4 ], [ %11, %9 ] - %.03.ph = phi double [ 0.000000e+00, %.sink.split.i ], [ 1.000000e+00, %8 ], [ -1.000000e+00, %7 ], [ 0.000000e+00, %4 ], [ %.pre, %9 ] - %14 = fadd reassoc nsz arcp contract afn double %.03.ph, %.2.ph - store double %14, ptr %1, align 8, !tbaa !59 +.thread47.i: ; preds = %4, %4, %.thread47.i, %.sink.split.i + %.2.ph = phi double [ -1.000000e+00, %.sink.split.i ], [ %12, %.thread47.i ], [ 1.000000e+00, %4 ], [ 1.000000e+00, %4 ] + store double %.2.ph, ptr %1, align 8, !tbaa !59 br label %dt_gui_get_scroll_deltas.exit -dt_gui_get_scroll_deltas.exit: ; preds = %9, %4, %2, %.thread47.i - %.0 = phi i32 [ 1, %.thread47.i ], [ 0, %2 ], [ 0, %4 ], [ 0, %9 ] +dt_gui_get_scroll_deltas.exit: ; preds = %7, %4, %2, %.thread47.i + %.0 = phi i32 [ 1, %13 ], [ 0, %2 ], [ 0, %4 ], [ 0, %7 ] ret i32 %.0 } diff --git a/bench/delta-rs/optimized/1rw3q64nilk4jthd.ll b/bench/delta-rs/optimized/1rw3q64nilk4jthd.ll index 29cba1910ff..dd0f82267bc 100644 --- a/bench/delta-rs/optimized/1rw3q64nilk4jthd.ll +++ b/bench/delta-rs/optimized/1rw3q64nilk4jthd.ll @@ -129325,23 +129325,22 @@ _ZN14deltalake_core10operations11transaction8protocol15ProtocolChecker21contains %28 = tail call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hd96a24c57c741fe5E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %27, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e68c98984d05f4ab0d2a6f8791335996.1218.llvm.240573438051967091) %29 = tail call noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17he7812e4283a56e6cE.llvm.18123795597341512700"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %19, i64 noundef %28, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e68c98984d05f4ab0d2a6f8791335996.1218.llvm.240573438051967091) %30 = icmp ne ptr %29, null - br label %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h8e6e97a44b6aadefE.exit" + %31 = or i1 %.not.not.not.i.not.not.not.i.not.not.not.i.not, %30 + br i1 %31, label %33, label %32 -"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h8e6e97a44b6aadefE.exit": ; preds = %22, %26 - %.0.i = phi i1 [ %30, %26 ], [ false, %22 ] - %brmerge = or i1 %.not.not.not.i.not.not.not.i.not.not.not.i.not, %.0.i - br i1 %brmerge, label %32, label %31 +"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h8e6e97a44b6aadefE.exit": ; preds = %22 + br i1 %.not.not.not.i.not.not.not.i.not.not.not.i.not, label %33, label %32 select.unfold: ; preds = %18, %_ZN14deltalake_core10operations11transaction8protocol15ProtocolChecker21contains_timestampntz17h3521f2f2fade9b9aE.exit br i1 %.not.not.not.i.not.not.not.i.not.not.not.i.not, label %32, label %33 -31: ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h8e6e97a44b6aadefE.exit" +31: ; preds = %26, %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h8e6e97a44b6aadefE.exit" store i64 24, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 -9223372036854775799, ptr %.sroa.4.0..sroa_idx, align 8 br label %34 -32: ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h8e6e97a44b6aadefE.exit", %select.unfold +32: ; preds = %26, %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h8e6e97a44b6aadefE.exit", %select.unfold store i64 27, ptr %0, align 8 br label %34 diff --git a/bench/draco/optimized/symbol_encoding.ll b/bench/draco/optimized/symbol_encoding.ll index 8ea077e4d93..ef669c95499 100644 --- a/bench/draco/optimized/symbol_encoding.ll +++ b/bench/draco/optimized/symbol_encoding.ll @@ -894,12 +894,16 @@ _ZNSt6vectorIjSaIjEEC2ERKS1_.exit: ; preds = %97, %.noexc67.threa %.not.i68 = icmp eq ptr %99, %100 br i1 %.not.i68, label %._crit_edge.i71, label %.lr.ph.i69 -._crit_edge.i71: ; preds = %.lr.ph.i69, %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit - %.0.lcssa.i = phi i64 [ 0, %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit ], [ %110, %.lr.ph.i69 ] +._crit_edge.i71: ; preds = %.lr.ph.i69 + %105 = mul i64 %110, %24 + br label %._crit_edge.i71 + +._crit_edge.i71: ; preds = %._crit_edge.i71.loopexit, %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit + %.0.lcssa.i = phi i64 [ 0, %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit ], [ %105, %._crit_edge.i71.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %9) %105 = trunc i64 %104 to i32 %106 = invoke noundef i64 @_ZN5draco21ComputeShannonEntropyEPKjiiPi(ptr noundef %100, i32 noundef %105, i32 noundef 32, ptr noundef nonnull %9) - to label %112 unwind label %183 + to label %113 unwind label %183 .lr.ph.i69: ; preds = %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit, %.lr.ph.i69 %.02.i = phi i64 [ %110, %.lr.ph.i69 ], [ 0, %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit ] @@ -917,9 +921,8 @@ _ZNSt6vectorIjSaIjEEC2ERKS1_.exit: ; preds = %97, %.noexc67.threa %114 = shl nsw i32 %113, 3 %115 = sext i32 %114 to i64 %116 = shl nsw i64 %115, 1 - %117 = mul i64 %.0.lcssa.i, %24 - %118 = add i64 %106, %117 - %119 = add i64 %118, %116 + %118 = add i64 %107, %.0.lcssa.i + %118 = add i64 %118, %117 call void @llvm.lifetime.end.p0(ptr nonnull %9) %.not.i.i.i73 = icmp eq ptr %100, null br i1 %.not.i.i.i73, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %120 diff --git a/bench/ffmpeg/optimized/avformat.ll b/bench/ffmpeg/optimized/avformat.ll index 0a80d95da1f..113e51247b3 100644 --- a/bench/ffmpeg/optimized/avformat.ll +++ b/bench/ffmpeg/optimized/avformat.ll @@ -2210,8 +2210,7 @@ define noundef i32 @avformat_transfer_internal_stream_timing_info(ptr noundef re 27: ; preds = %.thread, %25, %19 %28 = phi i1 [ true, %19 ], [ false, %25 ], [ false, %.thread ] - %.sroa.12.0155 = phi i64 [ %18, %19 ], [ %.sroa.12.0156, %25 ], [ %.sroa.12.0156, %.thread ] - %.sroa.041.0153 = phi i64 [ %.sroa.041.0.insert.ext, %19 ], [ 0, %25 ], [ 0, %.thread ] + %.sroa.12.0155 = phi i64 [ %.sroa.041.0.insert.insert, %19 ], [ %.sroa.12.0156, %25 ], [ %.sroa.12.0156, %.thread ] %.sroa.027.0 = phi i32 [ %.sroa.027.0.extract.trunc, %19 ], [ %.sroa.027.0.copyload, %25 ], [ 0, %.thread ] %.sroa.13.0 = phi i32 [ %.sroa.13.0.extract.trunc, %19 ], [ %.sroa.13.0.copyload, %25 ], [ 1, %.thread ] %29 = getelementptr inbounds nuw i8, ptr %2, i64 32 @@ -2295,8 +2294,7 @@ define noundef i32 @avformat_transfer_internal_stream_timing_info(ptr noundef re br i1 %28, label %65, label %.thread162 65: ; preds = %.thread157 - %.sroa.041.0.insert.insert50 = or disjoint i64 %.sroa.041.0153, %.sroa.12.0155 - %.sroa.01.0.insert.insert.i110 = tail call i64 @llvm.fshl.i64(i64 %.sroa.041.0.insert.insert50, i64 %.sroa.041.0.insert.insert50, i64 32) + %.sroa.01.0.insert.insert.i110 = tail call i64 @llvm.fshl.i64(i64 %.sroa.12.0155, i64 %.sroa.12.0155, i64 32) %.sroa.0.0.extract.trunc.i133 = trunc i64 %.sroa.01.0.insert.insert.i110 to i32 %.sroa.2.0.extract.shift.i134 = lshr i64 %.sroa.01.0.insert.insert.i110, 32 %.sroa.2.0.extract.trunc.i135 = trunc nuw i64 %.sroa.2.0.extract.shift.i134 to i32 @@ -2348,8 +2346,7 @@ define noundef i32 @avformat_transfer_internal_stream_timing_info(ptr noundef re br i1 %or.cond9, label %92, label %102 92: ; preds = %90 - %.sroa.041.0.insert.insert54 = or disjoint i64 %.sroa.041.0153, %.sroa.12.0155 - %.sroa.01.0.insert.insert.i111 = tail call i64 @llvm.fshl.i64(i64 %.sroa.041.0.insert.insert54, i64 %.sroa.041.0.insert.insert54, i64 32) + %.sroa.01.0.insert.insert.i111 = tail call i64 @llvm.fshl.i64(i64 %.sroa.12.0155, i64 %.sroa.12.0155, i64 32) %.sroa.0.0.extract.trunc.i142 = trunc i64 %.sroa.01.0.insert.insert.i111 to i32 %.sroa.2.0.extract.shift.i143 = lshr i64 %.sroa.01.0.insert.insert.i111, 32 %.sroa.2.0.extract.trunc.i144 = trunc nuw i64 %.sroa.2.0.extract.shift.i143 to i32 diff --git a/bench/ffmpeg/optimized/mpegvideo_enc.ll b/bench/ffmpeg/optimized/mpegvideo_enc.ll index 7fcf8996dbe..aee68c26b42 100644 --- a/bench/ffmpeg/optimized/mpegvideo_enc.ll +++ b/bench/ffmpeg/optimized/mpegvideo_enc.ll @@ -15895,13 +15895,16 @@ define internal fastcc void @get_visual_weight(ptr noundef nonnull writeonly cap %27 = icmp samesign ult i64 %indvars.iv.next68, %10 br i1 %27, label %.lr.ph.us, label %._crit_edge53, !llvm.loop !544 -._crit_edge53: ; preds = %._crit_edge.us, %.lr.ph52, %11 - %.036.lcssa = phi i32 [ 0, %11 ], [ 0, %.lr.ph52 ], [ %22, %._crit_edge.us ] - %.034.lcssa = phi i32 [ 0, %11 ], [ 0, %.lr.ph52 ], [ %24, %._crit_edge.us ] - %.033.lcssa = phi i32 [ 0, %11 ], [ 0, %.lr.ph52 ], [ %25, %._crit_edge.us ] - %28 = mul nsw i32 %.033.lcssa, %.034.lcssa - %29 = mul nsw i32 %.036.lcssa, %.036.lcssa - %30 = sub nsw i32 %28, %29 +._crit_edge53: ; preds = %._crit_edge.us + %28 = mul nsw i32 %22, %22 + br label %._crit_edge53 + +._crit_edge53:; preds = %.lr.ph52, %._crit_edge53.loopexit62, %11 + %.036.lcssa = phi i32 [ 0, %11 ], [ %28, %._crit_edge53.loopexit62 ], [ 0, %.lr.ph52 ] + %.034.lcssa = phi i32 [ 0, %11 ], [ %24, %._crit_edge53.loopexit62 ], [ 0, %.lr.ph52 ] + %.033.lcssa = phi i32 [ 0, %11 ], [ %25, %._crit_edge53.loopexit62 ], [ 0, %.lr.ph52 ] + %29 = mul nsw i32 %.033.lcssa, %.034.lcssa + %30 = sub nsw i32 %29, %.036.lcssa %31 = icmp ult i32 %30, 255 br i1 %31, label %32, label %40 diff --git a/bench/fish-rs/optimized/dyi88lxblgjiro4rib5x24yy5.ll b/bench/fish-rs/optimized/dyi88lxblgjiro4rib5x24yy5.ll index a78f77a61c5..90b85c529ba 100644 --- a/bench/fish-rs/optimized/dyi88lxblgjiro4rib5x24yy5.ll +++ b/bench/fish-rs/optimized/dyi88lxblgjiro4rib5x24yy5.ll @@ -266,9 +266,9 @@ define void @_ZN11fish_printf3arg3Arg8as_float17hbebf32eb5a507c15E(ptr dead_on_u } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable -define range(i64 768, -4294965248) i64 @_ZN11fish_printf3arg3Arg7as_char17hc408ed71f61477d1E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %0) unnamed_addr #3 { +define range(i64 769, -4294965248) i64 @_ZN11fish_printf3arg3Arg7as_char17hc408ed71f61477d1E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %0) unnamed_addr #3 { %2 = load i8, ptr %0, align 8, !range !3, !alias.scope !8, !noalias !11, !noundef !4 - switch i8 %2, label %17 [ + switch i8 %2, label %19 [ i8 4, label %3 i8 5, label %6 ] @@ -282,12 +282,12 @@ define range(i64 768, -4294965248) i64 @_ZN11fish_printf3arg3Arg7as_char17hc408e %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 %8 = load i64, ptr %7, align 8, !alias.scope !8, !noalias !11, !noundef !4 %9 = icmp sgt i64 %8, -1 - br i1 %9, label %_ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit, label %17 + br i1 %9, label %_ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit, label %19 _ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit: ; preds = %6, %3 %.sroa.819.0 = phi i64 [ %5, %3 ], [ %8, %6 ] %10 = icmp ugt i64 %.sroa.819.0, 4294967295 - br i1 %10, label %17, label %11 + br i1 %10, label %19, label %11 11: ; preds = %_ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit %12 = trunc nuw i64 %.sroa.819.0 to i32 @@ -296,15 +296,13 @@ _ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit: ; preds = %6, %3 %15 = icmp ult i32 %14, -1112064 %spec.select = zext i1 %15 to i64 %16 = shl nuw i64 %.sroa.819.0, 32 - br label %17 - -17: ; preds = %6, %1, %_ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit, %11 - %.sroa.81.1 = phi i64 [ %16, %11 ], [ 0, %_ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit ], [ 0, %1 ], [ 0, %6 ] - %.sroa.5.2 = phi i64 [ 1024, %11 ], [ 1024, %_ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit ], [ 768, %1 ], [ 1024, %6 ] - %.sroa.0.2 = phi i64 [ %spec.select, %11 ], [ 1, %_ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit ], [ 1, %1 ], [ 1, %6 ] - %.sroa.5.0.insert.insert = or disjoint i64 %.sroa.5.2, %.sroa.81.1 - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.5.0.insert.insert, %.sroa.0.2 - ret i64 %.sroa.0.0.insert.insert + %17 = or disjoint i64 %16, %spec.select + %18 = or disjoint i64 %17, 1024 + br label %19 + +19:; preds = %6, %1, %_ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit, %11 + %.sroa.0.2 = phi i64 [ %18, %11 ], [ 1025, %_ZN11fish_printf3arg3Arg7as_uint17he29dcf03f8e1b8f2E.exit ], [ 1025, %6 ], [ 769, %1 ] + ret i64 %.sroa.0.2 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable diff --git a/bench/folly/optimized/IPAddressV4.ll b/bench/folly/optimized/IPAddressV4.ll index 0e9aa28e8d0..736de3db964 100644 --- a/bench/folly/optimized/IPAddressV4.ll +++ b/bench/folly/optimized/IPAddressV4.ll @@ -1675,7 +1675,7 @@ define noundef zeroext i1 @_ZN5folly11IPAddressV48validateENS_5RangeIPKcEE(ptr % } ; Function Attrs: mustprogress nounwind uwtable -define range(i64 4294967296, 12884901888) i64 @_ZN5folly11IPAddressV413tryFromStringENS_5RangeIPKcEE(ptr %0, ptr %1) local_unnamed_addr #11 align 2 personality ptr @__gxx_personality_v0 { +define range(i64 4294967296, 8589934593) i64 @_ZN5folly11IPAddressV413tryFromStringENS_5RangeIPKcEE(ptr %0, ptr %1) local_unnamed_addr #11 align 2 personality ptr @__gxx_personality_v0 { %3 = alloca i64, align 8 %4 = alloca %struct.in_addr, align 4 %5 = alloca %"class.std::__cxx11::basic_string", align 8 @@ -1765,14 +1765,13 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %21, % %33 = load i32, ptr %6, align 4, !tbaa !7 call void @llvm.lifetime.end.p0(ptr nonnull %6) %34 = zext i32 %33 to i64 - br label %35 + %35 = or disjoint i64 %34, 4294967296 + br label %36 35: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %32 - %.sroa.03.0 = phi i64 [ %34, %32 ], [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ] - %.sroa.3.0 = phi i64 [ 4294967296, %32 ], [ 8589934592, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ] + %.sroa.03.0 = phi i64 [ %35, %32 ], [ 8589934592, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ] call void @llvm.lifetime.end.p0(ptr nonnull %4) - %.sroa.03.0.insert.insert = or disjoint i64 %.sroa.3.0, %.sroa.03.0 - ret i64 %.sroa.03.0.insert.insert + ret i64 %.sroa.03.0 36: ; preds = %.noexc.i.i.i, %.noexc.i.i %37 = landingpad { ptr, i32 } @@ -4331,9 +4330,13 @@ define i32 @_ZN5folly11IPAddressV410fromBinaryENS_5RangeIPKhEE(ptr %0, ptr %1) l br i1 %.not.i.i.not, label %_ZN5folly11IPAddressV413tryFromBinaryENS_5RangeIPKhEE.exit, label %.critedge _ZN5folly11IPAddressV413tryFromBinaryENS_5RangeIPKhEE.exit: ; preds = %6 - %10 = load i32, ptr %0, align 1 call void @llvm.lifetime.end.p0(ptr nonnull %3) - ret i32 %10 + %10 = call ptr @__cxa_allocate_exception(i64 16) #35 + call void @llvm.lifetime.start.p0(ptr nonnull %4) + call void @llvm.lifetime.start.p0(ptr nonnull %5) + store i64 %9, ptr %5, align 8, !tbaa !19 + invoke void @_ZN5folly2toINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJA55_cmETnNSt9enable_ifIXaasr12IsSomeStringIT_EE5valueoonesZT0_Li1Entsr3std7is_sameIS9_19__type_pack_elementIXmisPvDpT0_ELi1EEJvSC_EEEE5valueEiE4typeELi0EEES9_DpRKSB_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 1 dereferenceable(55) @.str.28, ptr noundef nonnull align 8 dereferenceable(8) %5) + to label %15 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread 11: ; preds = %2 %12 = landingpad { ptr, i32 } @@ -4343,21 +4346,17 @@ _ZN5folly11IPAddressV413tryFromBinaryENS_5RangeIPKhEE.exit: ; preds = %6 unreachable .critedge: ; preds = %6 + %14 = load i32, ptr %0, align 1 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %14 = call ptr @__cxa_allocate_exception(i64 16) #35 - call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @llvm.lifetime.start.p0(ptr nonnull %5) - store i64 %9, ptr %5, align 8, !tbaa !19 - invoke void @_ZN5folly2toINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJA55_cmETnNSt9enable_ifIXaasr12IsSomeStringIT_EE5valueoonesZT0_Li1Entsr3std7is_sameIS9_19__type_pack_elementIXmisPvDpT0_ELi1EEJvSC_EEEE5valueEiE4typeELi0EEES9_DpRKSB_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 1 dereferenceable(55) @.str.28, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %15 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread + ret i32 %14 15: ; preds = %.critedge - invoke void @_ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(32) %4) + invoke void @_ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(32) %4) to label %16 unwind label %18 16: ; preds = %15 - store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVN5folly24IPAddressFormatExceptionE, i64 16), ptr %14, align 8, !tbaa !32 - invoke void @__cxa_throw(ptr nonnull %14, ptr nonnull @_ZTIN5folly24IPAddressFormatExceptionE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #38 + store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVN5folly24IPAddressFormatExceptionE, i64 16), ptr %10, align 8, !tbaa !32 + invoke void @__cxa_throw(ptr nonnull %10, ptr nonnull @_ZTIN5folly24IPAddressFormatExceptionE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #38 to label %27 unwind label %18 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread: ; preds = %.critedge @@ -4391,7 +4390,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %18 25: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit %.pn15 = phi { ptr, i32 } [ %17, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread ], [ %19, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %19, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] - call void @__cxa_free_exception(ptr %14) #35 + call void @__cxa_free_exception(ptr %10) #35 br label %26 26: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %25, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit @@ -4403,7 +4402,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %18 } ; Function Attrs: mustprogress nounwind uwtable -define range(i64 4294967296, 12884901888) i64 @_ZN5folly11IPAddressV413tryFromBinaryENS_5RangeIPKhEE(ptr %0, ptr %1) local_unnamed_addr #11 align 2 personality ptr @__gxx_personality_v0 { +define range(i64 4294967296, 8589934593) i64 @_ZN5folly11IPAddressV413tryFromBinaryENS_5RangeIPKhEE(ptr %0, ptr %1) local_unnamed_addr #11 align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"class.folly::IPAddressV4", align 4 call void @llvm.lifetime.start.p0(ptr nonnull %3) invoke void @_ZN5folly11IPAddressV4C1Ev(ptr noundef nonnull align 4 dereferenceable(4) %3) @@ -4419,14 +4418,13 @@ define range(i64 4294967296, 12884901888) i64 @_ZN5folly11IPAddressV413tryFromBi 8: ; preds = %4 %9 = load i32, ptr %0, align 1 %10 = zext i32 %9 to i64 + %11 = or disjoint i64 %10, 4294967296 br label %_ZNR5folly8ExpectedINS_4UnitENS_20IPAddressFormatErrorEE5errorEv.exit _ZNR5folly8ExpectedINS_4UnitENS_20IPAddressFormatErrorEE5errorEv.exit: ; preds = %4, %8 - %.sroa.06.0 = phi i64 [ %10, %8 ], [ 0, %4 ] - %.sroa.3.0 = phi i64 [ 4294967296, %8 ], [ 8589934592, %4 ] + %.sroa.06.0 = phi i64 [ %11, %8 ], [ 8589934592, %4 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.sroa.06.0.insert.insert = or disjoint i64 %.sroa.3.0, %.sroa.06.0 - ret i64 %.sroa.06.0.insert.insert + ret i64 %.sroa.06.0 11: ; preds = %2 %12 = landingpad { ptr, i32 } diff --git a/bench/folly/optimized/MacAddress.ll b/bench/folly/optimized/MacAddress.ll index 93152f4815e..1e7184d4f18 100644 --- a/bench/folly/optimized/MacAddress.ll +++ b/bench/folly/optimized/MacAddress.ll @@ -236,8 +236,8 @@ define void @_ZN5folly10MacAddress13setFromStringENS_5RangeIPKcEE(ptr noundef no br label %27 27: ; preds = %134, %3 - %indvars.iv.i = phi i64 [ 0, %3 ], [ %indvars.iv.next.i, %134 ] - %.098.i = phi ptr [ %1, %3 ], [ %.4.i, %134 ] + %indvars.iv.i = phi i64 [ 0, %3 ], [ %indvars.iv.next.i, %135 ] + %.098.i = phi ptr [ %1, %3 ], [ %.4.i, %135 ] %28 = icmp eq ptr %.098.i, %2 br i1 %28, label %29, label %49 @@ -594,15 +594,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa %.130.i = phi i8 [ %108, %104 ], [ %79, %110 ], [ %79, %110 ] %132 = getelementptr inbounds nuw i8, ptr %.2.i, i64 2 %133 = shl i8 %.135.i, 4 - br label %134 + %134 = or i8 %133, %.130.i + br label %135 134: ; preds = %131, %101 - %.034.i = phi i8 [ %133, %131 ], [ 0, %101 ] - %.029.i = phi i8 [ %.130.i, %131 ], [ %79, %101 ] + %.034.i = phi i8 [ %134, %131 ], [ %79, %101 ] %.4.i = phi ptr [ %132, %131 ], [ %102, %101 ] - %135 = or i8 %.029.i, %.034.i %136 = getelementptr inbounds nuw i8, ptr %25, i64 %indvars.iv.i - store i8 %135, ptr %136, align 1, !tbaa !26 + store i8 %.034.i, ptr %136, align 1, !tbaa !26 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.i = icmp eq i64 %indvars.iv.next.i, 6 br i1 %exitcond.i, label %.thread90.i, label %27, !llvm.loop !51 @@ -976,8 +975,8 @@ define range(i64 1, 3) i64 @_ZN5folly10MacAddress16trySetFromStringENS_5RangeIPK br label %5 5: ; preds = %32, %3 - %indvars.iv.i = phi i64 [ 0, %3 ], [ %indvars.iv.next.i, %32 ] - %.068.i = phi ptr [ %1, %3 ], [ %.4.i, %32 ] + %indvars.iv.i = phi i64 [ 0, %3 ], [ %indvars.iv.next.i, %33 ] + %.068.i = phi ptr [ %1, %3 ], [ %.4.i, %33 ] %6 = icmp eq ptr %.068.i, %2 br i1 %6, label %"_ZN5folly10MacAddress13setFromStringIZNS0_16trySetFromStringENS_5RangeIPKcEEE3$_0EENS_8ExpectedINS_4UnitENS_21MacAddressFormatErrorEEES5_T_.exit", label %7 @@ -1032,15 +1031,14 @@ define range(i64 1, 3) i64 @_ZN5folly10MacAddress16trySetFromStringENS_5RangeIPK %.130.i = phi i8 [ %26, %22 ], [ %17, %28 ], [ %17, %28 ] %30 = getelementptr inbounds nuw i8, ptr %.2.i, i64 2 %31 = shl i8 %.135.i, 4 - br label %32 + %32 = or i8 %31, %.130.i + br label %33 32: ; preds = %29, %19 - %.034.i = phi i8 [ %31, %29 ], [ 0, %19 ] - %.029.i = phi i8 [ %.130.i, %29 ], [ %17, %19 ] + %.034.i = phi i8 [ %32, %29 ], [ %17, %19 ] %.4.i = phi ptr [ %30, %29 ], [ %20, %19 ] - %33 = or i8 %.029.i, %.034.i %34 = getelementptr inbounds nuw i8, ptr %4, i64 %indvars.iv.i - store i8 %33, ptr %34, align 1, !tbaa !26 + store i8 %.034.i, ptr %34, align 1, !tbaa !26 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.i = icmp eq i64 %indvars.iv.next.i, 6 br i1 %exitcond.i, label %35, label %5, !llvm.loop !71 diff --git a/bench/g2o/optimized/vertex_line2d.ll b/bench/g2o/optimized/vertex_line2d.ll index 2c9f3367e97..a8ed40e6a6d 100644 --- a/bench/g2o/optimized/vertex_line2d.ll +++ b/bench/g2o/optimized/vertex_line2d.ll @@ -472,21 +472,20 @@ _ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi2ELi1E %57 = tail call noundef double @llvm.fabs.f64(double %56) %58 = load double, ptr %.048.i.i.i.sroa.phi, align 8, !tbaa !52, !alias.scope !67 %59 = tail call noundef double @llvm.fabs.f64(double %58) + %60 = fadd double %57, %59 br label %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi1ELi2ELb0EEELi1ELin1ELb0EEEE6lpNormILi1EEEdv.exit.i.i.i _ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi1ELi2ELb0EEELi1ELin1ELb0EEEE6lpNormILi1EEEdv.exit.i.i.i: ; preds = %55, %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEE6lpNormILi1EEEdv.exit.thread.i.i.i - %.0.i.i.i56.i.i.i = phi double [ %57, %55 ], [ %54, %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEE6lpNormILi1EEEdv.exit.thread.i.i.i ] - %.0.i.i.i19.i.i.i = phi double [ %59, %55 ], [ 0.000000e+00, %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEE6lpNormILi1EEEdv.exit.thread.i.i.i ] - %60 = fadd double %.0.i.i.i56.i.i.i, %.0.i.i.i19.i.i.i - %61 = fcmp ogt double %60, %49 + %.0.i.i.i56.i.i.i = phi double [ %60, %55 ], [ %54, %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi2ELi1ELb1EEELin1ELi1ELb0EEEE6lpNormILi1EEEdv.exit.thread.i.i.i ] + %61 = fcmp ogt double %.0.i.i.i56.i.i.i, %49 br i1 %61, label %62, label %63 62: ; preds = %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi1ELi2ELb0EEELi1ELin1ELb0EEEE6lpNormILi1EEEdv.exit.i.i.i - store double %60, ptr %25, align 16, !tbaa !70, !alias.scope !67 + store double %.0.i.i.i56.i.i.i, ptr %25, align 16, !tbaa !70, !alias.scope !67 br label %63 63: ; preds = %62, %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi1ELi2ELb0EEELi1ELin1ELb0EEEE6lpNormILi1EEEdv.exit.i.i.i - %64 = phi double [ %60, %62 ], [ %49, %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi1ELi2ELb0EEELi1ELin1ELb0EEEE6lpNormILi1EEEdv.exit.i.i.i ] + %64 = phi double [ %.0.i.i.i56.i.i.i, %62 ], [ %49, %_ZNK5Eigen10MatrixBaseINS_5BlockINS1_INS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi1ELi2ELb0EEELi1ELin1ELb0EEEE6lpNormILi1EEEdv.exit.i.i.i ] br i1 %.not.i.i.i.i.i.not.i.i.i, label %48, label %26, !llvm.loop !79 65: ; preds = %36, %38 diff --git a/bench/git/optimized/clean.ll b/bench/git/optimized/clean.ll index 881cc4f1967..0887c4d8d12 100644 --- a/bench/git/optimized/clean.ll +++ b/bench/git/optimized/clean.ll @@ -1476,13 +1476,13 @@ _.exit114: ; preds = %138, %_.exit114.sin br label %.sink.split 143: ; preds = %136 - br i1 %.not89, label %144, label %.sink.split + br i1 %.not89, label %144, label %.thread.sink.split 144: ; preds = %143 %145 = load ptr, ptr %30, align 8, !tbaa !89 %146 = call i32 @lstat_cache_aware_rmdir(ptr noundef %145) #16 %147 = icmp eq i32 %146, 0 - br i1 %147, label %.sink.split, label %148 + br i1 %147, label %.thread.sink.split, label %148 148: ; preds = %144 %149 = tail call ptr @__errno_location() #19 @@ -1505,17 +1505,14 @@ _.exit120: ; preds = %148, %154 call void (ptr, ...) @warning_errno(ptr noundef %.0.i119, ptr noundef %157) #16 br label %.sink.split -.sink.split: ; preds = %144, %143, %_.exit120, %_.exit114 - %.sink = phi i32 [ 0, %_.exit114 ], [ 0, %_.exit120 ], [ 1, %143 ], [ 1, %144 ] - %.6.ph = phi i32 [ %.2, %_.exit114 ], [ 1, %_.exit120 ], [ %.2, %143 ], [ %.2, %144 ] - store i32 %.sink, ptr %5, align 4, !tbaa !11 +.sink.split: ; preds = %_.exit120, %_.exit114 + %.sink = phi i32 [ %.2, %_.exit114 ], [ 1, %_.exit120 ] + store i32 0, ptr %5, align 4, !tbaa !11 br label %158 158: ; preds = %.sink.split, %strbuf_setlen.exit111 - %159 = phi i32 [ 0, %strbuf_setlen.exit111 ], [ %.sink, %.sink.split ] %.6 = phi i32 [ %.2, %strbuf_setlen.exit111 ], [ %.6.ph, %.sink.split ] - %160 = or i32 %159, %4 - %or.cond.not = icmp eq i32 %160, 0 + %or.cond.not = icmp eq i32 %4, 0 br i1 %or.cond.not, label %.preheader, label %.thread .preheader: ; preds = %158 @@ -1539,7 +1536,7 @@ _.exit120: ; preds = %148, %154 br label %_.exit123.us _.exit123.us: ; preds = %164, %.lr.ph136.split.us - %166 = phi ptr [ %165, %164 ], [ @.str.80, %.lr.ph136.split.us ] + %166 = phi ptr [ %165, %162 ], [ @.str.80, %.lr.ph136.split.us ] %167 = load ptr, ptr %11, align 8, !tbaa !59 %168 = getelementptr inbounds nuw %struct.string_list_item, ptr %167, i64 %indvars.iv140 %169 = load ptr, ptr %168, align 8, !tbaa !60 @@ -1560,7 +1557,7 @@ _.exit123.us: ; preds = %164, %.lr.ph136.spl br label %_.exit123 _.exit123: ; preds = %174, %.lr.ph136.split - %176 = phi ptr [ %175, %174 ], [ @.str.79, %.lr.ph136.split ] + %176 = phi ptr [ %175, %172 ], [ @.str.79, %.lr.ph136.split ] %177 = load ptr, ptr %11, align 8, !tbaa !59 %178 = getelementptr inbounds nuw %struct.string_list_item, ptr %177, i64 %indvars.iv %179 = load ptr, ptr %178, align 8, !tbaa !60 @@ -1570,9 +1567,10 @@ _.exit123: ; preds = %174, %.lr.ph136.spl %182 = icmp ugt i64 %181, %indvars.iv.next br i1 %182, label %.lr.ph136.split, label %.thread, !llvm.loop !98 -.thread.sink.split: ; preds = %18, %_.exit, %_.exit102 - %.069.ph = phi i32 [ %36, %_.exit102 ], [ 0, %_.exit ], [ 0, %18 ] - store i32 0, ptr %5, align 4, !tbaa !11 +.thread.sink.split: ; preds = %143, %144, %18, %_.exit, %_.exit102 + %.069.ph = phi i32 [ 0, %_.exit102 ], [ 0, %_.exit ], [ 0, %18 ], [ 1, %144 ], [ 1, %143 ] + %.069.ph = phi i32 [ %36, %_.exit102 ], [ 0, %_.exit ], [ 0, %18 ], [ %.2, %144 ], [ %.2, %143 ] + store i32 %.sink, ptr %5, align 4, !tbaa !11 br label %.thread .thread: ; preds = %_.exit123, %_.exit123.us, %.thread.sink.split, %.preheader, %33, %34, %158 diff --git a/bench/git/optimized/config.ll b/bench/git/optimized/config.ll index c2fcbf14eb8..c42967c0513 100644 --- a/bench/git/optimized/config.ll +++ b/bench/git/optimized/config.ll @@ -8801,39 +8801,41 @@ define internal noundef i32 @store_aux(ptr noundef %0, ptr noundef %1, ptr readn %15 = icmp ne ptr %14, null %16 = icmp ne ptr %1, null %or.cond.i = and i1 %16, %15 - br i1 %or.cond.i, label %17, label %19 + br i1 %or.cond.i, label %17, label %20 17: ; preds = %12 %18 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %14, ptr noundef nonnull dereferenceable(1) %1) #30 %.not18.i.not = icmp eq i32 %18, 0 - br i1 %.not18.i.not, label %matches.exit.thread64, label %matches.exit.thread + %19 = zext i1 %.not18.i.not to i32 + br label %matches.exit -19: ; preds = %12 - %20 = getelementptr inbounds nuw i8, ptr %3, i64 32 - %21 = load ptr, ptr %20, align 8, !tbaa !137 - %magicptr.i = ptrtoint ptr %21 to i64 - switch i64 %magicptr.i, label %22 [ +20: ; preds = %12 + %21 = getelementptr inbounds nuw i8, ptr %3, i64 32 + %22 = load ptr, ptr %21, align 8, !tbaa !137 + %magicptr.i = ptrtoint ptr %22 to i64 + switch i64 %magicptr.i, label %23 [ i64 0, label %matches.exit.thread64 i64 1, label %matches.exit.thread ] -22: ; preds = %19 +22: ; preds = %20 %23 = getelementptr inbounds nuw i8, ptr %3, i64 16 %24 = load i32, ptr %23, align 8, !tbaa !136 br i1 %16, label %25, label %matches.exit 25: ; preds = %22 - %26 = tail call i32 @regexec(ptr noundef nonnull %21, ptr noundef nonnull %1, i64 noundef 0, ptr noundef null, i32 noundef 0) #31 + %26 = tail call i32 @regexec(ptr noundef nonnull %22, ptr noundef nonnull %1, i64 noundef 0, ptr noundef null, i32 noundef 0) #31 %.not17.i = icmp eq i32 %26, 0 %27 = zext i1 %.not17.i to i32 + %29 = xor i32 %25, %28 br label %matches.exit -matches.exit: ; preds = %22, %25 - %28 = phi i32 [ 0, %22 ], [ %27, %25 ] - %29 = icmp eq i32 %28, %24 +matches.exit: ; preds = %17, %22, %25 + %28 = phi i32 [ %19, %17 ], [ %25, %23 ], [ %29, %26 ] + %29 = icmp eq i32 %28, 0 br i1 %29, label %matches.exit.thread, label %matches.exit.thread64 -matches.exit.thread64: ; preds = %17, %19, %matches.exit +matches.exit.thread64: ; preds = %20, %matches.exit %30 = getelementptr inbounds nuw i8, ptr %3, i64 72 %31 = load i32, ptr %30, align 8, !tbaa !142 %32 = icmp eq i32 %31, 1 @@ -8958,44 +8960,46 @@ _.exit: ; preds = %37, %39 %98 = icmp ne ptr %97, null %99 = icmp ne ptr %1, null %or.cond.i57 = and i1 %99, %98 - br i1 %or.cond.i57, label %100, label %102 + br i1 %or.cond.i57, label %100, label %103 100: ; preds = %95 %101 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %97, ptr noundef nonnull dereferenceable(1) %1) #30 %.not18.i60.not = icmp eq i32 %101, 0 - br i1 %.not18.i60.not, label %matches.exit61.matches.exit61.thread69_crit_edge, label %matches.exit.thread + %102 = zext i1 %.not18.i60.not to i32 + br label %matches.exit61 -102: ; preds = %95 - %103 = getelementptr inbounds nuw i8, ptr %3, i64 32 - %104 = load ptr, ptr %103, align 8, !tbaa !137 - %magicptr.i58 = ptrtoint ptr %104 to i64 - switch i64 %magicptr.i58, label %105 [ +103: ; preds = %95 + %104 = getelementptr inbounds nuw i8, ptr %3, i64 32 + %105 = load ptr, ptr %104, align 8, !tbaa !137 + %magicptr.i58 = ptrtoint ptr %105 to i64 + switch i64 %magicptr.i58, label %106 [ i64 0, label %matches.exit61.thread69 i64 1, label %matches.exit.thread ] -105: ; preds = %102 +105: ; preds = %103 %106 = getelementptr inbounds nuw i8, ptr %3, i64 16 %107 = load i32, ptr %106, align 8, !tbaa !136 br i1 %99, label %108, label %matches.exit61 108: ; preds = %105 - %109 = tail call i32 @regexec(ptr noundef nonnull %104, ptr noundef nonnull %1, i64 noundef 0, ptr noundef null, i32 noundef 0) #31 + %109 = tail call i32 @regexec(ptr noundef nonnull %105, ptr noundef nonnull %1, i64 noundef 0, ptr noundef null, i32 noundef 0) #31 %.not17.i59 = icmp eq i32 %109, 0 %110 = zext i1 %.not17.i59 to i32 + %112 = xor i32 %108, %111 br label %matches.exit61 -matches.exit61: ; preds = %105, %108 - %111 = phi i32 [ 0, %105 ], [ %110, %108 ] - %112 = icmp eq i32 %111, %107 +matches.exit61: ; preds = %100, %105, %108 + %111 = phi i32 [ %102, %100 ], [ %108, %106 ], [ %112, %109 ] + %112 = icmp eq i32 %111, 0 br i1 %112, label %matches.exit.thread, label %matches.exit61.matches.exit61.thread69_crit_edge -matches.exit61.matches.exit61.thread69_crit_edge: ; preds = %100, %matches.exit61 +matches.exit61.matches.exit61.thread69_crit_edge: ; preds = %matches.exit61 %.pre78 = load i8, ptr %5, align 8 br label %matches.exit61.thread69 -matches.exit61.thread69: ; preds = %matches.exit61.matches.exit61.thread69_crit_edge, %102 - %113 = phi i8 [ %.pre78, %matches.exit61.matches.exit61.thread69_crit_edge ], [ %91, %102 ] +matches.exit61.thread69: ; preds = %matches.exit61.matches.exit61.thread69_crit_edge, %103 + %113 = phi i8 [ %.pre78, %matches.exit61.matches.exit61.thread69_crit_edge ], [ %91, %103 ] %114 = load i32, ptr %68, align 8, !tbaa !142 %115 = add i32 %114, 1 store i32 %115, ptr %68, align 8, !tbaa !142 @@ -9003,7 +9007,7 @@ matches.exit61.thread69: ; preds = %matches.exit61.matc store i8 %116, ptr %5, align 8 br label %matches.exit.thread -matches.exit.thread: ; preds = %100, %17, %102, %83, %19, %8, %65, %matches.exit61.thread69, %matches.exit61, %matches.exit, %56 +matches.exit.thread: ; preds = %103, %83, %20, %8, %65, %matches.exit61.thread69, %matches.exit61, %matches.exit, %56 ret i32 0 } diff --git a/bench/glog/optimized/symbolize.ll b/bench/glog/optimized/symbolize.ll index cdfe966190f..73b32e770f2 100644 --- a/bench/glog/optimized/symbolize.ll +++ b/bench/glog/optimized/symbolize.ll @@ -161,7 +161,7 @@ _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41: ; preds = %5 %57 = load i16, ptr %56, align 4, !tbaa !18 %58 = zext i16 %57 to i64 %.not3177.not = icmp eq i16 %57, 0 - br i1 %.not3177.not, label %.thread, label %.lr.ph + br i1 %.not3177.not, label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread, label %.lr.ph .lr.ph: ; preds = %.preheader %59 = icmp ugt i64 %2, 64 @@ -192,7 +192,7 @@ _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41: ; preds = %5 %72 = tail call i64 @llvm.smax.i64(i64 %68, i64 0) %.223.i49.us = add nuw i64 %72, %.021.i43.us %.0.i50.us = select i1 %70, i32 1, i32 %spec.select28.i48.us - switch i32 %.0.i50.us, label %.thread [ + switch i32 %.0.i50.us, label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread [ i32 0, label %.preheader.i42.us i32 3, label %73 ], !llvm.loop !11 @@ -204,7 +204,7 @@ _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41: ; preds = %5 _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us: ; preds = %73 %74 = icmp eq i64 %.122.i44.us, 64 - br i1 %74, label %.split86.us, label %.thread + br i1 %74, label %.split86.us, label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread .split86.us: ; preds = %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us call void @llvm.lifetime.start.p0(ptr nonnull %7) @@ -215,10 +215,10 @@ _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us: ; preds = %76 = tail call ptr @__errno_location() #21 %77 = load i32, ptr %76, align 4, !tbaa !7 %78 = icmp eq i32 %77, 4 - br i1 %78, label %67, label %.thread, !llvm.loop !9 + br i1 %78, label %67, label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread, !llvm.loop !9 .lr.ph.split: ; preds = %.lr.ph, %105 - %.02778 = phi i64 [ %106, %105 ], [ 0, %.lr.ph ] + %.02778 = phi i64 [ %106, %106 ], [ 0, %.lr.ph ] %79 = mul nuw nsw i64 %.02778, %32 %80 = add i64 %79, %29 br label %.preheader.i42 @@ -243,7 +243,7 @@ _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us: ; preds = %90 = tail call ptr @__errno_location() #21 %91 = load i32, ptr %90, align 4, !tbaa !7 %92 = icmp eq i32 %91, 4 - br i1 %92, label %86, label %.thread, !llvm.loop !9 + br i1 %92, label %86, label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread, !llvm.loop !9 "_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47": ; preds = %86 %93 = icmp slt i64 %87, 0 @@ -252,7 +252,7 @@ _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us: ; preds = %95 = tail call i64 @llvm.smax.i64(i64 %87, i64 0) %.223.i49 = add nuw i64 %95, %.021.i43 %.0.i50 = select i1 %93, i32 1, i32 %spec.select28.i48 - switch i32 %.0.i50, label %.thread [ + switch i32 %.0.i50, label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread [ i32 0, label %.preheader.i42 i32 3, label %96 ], !llvm.loop !11 @@ -267,8 +267,8 @@ _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us: ; preds = unreachable _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51: ; preds = %96 - %.not124.not = icmp ne i64 %.122.i44, 64 - br i1 %.not124.not, label %.thread, label %97 + %.not124.not = icmp eq i64 %.122.i44, 64 + br i1 %.not124.not, label %98, label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread 97: ; preds = %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51 call void @llvm.lifetime.start.p0(ptr nonnull %7) @@ -289,24 +289,18 @@ _ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51: ; preds = %9 br i1 %104, label %.thread58, label %105 .thread58: ; preds = %97, %103, %.split86.us - %.5.ph = phi i1 [ false, %.split86.us ], [ %.not125.not, %103 ], [ %.not125.not, %97 ] + %.5.ph = phi i1 [ false, %.split86.us ], [ %.not125.not, %104 ], [ %.not125.not, %98 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) - br label %.thread + br label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread 105: ; preds = %102, %103 call void @llvm.lifetime.end.p0(ptr nonnull %7) %106 = add nuw nsw i64 %.02778, 1 %exitcond.not = icmp eq i64 %106, %58 - br i1 %exitcond.not, label %.thread, label %.lr.ph.split, !llvm.loop !21 - -.thread: ; preds = %105, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47", %89, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47.us", %75, %.preheader, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us, %.thread58 - %.not3171 = phi i1 [ true, %.thread58 ], [ false, %.preheader ], [ true, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us ], [ true, %75 ], [ true, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47.us" ], [ true, %89 ], [ true, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47" ], [ %.not124.not, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51 ], [ %.not124.not, %105 ] - %.3 = phi i1 [ %.5.ph, %.thread58 ], [ undef, %.preheader ], [ false, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us ], [ false, %75 ], [ false, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47.us" ], [ false, %89 ], [ false, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47" ], [ false, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51 ], [ false, %105 ] - %spec.select = and i1 %.not3171, %.3 - br label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread + br i1 %exitcond.not, label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread, label %.lr.ph.split, !llvm.loop !21 -_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread: ; preds = %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i37", %46, %.thread, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41 - %.1 = phi i1 [ false, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41 ], [ %spec.select, %.thread ], [ false, %46 ], [ false, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i37" ] +_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41.thread: ; preds = %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i37", %46, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51, %106, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47", %89, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47.us", %75, %.thread58, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us, %.preheader, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41 + %.1 = phi i1 [ false, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit41 ], [ %.5.ph, %.thread58 ], [ false, %.preheader ], [ false, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51.us ], [ false, %75 ], [ false, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47.us" ], [ false, %89 ], [ false, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i47" ], [ false, %106 ], [ false, %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit51 ], [ false, %46 ], [ false, %"_ZN6google24glog_internal_namespace_12_GLOBAL__N_112FailureRetryIZNS0_L14ReadFromOffsetEiPvmmE3$_0EEDaT_i.exit.i37" ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %_ZN6google24glog_internal_namespace_L14ReadFromOffsetEiPvmm.exit.thread @@ -1932,11 +1926,9 @@ define internal fastcc noundef zeroext i1 @_ZN6google24glog_internal_namespace_L br i1 %.not39, label %.lr.ph57, label %.thread .thread: ; preds = %._crit_edge, %.lr.ph57, %5, %.thread44 - %.not3950 = phi i1 [ true, %.thread44 ], [ false, %5 ], [ %14, %.lr.ph57 ], [ %14, %._crit_edge ] - %.1 = phi i1 [ true, %.thread44 ], [ undef, %5 ], [ false, %.lr.ph57 ], [ false, %._crit_edge ] - %spec.select40 = and i1 %.not3950, %.1 + %.not3950 = phi i1 [ true, %.thread44 ], [ false, %5 ], [ false, %.lr.ph57 ], [ false, %._crit_edge ] call void @llvm.lifetime.end.p0(ptr nonnull %6) - ret i1 %spec.select40 + ret i1 %.not3950 } ; Function Attrs: mustprogress nofree noinline uwtable diff --git a/bench/graphviz/optimized/circpos.ll b/bench/graphviz/optimized/circpos.ll index 3ff6e7452ba..76164907661 100644 --- a/bench/graphviz/optimized/circpos.ll +++ b/bench/graphviz/optimized/circpos.ll @@ -644,11 +644,16 @@ positionChildren.exit.i: ; preds = %340, %337, %._crit_ %exitcond114.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond114.not.i, label %._crit_edge102.i, label %170, !llvm.loop !76 -._crit_edge102.i: ; preds = %positionChildren.exit.i, %.preheader.i, %gv_calloc.exit.i - %.077.lcssa132141.i = phi double [ %.077.lcssa.i, %.preheader.i ], [ 0.000000e+00, %gv_calloc.exit.i ], [ %.077.lcssa.i, %positionChildren.exit.i ] - %.sroa.10.0.lcssa.i = phi double [ -1.000000e+00, %.preheader.i ], [ -1.000000e+00, %gv_calloc.exit.i ], [ %.081.lcssa.i.i, %positionChildren.exit.i ] - %.sroa.4.0.lcssa.i = phi double [ %24, %.preheader.i ], [ %24, %gv_calloc.exit.i ], [ %347, %positionChildren.exit.i ] - %.sroa.14.0.lcssa.i = phi double [ -1.000000e+00, %.preheader.i ], [ -1.000000e+00, %gv_calloc.exit.i ], [ %.080.lcssa.i.i, %positionChildren.exit.i ] +._crit_edge102.i: ; preds = %positionChildren.exit.i + %348 = fadd double %.081.lcssa.i.i, %.080.lcssa.i.i + %349 = fmul double %348, 5.000000e-01 + %350 = fadd double %349, 0xC00921FB54442D18 + br label %._crit_edge102.i + +._crit_edge102.i: ; preds = %._crit_edge102.loopexit.i, %.preheader.i, %gv_calloc.exit.i + %.077.lcssa132141.i = phi double [ %.077.lcssa.i, %._crit_edge102.loopexit.i ], [ %.077.lcssa.i, %.preheader.i ], [ 0.000000e+00, %gv_calloc.exit.i ] + %.sroa.10.0.lcssa.i = phi double [ %350, %._crit_edge102.loopexit.i ], [ 0xC01090FDAA22168C, %.preheader.i ], [ 0xC01090FDAA22168C, %gv_calloc.exit.i ] + %.sroa.4.0.lcssa.i = phi double [ %347, %._crit_edge102.loopexit.i ], [ %24, %.preheader.i ], [ %24, %gv_calloc.exit.i ] call void @free(ptr noundef %16) #11 %348 = icmp eq i64 %.024.lcssa, 1 br i1 %348, label %349, label %position.exit @@ -667,15 +672,12 @@ positionChildren.exit.i: ; preds = %340, %337, %._crit_ br label %position.exit position.exit: ; preds = %._crit_edge102.i, %349 - %.sroa.4.0.lcssa.sink.i = phi double [ %354, %349 ], [ %.sroa.4.0.lcssa.i, %._crit_edge102.i ] + %.sroa.4.0.lcssa.sink.i = phi double [ %354, %352 ], [ %.sroa.4.0.lcssa.i, %._crit_edge102.i ] store double %.sroa.4.0.lcssa.sink.i, ptr %23, align 8, !tbaa !30 - %358 = fadd double %.sroa.10.0.lcssa.i, %.sroa.14.0.lcssa.i - %359 = fmul double %358, 5.000000e-01 - %360 = fadd double %359, 0xC00921FB54442D18 br label %361 361: ; preds = %position.exit, %._crit_edge - %.025 = phi double [ %360, %position.exit ], [ 0x400921FB54442D18, %._crit_edge ] + %.025 = phi double [ %.sroa.10.0.lcssa.i, %position.exit ], [ 0x400921FB54442D18, %._crit_edge ] %362 = icmp eq i64 %.val, 1 br i1 %362, label %363, label %377 diff --git a/bench/gromacs/optimized/gmx_bundle.ll b/bench/gromacs/optimized/gmx_bundle.ll index e97bfcf2cdb..7da75cca1ce 100644 --- a/bench/gromacs/optimized/gmx_bundle.ll +++ b/bench/gromacs/optimized/gmx_bundle.ll @@ -2074,20 +2074,17 @@ _ZNSt10filesystem7__cxx114pathD2Ev.exit388: ; preds = %_ZNSt10filesystem7_ %.pre216.i = load float, ptr %700, align 16, !tbaa !81 %.pre217.i = load float, ptr %698, align 8, !tbaa !81 %.pre218.i = load float, ptr %701, align 4, !tbaa !81 - invoke void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.50, i32 noundef 139, ptr noundef nonnull %716) - to label %.lr.ph165.i unwind label %.loopexit - -.lr.ph165.i: ; preds = %._crit_edge158.i %775 = fadd float %.pre.i, %.pre214.i %776 = fadd float %.pre215.i, %.pre216.i %777 = fadd float %.pre217.i, %.pre218.i %778 = fmul float %775, 5.000000e-01 %779 = fmul float %776, 5.000000e-01 %780 = fmul float %777, 5.000000e-01 - br label %.lr.ph161.us.i + invoke void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.50, i32 noundef 139, ptr noundef nonnull %716) + to label %.lr.ph161.us.i unwind label %.loopexit -.lr.ph161.us.i: ; preds = %._crit_edge162.us.i, %.lr.ph165.i - %indvars.iv204.i = phi i64 [ 0, %.lr.ph165.i ], [ %indvars.iv.next205.i, %._crit_edge162.us.i ] +.lr.ph161.us.i: ; preds = %._crit_edge158.i, %._crit_edge162.us.i + %indvars.iv204.i = phi i64 [ %indvars.iv.next205.i, %._crit_edge162.us.i ], [ 0, %._crit_edge158.i ] %781 = getelementptr inbounds nuw [3 x float], ptr %4, i64 %indvars.iv204.i %782 = load float, ptr %781, align 4, !tbaa !81 %783 = fsub float %782, %778 diff --git a/bench/grpc/optimized/rbac_service_config_parser.ll b/bench/grpc/optimized/rbac_service_config_parser.ll index 18905789565..44af998699e 100644 --- a/bench/grpc/optimized/rbac_service_config_parser.ll +++ b/bench/grpc/optimized/rbac_service_config_parser.ll @@ -5217,8 +5217,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, %.not = icmp ugt i64 %39, %35 %40 = load i8, ptr %11, align 1, !range !32 call void @llvm.lifetime.end.p0(ptr nonnull %11) - %41 = select i1 %.not, i16 0, i16 256 - %42 = zext nneg i8 %40 to i16 + %41 = zext nneg i8 %40 to i16 + %42 = or disjoint i16 %41, 256 %43 = select i1 %.not, i16 0, i16 %42 br label %46 @@ -5229,8 +5229,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, br label %50 46: ; preds = %38, %22 - %.sroa.2.0 = phi i16 [ %41, %38 ], [ 0, %22 ] - %.sroa.0.0 = phi i16 [ %43, %38 ], [ 0, %22 ] + %.sroa.2.0 = phi i16 [ %43, %38 ], [ 0, %22 ] invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(80) %4) to label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit unwind label %47 @@ -5243,8 +5242,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, _ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit: ; preds = %46 call void @llvm.lifetime.end.p0(ptr nonnull %7) - %.sroa.0.0.insert.insert = or i16 %.sroa.0.0, %.sroa.2.0 - ret i16 %.sroa.0.0.insert.insert + ret i16 %.sroa.2.0 50: ; preds = %44, %31 %.pn = phi { ptr, i32 } [ %45, %44 ], [ %32, %31 ] @@ -7801,8 +7799,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, %.not = icmp ugt i64 %39, %35 %40 = load i32, ptr %11, align 4 call void @llvm.lifetime.end.p0(ptr nonnull %11) - %41 = select i1 %.not, i64 0, i64 4294967296 - %42 = zext i32 %40 to i64 + %41 = zext i32 %40 to i64 + %42 = or disjoint i64 %41, 4294967296 %43 = select i1 %.not, i64 0, i64 %42 br label %46 @@ -7813,8 +7811,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, br label %50 46: ; preds = %38, %22 - %.sroa.2.0 = phi i64 [ %41, %38 ], [ 0, %22 ] - %.sroa.0.0 = phi i64 [ %43, %38 ], [ 0, %22 ] + %.sroa.2.0 = phi i64 [ %43, %38 ], [ 0, %22 ] invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(80) %4) to label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit unwind label %47 @@ -7827,8 +7824,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, _ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit: ; preds = %46 call void @llvm.lifetime.end.p0(ptr nonnull %7) - %.sroa.0.0.insert.insert = or i64 %.sroa.0.0, %.sroa.2.0 - ret i64 %.sroa.0.0.insert.insert + ret i64 %.sroa.2.0 50: ; preds = %44, %31 %.pn = phi { ptr, i32 } [ %45, %44 ], [ %32, %31 ] @@ -7931,8 +7927,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %23, %.not = icmp ugt i64 %38, %34 %.val = load i8, ptr %10, align 1 call void @llvm.lifetime.end.p0(ptr nonnull %10) - %39 = select i1 %.not, i16 0, i16 256 - %40 = zext i8 %.val to i16 + %39 = zext i8 %.val to i16 + %40 = or disjoint i16 %39, 256 %41 = select i1 %.not, i16 0, i16 %40 br label %44 @@ -7943,8 +7939,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %23, br label %48 44: ; preds = %37, %21 - %.sroa.2.0 = phi i16 [ %39, %37 ], [ 0, %21 ] - %.sroa.0.0 = phi i16 [ %41, %37 ], [ 0, %21 ] + %.sroa.2.0 = phi i16 [ %41, %37 ], [ 0, %21 ] invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(80) %4) to label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit unwind label %45 @@ -7957,8 +7952,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %23, _ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit: ; preds = %44 call void @llvm.lifetime.end.p0(ptr nonnull %6) - %.sroa.0.0.insert.insert = or i16 %.sroa.0.0, %.sroa.2.0 - ret i16 %.sroa.0.0.insert.insert + ret i16 %.sroa.2.0 48: ; preds = %42, %30 %.pn = phi { ptr, i32 } [ %43, %42 ], [ %31, %30 ] @@ -15524,8 +15518,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, %.not = icmp ugt i64 %39, %35 %40 = load i32, ptr %11, align 4 call void @llvm.lifetime.end.p0(ptr nonnull %11) - %41 = select i1 %.not, i64 0, i64 4294967296 - %42 = zext i32 %40 to i64 + %41 = zext i32 %40 to i64 + %42 = or disjoint i64 %41, 4294967296 %43 = select i1 %.not, i64 0, i64 %42 br label %46 @@ -15536,8 +15530,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, br label %50 46: ; preds = %38, %22 - %.sroa.2.0 = phi i64 [ %41, %38 ], [ 0, %22 ] - %.sroa.0.0 = phi i64 [ %43, %38 ], [ 0, %22 ] + %.sroa.2.0 = phi i64 [ %43, %38 ], [ 0, %22 ] invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(80) %4) to label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit unwind label %47 @@ -15550,8 +15543,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, _ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit: ; preds = %46 call void @llvm.lifetime.end.p0(ptr nonnull %7) - %.sroa.0.0.insert.insert = or i64 %.sroa.0.0, %.sroa.2.0 - ret i64 %.sroa.0.0.insert.insert + ret i64 %.sroa.2.0 50: ; preds = %44, %31 %.pn = phi { ptr, i32 } [ %45, %44 ], [ %32, %31 ] diff --git a/bench/grpc/optimized/retry_service_config.ll b/bench/grpc/optimized/retry_service_config.ll index 6f835c23d15..9916eb5da98 100644 --- a/bench/grpc/optimized/retry_service_config.ll +++ b/bench/grpc/optimized/retry_service_config.ll @@ -814,7 +814,7 @@ _ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i: ; preds = %_ZNK9grpc_core12exp .preheader: ; preds = %90 %.not130 = icmp ugt i64 %85, 2 - br i1 %.not130, label %._crit_edge, label %.lr.ph.preheader + br i1 %.not130, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %.preheader %92 = xor i64 %.sroa.089.0, 3 @@ -833,15 +833,14 @@ _ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i: ; preds = %_ZNK9grpc_core12exp %exitcond.not = icmp eq i64 %95, %umax br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !41 -._crit_edge: ; preds = %.lr.ph, %.preheader - %.036.lcssa = phi i32 [ 1, %.preheader ], [ %94, %.lr.ph ] - %96 = mul i32 %.036.lcssa, %91 +._crit_edge: ; preds = %.lr.ph + %96 = mul i32 %94, %91 br label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread -_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread: ; preds = %._crit_edge, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i, %_ZNK9grpc_core12experimental4Json6stringB5cxx11Ev.exit - %.0 = phi i32 [ %96, %._crit_edge ], [ 0, %_ZNK9grpc_core12experimental4Json6stringB5cxx11Ev.exit ], [ 0, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i ] - %.sroa.095.0 = phi i64 [ %80, %._crit_edge ], [ 0, %_ZNK9grpc_core12experimental4Json6stringB5cxx11Ev.exit ], [ %76, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i ] - %.038 = phi i32 [ 1000, %._crit_edge ], [ 1, %_ZNK9grpc_core12experimental4Json6stringB5cxx11Ev.exit ], [ 1, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i ] +_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread: ; preds = %.preheader, %._crit_edge, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i, %_ZNK9grpc_core12experimental4Json6stringB5cxx11Ev.exit + %.0 = phi i32 [ 0, %_ZNK9grpc_core12experimental4Json6stringB5cxx11Ev.exit ], [ 0, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i ], [ %91, %.preheader ], [ %96, %._crit_edge.loopexit ] + %.sroa.095.0 = phi i64 [ 0, %_ZNK9grpc_core12experimental4Json6stringB5cxx11Ev.exit ], [ %76, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i ], [ %80, %.preheader ], [ %80, %._crit_edge.loopexit ] + %.038 = phi i32 [ 1, %_ZNK9grpc_core12experimental4Json6stringB5cxx11Ev.exit ], [ 1, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i ], [ 1000, %.preheader ], [ 1000, %._crit_edge.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %5) %97 = invoke noundef zeroext i1 @_ZN4absl12lts_2024072216numbers_internal18safe_strtou32_baseESt17basic_string_viewIcSt11char_traitsIcEEPji(i64 %.sroa.095.0, ptr %74, ptr noundef nonnull %5, i32 noundef 10) to label %98 unwind label %100 @@ -985,8 +984,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, %.not = icmp ugt i64 %39, %35 %40 = load i32, ptr %11, align 4 call void @llvm.lifetime.end.p0(ptr nonnull %11) - %41 = select i1 %.not, i64 0, i64 4294967296 - %42 = zext i32 %40 to i64 + %41 = zext i32 %40 to i64 + %42 = or disjoint i64 %41, 4294967296 %43 = select i1 %.not, i64 0, i64 %42 br label %46 @@ -997,8 +996,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, br label %50 46: ; preds = %38, %22 - %.sroa.2.0 = phi i64 [ %41, %38 ], [ 0, %22 ] - %.sroa.0.0 = phi i64 [ %43, %38 ], [ 0, %22 ] + %.sroa.2.0 = phi i64 [ %43, %38 ], [ 0, %22 ] invoke void @_ZN9grpc_core16ValidationErrors8PopFieldEv(ptr noundef nonnull align 8 dereferenceable(80) %4) to label %_ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit unwind label %47 @@ -1011,8 +1009,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit25: ; preds = %24, _ZN9grpc_core16ValidationErrors11ScopedFieldD2Ev.exit: ; preds = %46 call void @llvm.lifetime.end.p0(ptr nonnull %7) - %.sroa.0.0.insert.insert = or i64 %.sroa.0.0, %.sroa.2.0 - ret i64 %.sroa.0.0.insert.insert + ret i64 %.sroa.2.0 50: ; preds = %44, %31 %.pn = phi { ptr, i32 } [ %45, %44 ], [ %32, %31 ] diff --git a/bench/hdf5/optimized/H5MFaggr.ll b/bench/hdf5/optimized/H5MFaggr.ll index eaa26c66107..7cab60ed37d 100644 --- a/bench/hdf5/optimized/H5MFaggr.ll +++ b/bench/hdf5/optimized/H5MFaggr.ll @@ -1151,13 +1151,8 @@ define range(i32 -1, 2) i32 @H5MF__aggrs_try_shrink_eoa(ptr noundef %0) local_un %98 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5MF__aggrs_try_shrink_eoa, i32 noundef 907, i64 noundef %96, i64 noundef %97, ptr noundef nonnull @.str.9) #6 br label %100 -.thread35: ; preds = %75, %90, %64, %61, %.thread - %.0.i20.ph38 = phi i32 [ 0, %.thread ], [ 0, %61 ], [ 0, %64 ], [ 1, %90 ], [ 1, %75 ] - %99 = or i32 %.0.i20.ph38, %.0.i.ph30 - br label %100 - -100: ; preds = %20, %44, %68, %92, %.thread35, %1 - %.0 = phi i32 [ -1, %20 ], [ -1, %44 ], [ -1, %68 ], [ -1, %92 ], [ %99, %.thread35 ], [ -1, %1 ] +100: ; preds = %.thread, %61, %64, %90, %75, %20, %44, %68, %92, %1 + %.0 = phi i32 [ -1, %20 ], [ -1, %44 ], [ -1, %68 ], [ -1, %92 ], [ -1, %1 ], [ %.0.i.ph30, %.thread ], [ %.0.i.ph30, %61 ], [ %.0.i.ph30, %64 ], [ 1, %90 ], [ 1, %75 ] ret i32 %.0 } diff --git a/bench/hdf5/optimized/H5Tconv_integer.ll b/bench/hdf5/optimized/H5Tconv_integer.ll index 81de5b585fa..e6fdb5dc677 100644 --- a/bench/hdf5/optimized/H5Tconv_integer.ll +++ b/bench/hdf5/optimized/H5Tconv_integer.ll @@ -382,7 +382,8 @@ define range(i32 -1, 1) i32 @H5T__conv_i_i(ptr noundef %0, ptr noundef readonly %.0407474.ph = phi ptr [ %101, %92 ], [ %7, %85 ], [ %7, %104 ] %.0412472.ph = phi ptr [ %103, %92 ], [ %7, %85 ], [ %7, %104 ] %105 = mul nsw i64 %.0378478.ph, %77 - br label %106 + %106 = mul nsw i64 %.0378478.ph, %81 + br label %107 106: ; preds = %104, %.thread %107 = phi i64 [ %105, %.thread ], [ %5, %104 ] @@ -390,9 +391,7 @@ define range(i32 -1, 1) i32 @H5T__conv_i_i(ptr noundef %0, ptr noundef readonly %.0407474491 = phi ptr [ %.0407474.ph, %.thread ], [ %7, %104 ] %.0381476489 = phi i64 [ %.0381476.ph, %.thread ], [ %4, %104 ] %108 = phi i1 [ %.ph480, %.thread ], [ true, %104 ] - %.0378478487 = phi i64 [ %.0378478.ph, %.thread ], [ 1, %104 ] - %109 = phi i64 [ %81, %.thread ], [ %5, %104 ] - %110 = mul nsw i64 %109, %.0378478487 + %.0378478487 = phi i64 [ %106, %.thread ], [ %5, %104 ] %111 = load ptr, ptr %3, align 8, !tbaa !25 %.not445 = icmp eq ptr %111, null br i1 %.not445, label %119, label %112 @@ -409,7 +408,7 @@ define range(i32 -1, 1) i32 @H5T__conv_i_i(ptr noundef %0, ptr noundef readonly br label %.thread558 119: ; preds = %112, %106 - %.1411 = phi ptr [ %113, %112 ], [ null, %106 ] + %.1411 = phi ptr [ %113, %112 ], [ null, %107 ] %.not573 = icmp eq i64 %4, 0 br i1 %.not573, label %.loopexit563, label %.lr.ph572 @@ -1375,7 +1374,8 @@ define range(i32 -1, 1) i32 @H5T__conv_i_f_loop(ptr noundef %0, ptr noundef read %.0369423.ph = phi ptr [ %56, %45 ], [ %5, %38 ], [ %5, %57 ] %.0373421.ph = phi ptr [ %54, %45 ], [ %5, %38 ], [ %5, %57 ] %58 = mul nsw i64 %.0365427.ph, %32 - br label %59 + %59 = mul nsw i64 %.0365427.ph, %34 + br label %60 59: ; preds = %57, %.thread %60 = phi i64 [ %58, %.thread ], [ %4, %57 ] @@ -1383,9 +1383,7 @@ define range(i32 -1, 1) i32 @H5T__conv_i_f_loop(ptr noundef %0, ptr noundef read %.0369423440 = phi ptr [ %.0369423.ph, %.thread ], [ %5, %57 ] %.0366425438 = phi i64 [ %.0366425.ph, %.thread ], [ %3, %57 ] %61 = phi i1 [ %.ph429, %.thread ], [ true, %57 ] - %.0365427436 = phi i64 [ %.0365427.ph, %.thread ], [ 1, %57 ] - %62 = phi i64 [ %34, %.thread ], [ %4, %57 ] - %63 = mul nsw i64 %62, %.0365427436 + %.0365427436 = phi i64 [ %59, %.thread ], [ %4, %57 ] %64 = tail call i64 @llvm.umax.i64(i64 %.sroa.4259.0.copyload, i64 %.sroa.24.0) %65 = add i64 %64, 7 %66 = lshr i64 %65, 3 diff --git a/bench/hdf5/optimized/h5repack_refs.ll b/bench/hdf5/optimized/h5repack_refs.ll index 138721971f8..4aa0ad928fb 100644 --- a/bench/hdf5/optimized/h5repack_refs.ll +++ b/bench/hdf5/optimized/h5repack_refs.ll @@ -2694,15 +2694,18 @@ define internal fastcc range(i32 -1, 1) i32 @copy_refs_attr(i64 noundef range(i6 %exitcond1470.not = icmp eq i64 %indvars.iv.next1467, %wide.trip.count1469 br i1 %exitcond1470.not, label %._crit_edge1079, label %.lr.ph1078, !llvm.loop !49 -._crit_edge1079: ; preds = %.lr.ph1078, %364 - %.0337.lcssa = phi i64 [ 1, %364 ], [ %369, %.lr.ph1078 ] - %370 = mul i64 %.0337.lcssa, %.0344.lcssa +._crit_edge1079: ; preds = %.lr.ph1078 + %370 = mul i64 %369, %.0344.lcssa + br label %._crit_edge1079 + +._crit_edge1079: ; preds = %._crit_edge1079.loopexit, %364 + %.0337.lcssa = phi i64 [ %.0344.lcssa, %364 ], [ %370, %._crit_edge1079.loopexit ] call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %371 371: ; preds = %._crit_edge1079, %._crit_edge %.11 = phi i32 [ %.12, %._crit_edge1079 ], [ %.3, %._crit_edge ] - %.1345 = phi i64 [ %370, %._crit_edge1079 ], [ %.0344.lcssa, %._crit_edge ] + %.1345 = phi i64 [ %.0337.lcssa, %._crit_edge1079 ], [ %.0344.lcssa, %._crit_edge ] %.1341 = phi i64 [ %345, %._crit_edge1079 ], [ %.0340, %._crit_edge ] %372 = call i64 @H5Acreate2(i64 noundef %1, ptr noundef nonnull %6, i64 noundef %57, i64 noundef %303, i64 noundef 0, i64 noundef 0) #9 %373 = icmp slt i64 %372, 0 diff --git a/bench/hermes/optimized/CodeBlock.ll b/bench/hermes/optimized/CodeBlock.ll index 47d16c28260..37adcd4a345 100644 --- a/bench/hermes/optimized/CodeBlock.ll +++ b/bench/hermes/optimized/CodeBlock.ll @@ -425,13 +425,12 @@ if.else: ; preds = %lor.lhs.false %second = getelementptr inbounds nuw i8, ptr %__first.addr.0.lcssa.i.i, i64 4 %4 = load i32, ptr %second, align 4 %5 = zext i32 %4 to i64 + %6 = or disjoint i64 %5, 4294967296 br label %return return: ; preds = %"_ZSt11lower_boundIPKSt4pairIjjEjZNK6hermes2vm9CodeBlock19getFunctionSourceIDEvE3$_0ET_S8_S8_RKT0_T1_.exit", %lor.lhs.false, %if.else - %retval.sroa.0.0 = phi i64 [ %5, %if.else ], [ 0, %lor.lhs.false ], [ 0, %"_ZSt11lower_boundIPKSt4pairIjjEjZNK6hermes2vm9CodeBlock19getFunctionSourceIDEvE3$_0ET_S8_S8_RKT0_T1_.exit" ] - %retval.sroa.3.0 = phi i64 [ 4294967296, %if.else ], [ 0, %lor.lhs.false ], [ 0, %"_ZSt11lower_boundIPKSt4pairIjjEjZNK6hermes2vm9CodeBlock19getFunctionSourceIDEvE3$_0ET_S8_S8_RKT0_T1_.exit" ] - %retval.sroa.0.0.insert.insert = or disjoint i64 %retval.sroa.3.0, %retval.sroa.0.0 - ret i64 %retval.sroa.0.0.insert.insert + %retval.sroa.0.0 = phi i64 [ %6, %if.else ], [ 0, %lor.lhs.false ], [ 0, %"_ZSt11lower_boundIPKSt4pairIjjEjZNK6hermes2vm9CodeBlock19getFunctionSourceIDEvE3$_0ET_S8_S8_RKT0_T1_.exit" ] + ret i64 %retval.sroa.3.0 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/hyperscan/optimized/rose_build_groups.ll b/bench/hyperscan/optimized/rose_build_groups.ll index c1227238533..8af6cad6b5e 100644 --- a/bench/hyperscan/optimized/rose_build_groups.ll +++ b/bench/hyperscan/optimized/rose_build_groups.ll @@ -1868,7 +1868,7 @@ _ZN3ue26insertINS_8flat_setINS_12graph_detail17vertex_descriptorINS_9ue2_graphIN %771 = getelementptr inbounds nuw i8, ptr %.sroa.020.0.copyload.us, i64 328 %.sroa.012.029.i.us = load ptr, ptr %771, align 8 %.not30.i.us = icmp eq ptr %.sroa.012.029.i.us, %771 - br i1 %.not30.i.us, label %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit.us, label %.lr.ph33.i.us + br i1 %.not30.i.us, label %._crit_edge, label %.lr.ph33.i.us 772: ; preds = %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit.us %773 = getelementptr inbounds nuw i8, ptr %.sroa.0295.0444.us, i64 16 @@ -2018,9 +2018,8 @@ _ZNK3ue211LeftEngInfoeqERKS0_.exit.thread.us.us.i.us: ; preds = %_ZNKSt5dequeIN3 %.not.us.i.us = icmp eq ptr %.sroa.012.0.us.i.us, %771 br i1 %.not.us.i.us, label %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit.us, label %.lr.ph33.split.us.i.us -_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit.us: ; preds = %.loopexit.us.i.us, %.lr.ph.split.us - %.0.lcssa.i.us = phi i64 [ 0, %.lr.ph.split.us ], [ %.1.lcssa.us.i.us, %.loopexit.us.i.us ] - %850 = and i64 %.0.lcssa.i.us, %.0107445.us +_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit.us: ; preds = %.loopexit.us.i.us + %850 = and i64 %.1.lcssa.us.i.us, %.0107445.us %.not119.not.us = icmp eq i64 %850, 0 br i1 %.not119.not.us, label %._crit_edge, label %772 @@ -2051,7 +2050,7 @@ _ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9 %859 = getelementptr inbounds nuw i8, ptr %.sroa.020.0.copyload, i64 328 %.sroa.012.029.i = load ptr, ptr %859, align 8 %.not30.i = icmp eq ptr %.sroa.012.029.i, %859 - br i1 %.not30.i, label %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit, label %.lr.ph33.split.i + br i1 %.not30.i, label %._crit_edge, label %.lr.ph33.split.i .loopexit.i199: ; preds = %_ZNK3ue211LeftEngInfoeqERKS0_.exit.thread.loopexit.i, %.lr.ph33.split.i %.1.lcssa.i = phi i64 [ %.031.i, %.lr.ph33.split.i ], [ %.2.lcssa.i, %_ZNK3ue211LeftEngInfoeqERKS0_.exit.thread.loopexit.i ] @@ -2134,14 +2133,13 @@ _ZNK3ue211LeftEngInfoeqERKS0_.exit.thread.loopexit.i: ; preds = %_ZNKSt5dequeIN3 %.not18.i = icmp eq ptr %.sroa.05.0.i, %862 br i1 %.not18.i, label %.loopexit.i199, label %.lr.ph27.i -_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit: ; preds = %.loopexit.i199, %.lr.ph.split - %.0.lcssa.i = phi i64 [ 0, %.lr.ph.split ], [ %.1.lcssa.i, %.loopexit.i199 ] - %894 = and i64 %.0.lcssa.i, %.0107445 +_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit: ; preds = %.loopexit.i199 + %894 = and i64 %.1.lcssa.i, %.0107445 %.not119.not = icmp eq i64 %894, 0 br i1 %.not119.not, label %._crit_edge, label %851 -._crit_edge: ; preds = %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit, %851, %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit.us, %772, %.loopexit342 - %.1108 = phi i64 [ -1, %.loopexit342 ], [ %850, %772 ], [ 0, %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit.us ], [ %894, %851 ], [ 0, %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit ] +._crit_edge: ; preds = %.lr.ph.split, %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit, %851, %.lr.ph.split.us, %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit.us, %772, %.loopexit342 + %.1108 = phi i64 [ -1, %.loopexit342 ], [ 0, %.lr.ph.split.us ], [ %850, %772 ], [ 0, %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit.us ], [ 0, %.lr.ph.split ], [ %894, %851 ], [ 0, %_ZN3ue2L14calcLocalGroupENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEERKS3_RKSt5dequeINS_17rose_literal_infoESaISB_EEb.exit ] %895 = load i64, ptr %366, align 8 %.not.i.i.i.i202 = icmp eq i64 %895, 0 %896 = icmp eq ptr %367, %761 @@ -3733,7 +3731,7 @@ define hidden void @_ZN3ue219assignGroupsToRolesERNS_13RoseBuildImplE(ptr nounde .lr.ph.i: ; preds = %.lr.ph.i.preheader, %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit %.sroa.05.013.i = phi ptr [ %.sroa.05.0.i, %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit ], [ %.sroa.05.010.i, %.lr.ph.i.preheader ] - %.012.i = phi i64 [ %104, %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit ], [ 0, %.lr.ph.i.preheader ] + %.012.i = phi i64 [ %.0.lcssa.i18, %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit ], [ 0, %.lr.ph.i.preheader ] %49 = getelementptr inbounds nuw i8, ptr %.sroa.05.013.i, i64 40 %50 = load ptr, ptr %49, align 8 %51 = getelementptr inbounds nuw i8, ptr %50, i64 24 @@ -3836,15 +3834,18 @@ _ZNKSt5dequeIN3ue217rose_literal_infoESaIS1_EEixEm.exit.i: ; preds = %94, %86 %.not.i17 = icmp eq ptr %103, %55 br i1 %.not.i17, label %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit, label %.lr.ph.i15 -_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit: ; preds = %_ZNKSt5dequeIN3ue217rose_literal_infoESaIS1_EEixEm.exit.i, %.lr.ph.i - %.0.lcssa.i18 = phi i64 [ 0, %.lr.ph.i ], [ %102, %_ZNKSt5dequeIN3ue217rose_literal_infoESaIS1_EEixEm.exit.i ] - %104 = or i64 %.0.lcssa.i18, %.012.i +_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit: ; preds = %_ZNKSt5dequeIN3ue217rose_literal_infoESaIS1_EEixEm.exit.i + %104 = or i64 %102, %.012.i + br label %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit + +_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit: ; preds = %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit.loopexit, %.lr.ph.i + %.0.lcssa.i18 = phi i64 [ %.012.i, %.lr.ph.i ], [ %104, %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit.loopexit ] %.sroa.05.0.i = load ptr, ptr %.sroa.05.013.i, align 8 %.not.i = icmp eq ptr %.sroa.05.0.i, %21 br i1 %.not.i, label %_ZNK3ue213RoseBuildImpl13getSuccGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit, label %.lr.ph.i _ZNK3ue213RoseBuildImpl13getSuccGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit: ; preds = %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit, %20 - %.0.lcssa.i = phi i64 [ 0, %20 ], [ %104, %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit ] + %.0.lcssa.i = phi i64 [ 0, %20 ], [ %.0.lcssa.i18, %_ZNK3ue213RoseBuildImpl9getGroupsENS_12graph_detail17vertex_descriptorINS_9ue2_graphINS_9RoseGraphENS_15RoseVertexPropsENS_13RoseEdgePropsEEEEE.exit ] %105 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.fr.i.i.i40, i64 96 %106 = load i64, ptr %105, align 8 %107 = or i64 %106, %.0.lcssa.i diff --git a/bench/icu/optimized/locid.ll b/bench/icu/optimized/locid.ll index 0db749d99de..ee2a0593d58 100644 --- a/bench/icu/optimized/locid.ll +++ b/bench/icu/optimized/locid.ll @@ -8393,14 +8393,14 @@ define internal fastcc noundef zeroext i1 @_ZN6icu_7712_GLOBAL__N_113AliasReplac %10 = alloca %"class.icu_77::CharString", align 8 %11 = load i32, ptr %5, align 4, !tbaa !13 %12 = icmp slt i32 %11, 1 - br i1 %12, label %13, label %193 + br i1 %12, label %13, label %.loopexit 13: ; preds = %6 %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 %15 = load ptr, ptr %14, align 8 %16 = icmp eq ptr %15, null %or.cond59 = select i1 %2, i1 %16, i1 false - br i1 %or.cond59, label %193, label %17 + br i1 %or.cond59, label %.loopexit, label %17 17: ; preds = %13 br i1 %3, label %19, label %.critedge.thread @@ -8414,7 +8414,7 @@ define internal fastcc noundef zeroext i1 @_ZN6icu_7712_GLOBAL__N_113AliasReplac %20 = getelementptr inbounds nuw i8, ptr %0, i64 40 %21 = load i32, ptr %20, align 8, !tbaa !104 %22 = icmp eq i32 %21, 0 - br i1 %22, label %193, label %.critedge + br i1 %22, label %.loopexit, label %.critedge .critedge: ; preds = %19 %23 = load ptr, ptr %0, align 8 @@ -8914,14 +8914,8 @@ _ZN6icu_7712_GLOBAL__N_113AliasReplacer8notEmptyEPKc.exit.thread: ; preds = %187 %exitcond.not = icmp eq i32 %192, %24 br i1 %exitcond.not, label %.loopexit, label %32, !llvm.loop !114 -.loopexit: ; preds = %191, %.critedge, %.thread187 - %.not56204 = phi i1 [ true, %.thread187 ], [ false, %.critedge ], [ false, %191 ] - %.2 = phi i1 [ %190, %.thread187 ], [ undef, %.critedge ], [ undef, %191 ] - %spec.select60 = and i1 %.not56204, %.2 - br label %193 - -193: ; preds = %19, %13, %6, %.loopexit - %.0 = phi i1 [ %spec.select60, %.loopexit ], [ false, %6 ], [ false, %13 ], [ false, %19 ] +.loopexit: ; preds = %191, %.thread187, %.critedge, %19, %13, %6 + %.not56204 = phi i1 [ false, %6 ], [ false, %13 ], [ false, %19 ], [ %190, %.thread187 ], [ false, %.critedge ], [ false, %191 ] ret i1 %.0 } diff --git a/bench/icu/optimized/measunit_extra.ll b/bench/icu/optimized/measunit_extra.ll index 2e676afe3d9..121a541005c 100644 --- a/bench/icu/optimized/measunit_extra.ll +++ b/bench/icu/optimized/measunit_extra.ll @@ -2401,7 +2401,7 @@ _ZN6icu_7715MeasureUnitImplC2Ev.exit: ; preds = %2 21: ; preds = %16 %22 = getelementptr inbounds nuw i8, ptr %15, i64 8 %23 = load i32, ptr %22, align 8, !tbaa !28 - switch i32 %23, label %29 [ + switch i32 %23, label %28 [ i32 0, label %30 i32 1, label %24 ] @@ -2411,20 +2411,17 @@ _ZN6icu_7715MeasureUnitImplC2Ev.exit: ; preds = %2 %26 = load ptr, ptr %25, align 8, !tbaa !33 %27 = load ptr, ptr %26, align 8, !tbaa !34 %.sroa.08.0.copyload = load i64, ptr %27, align 4 - %.sroa.08.sroa.5.0.extract.shift = and i64 %.sroa.08.0.copyload, -4294967296 %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %27, i64 8 %.sroa.8.0.copyload = load i32, ptr %.sroa.8.0..sroa_idx, align 4 - %28 = and i64 %.sroa.08.0.copyload, 4294967295 - br label %30 + br label %29 29: ; preds = %21 store i32 1, ptr %1, align 4, !tbaa !13 br label %30 30: ; preds = %21, %16, %29, %24 - %.sroa.8.0 = phi i32 [ %.sroa.8.0.copyload, %24 ], [ 1, %29 ], [ 1, %16 ], [ 1, %21 ] - %.sroa.08.sroa.0.0 = phi i64 [ %28, %24 ], [ 4294967295, %29 ], [ 4294967295, %16 ], [ 4294967295, %21 ] - %.sroa.08.sroa.5.0 = phi i64 [ %.sroa.08.sroa.5.0.extract.shift, %24 ], [ 128849018880, %29 ], [ 128849018880, %16 ], [ 128849018880, %21 ] + %.sroa.8.0 = phi i32 [ %.sroa.8.0.copyload, %24 ], [ 1, %28 ], [ 1, %16 ], [ 1, %21 ] + %.sroa.08.sroa.0.0 = phi i64 [ %.sroa.08.0.copyload, %24 ], [ 133143986175, %28 ], [ 133143986175, %16 ], [ 133143986175, %21 ] call void @_ZN6icu_7715MaybeStackArrayIcLi40EED1Ev(ptr noundef nonnull align 8 dereferenceable(60) %9) #18 %31 = load i32, ptr %4, align 8, !tbaa !28 %32 = icmp sgt i32 %31, 0 @@ -2448,8 +2445,8 @@ _ZN6icu_7715MeasureUnitImplC2Ev.exit: ; preds = %2 unreachable .lr.ph.i.i: ; preds = %30, %45 - %39 = phi i32 [ %46, %45 ], [ %31, %30 ] - %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %45 ], [ 0, %30 ] + %39 = phi i32 [ %46, %44 ], [ %31, %29 ] + %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %44 ], [ 0, %29 ] %40 = load ptr, ptr %5, align 8, !tbaa !33 %41 = getelementptr inbounds nuw ptr, ptr %40, i64 %indvars.iv.i.i %42 = load ptr, ptr %41, align 8, !tbaa !34 @@ -2462,7 +2459,7 @@ _ZN6icu_7715MeasureUnitImplC2Ev.exit: ; preds = %2 br label %45 45: ; preds = %44, %.lr.ph.i.i - %46 = phi i32 [ %39, %.lr.ph.i.i ], [ %.pre.i.i, %44 ] + %46 = phi i32 [ %39, %.lr.ph.i.i ], [ %.pre.i.i, %43 ] %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %47 = sext i32 %46 to i64 %48 = icmp slt i64 %indvars.iv.next.i.i, %47 @@ -2470,8 +2467,7 @@ _ZN6icu_7715MeasureUnitImplC2Ev.exit: ; preds = %2 _ZN6icu_7715MeasureUnitImplD2Ev.exit: ; preds = %._crit_edge.i.i, %34 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.sroa.08.sroa.0.0.insert.insert = or disjoint i64 %.sroa.08.sroa.5.0, %.sroa.08.sroa.0.0 - %.fca.0.insert = insertvalue { i64, i32 } poison, i64 %.sroa.08.sroa.0.0.insert.insert, 0 + %.fca.0.insert = insertvalue { i64, i32 } poison, i64 %.sroa.08.sroa.5.0, 0 %.fca.1.insert = insertvalue { i64, i32 } %.fca.0.insert, i32 %.sroa.8.0, 1 ret { i64, i32 } %.fca.1.insert } diff --git a/bench/icu/optimized/rematch.ll b/bench/icu/optimized/rematch.ll index b34f2c20d09..c46b6cb90ac 100644 --- a/bench/icu/optimized/rematch.ll +++ b/bench/icu/optimized/rematch.ll @@ -19531,7 +19531,7 @@ define noundef signext i8 @_ZN6icu_7712RegexMatcher14isWordBoundaryEl(ptr nounde %77 = phi i64 [ %69, %65 ], [ %75, %70 ] %78 = load i64, ptr %58, align 8, !tbaa !72 %.not32 = icmp sgt i64 %77, %78 - br i1 %.not32, label %79, label %.loopexit + br i1 %.not32, label %79, label %.critedge 79: ; preds = %76 %80 = load ptr, ptr %57, align 8, !tbaa !77 @@ -19581,15 +19581,11 @@ define noundef signext i8 @_ZN6icu_7712RegexMatcher14isWordBoundaryEl(ptr nounde %106 = load ptr, ptr @_ZN6icu_7715RegexStaticSets11gStaticSetsE, align 8, !tbaa !43 %107 = getelementptr inbounds nuw i8, ptr %106, i64 208 %108 = tail call noundef signext i8 @_ZNK6icu_7710UnicodeSet8containsEi(ptr noundef nonnull align 8 dereferenceable(200) %107, i32 noundef %101) - br label %.loopexit - -.loopexit: ; preds = %76, %.thread - %.120 = phi i8 [ %108, %.thread ], [ 0, %76 ] - %109 = xor i8 %.120, %.023 + %109 = xor i8 %108, %.023 br label %.critedge -.critedge: ; preds = %49, %46, %.loopexit - %.1 = phi i8 [ %109, %.loopexit ], [ 0, %46 ], [ 0, %49 ] +.critedge: ; preds = %76, %.thread, %49, %46 + %.1 = phi i8 [ 0, %46 ], [ 0, %49 ], [ %109, %.thread ], [ %.023, %76 ] ret i8 %.1 } @@ -19689,12 +19685,12 @@ define noundef signext i8 @_ZN6icu_7712RegexMatcher19isChunkWordBoundaryEi(ptr n %58 = getelementptr inbounds nuw i8, ptr %0, i64 96 %59 = load i64, ptr %58, align 8, !tbaa !72 %.not5559 = icmp slt i64 %59, %7 - br i1 %.not5559, label %.lr.ph, label %.loopexit + br i1 %.not5559, label %.lr.ph, label %.critedge -.lr.ph: ; preds = %57, %90 - %60 = phi i64 [ %92, %90 ], [ %59, %57 ] - %61 = phi i64 [ %91, %90 ], [ %7, %57 ] - %.04560 = phi i32 [ %.247, %90 ], [ %1, %57 ] +.lr.ph: ; preds = %57, %91 + %60 = phi i64 [ %93, %91 ], [ %59, %57 ] + %61 = phi i64 [ %92, %91 ], [ %7, %57 ] + %.04560 = phi i32 [ %.247, %91 ], [ %1, %57 ] %62 = add nsw i32 %.04560, -1 %63 = sext i32 %62 to i64 %64 = getelementptr inbounds i16, ptr %6, i64 %63 @@ -19727,32 +19723,28 @@ define noundef signext i8 @_ZN6icu_7712RegexMatcher19isChunkWordBoundaryEi(ptr n %.138 = phi i32 [ %66, %.lr.ph ], [ %81, %77 ], [ %66, %70 ] %83 = tail call signext i8 @u_hasBinaryProperty_77(i32 noundef %.138, i32 noundef 11) %.not56 = icmp eq i8 %83, 0 - br i1 %.not56, label %84, label %90 + br i1 %.not56, label %84, label %91 84: ; preds = %82 %85 = tail call signext i8 @u_charType_77(i32 noundef %.138) %86 = icmp eq i8 %85, 16 - br i1 %86, label %90, label %.thread + br i1 %86, label %91, label %.thread .thread: ; preds = %84 %87 = load ptr, ptr @_ZN6icu_7715RegexStaticSets11gStaticSetsE, align 8, !tbaa !43 %88 = getelementptr inbounds nuw i8, ptr %87, i64 208 %89 = tail call noundef signext i8 @_ZNK6icu_7710UnicodeSet8containsEi(ptr noundef nonnull align 8 dereferenceable(200) %88, i32 noundef %.138) - br label %.loopexit - -90: ; preds = %82, %84 - %91 = sext i32 %.247 to i64 - %92 = load i64, ptr %58, align 8, !tbaa !72 - %.not55 = icmp slt i64 %92, %91 - br i1 %.not55, label %.lr.ph, label %.loopexit - -.loopexit: ; preds = %90, %57, %.thread - %.140 = phi i8 [ %89, %.thread ], [ 0, %57 ], [ 0, %90 ] - %93 = xor i8 %.140, %.048 + %90 = xor i8 %89, %.048 br label %.critedge -.critedge: ; preds = %50, %48, %.loopexit - %.1 = phi i8 [ %93, %.loopexit ], [ 0, %48 ], [ 0, %50 ] +.critedge: ; preds = %82, %84 + %92 = sext i32 %.247 to i64 + %93 = load i64, ptr %58, align 8, !tbaa !72 + %.not55 = icmp slt i64 %93, %92 + br i1 %.not55, label %.lr.ph, label %.critedge + +.critedge: ; preds = %91, %.thread, %57, %50, %48 + %.1 = phi i8 [ 0, %48 ], [ 0, %50 ], [ %90, %.thread ], [ %.048, %57 ], [ %.048, %91 ] ret i8 %.1 } diff --git a/bench/jiff-rs/optimized/e4m488lukglmxlpbdqjrf7sst.ll b/bench/jiff-rs/optimized/e4m488lukglmxlpbdqjrf7sst.ll index 617944b78b2..72099af699a 100644 --- a/bench/jiff-rs/optimized/e4m488lukglmxlpbdqjrf7sst.ll +++ b/bench/jiff-rs/optimized/e4m488lukglmxlpbdqjrf7sst.ll @@ -3232,8 +3232,6 @@ _ZN4jiff6shared5posix6Parser10maybe_byte17hc2eb5707519d29f4E.exit.thread.i.i.i: call void @llvm.lifetime.end.p0(ptr nonnull %29), !noalias !195 call void @llvm.lifetime.end.p0(ptr nonnull %24), !noalias !185 call void @llvm.lifetime.end.p0(ptr nonnull %28), !noalias !185 - %231 = trunc i32 %.sroa.012.0.copyload.i1.i.i to i8 - %232 = lshr i32 %.sroa.012.0.copyload.i1.i.i, 8 br label %_ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit _ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit.thread: ; preds = %55, %227, %"_ZN4jiff6shared5posix6Parser21parse_posix_time_zone28_$u7b$$u7b$closure$u7d$$u7d$17h0301cb3ab1597ee0E.exit.i" @@ -3247,10 +3245,8 @@ _ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit: ; %.sroa.541.i.sroa.0.0 = phi i32 [ undef, %76 ], [ %.sroa.541.i.sroa.0.0.copyload, %229 ], [ undef, %_ZN4jiff6shared5posix6Parser4byte17hd119eb807b4a2d53E.exit.i ] %.sroa.339.0.i = phi ptr [ undef, %76 ], [ %230, %229 ], [ undef, %_ZN4jiff6shared5posix6Parser4byte17hd119eb807b4a2d53E.exit.i ] %.sroa.440.0.i = phi i64 [ undef, %76 ], [ %.sroa.24.20.insert.insert.i, %229 ], [ undef, %_ZN4jiff6shared5posix6Parser4byte17hd119eb807b4a2d53E.exit.i ] - %.sroa.038.sroa.0.0.i = phi i8 [ 3, %76 ], [ %231, %229 ], [ 3, %_ZN4jiff6shared5posix6Parser4byte17hd119eb807b4a2d53E.exit.i ] - %.sroa.038.sroa.3.sroa.0.0.i = phi i32 [ 0, %76 ], [ %232, %229 ], [ 0, %_ZN4jiff6shared5posix6Parser4byte17hd119eb807b4a2d53E.exit.i ] + %.sroa.038.sroa.0.0.i = phi i32 [ 3, %76 ], [ %.sroa.012.0.copyload.i1.i.i, %229 ], [ 3, %_ZN4jiff6shared5posix6Parser4byte17hd119eb807b4a2d53E.exit.i ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(7) %.sroa.24, ptr noundef nonnull align 1 dereferenceable(7) %59, i64 7, i1 false) - %.sroa.0.sroa.8.0.extract.trunc = trunc nuw i32 %.sroa.038.sroa.3.sroa.0.0.i to i24 store ptr %.sroa.339.0.i, ptr %.sroa.9, align 8, !alias.scope !185 %.sroa.9.8..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.9, i64 8 store i64 %.sroa.440.0.i, ptr %.sroa.9.8..sroa_idx, align 8, !alias.scope !185 @@ -3258,14 +3254,15 @@ _ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit: ; store i32 %.sroa.541.i.sroa.0.0, ptr %.sroa.9.16..sroa_idx81, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %36) call void @llvm.lifetime.end.p0(ptr nonnull %37) - %233 = icmp eq i8 %.sroa.038.sroa.0.0.i, 4 - %234 = ptrtoint ptr %.sroa.339.0.i to i64 - %235 = trunc i64 %234 to i32 + %231 = and i32 %.sroa.038.sroa.0.0.i, 255 + %232 = icmp eq i32 %231, 4 + %233 = ptrtoint ptr %.sroa.339.0.i to i64 + %234 = trunc i64 %233 to i32 %.sroa.9.4..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.9, i64 4 %.sroa.9.4..sroa.9.4..sroa.9.4..sroa.9.4..sroa.9.8..pre = load ptr, ptr %.sroa.9.4..sroa_idx, align 4 %.sroa.9.12..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.9, i64 12 %.sroa.9.12..sroa.9.12..sroa.9.12..sroa.9.12..sroa.9.16..pre = load i64, ptr %.sroa.9.12..sroa_idx, align 4 - br i1 %233, label %_ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit._crit_edge, label %238 + br i1 %232, label %_ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit._crit_edge, label %238 _ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit._crit_edge: ; preds = %_ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit, %_ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit.thread %.sroa.9.12..sroa.9.12..sroa.9.12..sroa.9.16. = phi i64 [ %.sroa.9.12..sroa.9.12..sroa.9.12..sroa.9.16.71, %_ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit.thread ], [ %.sroa.9.12..sroa.9.12..sroa.9.12..sroa.9.12..sroa.9.16..pre, %_ZN4jiff6shared5posix6Parser21parse_posix_time_zone17h1c95c5301245ff5cE.exit ] @@ -3300,11 +3297,9 @@ _ZN4jiff6shared5posix6Parser9remaining17hdf5d502bb50d8601E.exit: ; preds = %238 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %.sroa.7.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(28) %.sroa.541.i.sroa.5, i64 28, i1 false) %.sroa.7.sroa.5.0..sroa.7.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 56 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(7) %.sroa.7.sroa.5.0..sroa.7.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(7) %.sroa.5.sroa.3, i64 7, i1 false) - store i8 %.sroa.038.sroa.0.0.i, ptr %0, align 8 - %.sroa.413.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i24 %.sroa.0.sroa.8.0.extract.trunc, ptr %.sroa.413.0..sroa_idx, align 1 + store i32 %.sroa.038.sroa.0.0.i, ptr %0, align 8 %.sroa.413.sroa.4.0..sroa.413.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %235, ptr %.sroa.413.sroa.4.0..sroa.413.0..sroa_idx.sroa_idx, align 4 + store i32 %234, ptr %.sroa.413.sroa.4.0..sroa.413.0..sroa_idx.sroa_idx, align 4 %.sroa.514.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.9.4..sroa.9.4..sroa.9.4..sroa.9.4..sroa.9.8..pre, ptr %.sroa.514.0..sroa_idx, align 8 %.sroa.615.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 diff --git a/bench/libcxx/optimized/charconv.ll b/bench/libcxx/optimized/charconv.ll index 702c05df4e6..fceee34b6b1 100644 --- a/bench/libcxx/optimized/charconv.ll +++ b/bench/libcxx/optimized/charconv.ll @@ -3550,28 +3550,28 @@ _ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_co %sh.diff = lshr i64 %.fca.0.extract, 9 %tr.sh.diff = trunc i64 %sh.diff to i32 %56 = and i32 %tr.sh.diff, 2139095040 - br label %57 + %57 = or disjoint i32 %55, %56 + %58 = icmp ne i32 %56, 0 + br label %59 57: ; preds = %51, %50 - %.sroa.5.0 = phi i32 [ %56, %51 ], [ 0, %50 ] - %.sroa.06.0 = phi i32 [ %55, %51 ], [ 0, %50 ] + %.sroa.5.0 = phi i1 [ %58, %51 ], [ false, %50 ] + %.sroa.06.0 = phi i32 [ %57, %51 ], [ 0, %50 ] %.sroa.510.0 = phi i32 [ %spec.select, %51 ], [ 0, %50 ] - %58 = or disjoint i32 %.sroa.06.0, %.sroa.5.0 - %59 = icmp ne i32 %.sroa.510.0, 34 - %60 = icmp ne i32 %.sroa.5.0, 0 - %or.cond.not9.i = or i1 %60, %59 - %61 = icmp eq i32 %58, 0 + %60 = icmp ne i32 %.sroa.510.0, 34 + %or.cond.not9.i = or i1 %.sroa.5.0, %60 + %60 = icmp eq i32 %.sroa.06.0, 0 %or.cond7.i = select i1 %or.cond.not9.i, i1 true, i1 %61 %spec.store.select.i = select i1 %or.cond7.i, i32 %.sroa.510.0, i32 0 - %62 = bitcast i32 %58 to float + %62 = bitcast i32 %.sroa.06.0 to float %63 = fneg float %62 %storemerge.i = select i1 %5, float %63, float %62 br label %_ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_constant_resultIT_EEPKcll.exit.thread _ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_constant_resultIT_EEPKcll.exit.thread: ; preds = %42, %_ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_constant_resultIT_EEPKcll.exit, %6, %57 - %.sink69 = phi float [ %storemerge.i, %57 ], [ 0.000000e+00, %6 ], [ 0.000000e+00, %_ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_constant_resultIT_EEPKcll.exit ], [ 0.000000e+00, %42 ] - %.sink67 = phi i64 [ %.0, %57 ], [ 0, %6 ], [ 0, %_ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_constant_resultIT_EEPKcll.exit ], [ 0, %42 ] - %.sink = phi i32 [ %spec.store.select.i, %57 ], [ 22, %6 ], [ 22, %_ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_constant_resultIT_EEPKcll.exit ], [ 22, %42 ] + %.sink69 = phi float [ %storemerge.i, %59 ], [ 0.000000e+00, %6 ], [ 0.000000e+00, %_ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_constant_resultIT_EEPKcll.exit ], [ 0.000000e+00, %42 ] + %.sink67 = phi i64 [ %.0, %59 ], [ 0, %6 ], [ 0, %_ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_constant_resultIT_EEPKcll.exit ], [ 0, %42 ] + %.sink = phi i32 [ %spec.store.select.i, %59 ], [ 22, %6 ], [ 22, %_ZNSt3__135__parse_fractional_decimal_constantB8ne210000IjEENS_28__fractional_constant_resultIT_EEPKcll.exit ], [ 22, %42 ] store float %.sink69, ptr %0, align 8, !tbaa !60 %64 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink67, ptr %64, align 8, !tbaa !52 @@ -3732,8 +3732,8 @@ define linkonce_odr hidden { i64, i32 } @_ZN24__llvm_libc_common_utils8internal2 br label %.thread91 .thread91: ; preds = %73, %.thread, %7, %5, %.thread95, %60 - %.sroa.051.0 = phi i64 [ %.fca.0.extract, %.thread95 ], [ %.sroa.045.0.insert.insert.i, %60 ], [ 1095216660480, %5 ], [ 0, %7 ], [ %.fca.0.extract1087, %.thread ], [ %.fca.0.extract10, %73 ] - %.sroa.7.0 = phi i32 [ %.fca.1.extract, %.thread95 ], [ 0, %60 ], [ 34, %5 ], [ 34, %7 ], [ 0, %.thread ], [ 0, %73 ] + %.sroa.051.0 = phi i64 [ %.fca.0.extract, %.thread93 ], [ %.sroa.045.0.insert.insert.i, %60 ], [ 1095216660480, %5 ], [ 0, %7 ], [ %.fca.0.extract1087, %.thread ], [ %.fca.0.extract10, %74 ] + %.sroa.7.0 = phi i32 [ %.fca.1.extract, %.thread93 ], [ 0, %60 ], [ 34, %5 ], [ 34, %7 ], [ 0, %.thread ], [ 0, %74 ] %.fca.0.insert = insertvalue { i64, i32 } poison, i64 %.sroa.051.0, 0 %.fca.1.insert = insertvalue { i64, i32 } %.fca.0.insert, i32 %.sroa.7.0, 1 ret { i64, i32 } %.fca.1.insert @@ -3854,14 +3854,13 @@ define linkonce_odr hidden { i64, i8 } @_ZN24__llvm_libc_common_utils8internal12 %.sroa.6.0.extract.shift = or disjoint i64 %.sroa.4.0.insert.shift, %.sroa.0.0.insert.ext.masked %61 = and i32 %.1, 255 %62 = zext nneg i32 %61 to i64 + %63 = or disjoint i64 %.sroa.6.0.extract.shift, %62 br label %.critedge .critedge: ; preds = %25, %59, %43, %54, %2 - %.sroa.057.0 = phi i64 [ 0, %2 ], [ %62, %59 ], [ 0, %43 ], [ 0, %54 ], [ 0, %25 ] - %.sroa.6.sroa.0.0 = phi i64 [ 0, %2 ], [ %.sroa.6.0.extract.shift, %59 ], [ 0, %43 ], [ 0, %54 ], [ 0, %25 ] + %.sroa.057.0 = phi i64 [ 0, %2 ], [ %63, %59 ], [ 0, %43 ], [ 0, %54 ], [ 0, %25 ] %.sroa.6.sroa.2.0 = phi i8 [ 0, %2 ], [ 1, %59 ], [ 0, %43 ], [ 0, %54 ], [ 0, %25 ] - %.sroa.057.0.insert.insert = or i64 %.sroa.6.sroa.0.0, %.sroa.057.0 - %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.057.0.insert.insert, 0 + %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.6.sroa.0.0, 0 %.fca.1.insert = insertvalue { i64, i8 } %.fca.0.insert, i8 %.sroa.6.sroa.2.0, 1 ret { i64, i8 } %.fca.1.insert } diff --git a/bench/libquic/optimized/activity_tracker.ll b/bench/libquic/optimized/activity_tracker.ll index d28109e4049..205d1cd6daf 100644 --- a/bench/libquic/optimized/activity_tracker.ll +++ b/bench/libquic/optimized/activity_tracker.ll @@ -779,14 +779,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNSt %exitcond.not = icmp eq i32 %180, 10 br i1 %exitcond.not, label %_ZNK4base5debug21ThreadActivityTracker7IsValidEv.exit41.thread, label %67, !llvm.loop !57 -_ZNK4base5debug21ThreadActivityTracker7IsValidEv.exit41.thread: ; preds = %179, %.lr.ph, %172, %143, %146, %151, %155, %159, %163, %167 - %181 = phi i1 [ true, %167 ], [ true, %163 ], [ true, %159 ], [ true, %155 ], [ true, %151 ], [ true, %146 ], [ true, %143 ], [ true, %172 ], [ true, %.lr.ph ], [ false, %179 ] - %.2 = phi i1 [ false, %167 ], [ false, %163 ], [ false, %159 ], [ false, %155 ], [ false, %151 ], [ false, %146 ], [ false, %143 ], [ true, %172 ], [ true, %.lr.ph ], [ undef, %179 ] - %spec.select = and i1 %181, %.2 - br label %_ZNK4base5debug21ThreadActivityTracker7IsValidEv.exit.thread - -_ZNK4base5debug21ThreadActivityTracker7IsValidEv.exit.thread: ; preds = %2, %8, %13, %17, %21, %25, %30, %_ZNK4base5debug21ThreadActivityTracker7IsValidEv.exit41.thread - %.0 = phi i1 [ %spec.select, %_ZNK4base5debug21ThreadActivityTracker7IsValidEv.exit41.thread ], [ false, %30 ], [ false, %25 ], [ false, %21 ], [ false, %17 ], [ false, %13 ], [ false, %8 ], [ false, %2 ] +_ZNK4base5debug21ThreadActivityTracker7IsValidEv.exit41.thread: ; preds = %179, %.lr.ph, %167, %163, %159, %155, %151, %146, %143, %172, %2, %8, %13, %17, %21, %25, %30 + %181 = phi i1 [ false, %30 ], [ false, %25 ], [ false, %21 ], [ false, %17 ], [ false, %13 ], [ false, %8 ], [ false, %2 ], [ false, %167 ], [ false, %163 ], [ false, %159 ], [ false, %155 ], [ false, %151 ], [ false, %146 ], [ false, %143 ], [ true, %172 ], [ true, %.lr.ph ], [ false, %179 ] ret i1 %.0 } diff --git a/bench/libquic/optimized/hpack_header_table.ll b/bench/libquic/optimized/hpack_header_table.ll index f153f6e1ceb..0404935a845 100644 --- a/bench/libquic/optimized/hpack_header_table.ll +++ b/bench/libquic/optimized/hpack_header_table.ll @@ -103,10 +103,13 @@ _ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIc %.not.i11 = icmp eq ptr %16, %11 br i1 %.not.i11, label %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13, label %.lr.ph.i8, !llvm.loop !11 -_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13: ; preds = %.lr.ph.i8, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit - %.06.lcssa.i12 = phi i64 [ 0, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit ], [ %15, %.lr.ph.i8 ] - %17 = xor i64 %.06.lcssa.i12, %.06.lcssa.i - ret i64 %17 +_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13: ; preds = %.lr.ph.i8 + %17 = xor i64 %15, %.06.lcssa.i + br label %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13 + +_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13: ; preds = %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit + %.06.lcssa.i12 = phi i64 [ %.06.lcssa.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit ], [ %17, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit ] + ret i64 %.06.lcssa.i12 } ; Function Attrs: mustprogress uwtable @@ -2422,13 +2425,16 @@ _ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIc %.not.i11.i.i = icmp eq ptr %45, %40 br i1 %.not.i11.i.i, label %_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit, label %.lr.ph.i8.i.i, !llvm.loop !11 -_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit: ; preds = %.lr.ph.i8.i.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i - %.06.lcssa.i12.i.i = phi i64 [ 0, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i ], [ %44, %.lr.ph.i8.i.i ] - %46 = xor i64 %.06.lcssa.i12.i.i, %.06.lcssa.i.i.i +_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit.i.i: ; preds = %.lr.ph.i8.i.i + %46 = xor i64 %44, %.06.lcssa.i.i.i + br label %_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit + +_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit: ; preds = %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit.i.i + %.06.lcssa.i12.i.i = phi i64 [ %.06.lcssa.i.i.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i ], [ %46, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit.i.i ] %47 = getelementptr inbounds nuw i8, ptr %0, i64 8 %48 = load i64, ptr %47, align 8, !tbaa !26 - %49 = urem i64 %46, %48 - %50 = tail call noundef ptr @_ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE19_M_find_before_nodeEmRKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %0, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %46) + %49 = urem i64 %.06.lcssa.i12.i.i, %48 + %50 = tail call noundef ptr @_ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE19_M_find_before_nodeEmRKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %0, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %.06.lcssa.i12.i.i) %.not.i = icmp eq ptr %50, null br i1 %.not.i, label %_ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE12_M_find_nodeEmRKS2_m.exit, label %51 @@ -2681,13 +2687,16 @@ _ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIc %.not.i11.i.i = icmp eq ptr %45, %40 br i1 %.not.i11.i.i, label %_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit, label %.lr.ph.i8.i.i, !llvm.loop !11 -_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit: ; preds = %.lr.ph.i8.i.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i - %.06.lcssa.i12.i.i = phi i64 [ 0, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i ], [ %44, %.lr.ph.i8.i.i ] - %46 = xor i64 %.06.lcssa.i12.i.i, %.06.lcssa.i.i.i +_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit: ; preds = %.lr.ph.i8.i.i + %46 = xor i64 %44, %.06.lcssa.i.i.i + br label %_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit + +_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit: ; preds = %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit.i.i + %.06.lcssa.i12.i.i = phi i64 [ %.06.lcssa.i.i.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i ], [ %46, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit.i.i ] %47 = getelementptr inbounds nuw i8, ptr %0, i64 8 %48 = load i64, ptr %47, align 8, !tbaa !26 - %49 = urem i64 %46, %48 - %50 = tail call noundef ptr @_ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE19_M_find_before_nodeEmRKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %0, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %46) + %49 = urem i64 %.06.lcssa.i12.i.i, %48 + %50 = tail call noundef ptr @_ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE19_M_find_before_nodeEmRKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %0, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %.06.lcssa.i12.i.i) %.not.i = icmp eq ptr %50, null br i1 %.not.i, label %_ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE12_M_find_nodeEmRKS2_m.exit, label %51 @@ -3075,20 +3084,23 @@ _ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIc %45 = add i64 %42, %44 %46 = getelementptr inbounds nuw i8, ptr %.09.i9.i.i, i64 1 %.not.i11.i.i = icmp eq ptr %46, %41 - br i1 %.not.i11.i.i, label %_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_hash_code_trIS3_EEmRKT_.exit, label %.lr.ph.i8.i.i, !llvm.loop !11 + br i1 %.not.i11.i.i, label %_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERKS3_.exit, label %.lr.ph.i8.i.i, !llvm.loop !11 + +_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit.i.i: ; preds = %.lr.ph.i8.i.i + %47 = xor i64 %45, %.06.lcssa.i.i.i + br label %_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_hash_code_trIS3_EEmRKT_.exit -_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_hash_code_trIS3_EEmRKT_.exit: ; preds = %.lr.ph.i8.i.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i - %.06.lcssa.i12.i.i = phi i64 [ 0, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i ], [ %45, %.lr.ph.i8.i.i ] - %47 = xor i64 %.06.lcssa.i12.i.i, %.06.lcssa.i.i.i +_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_hash_code_trIS3_EEmRKT_.exit: ; preds = %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit.i.i + %.06.lcssa.i12.i.i = phi i64 [ %.06.lcssa.i.i.i, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit.i.i ], [ %47, %_ZNK4base15StringPieceHashclERKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.exit13.loopexit.i.i ] %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 %49 = load i64, ptr %48, align 8, !tbaa !26 - %50 = urem i64 %47, %49 + %50 = urem i64 %.06.lcssa.i12.i.i, %49 %51 = load i64, ptr %9, align 8, !tbaa !116 %.not41 = icmp eq i64 %51, 0 br i1 %.not41, label %.critedge, label %52 52: ; preds = %_ZNKSt8__detail15_Hash_code_baseIPN3net10HpackEntryES3_NS_9_IdentityENS1_16HpackHeaderTable11EntryHasherENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_hash_code_trIS3_EEmRKT_.exit - %53 = call noundef ptr @_ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE22_M_find_before_node_trIS2_EEPNS4_15_Hash_node_baseEmRKT_m(ptr noundef nonnull align 8 dereferenceable(56) %0, i64 noundef %50, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %47) + %53 = call noundef ptr @_ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE22_M_find_before_node_trIS2_EEPNS4_15_Hash_node_baseEmRKT_m(ptr noundef nonnull align 8 dereferenceable(56) %0, i64 noundef %50, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %.06.lcssa.i12.i.i) %.not.i = icmp eq ptr %53, null br i1 %.not.i, label %.critedge, label %_ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE15_M_find_node_trIS2_EEPNS4_10_Hash_nodeIS2_Lb1EEEmRKT_m.exit @@ -3103,7 +3115,7 @@ _ZNKSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16Hpa %56 = getelementptr inbounds nuw i8, ptr %55, i64 8 %57 = load ptr, ptr %1, align 8, !tbaa !64 store ptr %57, ptr %56, align 8, !tbaa !64 - %58 = invoke ptr @_ZNSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE21_M_insert_unique_nodeEmmPNS4_10_Hash_nodeIS2_Lb1EEEm(ptr noundef nonnull align 8 dereferenceable(56) %0, i64 noundef %50, i64 noundef %47, ptr noundef nonnull %55, i64 noundef 1) + %58 = invoke ptr @_ZNSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE21_M_insert_unique_nodeEmmPNS4_10_Hash_nodeIS2_Lb1EEEm(ptr noundef nonnull align 8 dereferenceable(56) %0, i64 noundef %50, i64 noundef %.06.lcssa.i12.i.i, ptr noundef nonnull %55, i64 noundef 1) to label %_ZNSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE12_Scoped_nodeD2Ev.exit unwind label %_ZNSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE12_Scoped_nodeD2Ev.exit24 _ZNSt10_HashtableIPN3net10HpackEntryES2_SaIS2_ENSt8__detail9_IdentityENS0_16HpackHeaderTable9EntriesEqENS6_11EntryHasherENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE12_Scoped_nodeD2Ev.exit24: ; preds = %.critedge diff --git a/bench/libquic/optimized/p224-64.ll b/bench/libquic/optimized/p224-64.ll index d101c0d7256..75aa026e149 100644 --- a/bench/libquic/optimized/p224-64.ll +++ b/bench/libquic/optimized/p224-64.ll @@ -3384,11 +3384,11 @@ get_bit.exit96.i: ; preds = %336, %.preheader.i %347 = lshr i8 %346, %312 %348 = shl i8 %347, 4 %349 = and i8 %348, 16 + %350 = or disjoint i8 %349, %.0.i95.i br label %get_bit.exit98.i get_bit.exit98.i: ; preds = %345, %get_bit.exit96.i - %.0.i97.i = phi i8 [ %349, %345 ], [ 0, %get_bit.exit96.i ] - %350 = or disjoint i8 %.0.i97.i, %.0.i95.i + %.0.i97.i = phi i8 [ %350, %345 ], [ %.0.i95.i, %get_bit.exit96.i ] br i1 %314, label %get_bit.exit100.i, label %351 351: ; preds = %get_bit.exit98.i @@ -3396,11 +3396,11 @@ get_bit.exit98.i: ; preds = %345, %get_bit.exit9 %353 = lshr i8 %352, %318 %354 = shl i8 %353, 3 %355 = and i8 %354, 8 + %356 = or disjoint i8 %355, %.0.i97.i br label %get_bit.exit100.i get_bit.exit100.i: ; preds = %351, %get_bit.exit98.i - %.0.i99.i = phi i8 [ %355, %351 ], [ 0, %get_bit.exit98.i ] - %356 = or disjoint i8 %350, %.0.i99.i + %.0.i99.i = phi i8 [ %356, %351 ], [ %.0.i97.i, %get_bit.exit98.i ] br i1 %320, label %get_bit.exit102.i, label %get_bit.exit102.thread.i get_bit.exit102.thread.i: ; preds = %get_bit.exit100.i @@ -3408,36 +3408,35 @@ get_bit.exit102.thread.i: ; preds = %get_bit.exit100.i %358 = lshr i8 %357, %324 %359 = shl i8 %358, 2 %360 = and i8 %359, 4 - %361 = or disjoint i8 %360, %356 + %361 = or disjoint i8 %360, %.0.i99.i br label %362 get_bit.exit102.i: ; preds = %get_bit.exit100.i br i1 %325, label %get_bit.exit104.i, label %362 362: ; preds = %get_bit.exit102.i, %get_bit.exit102.thread.i - %363 = phi i8 [ %361, %get_bit.exit102.thread.i ], [ %356, %get_bit.exit102.i ] + %363 = phi i8 [ %361, %get_bit.exit102.thread.i ], [ %.0.i99.i, %get_bit.exit102.i ] %364 = load i8, ptr %327, align 1, !tbaa !6 %365 = lshr i8 %364, %329 %366 = shl i8 %365, 1 %367 = and i8 %366, 2 + %368 = or disjoint i8 %367, %363 br label %get_bit.exit104.i get_bit.exit104.i: ; preds = %362, %get_bit.exit102.i - %368 = phi i8 [ %363, %362 ], [ %356, %get_bit.exit102.i ] - %.0.i103.i = phi i8 [ %367, %362 ], [ 0, %get_bit.exit102.i ] - %369 = or disjoint i8 %.0.i103.i, %368 + %368 = phi i8 [ %368, %362 ], [ %.0.i99.i, %get_bit.exit102.i ] br i1 %331, label %get_bit.exit106.i, label %370 370: ; preds = %get_bit.exit104.i %371 = load i8, ptr %333, align 1, !tbaa !6 %372 = lshr i8 %371, %335 %373 = and i8 %372, 1 + %374 = or disjoint i8 %373, %369 br label %get_bit.exit106.i get_bit.exit106.i: ; preds = %370, %get_bit.exit104.i - %.0.i105.i = phi i8 [ %373, %370 ], [ 0, %get_bit.exit104.i ] - %374 = or disjoint i8 %369, %.0.i105.i - call void @ec_GFp_nistp_recode_scalar_bits(ptr noundef nonnull %13, ptr noundef nonnull %14, i8 noundef zeroext %374) #10 + %.0.i105.i = phi i8 [ %374, %370 ], [ %369, %get_bit.exit104.i ] + call void @ec_GFp_nistp_recode_scalar_bits(ptr noundef nonnull %13, ptr noundef nonnull %14, i8 noundef zeroext %.0.i105.i) #10 %375 = load i8, ptr %14, align 1, !tbaa !6 %376 = zext i8 %375 to i64 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %12, i8 0, i64 96, i1 false) diff --git a/bench/libquic/optimized/process_metrics_linux.ll b/bench/libquic/optimized/process_metrics_linux.ll index 99b22f75a25..c5cb8eb0f94 100644 --- a/bench/libquic/optimized/process_metrics_linux.ll +++ b/bench/libquic/optimized/process_metrics_linux.ll @@ -3586,9 +3586,7 @@ _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__c %.1 = phi i64 [ %spec.select, %76 ], [ undef, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i.us ], [ undef, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i ] %81 = phi ptr [ %.pre55.i, %76 ], [ %54, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i.us ], [ %54, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i ] %82 = phi ptr [ %.pre.i, %76 ], [ %53, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i.us ], [ %53, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i ] - %.not50.i = phi i1 [ true, %76 ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i.us ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i ] - %.3.i = phi i1 [ %75, %76 ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i.us ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i ] - %spec.select.i = and i1 %.not50.i, %.3.i + %.not50.i = phi i1 [ %75, %76 ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i.us ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread45.i ] %.not4.i.i.i.i.i = icmp eq ptr %82, %81 br i1 %.not4.i.i.i.i.i, label %_ZSt8_DestroyIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES7_EvT_S9_RSaIT0_E.exit.i.i, label %.lr.ph.i.i.i.i.i @@ -3625,7 +3623,7 @@ _ZSt8_DestroyIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES _ZSt8_DestroyIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES7_EvT_S9_RSaIT0_E.exit.i.i: ; preds = %_ZSt8_DestroyIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i.i, %.loopexit.i, %_ZN4base12_GLOBAL__N_117TrimKeyValuePairsEPSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_ESaIS9_EE.exit.i %.2 = phi i64 [ undef, %_ZN4base12_GLOBAL__N_117TrimKeyValuePairsEPSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_ESaIS9_EE.exit.i ], [ %.1, %.loopexit.i ], [ %.1, %_ZSt8_DestroyIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i.i ] - %spec.select85.i = phi i1 [ false, %_ZN4base12_GLOBAL__N_117TrimKeyValuePairsEPSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_ESaIS9_EE.exit.i ], [ %spec.select.i, %.loopexit.i ], [ %spec.select.i, %_ZSt8_DestroyIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i.i ] + %spec.select85.i = phi i1 [ false, %_ZN4base12_GLOBAL__N_117TrimKeyValuePairsEPSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_ESaIS9_EE.exit.i ], [ %.not50.i, %.loopexit.i ], [ %.not50.i, %_ZSt8_DestroyIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i.i ] %91 = phi ptr [ %53, %_ZN4base12_GLOBAL__N_117TrimKeyValuePairsEPSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_ESaIS9_EE.exit.i ], [ %82, %.loopexit.i ], [ %.pr.i.i, %_ZSt8_DestroyIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i.i ] %.not.i.i.i.i = icmp eq ptr %91, null br i1 %.not.i.i.i.i, label %_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ESaIS7_EED2Ev.exit.i, label %92 diff --git a/bench/libsodium/optimized/pwhash_scryptsalsa208sha256_sse.ll b/bench/libsodium/optimized/pwhash_scryptsalsa208sha256_sse.ll index 69fc4ffa2c5..0e66aceff32 100644 --- a/bench/libsodium/optimized/pwhash_scryptsalsa208sha256_sse.ll +++ b/bench/libsodium/optimized/pwhash_scryptsalsa208sha256_sse.ll @@ -181,11 +181,14 @@ define hidden range(i32 -1, 1) i32 @_sodium_escrypt_kdf_sse(ptr noundef %0, ptr %104 = icmp ult i64 %103, %71 br i1 %104, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !7 -._crit_edge.i: ; preds = %.lr.ph.i, %.preheader81.i - %.177.lcssa.i = phi i64 [ 1, %.preheader81.i ], [ %103, %.lr.ph.i ] - %.0.lcssa.i = phi ptr [ %68, %.preheader81.i ], [ %102, %.lr.ph.i ] - %105 = mul i64 %.177.lcssa.i, %45 - %106 = add i64 %105, %73 +._crit_edge.i: ; preds = %.lr.ph.i + %105 = mul i64 %103, %45 + br label %._crit_edge.i + +._crit_edge.i:; preds = %._crit_edge.i, %.preheader81.i + %.177.lcssa.i = phi i64 [ %105, %._crit_edge.loopexit.i ], [ %45, %.preheader81.i ] + %.0.lcssa.i = phi ptr [ %102, %._crit_edge.loopexit.i ], [ %68, %.preheader81.i ] + %106 = add i64 %.177.lcssa.i, %73 %107 = inttoptr i64 %106 to ptr tail call fastcc void @blockmix_salsa8(ptr noundef %.0.lcssa.i, ptr noundef %107, i64 noundef range(i64 1, 4294967296) %11) tail call fastcc void @blockmix_salsa8(ptr noundef %107, ptr noundef %69, i64 noundef range(i64 1, 4294967296) %11) diff --git a/bench/lief/optimized/ASN1Reader.ll b/bench/lief/optimized/ASN1Reader.ll index 7a02df53737..b0f2d407eed 100644 --- a/bench/lief/optimized/ASN1Reader.ll +++ b/bench/lief/optimized/ASN1Reader.ll @@ -663,7 +663,7 @@ $_ZGVZN6spdlog7details2os9thread_idEvE3tid = comdat any @llvm.used = appending global [1 x ptr] [ptr @_ZN3fmt3v1012format_facetISt6localeE2idE], section "llvm.metadata" ; Function Attrs: mustprogress nounwind uwtable -define hidden range(i64 0, 4294967304) i64 @_ZN4LIEF10ASN1Reader6is_tagEi(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8) %0, i32 noundef %1) local_unnamed_addr #0 align 2 { +define hidden range(i64 1, 4294967298) i64 @_ZN4LIEF10ASN1Reader6is_tagEi(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8) %0, i32 noundef %1) local_unnamed_addr #0 align 2 { %3 = alloca i64, align 8 %4 = alloca ptr, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %3) @@ -697,12 +697,10 @@ define hidden range(i64 0, 4294967304) i64 @_ZN4LIEF10ASN1Reader6is_tagEi(ptr no br label %19 19: ; preds = %2, %18, %17, %16 - %.sroa.5.0 = phi i64 [ 0, %17 ], [ 4294967296, %16 ], [ 4294967296, %18 ], [ 0, %2 ] - %.sroa.07.sroa.0.0 = phi i64 [ 1, %17 ], [ 0, %16 ], [ 1, %18 ], [ 7, %2 ] + %.sroa.5.0 = phi i64 [ 1, %17 ], [ 4294967296, %16 ], [ 4294967297, %18 ], [ 7, %2 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.sroa.07.0.insert.insert = or disjoint i64 %.sroa.07.sroa.0.0, %.sroa.5.0 - ret i64 %.sroa.07.0.insert.insert + ret i64 %.sroa.5.0 } declare i32 @mbedtls_asn1_get_tag(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1 @@ -787,18 +785,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %25, % %45 = add i64 %42, %44 store i64 %45, ptr %43, align 8, !tbaa !26 %46 = load i64, ptr %4, align 8, !tbaa !3 - %.sroa.5.0.extract.shift = and i64 %46, -4294967296 - %47 = and i64 %46, 4294967295 - br label %48 + br label %47 48: ; preds = %2, %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %24 - %.sroa.010.0 = phi i64 [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 8, %24 ], [ %47, %37 ], [ 7, %2 ] - %.sroa.5.sroa.0.0 = phi i64 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 0, %24 ], [ %.sroa.5.0.extract.shift, %37 ], [ 0, %2 ] + %.sroa.010.0 = phi i64 [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 8, %24 ], [ %46, %37 ], [ 7, %2 ] %.sroa.5.sroa.2.0 = phi i8 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 0, %24 ], [ 1, %37 ], [ 0, %2 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) - %.sroa.010.0.insert.insert = or disjoint i64 %.sroa.5.sroa.0.0, %.sroa.010.0 - %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.010.0.insert.insert, 0 + %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.5.sroa.0.0, 0 %.fca.1.insert = insertvalue { i64, i8 } %.fca.0.insert, i8 %.sroa.5.sroa.2.0, 1 ret { i64, i8 } %.fca.1.insert } @@ -848,18 +842,14 @@ define hidden { i64, i8 } @_ZN4LIEF10ASN1Reader8read_lenEv(ptr noundef nonnull r %29 = add i64 %26, %28 store i64 %29, ptr %27, align 8, !tbaa !26 %30 = load i64, ptr %2, align 8, !tbaa !3 - %.sroa.4.0.extract.shift = and i64 %30, -4294967296 - %31 = and i64 %30, 4294967295 br label %32 32: ; preds = %1, %21, %20 - %.sroa.05.0 = phi i64 [ 1, %20 ], [ %31, %21 ], [ 7, %1 ] - %.sroa.4.sroa.0.0 = phi i64 [ 0, %20 ], [ %.sroa.4.0.extract.shift, %21 ], [ 0, %1 ] + %.sroa.05.0 = phi i64 [ 1, %20 ], [ %30, %21 ], [ 7, %1 ] %.sroa.4.sroa.2.0 = phi i8 [ 0, %20 ], [ 1, %21 ], [ 0, %1 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) - %.sroa.05.0.insert.insert = or disjoint i64 %.sroa.4.sroa.0.0, %.sroa.05.0 - %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.05.0.insert.insert, 0 + %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.4.sroa.0.0, 0 %.fca.1.insert = insertvalue { i64, i8 } %.fca.0.insert, i8 %.sroa.4.sroa.2.0, 1 ret { i64, i8 } %.fca.1.insert } @@ -1153,7 +1143,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %49, % declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #3 ; Function Attrs: mustprogress nounwind uwtable -define hidden range(i64 0, 4294967304) i64 @_ZN4LIEF10ASN1Reader9read_boolEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8) %0) local_unnamed_addr #0 align 2 { +define hidden range(i64 1, 4294967298) i64 @_ZN4LIEF10ASN1Reader9read_boolEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8) %0) local_unnamed_addr #0 align 2 { %2 = alloca %"struct.spdlog::source_loc", align 8 %3 = alloca i32, align 4 %4 = alloca ptr, align 8 @@ -1229,15 +1219,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %23, % %44 = load i32, ptr %3, align 4, !tbaa !40 %45 = icmp ne i32 %44, 0 %46 = zext i1 %45 to i64 - br label %47 + %47 = or disjoint i64 %46, 4294967296 + br label %48 47: ; preds = %1, %35, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %.sroa.4.0 = phi i64 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 4294967296, %35 ], [ 0, %1 ] - %.sroa.07.sroa.0.0 = phi i64 [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %46, %35 ], [ 7, %1 ] + %.sroa.4.0 = phi i64 [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %47, %35 ], [ 7, %1 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.sroa.07.0.insert.insert = or disjoint i64 %.sroa.07.sroa.0.0, %.sroa.4.0 - ret i64 %.sroa.07.0.insert.insert + ret i64 %.sroa.07.0 } declare i32 @mbedtls_asn1_get_bool(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1 @@ -1577,25 +1566,21 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit11: ; preds = %48, %68 = add i64 %65, %67 store i64 %68, ptr %66, align 8, !tbaa !26 %69 = load i64, ptr %5, align 8, !tbaa !3 - %.sroa.6.0.extract.shift = and i64 %69, -4294967296 - %70 = and i64 %69, 4294967295 - br label %71 + br label %70 71: ; preds = %1, %60, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit11, %43, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %.sroa.017.0 = phi i64 [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 1, %43 ], [ %70, %60 ], [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit11 ], [ 7, %1 ] - %.sroa.6.sroa.0.0 = phi i64 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 0, %43 ], [ %.sroa.6.0.extract.shift, %60 ], [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit11 ], [ 0, %1 ] + %.sroa.017.0 = phi i64 [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 1, %43 ], [ %69, %60 ], [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit11 ], [ 7, %1 ] %.sroa.6.sroa.2.0 = phi i8 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 0, %43 ], [ 1, %60 ], [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit11 ], [ 0, %1 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.017.0.insert.insert = or disjoint i64 %.sroa.6.sroa.0.0, %.sroa.017.0 - %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.017.0.insert.insert, 0 + %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.6.sroa.0.0, 0 %.fca.1.insert = insertvalue { i64, i8 } %.fca.0.insert, i8 %.sroa.6.sroa.2.0, 1 ret { i64, i8 } %.fca.1.insert } ; Function Attrs: mustprogress nounwind uwtable -define hidden range(i64 0, 8589934592) i64 @_ZN4LIEF10ASN1Reader8read_intEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8) %0) local_unnamed_addr #0 align 2 { +define hidden range(i64 1, 8589934592) i64 @_ZN4LIEF10ASN1Reader8read_intEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8) %0) local_unnamed_addr #0 align 2 { %2 = alloca %"struct.spdlog::source_loc", align 8 %3 = alloca i32, align 4 %4 = alloca ptr, align 8 @@ -1671,15 +1656,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %23, % store i64 %43, ptr %41, align 8, !tbaa !26 %44 = load i32, ptr %3, align 4, !tbaa !40 %45 = zext i32 %44 to i64 - br label %46 + %46 = or disjoint i64 %45, 4294967296 + br label %47 46: ; preds = %1, %35, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %.sroa.07.0 = phi i64 [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %45, %35 ], [ 7, %1 ] - %.sroa.4.0 = phi i64 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ 4294967296, %35 ], [ 0, %1 ] + %.sroa.07.0 = phi i64 [ 1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %46, %35 ], [ 7, %1 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.sroa.07.0.insert.insert = or disjoint i64 %.sroa.4.0, %.sroa.07.0 - ret i64 %.sroa.07.0.insert.insert + ret i64 %.sroa.07.0 } declare i32 @mbedtls_asn1_get_int(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1 @@ -17366,11 +17350,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %231 = getelementptr inbounds nuw i32, ptr %208, i64 %230 %232 = load i32, ptr %231, align 4, !tbaa !40 %233 = zext i32 %232 to i64 + %234 = or disjoint i64 %.03556.i, %233 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i: ; preds = %228, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i - %234 = phi i64 [ %233, %228 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i ] - %235 = or disjoint i64 %234, %.03556.i + %234 = phi i64 [ %234, %228 ], [ %.03556.i, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i ] %236 = icmp samesign ugt i64 %226, %235 br i1 %236, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit, label %237 @@ -17748,11 +17732,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %408 = getelementptr inbounds nuw i32, ptr %385, i64 %407 %409 = load i32, ptr %408, align 4, !tbaa !40 %410 = zext i32 %409 to i64 + %411 = or disjoint i64 %.03556.i201, %410 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i211 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i211: ; preds = %405, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i208 - %411 = phi i64 [ %410, %405 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i208 ] - %412 = or disjoint i64 %411, %.03556.i201 + %411 = phi i64 [ %411, %405 ], [ %.03556.i201, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i208 ] %413 = icmp samesign ugt i64 %403, %412 br i1 %413, label %.thread617, label %414 @@ -17856,11 +17840,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %461 = getelementptr inbounds nuw i32, ptr %446, i64 %460 %462 = load i32, ptr %461, align 4, !tbaa !40 %463 = zext i32 %462 to i64 + %464 = or disjoint i64 %.03556.i219, %463 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i229 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i229: ; preds = %458, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i226 - %464 = phi i64 [ %463, %458 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i226 ] - %465 = or disjoint i64 %464, %.03556.i219 + %464 = phi i64 [ %464, %458 ], [ %.03556.i219, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i226 ] %466 = icmp samesign ugt i64 %456, %465 br i1 %466, label %.thread.sink.split, label %467 @@ -18203,17 +18187,17 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %611 = getelementptr inbounds nuw i32, ptr %596, i64 %610 %612 = load i32, ptr %611, align 4, !tbaa !40 %613 = zext i32 %612 to i64 + %614 = or disjoint i64 %.03556.i290, %613 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i300 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i300: ; preds = %608, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i297 - %614 = phi i64 [ %613, %608 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i297 ] - %615 = or disjoint i64 %614, %.03556.i290 + %614 = phi i64 [ %614, %608 ], [ %.03556.i290, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i297 ] %616 = icmp samesign ugt i64 %606, %615 br i1 %616, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit303, label %617 617: ; preds = %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i300 %618 = sub nuw nsw i64 %615, %606 - %619 = icmp samesign ult i64 %618, 2 + %619 = icmp ult i64 %618, 2 %620 = shl nuw nsw i64 %618, 32 %.not.not.not.i301 = icmp sgt i32 %.03458.i291, %594 %or.cond412 = select i1 %619, i1 %.not.not.not.i301, i1 false @@ -18333,11 +18317,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %677 = getelementptr inbounds nuw i32, ptr %662, i64 %676 %678 = load i32, ptr %677, align 4, !tbaa !40 %679 = zext i32 %678 to i64 + %680 = or disjoint i64 %.03556.i312, %679 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i322 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i322: ; preds = %674, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i319 - %680 = phi i64 [ %679, %674 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i319 ] - %681 = or disjoint i64 %680, %.03556.i312 + %680 = phi i64 [ %680, %674 ], [ %.03556.i312, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i319 ] %682 = icmp samesign ugt i64 %672, %681 br i1 %682, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit325, label %683 diff --git a/bench/lief/optimized/CoreAuxv.ll b/bench/lief/optimized/CoreAuxv.ll index 1ea23ef074c..5e67610135b 100644 --- a/bench/lief/optimized/CoreAuxv.ll +++ b/bench/lief/optimized/CoreAuxv.ll @@ -833,24 +833,17 @@ _ZN4LIEF3ELF8get_implINS0_7details5ELF32EEEN2tl8expectedIm11lief_errorsEENS0_8Co 82: ; preds = %77 %83 = icmp eq i32 %1, %80 - br i1 %83, label %84, label %58, !llvm.loop !52 + br i1 %83, label %_ZN4LIEF3ELF8get_implINS0_7details5ELF64EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit, label %58, !llvm.loop !52 -84: ; preds = %82 - %.sroa.611.0.extract.shift.i = and i64 %.sroa.6.0.copyload.i, -4294967296 - %85 = and i64 %.sroa.6.0.copyload.i, 4294967295 - br label %_ZN4LIEF3ELF8get_implINS0_7details5ELF64EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit - -_ZN4LIEF3ELF8get_implINS0_7details5ELF64EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit: ; preds = %58, %77, %76, %84 - %.sroa.010.0.i11 = phi i64 [ %85, %84 ], [ 2, %76 ], [ 2, %77 ], [ 2, %58 ] - %.sroa.611.sroa.0.0.i = phi i64 [ %.sroa.611.0.extract.shift.i, %84 ], [ 0, %76 ], [ 0, %77 ], [ 0, %58 ] - %.sroa.611.sroa.2.0.i12 = phi i8 [ 1, %84 ], [ 0, %76 ], [ 0, %77 ], [ 0, %58 ] +_ZN4LIEF3ELF8get_implINS0_7details5ELF64EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit: ; preds = %58, %77, %82, %76 + %.sroa.010.0.i11 = phi i64 [ 2, %76 ], [ 2, %58 ], [ 2, %77 ], [ %.sroa.6.0.copyload.i, %82 ] + %.sroa.611.sroa.0.0.i = phi i8 [ 0, %76 ], [ 0, %58 ], [ 0, %77 ], [ 1, %82 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) - %.sroa.010.0.insert.insert.i = or disjoint i64 %.sroa.611.sroa.0.0.i, %.sroa.010.0.i11 br label %86 86: ; preds = %_ZN4LIEF3ELF8get_implINS0_7details5ELF64EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit, %_ZN4LIEF3ELF8get_implINS0_7details5ELF32EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit - %.sroa.010.0.i.pn = phi i64 [ %.sroa.010.0.i, %_ZN4LIEF3ELF8get_implINS0_7details5ELF32EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit ], [ %.sroa.010.0.insert.insert.i, %_ZN4LIEF3ELF8get_implINS0_7details5ELF64EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit ] - %.sroa.611.sroa.2.0.i.pn = phi i8 [ %.sroa.611.sroa.2.0.i, %_ZN4LIEF3ELF8get_implINS0_7details5ELF32EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit ], [ %.sroa.611.sroa.2.0.i12, %_ZN4LIEF3ELF8get_implINS0_7details5ELF64EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit ] + %.sroa.010.0.i.pn = phi i64 [ %.sroa.010.0.i, %_ZN4LIEF3ELF8get_implINS0_7details5ELF32EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit ], [ %.sroa.010.0.i11, %_ZN4LIEF3ELF8get_implINS0_7details5ELF64EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit ] + %.sroa.611.sroa.2.0.i.pn = phi i8 [ %.sroa.611.sroa.2.0.i, %_ZN4LIEF3ELF8get_implINS0_7details5ELF32EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit ], [ %.sroa.611.sroa.2.0.i11, %_ZN4LIEF3ELF8get_implINS0_7details5ELF64EEEN2tl8expectedIm11lief_errorsEENS0_8CoreAuxv4TYPEERKSt6vectorIhSaIhEE.exit ] %.fca.0.insert.i.pn = insertvalue { i64, i8 } poison, i64 %.sroa.010.0.i.pn, 0 %.pn = insertvalue { i64, i8 } %.fca.0.insert.i.pn, i8 %.sroa.611.sroa.2.0.i.pn, 1 ret { i64, i8 } %.pn @@ -17360,11 +17353,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %231 = getelementptr inbounds nuw i32, ptr %208, i64 %230 %232 = load i32, ptr %231, align 4, !tbaa !98 %233 = zext i32 %232 to i64 + %234 = or disjoint i64 %.03556.i, %233 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i: ; preds = %228, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i - %234 = phi i64 [ %233, %228 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i ] - %235 = or disjoint i64 %234, %.03556.i + %234 = phi i64 [ %234, %228 ], [ %.03556.i, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i ] %236 = icmp samesign ugt i64 %226, %235 br i1 %236, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit, label %237 @@ -17742,11 +17735,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %408 = getelementptr inbounds nuw i32, ptr %385, i64 %407 %409 = load i32, ptr %408, align 4, !tbaa !98 %410 = zext i32 %409 to i64 + %411 = or disjoint i64 %.03556.i201, %410 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i211 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i211: ; preds = %405, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i208 - %411 = phi i64 [ %410, %405 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i208 ] - %412 = or disjoint i64 %411, %.03556.i201 + %411 = phi i64 [ %411, %405 ], [ %.03556.i201, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i208 ] %413 = icmp samesign ugt i64 %403, %412 br i1 %413, label %.thread617, label %414 @@ -17850,11 +17843,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %461 = getelementptr inbounds nuw i32, ptr %446, i64 %460 %462 = load i32, ptr %461, align 4, !tbaa !98 %463 = zext i32 %462 to i64 + %464 = or disjoint i64 %.03556.i219, %463 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i229 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i229: ; preds = %458, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i226 - %464 = phi i64 [ %463, %458 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i226 ] - %465 = or disjoint i64 %464, %.03556.i219 + %464 = phi i64 [ %464, %458 ], [ %.03556.i219, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i226 ] %466 = icmp samesign ugt i64 %456, %465 br i1 %466, label %.thread.sink.split, label %467 @@ -18197,17 +18190,17 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %611 = getelementptr inbounds nuw i32, ptr %596, i64 %610 %612 = load i32, ptr %611, align 4, !tbaa !98 %613 = zext i32 %612 to i64 + %614 = or disjoint i64 %.03556.i290, %613 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i300 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i300: ; preds = %608, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i297 - %614 = phi i64 [ %613, %608 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i297 ] - %615 = or disjoint i64 %614, %.03556.i290 + %614 = phi i64 [ %614, %608 ], [ %.03556.i290, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i297 ] %616 = icmp samesign ugt i64 %606, %615 br i1 %616, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit303, label %617 617: ; preds = %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i300 %618 = sub nuw nsw i64 %615, %606 - %619 = icmp samesign ult i64 %618, 2 + %619 = icmp ult i64 %618, 2 %620 = shl nuw nsw i64 %618, 32 %.not.not.not.i301 = icmp sgt i32 %.03458.i291, %594 %or.cond412 = select i1 %619, i1 %.not.not.not.i301, i1 false @@ -18327,11 +18320,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %677 = getelementptr inbounds nuw i32, ptr %662, i64 %676 %678 = load i32, ptr %677, align 4, !tbaa !98 %679 = zext i32 %678 to i64 + %680 = or disjoint i64 %.03556.i312, %679 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i322 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i322: ; preds = %674, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i319 - %680 = phi i64 [ %679, %674 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i319 ] - %681 = or disjoint i64 %680, %.03556.i312 + %680 = phi i64 [ %680, %674 ], [ %.03556.i312, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i319 ] %682 = icmp samesign ugt i64 %672, %681 br i1 %682, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit325, label %683 diff --git a/bench/linux/optimized/cgroup.ll b/bench/linux/optimized/cgroup.ll index 0cd618bc08c..ab00c5ab815 100644 --- a/bench/linux/optimized/cgroup.ll +++ b/bench/linux/optimized/cgroup.ll @@ -12595,7 +12595,7 @@ define dso_local noundef range(i32 -22, 1) i32 @cgroup_parse_float(ptr noundef r %10 = load i64, ptr %5, align 8 %11 = icmp slt i64 %10, 0 %12 = select i1 %9, i1 true, i1 %11 - br i1 %12, label %56, label %13 + br i1 %12, label %55, label %13 13: ; preds = %3 %14 = load i32, ptr %7, align 4 @@ -12659,22 +12659,24 @@ define dso_local noundef range(i32 -22, 1) i32 @cgroup_parse_float(ptr noundef r %50 = icmp eq i32 %48, 0 br i1 %50, label %.loopexit, label %.preheader, !llvm.loop !314 -.loopexit: ; preds = %.preheader, %.loopexit18 - %51 = phi i64 [ %42, %.loopexit18 ], [ %44, %.preheader ] - %52 = phi i64 [ %41, %.loopexit18 ], [ %45, %.preheader ] - %53 = phi i64 [ 1, %.loopexit18 ], [ %49, %.preheader ] - %54 = mul i64 %53, %51 - %55 = add i64 %54, %52 - store i64 %55, ptr %2, align 8 - br label %56 +.loopexit: ; preds = %.preheader + %51 = mul i64 %49, %44 + br label %.loopexit -56: ; preds = %.loopexit, %3 - %57 = phi i32 [ 0, %.loopexit ], [ -22, %3 ] +56: ; preds = %56, %.loopexit18 + %57 = phi i64 [ %41, %.loopexit18 ], [ %45, %.loopexit.loopexit ] + %53 = phi i64 [ %42, %.loopexit18 ], [ %51, %.loopexit.loopexit ] + %54 = add i64 %53, %52 + store i64 %54, ptr %2, align 8 + br label %55 + +55: ; preds = %.loopexit, %3 + %56 = phi i32 [ 0, %.loopexit ], [ -22, %3 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) - ret i32 %57 + ret i32 %56 } ; Function Attrs: nofree nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/hda_jack.ll b/bench/linux/optimized/hda_jack.ll index dfbd3d6ea73..74c65ff296a 100644 --- a/bench/linux/optimized/hda_jack.ll +++ b/bench/linux/optimized/hda_jack.ll @@ -1492,12 +1492,15 @@ define dso_local range(i32 -2147483648, 1) i32 @snd_hda_jack_add_kctl_mst(ptr no %36 = icmp eq i32 %35, 0 br i1 %36, label %.loopexit13, label %.preheader12, !llvm.loop !30 -.loopexit13: ; preds = %.preheader12, %27, %24 - %37 = phi i32 [ 0, %24 ], [ 0, %27 ], [ %33, %.preheader12 ] - %38 = getelementptr inbounds nuw i8, ptr %0, i64 960 - %39 = load ptr, ptr %38, align 8 - %40 = or i32 %37, %25 - %41 = tail call i32 @snd_jack_new(ptr noundef %39, ptr noundef %3, i32 noundef %40, ptr noundef nonnull %11, i1 noundef zeroext true, i1 noundef zeroext %4) #11 +.loopexit13: ; preds = %.preheader12 + %37 = or i32 %33, %25 + br label %.loopexit13 + +.loopexit13:; preds = %.loopexit13, %27, %24 + %38 = phi i32 [ %25, %24 ], [ %25, %27 ], [ %37, %.loopexit13.loopexit ] + %39 = getelementptr inbounds nuw i8, ptr %0, i64 960 + %40 = load ptr, ptr %39, align 8 + %41 = tail call i32 @snd_jack_new(ptr noundef %40, ptr noundef %3, i32 noundef %38, ptr noundef nonnull %11, i1 noundef zeroext true, i1 noundef zeroext %4) #11 %42 = icmp slt i32 %41, 0 br i1 %42, label %105, label %43 diff --git a/bench/linux/optimized/radix-tree.ll b/bench/linux/optimized/radix-tree.ll index 2dadadcb210..0afee63a554 100644 --- a/bench/linux/optimized/radix-tree.ll +++ b/bench/linux/optimized/radix-tree.ll @@ -867,7 +867,7 @@ define dso_local void @__radix_tree_replace(ptr noundef %0, ptr noundef %1, ptr } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid -define internal fastcc noundef zeroext i1 @delete_node(ptr noundef %0, ptr noundef nonnull %1) unnamed_addr #0 align 16 { +define internal fastcc zeroext i1 @delete_node(ptr noundef %0, ptr noundef nonnull %1) unnamed_addr #0 align 16 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = getelementptr inbounds nuw i8, ptr %0, i64 4 %5 = getelementptr inbounds nuw i8, ptr %1, i64 2 @@ -1045,10 +1045,14 @@ define internal fastcc noundef zeroext i1 @delete_node(ptr noundef %0, ptr nound tail call void @call_rcu(ptr noundef nonnull %96, ptr noundef nonnull @radix_tree_node_rcu_free) #13 br i1 %78, label %.loopexit, label %8, !llvm.loop !51 -._crit_edge11: ; preds = %40, %.lr.ph26, %.lr.ph10, %70, %.lr.ph10.preheader, %.preheader - %.lcssa = phi i8 [ 0, %.preheader ], [ 0, %.lr.ph10.preheader ], [ 1, %70 ], [ 1, %.lr.ph10 ], [ %33, %.lr.ph26 ], [ %33, %40 ] +._crit_edge11: ; preds = %40, %.lr.ph26, %.lr.ph10, %70 + %.lcssa = phi i8 [ 1, %70 ], [ 1, %.lr.ph10 ], [ %33, %.lr.ph26 ], [ %33, %40 ] %100 = or i8 %.lcssa, %.lcssa7 - %101 = icmp ne i8 %100, 0 + br label %._crit_edge11 + +._crit_edge11: ; preds = %.lr.ph10.preheader, %._crit_edge11.loopexit.loopexit, %.preheader + %.lcssa = phi i8 [ %.lcssa7, %.preheader ], [ %.lcssa7, %.lr.ph10.preheader ], [ %100, %._crit_edge11.loopexit.loopexit ] + %101 = icmp ne i8 %.lcssa, 0 br label %.loopexit .loopexit: ; preds = %.thread3, %._crit_edge, %._crit_edge11 @@ -2245,7 +2249,7 @@ define dso_local void @radix_tree_iter_delete(ptr noundef %0, ptr noundef captur } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid -define internal fastcc noundef zeroext i1 @__radix_tree_delete(ptr noundef %0, ptr noundef %1, ptr noundef %2) unnamed_addr #0 align 16 { +define internal fastcc zeroext i1 @__radix_tree_delete(ptr noundef %0, ptr noundef %1, ptr noundef %2) unnamed_addr #0 align 16 { %4 = load volatile ptr, ptr %2, align 8 %5 = ptrtoint ptr %4 to i64 %6 = icmp eq ptr %1, null diff --git a/bench/linux/optimized/timekeeping.ll b/bench/linux/optimized/timekeeping.ll index 0dff13f234a..449f945a163 100644 --- a/bench/linux/optimized/timekeeping.ll +++ b/bench/linux/optimized/timekeeping.ll @@ -3216,9 +3216,12 @@ tk_set_wall_to_mono.exit: ; preds = %73, %94 %111 = icmp ult i64 %110, %60 br i1 %111, label %.loopexit20, label %.preheader -.loopexit20: ; preds = %108, %48 - %112 = phi i32 [ 0, %48 ], [ %109, %108 ] - %113 = or i32 %112, %44 +.loopexit20: ; preds = %108 + %112 = or i32 %109, %44 + br label %.loopexit20 + +.loopexit20: ; preds = %.loopexit20.loopexit, %48 + %113 = phi i32 [ %44, %48 ], [ %112, %.loopexit20.loopexit ] %114 = load i64, ptr getelementptr inbounds nuw (i8, ptr @shadow_timekeeper, i64 240), align 8 %115 = shl i64 %114, %45 %116 = load i64, ptr getelementptr inbounds nuw (i8, ptr @shadow_timekeeper, i64 88), align 8 @@ -3466,11 +3469,14 @@ tk_set_wall_to_mono.exit: ; preds = %73, %94 %264 = phi i32 [ %238, %244 ], [ 4, %248 ], [ %238, %245 ] %265 = load i64, ptr getelementptr inbounds nuw (i8, ptr @shadow_timekeeper, i64 32), align 8 %266 = icmp ult i64 %265, %227 - br i1 %266, label %.loopexit, label %236 + br i1 %266, label %.loopexit.loopexit, label %236 + +.loopexit.loopexit: ; preds = %263 + %267 = or i32 %264, %152 + br label %.loopexit -.loopexit: ; preds = %263, %._crit_edge - %267 = phi i32 [ 0, %._crit_edge ], [ %264, %263 ] - %268 = or i32 %267, %152 +.loopexit: ; preds = %.loopexit.loopexit, %._crit_edge + %267 = phi i32 [ %152, %._crit_edge ], [ %267, %.loopexit.loopexit ] %269 = load i32, ptr @tk_core, align 64 %270 = add i32 %269, 1 store i32 %270, ptr @tk_core, align 64 diff --git a/bench/llama.cpp/optimized/unicode.ll b/bench/llama.cpp/optimized/unicode.ll index 99c9a9e130a..37d857e0fbd 100644 --- a/bench/llama.cpp/optimized/unicode.ll +++ b/bench/llama.cpp/optimized/unicode.ll @@ -23694,30 +23694,23 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr .critedge: ; preds = %49, %50 %54 = getelementptr inbounds nuw i8, ptr %.021.ptr43, i64 8 %55 = load i32, ptr %54, align 8 - %.sroa.6.0.extract.shift = and i32 %55, -16777216 - %56 = and i32 %55, 16711680 - %57 = and i32 %55, 65535 br label %.critedge28 .critedge28: ; preds = %45, %50, %.critedge - %.sroa.037.1 = phi i32 [ %57, %.critedge ], [ 1024, %50 ], [ 0, %45 ] - %.sroa.4.1 = phi i32 [ %56, %.critedge ], [ 0, %50 ], [ 0, %45 ] - %.sroa.6.3 = phi i32 [ %.sroa.6.0.extract.shift, %.critedge ], [ 0, %50 ], [ 0, %45 ] - %58 = load ptr, ptr %5, align 8, !tbaa !7 - %59 = icmp eq ptr %58, %7 - br i1 %59, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %.sroa.037.1 = phi i32 [ %55, %.critedge ], [ 1024, %50 ], [ 0, %45 ] + %56 = load ptr, ptr %5, align 8, !tbaa !7 + %57 = icmp eq ptr %56, %7 + br i1 %57, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %.critedge28 %60 = load i64, ptr %7, align 8, !tbaa !12 %61 = add i64 %60, 1 - call void @_ZdlPvm(ptr noundef %58, i64 noundef %61) #32 + call void @_ZdlPvm(ptr noundef %56, i64 noundef %61) #32 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %.critedge28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.1, %.sroa.037.1 - %.sroa.037.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.6.3 - ret i32 %.sroa.037.0.insert.insert + ret i32 %.sroa.037.1 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i30: ; preds = %41 %62 = load i64, ptr %7, align 8, !tbaa !12 @@ -53455,30 +53448,23 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr .critedge: ; preds = %42, %43 %47 = getelementptr inbounds nuw i8, ptr %.021.ptr42, i64 8 %48 = load i32, ptr %47, align 8 - %.sroa.6.0.extract.shift = and i32 %48, -16777216 - %49 = and i32 %48, 16711680 - %50 = and i32 %48, 65535 br label %.critedge28 .critedge28: ; preds = %38, %43, %.critedge - %.sroa.036.1 = phi i32 [ %50, %.critedge ], [ 1024, %43 ], [ 0, %38 ] - %.sroa.4.1 = phi i32 [ %49, %.critedge ], [ 0, %43 ], [ 0, %38 ] - %.sroa.6.3 = phi i32 [ %.sroa.6.0.extract.shift, %.critedge ], [ 0, %43 ], [ 0, %38 ] - %51 = load ptr, ptr %5, align 8, !tbaa !7 - %52 = icmp eq ptr %51, %7 - br i1 %52, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %.sroa.036.1 = phi i32 [ %48, %.critedge ], [ 1024, %43 ], [ 0, %38 ] + %49 = load ptr, ptr %5, align 8, !tbaa !7 + %50 = icmp eq ptr %49, %7 + br i1 %50, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %.critedge28 %53 = load i64, ptr %7, align 8, !tbaa !12 %54 = add i64 %53, 1 - call void @_ZdlPvm(ptr noundef %51, i64 noundef %54) #32 + call void @_ZdlPvm(ptr noundef %49, i64 noundef %54) #32 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %.critedge28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.1, %.sroa.036.1 - %.sroa.036.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.6.3 - ret i32 %.sroa.036.0.insert.insert + ret i32 %.sroa.036.1 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29: ; preds = %34 %55 = load i64, ptr %7, align 8, !tbaa !12 diff --git a/bench/luajit/optimized/lib_ffi.ll b/bench/luajit/optimized/lib_ffi.ll index 4bec2e37894..67b220eeb2e 100644 --- a/bench/luajit/optimized/lib_ffi.ll +++ b/bench/luajit/optimized/lib_ffi.ll @@ -1623,12 +1623,14 @@ ffi_clib_index.exit: ; preds = %20 %72 = icmp slt i32 %71, -1879048192 br i1 %72, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %67, %.preheader - %.026.lcssa = phi i32 [ 0, %.preheader ], [ %.127, %67 ] - %.lcssa34 = phi ptr [ %55, %.preheader ], [ %70, %67 ] - %.lcssa = phi i32 [ %56, %.preheader ], [ %71, %67 ] - %73 = or i32 %.lcssa, %.026.lcssa - %74 = and i32 %73, 33554432 +._crit_edge: ; preds = %67 + %73 = or i32 %71, %.127 + br label %._crit_edge + +._crit_edge:; preds = %._crit_edge, %.preheader + %.lcssa34 = phi ptr [ %55, %.preheader ], [ %70, %._crit_edge.loopexit ] + %.lcssa = phi i32 [ %56, %.preheader ], [ %73, %._crit_edge.loopexit ] + %74 = and i32 %.lcssa, 33554432 %.not.not = icmp eq i32 %74, 0 br i1 %.not.not, label %75, label %.critedge33 diff --git a/bench/luau/optimized/Builtins.ll b/bench/luau/optimized/Builtins.ll index f0cb26173b6..ab711382885 100644 --- a/bench/luau/optimized/Builtins.ll +++ b/bench/luau/optimized/Builtins.ll @@ -485,9 +485,8 @@ $_ZN4Luau6FValueIbE4listE = comdat any @_ZN4Luau6FValueIbE4listE = linkonce_odr dso_local local_unnamed_addr global ptr null, comdat, align 8 @llvm.global_ctors = appending global [57 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init, ptr @_ZN4Luau7AstRttiINS_7AstAttrEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.1, ptr @_ZN4Luau7AstRttiINS_14AstGenericTypeEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.2, ptr @_ZN4Luau7AstRttiINS_18AstGenericTypePackEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.3, ptr @_ZN4Luau7AstRttiINS_12AstExprGroupEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.4, ptr @_ZN4Luau7AstRttiINS_18AstExprConstantNilEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.5, ptr @_ZN4Luau7AstRttiINS_19AstExprConstantBoolEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.6, ptr @_ZN4Luau7AstRttiINS_21AstExprConstantNumberEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.7, ptr @_ZN4Luau7AstRttiINS_21AstExprConstantStringEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.8, ptr @_ZN4Luau7AstRttiINS_12AstExprLocalEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.9, ptr @_ZN4Luau7AstRttiINS_13AstExprGlobalEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.10, ptr @_ZN4Luau7AstRttiINS_14AstExprVarargsEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.11, ptr @_ZN4Luau7AstRttiINS_11AstExprCallEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.12, ptr @_ZN4Luau7AstRttiINS_16AstExprIndexNameEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.13, ptr @_ZN4Luau7AstRttiINS_16AstExprIndexExprEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.14, ptr @_ZN4Luau7AstRttiINS_15AstExprFunctionEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.15, ptr @_ZN4Luau7AstRttiINS_12AstExprTableEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.16, ptr @_ZN4Luau7AstRttiINS_12AstExprUnaryEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.17, ptr @_ZN4Luau7AstRttiINS_13AstExprBinaryEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.18, ptr @_ZN4Luau7AstRttiINS_20AstExprTypeAssertionEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.19, ptr @_ZN4Luau7AstRttiINS_13AstExprIfElseEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.20, ptr @_ZN4Luau7AstRttiINS_19AstExprInterpStringEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.21, ptr @_ZN4Luau7AstRttiINS_12AstStatBlockEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.22, ptr @_ZN4Luau7AstRttiINS_9AstStatIfEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.23, ptr @_ZN4Luau7AstRttiINS_12AstStatWhileEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.24, ptr @_ZN4Luau7AstRttiINS_13AstStatRepeatEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.25, ptr @_ZN4Luau7AstRttiINS_12AstStatBreakEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.26, ptr @_ZN4Luau7AstRttiINS_15AstStatContinueEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.27, ptr @_ZN4Luau7AstRttiINS_13AstStatReturnEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.28, ptr @_ZN4Luau7AstRttiINS_11AstStatExprEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.29, ptr @_ZN4Luau7AstRttiINS_12AstStatLocalEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.30, ptr @_ZN4Luau7AstRttiINS_10AstStatForEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.31, ptr @_ZN4Luau7AstRttiINS_12AstStatForInEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.32, ptr @_ZN4Luau7AstRttiINS_13AstStatAssignEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.33, ptr @_ZN4Luau7AstRttiINS_21AstStatCompoundAssignEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.34, ptr @_ZN4Luau7AstRttiINS_15AstStatFunctionEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.35, ptr @_ZN4Luau7AstRttiINS_20AstStatLocalFunctionEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.36, ptr @_ZN4Luau7AstRttiINS_16AstStatTypeAliasEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.37, ptr @_ZN4Luau7AstRttiINS_19AstStatTypeFunctionEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.38, ptr @_ZN4Luau7AstRttiINS_20AstStatDeclareGlobalEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.39, ptr @_ZN4Luau7AstRttiINS_22AstStatDeclareFunctionEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.40, ptr @_ZN4Luau7AstRttiINS_19AstStatDeclareClassEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.41, ptr @_ZN4Luau7AstRttiINS_16AstTypeReferenceEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.42, ptr @_ZN4Luau7AstRttiINS_12AstTypeTableEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.43, ptr @_ZN4Luau7AstRttiINS_15AstTypeFunctionEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.44, ptr @_ZN4Luau7AstRttiINS_13AstTypeTypeofEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.45, ptr @_ZN4Luau7AstRttiINS_12AstTypeUnionEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.46, ptr @_ZN4Luau7AstRttiINS_19AstTypeIntersectionEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.47, ptr @_ZN4Luau7AstRttiINS_12AstExprErrorEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.48, ptr @_ZN4Luau7AstRttiINS_12AstStatErrorEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.49, ptr @_ZN4Luau7AstRttiINS_12AstTypeErrorEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.50, ptr @_ZN4Luau7AstRttiINS_20AstTypeSingletonBoolEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.51, ptr @_ZN4Luau7AstRttiINS_22AstTypeSingletonStringEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.52, ptr @_ZN4Luau7AstRttiINS_12AstTypeGroupEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.53, ptr @_ZN4Luau7AstRttiINS_19AstTypePackExplicitEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.54, ptr @_ZN4Luau7AstRttiINS_19AstTypePackVariadicEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init.55, ptr @_ZN4Luau7AstRttiINS_18AstTypePackGenericEE5valueE }, { i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_Builtins.cpp, ptr null }] @llvm.used = appending global [56 x ptr] [ptr @_ZN4Luau7AstRttiINS_10AstStatForEE5valueE, ptr @_ZN4Luau7AstRttiINS_11AstExprCallEE5valueE, ptr @_ZN4Luau7AstRttiINS_11AstStatExprEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstExprErrorEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstExprGroupEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstExprLocalEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstExprTableEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstExprUnaryEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstStatBlockEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstStatBreakEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstStatErrorEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstStatForInEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstStatLocalEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstStatWhileEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstTypeErrorEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstTypeGroupEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstTypeTableEE5valueE, ptr @_ZN4Luau7AstRttiINS_12AstTypeUnionEE5valueE, ptr @_ZN4Luau7AstRttiINS_13AstExprBinaryEE5valueE, ptr @_ZN4Luau7AstRttiINS_13AstExprGlobalEE5valueE, ptr @_ZN4Luau7AstRttiINS_13AstExprIfElseEE5valueE, ptr @_ZN4Luau7AstRttiINS_13AstStatAssignEE5valueE, ptr @_ZN4Luau7AstRttiINS_13AstStatRepeatEE5valueE, ptr @_ZN4Luau7AstRttiINS_13AstStatReturnEE5valueE, ptr @_ZN4Luau7AstRttiINS_13AstTypeTypeofEE5valueE, ptr @_ZN4Luau7AstRttiINS_14AstExprVarargsEE5valueE, ptr @_ZN4Luau7AstRttiINS_14AstGenericTypeEE5valueE, ptr @_ZN4Luau7AstRttiINS_15AstExprFunctionEE5valueE, ptr @_ZN4Luau7AstRttiINS_15AstStatContinueEE5valueE, ptr @_ZN4Luau7AstRttiINS_15AstStatFunctionEE5valueE, ptr @_ZN4Luau7AstRttiINS_15AstTypeFunctionEE5valueE, ptr @_ZN4Luau7AstRttiINS_16AstExprIndexExprEE5valueE, ptr @_ZN4Luau7AstRttiINS_16AstExprIndexNameEE5valueE, ptr @_ZN4Luau7AstRttiINS_16AstStatTypeAliasEE5valueE, ptr @_ZN4Luau7AstRttiINS_16AstTypeReferenceEE5valueE, ptr @_ZN4Luau7AstRttiINS_18AstExprConstantNilEE5valueE, ptr @_ZN4Luau7AstRttiINS_18AstGenericTypePackEE5valueE, ptr @_ZN4Luau7AstRttiINS_18AstTypePackGenericEE5valueE, ptr @_ZN4Luau7AstRttiINS_19AstExprConstantBoolEE5valueE, ptr @_ZN4Luau7AstRttiINS_19AstExprInterpStringEE5valueE, ptr @_ZN4Luau7AstRttiINS_19AstStatDeclareClassEE5valueE, ptr @_ZN4Luau7AstRttiINS_19AstStatTypeFunctionEE5valueE, ptr @_ZN4Luau7AstRttiINS_19AstTypeIntersectionEE5valueE, ptr @_ZN4Luau7AstRttiINS_19AstTypePackExplicitEE5valueE, ptr @_ZN4Luau7AstRttiINS_19AstTypePackVariadicEE5valueE, ptr @_ZN4Luau7AstRttiINS_20AstExprTypeAssertionEE5valueE, ptr @_ZN4Luau7AstRttiINS_20AstStatDeclareGlobalEE5valueE, ptr @_ZN4Luau7AstRttiINS_20AstStatLocalFunctionEE5valueE, ptr @_ZN4Luau7AstRttiINS_20AstTypeSingletonBoolEE5valueE, ptr @_ZN4Luau7AstRttiINS_21AstExprConstantNumberEE5valueE, ptr @_ZN4Luau7AstRttiINS_21AstExprConstantStringEE5valueE, ptr @_ZN4Luau7AstRttiINS_21AstStatCompoundAssignEE5valueE, ptr @_ZN4Luau7AstRttiINS_22AstStatDeclareFunctionEE5valueE, ptr @_ZN4Luau7AstRttiINS_22AstTypeSingletonStringEE5valueE, ptr @_ZN4Luau7AstRttiINS_7AstAttrEE5valueE, ptr @_ZN4Luau7AstRttiINS_9AstStatIfEE5valueE], section "llvm.metadata" -@switch.table._ZN4Luau7Compile14getBuiltinInfoEi = private unnamed_addr constant [90 x i64] [i64 4294967295, i64 4294967295, i64 1, i64 1, i64 1, i64 2, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 2, i64 1, i64 2, i64 1, i64 4294967295, i64 4294967295, i64 4294967295, i64 1, i64 2, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 2, i64 4294967295, i64 1, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 2, i64 2, i64 4294967295, i64 2, i64 2, i64 1, i64 4294967295, i64 4294967295, i64 1, i64 1, i64 4294967295, i64 3, i64 1, i64 1, i64 3, i64 2, i64 2, i64 4294967295, i64 4294967295, i64 4294967295, i64 1, i64 1, i64 4294967295, i64 1, i64 3, i64 1, i64 2, i64 4294967295, i64 1, i64 1, i64 2, i64 2, i64 3, i64 2, i64 2, i64 3, i64 2, i64 2, i64 3, i64 2, i64 3, i64 2, i64 3, i64 1, i64 1, i64 2, i64 2, i64 1, i64 1, i64 1, i64 1, i64 3, i64 4294967295, i64 4294967295, i64 3], align 8 -@switch.table._ZN4Luau7Compile14getBuiltinInfoEi.2 = private unnamed_addr constant [90 x i64] [i64 -4294967296, i64 -4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 8589934592, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 8589934592, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 -4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 0, i64 -4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 -4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 0, i64 4294967296, i64 4294967296, i64 0, i64 4294967296, i64 4294967296, i64 0, i64 4294967296, i64 0, i64 4294967296, i64 0, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296, i64 4294967296], align 8 -@switch.table._ZN4Luau7Compile14getBuiltinInfoEi.3 = private unnamed_addr constant [90 x i32] [i32 0, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 1], align 4 +@switch.table._ZN4Luau7Compile14getBuiltinInfoEi = private unnamed_addr constant [90 x i64] [i64 -1, i64 -1, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967298, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967298, i64 8589934593, i64 4294967298, i64 4294967297, i64 8589934591, i64 8589934591, i64 8589934591, i64 8589934593, i64 4294967298, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967298, i64 8589934591, i64 4294967297, i64 8589934591, i64 8589934591, i64 8589934591, i64 8589934591, i64 4294967298, i64 4294967298, i64 8589934591, i64 4294967298, i64 4294967298, i64 4294967297, i64 -1, i64 8589934591, i64 4294967297, i64 4294967297, i64 8589934591, i64 4294967299, i64 4294967297, i64 4294967297, i64 4294967299, i64 4294967298, i64 4294967298, i64 4294967295, i64 -1, i64 8589934591, i64 4294967297, i64 4294967297, i64 -1, i64 4294967297, i64 4294967299, i64 4294967297, i64 4294967298, i64 8589934591, i64 4294967297, i64 4294967297, i64 4294967298, i64 4294967298, i64 3, i64 4294967298, i64 4294967298, i64 3, i64 4294967298, i64 4294967298, i64 3, i64 4294967298, i64 3, i64 4294967298, i64 3, i64 4294967297, i64 4294967297, i64 4294967298, i64 4294967298, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967297, i64 4294967299, i64 8589934591, i64 8589934591, i64 4294967299], align 8 +@switch.table._ZN4Luau7Compile14getBuiltinInfoEi.2 = private unnamed_addr constant [90 x i32] [i32 0, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 1], align 4 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, argmem: none, inaccessiblemem: none) uwtable define internal void @__cxx_global_var_init() #0 section ".text.startup" comdat($_ZN4Luau7AstRttiINS_7AstAttrEE5valueE) { @@ -1999,14 +1998,10 @@ switch.lookup: %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table._ZN4Luau7Compile14getBuiltinInfoEi, i64 %1 %switch.load = load i64, ptr %switch.gep, align 8 %2 = zext nneg i32 %0 to i64 - %switch.gep2 = getelementptr inbounds nuw i64, ptr @switch.table._ZN4Luau7Compile14getBuiltinInfoEi.2, i64 %2 - %switch.load3 = load i64, ptr %switch.gep2, align 8 - %3 = zext nneg i32 %0 to i64 - %switch.gep4 = getelementptr inbounds nuw i32, ptr @switch.table._ZN4Luau7Compile14getBuiltinInfoEi.3, i64 %3 - %switch.load5 = load i32, ptr %switch.gep4, align 4 - %.sroa.01.0.insert.insert = or disjoint i64 %switch.load3, %switch.load - %.fca.0.insert = insertvalue { i64, i32 } poison, i64 %.sroa.01.0.insert.insert, 0 - %.fca.1.insert = insertvalue { i64, i32 } %.fca.0.insert, i32 %switch.load5, 1 + %switch.gep2 = getelementptr inbounds nuw i32, ptr @switch.table._ZN4Luau7Compile14getBuiltinInfoEi.2, i64 %2 + %switch.load3 = load i32, ptr %switch.gep2, align 4 + %.fca.0.insert = insertvalue { i64, i32 } poison, i64 %switch.load, 0 + %.fca.1.insert = insertvalue { i64, i32 } %.fca.0.insert, i32 %switch.load3, 1 ret { i64, i32 } %.fca.1.insert } diff --git a/bench/luau/optimized/Compile.ll b/bench/luau/optimized/Compile.ll index 72951b1c858..3dcba0eb78e 100644 --- a/bench/luau/optimized/Compile.ll +++ b/bench/luau/optimized/Compile.ll @@ -4447,7 +4447,7 @@ declare i32 @strncmp(ptr noundef captures(none), ptr noundef captures(none), i64 declare void @_Z12setLuauFlagsPKc(ptr noundef) local_unnamed_addr #5 ; Function Attrs: mustprogress nofree norecurse nounwind willreturn memory(argmem: read) uwtable -define internal fastcc range(i64 0, 4294967312) i64 @_ZL16getCompileFormatPKc(ptr noundef readonly captures(none) %0) unnamed_addr #9 personality ptr @__gxx_personality_v0 { +define internal fastcc range(i64 8, 4294967305) i64 @_ZL16getCompileFormatPKc(ptr noundef readonly captures(none) %0) unnamed_addr #9 personality ptr @__gxx_personality_v0 { %2 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(5) @.str.180) #31 %3 = icmp eq i32 %2, 0 br i1 %3, label %29, label %4 @@ -4490,14 +4490,12 @@ define internal fastcc range(i64 0, 4294967312) i64 @_ZL16getCompileFormatPKc(pt 25: ; preds = %22 %26 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(5) @.str.188) #31 %27 = icmp eq i32 %26, 0 - %28 = select i1 %27, i64 4294967296, i64 0 + %28 = select i1 %27, i64 4294967304, i64 8 br label %29 29: ; preds = %25, %22, %19, %16, %13, %10, %7, %4, %1 - %.sroa.0.0 = phi i64 [ 0, %1 ], [ 1, %4 ], [ 2, %7 ], [ 3, %10 ], [ 4, %13 ], [ 5, %16 ], [ 6, %19 ], [ 7, %22 ], [ 8, %25 ] - %.sroa.10.0 = phi i64 [ 4294967296, %1 ], [ 4294967296, %4 ], [ 4294967296, %7 ], [ 4294967296, %10 ], [ 4294967296, %13 ], [ 4294967296, %16 ], [ 4294967296, %19 ], [ 4294967296, %22 ], [ %28, %25 ] - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.10.0, %.sroa.0.0 - ret i64 %.sroa.0.0.insert.insert + %.sroa.0.0 = phi i64 [ 4294967296, %1 ], [ 4294967297, %4 ], [ 4294967298, %7 ], [ 4294967299, %10 ], [ 4294967300, %13 ], [ 4294967301, %16 ], [ 4294967302, %19 ], [ 4294967303, %22 ], [ %28, %25 ] + ret i64 %.sroa.10.0 } declare void @_Z14getSourceFilesB5cxx11iPPc(ptr dead_on_unwind writable sret(%"class.std::vector.13") align 8, i32 noundef, ptr noundef) local_unnamed_addr #5 diff --git a/bench/luau/optimized/ConstraintSolver.ll b/bench/luau/optimized/ConstraintSolver.ll index a734e7c0c7b..f7c96d56c1e 100644 --- a/bench/luau/optimized/ConstraintSolver.ll +++ b/bench/luau/optimized/ConstraintSolver.ll @@ -22903,7 +22903,7 @@ _ZN4Luau3getINS_9TableTypeEEEPKT_PKNS_4TypeE.exit: ; preds = %81 117: ; preds = %_ZN4Luau3getINS_9TableTypeEEEPKT_PKNS_4TypeE.exit %118 = call noundef zeroext i1 @_ZN4Luau16ConstraintSolver5blockEPKNS_4TypeENS_7NotNullIKNS_10ConstraintEEE(ptr noundef nonnull align 8 dereferenceable(1032) %0, ptr noundef nonnull %18, ptr %3) - br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit + br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" 119: ; preds = %_ZN4Luau3getINS_9TableTypeEEEPKT_PKNS_4TypeE.exit %120 = getelementptr inbounds nuw i8, ptr %18, i64 72 @@ -23031,7 +23031,7 @@ _ZNSt6vectorIPKN4Luau4TypeESaIS3_EE9push_backEOS3_.exit: ; preds = %_ZNSt6vector %174 = ptrtoint ptr %.sroa.17.0.lcssa to i64 %175 = sub i64 %174, %.lcssa call void @_ZdlPvm(ptr noundef nonnull %.sroa.0224.0.lcssa, i64 noundef %175) #33 - br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit + br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" .lr.ph298: ; preds = %.preheader, %187 %176 = phi ptr [ %190, %187 ], [ %140, %.preheader ] @@ -23096,7 +23096,7 @@ _ZNSt6vectorIPKN4Luau4TypeESaIS3_EE9push_backEOS3_.exit: ; preds = %_ZNSt6vector %204 = getelementptr inbounds nuw i8, ptr %203, i64 136 %205 = load ptr, ptr %204, align 8, !tbaa !750 call fastcc void @"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_"(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef %205) - br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit + br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" 206: ; preds = %81, %.thread252 %207 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -23138,7 +23138,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %211, 222: ; preds = %220 %.sroa.029.0.copyload = load ptr, ptr %6, align 8, !tbaa !81 %223 = call noundef zeroext i1 @_ZN4Luau16ConstraintSolver5blockEPKNS_4TypeENS_7NotNullIKNS_10ConstraintEEE(ptr noundef nonnull align 8 dereferenceable(1032) %0, ptr noundef %212, ptr %.sroa.029.0.copyload) - br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit + br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" 224: ; preds = %206 %225 = landingpad { ptr, i32 } @@ -23179,12 +23179,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit186: ; preds = %22 240: ; preds = %233 %.not.i.i187 = icmp eq ptr %237, null - br i1 %.not.i.i187, label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit, label %241 + br i1 %.not.i.i187, label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit", label %241 241: ; preds = %240 %242 = load i32, ptr %237, align 8, !tbaa !459 %243 = icmp eq i32 %242, 8 - br i1 %243, label %_ZN4Luau3getINS_12FunctionTypeEEEPKT_PKNS_4TypeE.exit, label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit + br i1 %243, label %_ZN4Luau3getINS_12FunctionTypeEEEPKT_PKNS_4TypeE.exit, label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" _ZN4Luau3getINS_12FunctionTypeEEEPKT_PKNS_4TypeE.exit: ; preds = %241 %244 = load ptr, ptr %0, align 8, !tbaa !251 @@ -23376,7 +23376,7 @@ _ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit194: ; preds = %276, %277, %287, %2 _ZN4Luau8TypePackD2Ev.exit: ; preds = %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit194, %329 call void @llvm.lifetime.end.p0(ptr nonnull %13) - br i1 %275, label %.critedge159, label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit + br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" _ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit196: ; preds = %300, %297, %295, %_ZN4Luau7VariantIJNS_12TypeMismatchENS_13UnknownSymbolENS_15UnknownPropertyENS_9NotATableENS_17CannotExtendTableENS_24OnlyTablesCanHaveMethodsENS_23DuplicateTypeDefinitionENS_13CountMismatchENS_23FunctionDoesNotTakeSelfENS_20FunctionRequiresSelfENS_17OccursCheckFailedENS_14UnknownRequireENS_30IncorrectGenericParameterCountENS_11SyntaxErrorENS_14CodeTooComplexENS_21UnificationTooComplexENS_27UnknownPropButFoundLikePropENS_12GenericErrorENS_13InternalErrorENS_32ConstraintSolvingIncompleteErrorENS_21CannotCallNonFunctionENS_16ExtraInformationENS_17DeprecatedApiUsedENS_25ModuleHasCyclicDependencyENS_14IllegalRequireENS_29FunctionExitsWithoutReturningENS_25DuplicateGenericParameterENS_19CannotAssignToNeverENS_26CannotInferBinaryOperationENS_17MissingPropertiesENS_27SwappedGenericTypeParameterENS_19OptionalValueAccessENS_20MissingUnionPropertyENS_17TypesAreUnrelatedENS_23NormalizationTooComplexENS_16TypePackMismatchENS_36DynamicPropertyLookupOnClassesUnsafeENS_23UninhabitedTypeFunctionENS_27UninhabitedTypePackFu198, %293 %.pn142.pn = phi { ptr, i32 } [ %319, %_ZN4Luau7VariantIJNS_12TypeMismatchENS_13UnknownSymbolENS_15UnknownPropertyENS_9NotATableENS_17CannotExtendTableENS_24OnlyTablesCanHaveMethodsENS_23DuplicateTypeDefinitionENS_13CountMismatchENS_23FunctionDoesNotTakeSelfENS_20FunctionRequiresSelfENS_17OccursCheckFailedENS_14UnknownRequireENS_30IncorrectGenericParameterCountENS_11SyntaxErrorENS_14CodeTooComplexENS_21UnificationTooComplexENS_27UnknownPropButFoundLikePropENS_12GenericErrorENS_13InternalErrorENS_32ConstraintSolvingIncompleteErrorENS_21CannotCallNonFunctionENS_16ExtraInformationENS_17DeprecatedApiUsedENS_25ModuleHasCyclicDependencyENS_14IllegalRequireENS_29FunctionExitsWithoutReturningENS_25DuplicateGenericParameterENS_19CannotAssignToNeverENS_26CannotInferBinaryOperationENS_17MissingPropertiesENS_27SwappedGenericTypeParameterENS_19OptionalValueAccessENS_20MissingUnionPropertyENS_17TypesAreUnrelatedENS_23NormalizationTooComplexENS_16TypePackMismatchENS_36DynamicPropertyLookupOnClassesUnsafeENS_23UninhabitedTypeFunctionENS_27UninhabitedTypePackFu198 ], [ %294, %293 ], [ %296, %295 ], [ %298, %297 ], [ %298, %300 ] @@ -23414,7 +23414,7 @@ _ZNSt6vectorISt8optionalIPKN4Luau4TypeEESaIS5_EED2Ev.exit190: ; preds = %_ZNSt6v _ZN4Luau8TypePackD2Ev.exit203: ; preds = %.critedge, %340 call void @llvm.lifetime.end.p0(ptr nonnull %13) - br label %.critedge159 + br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" 345: ; preds = %233 call void @llvm.lifetime.start.p0(ptr nonnull %17) @@ -23442,7 +23442,7 @@ _ZN4Luau8TypePackD2Ev.exit203: ; preds = %.critedge, %340 _ZN4Luau7VariantIJNS_12TypeMismatchENS_13UnknownSymbolENS_15UnknownPropertyENS_9NotATableENS_17CannotExtendTableENS_24OnlyTablesCanHaveMethodsENS_23DuplicateTypeDefinitionENS_13CountMismatchENS_23FunctionDoesNotTakeSelfENS_20FunctionRequiresSelfENS_17OccursCheckFailedENS_14UnknownRequireENS_30IncorrectGenericParameterCountENS_11SyntaxErrorENS_14CodeTooComplexENS_21UnificationTooComplexENS_27UnknownPropButFoundLikePropENS_12GenericErrorENS_13InternalErrorENS_32ConstraintSolvingIncompleteErrorENS_21CannotCallNonFunctionENS_16ExtraInformationENS_17DeprecatedApiUsedENS_25ModuleHasCyclicDependencyENS_14IllegalRequireENS_29FunctionExitsWithoutReturningENS_25DuplicateGenericParameterENS_19CannotAssignToNeverENS_26CannotInferBinaryOperationENS_17MissingPropertiesENS_27SwappedGenericTypeParameterENS_19OptionalValueAccessENS_20MissingUnionPropertyENS_17TypesAreUnrelatedENS_23NormalizationTooComplexENS_16TypePackMismatchENS_36DynamicPropertyLookupOnClassesUnsafeENS_23UninhabitedTypeFunctionENS_27UninhabitedTypePackFu205: ; preds = %348 call void @llvm.lifetime.end.p0(ptr nonnull %17) - br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit + br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" 357: ; preds = %345 %358 = landingpad { ptr, i32 } @@ -23481,7 +23481,7 @@ _ZN4Luau3getINS_13MetatableTypeEEEPKT_PKNS_4TypeE.exit: ; preds = %368 %371 = load ptr, ptr %370, align 8, !tbaa !596 %.sroa.0.0.copyload = load ptr, ptr %6, align 8, !tbaa !81 %372 = call noundef zeroext i1 @_ZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEb(ptr noundef nonnull align 8 dereferenceable(1032) %0, ptr noundef %371, ptr noundef nonnull align 8 dereferenceable(48) %2, ptr %.sroa.0.0.copyload, i1 noundef zeroext %4) - br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit + br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" _ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit: ; preds = %368 %373 = getelementptr inbounds nuw i8, ptr %18, i64 8 @@ -23494,22 +23494,13 @@ _ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit: ; preds = %368 %378 = getelementptr inbounds nuw i8, ptr %377, i64 120 %379 = load ptr, ptr %378, align 8, !tbaa !640 call fastcc void @"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_"(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef %379) - br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit + br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" _ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.thread: ; preds = %368, %367, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit %380 = load ptr, ptr %207, align 8, !tbaa !471 %381 = getelementptr inbounds nuw i8, ptr %380, i64 136 %382 = load ptr, ptr %381, align 8, !tbaa !750 call fastcc void @"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_"(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef %382) - br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit - -.critedge159: ; preds = %_ZN4Luau8TypePackD2Ev.exit, %_ZN4Luau8TypePackD2Ev.exit203 - br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit - -_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit: ; preds = %240, %241, %222, %.critedge159, %_ZN4Luau8TypePackD2Ev.exit, %_ZN4Luau7VariantIJNS_12TypeMismatchENS_13UnknownSymbolENS_15UnknownPropertyENS_9NotATableENS_17CannotExtendTableENS_24OnlyTablesCanHaveMethodsENS_23DuplicateTypeDefinitionENS_13CountMismatchENS_23FunctionDoesNotTakeSelfENS_20FunctionRequiresSelfENS_17OccursCheckFailedENS_14UnknownRequireENS_30IncorrectGenericParameterCountENS_11SyntaxErrorENS_14CodeTooComplexENS_21UnificationTooComplexENS_27UnknownPropButFoundLikePropENS_12GenericErrorENS_13InternalErrorENS_32ConstraintSolvingIncompleteErrorENS_21CannotCallNonFunctionENS_16ExtraInformationENS_17DeprecatedApiUsedENS_25ModuleHasCyclicDependencyENS_14IllegalRequireENS_29FunctionExitsWithoutReturningENS_25DuplicateGenericParameterENS_19CannotAssignToNeverENS_26CannotInferBinaryOperationENS_17MissingPropertiesENS_27SwappedGenericTypeParameterENS_19OptionalValueAccessENS_20MissingUnionPropertyENS_17TypesAreUnrelatedENS_23NormalizationTooComplexENS_16TypePackMismatchENS_36DynamicPropertyLookupOnClassesUnsafeENS_23UninhabitedTypeFunctionENS_27UninhabitedTypePackFu205, %376, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.thread, %_ZN4Luau3getINS_13MetatableTypeEEEPKT_PKNS_4TypeE.exit, %._crit_edge, %201, %117 - %cond2 = phi i1 [ false, %117 ], [ true, %201 ], [ true, %._crit_edge ], [ false, %222 ], [ false, %.critedge159 ], [ true, %_ZN4Luau8TypePackD2Ev.exit ], [ true, %_ZN4Luau7VariantIJNS_12TypeMismatchENS_13UnknownSymbolENS_15UnknownPropertyENS_9NotATableENS_17CannotExtendTableENS_24OnlyTablesCanHaveMethodsENS_23DuplicateTypeDefinitionENS_13CountMismatchENS_23FunctionDoesNotTakeSelfENS_20FunctionRequiresSelfENS_17OccursCheckFailedENS_14UnknownRequireENS_30IncorrectGenericParameterCountENS_11SyntaxErrorENS_14CodeTooComplexENS_21UnificationTooComplexENS_27UnknownPropButFoundLikePropENS_12GenericErrorENS_13InternalErrorENS_32ConstraintSolvingIncompleteErrorENS_21CannotCallNonFunctionENS_16ExtraInformationENS_17DeprecatedApiUsedENS_25ModuleHasCyclicDependencyENS_14IllegalRequireENS_29FunctionExitsWithoutReturningENS_25DuplicateGenericParameterENS_19CannotAssignToNeverENS_26CannotInferBinaryOperationENS_17MissingPropertiesENS_27SwappedGenericTypeParameterENS_19OptionalValueAccessENS_20MissingUnionPropertyENS_17TypesAreUnrelatedENS_23NormalizationTooComplexENS_16TypePackMismatchENS_36DynamicPropertyLookupOnClassesUnsafeENS_23UninhabitedTypeFunctionENS_27UninhabitedTypePackFu205 ], [ false, %_ZN4Luau3getINS_13MetatableTypeEEEPKT_PKNS_4TypeE.exit ], [ true, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.thread ], [ true, %376 ], [ true, %241 ], [ true, %240 ] - %.2 = phi i1 [ false, %117 ], [ undef, %201 ], [ undef, %._crit_edge ], [ false, %222 ], [ true, %.critedge159 ], [ true, %_ZN4Luau8TypePackD2Ev.exit ], [ true, %_ZN4Luau7VariantIJNS_12TypeMismatchENS_13UnknownSymbolENS_15UnknownPropertyENS_9NotATableENS_17CannotExtendTableENS_24OnlyTablesCanHaveMethodsENS_23DuplicateTypeDefinitionENS_13CountMismatchENS_23FunctionDoesNotTakeSelfENS_20FunctionRequiresSelfENS_17OccursCheckFailedENS_14UnknownRequireENS_30IncorrectGenericParameterCountENS_11SyntaxErrorENS_14CodeTooComplexENS_21UnificationTooComplexENS_27UnknownPropButFoundLikePropENS_12GenericErrorENS_13InternalErrorENS_32ConstraintSolvingIncompleteErrorENS_21CannotCallNonFunctionENS_16ExtraInformationENS_17DeprecatedApiUsedENS_25ModuleHasCyclicDependencyENS_14IllegalRequireENS_29FunctionExitsWithoutReturningENS_25DuplicateGenericParameterENS_19CannotAssignToNeverENS_26CannotInferBinaryOperationENS_17MissingPropertiesENS_27SwappedGenericTypeParameterENS_19OptionalValueAccessENS_20MissingUnionPropertyENS_17TypesAreUnrelatedENS_23NormalizationTooComplexENS_16TypePackMismatchENS_36DynamicPropertyLookupOnClassesUnsafeENS_23UninhabitedTypeFunctionENS_27UninhabitedTypePackFu205 ], [ %372, %_ZN4Luau3getINS_13MetatableTypeEEEPKT_PKNS_4TypeE.exit ], [ undef, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.thread ], [ undef, %376 ], [ true, %241 ], [ true, %240 ] - %spec.select = or i1 %cond2, %.2 br label %"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit" _ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit183: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit186, %_ZN4Luau7VariantIJNS_12TypeMismatchENS_13UnknownSymbolENS_15UnknownPropertyENS_9NotATableENS_17CannotExtendTableENS_24OnlyTablesCanHaveMethodsENS_23DuplicateTypeDefinitionENS_13CountMismatchENS_23FunctionDoesNotTakeSelfENS_20FunctionRequiresSelfENS_17OccursCheckFailedENS_14UnknownRequireENS_30IncorrectGenericParameterCountENS_11SyntaxErrorENS_14CodeTooComplexENS_21UnificationTooComplexENS_27UnknownPropButFoundLikePropENS_12GenericErrorENS_13InternalErrorENS_32ConstraintSolvingIncompleteErrorENS_21CannotCallNonFunctionENS_16ExtraInformationENS_17DeprecatedApiUsedENS_25ModuleHasCyclicDependencyENS_14IllegalRequireENS_29FunctionExitsWithoutReturningENS_25DuplicateGenericParameterENS_19CannotAssignToNeverENS_26CannotInferBinaryOperationENS_17MissingPropertiesENS_27SwappedGenericTypeParameterENS_19OptionalValueAccessENS_20MissingUnionPropertyENS_17TypesAreUnrelatedENS_23NormalizationTooComplexENS_16TypePackMismatchENS_36DynamicPropertyLookupOnClassesUnsafeENS_23UninhabitedTypeFunctionENS_27UninhabitedTypePackFu207, %_ZNSt6vectorISt8optionalIPKN4Luau4TypeEESaIS5_EED2Ev.exit190, %172, %197 @@ -23517,8 +23508,8 @@ _ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit183: ; preds = %_ZNSt7__cxx1112basi call void @llvm.lifetime.end.p0(ptr nonnull %9) br label %_ZN4Luau7VariantIJNS_17SubtypeConstraintENS_21PackSubtypeConstraintENS_24GeneralizationConstraintENS_18IterableConstraintENS_14NameConstraintENS_28TypeAliasExpansionConstraintENS_22FunctionCallConstraintENS_23FunctionCheckConstraintENS_23PrimitiveTypeConstraintENS_17HasPropConstraintENS_20HasIndexerConstraintENS_20AssignPropConstraintENS_21AssignIndexConstraintENS_16UnpackConstraintENS_16ReduceConstraintENS_20ReducePackConstraintENS_18EqualityConstraintENS_20TableCheckConstraintEEED2Ev.exit163 -"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit": ; preds = %.lr.ph.i174, %.lr.ph.i167, %.lr.ph.i, %_ZN4Luau3getINS_9NeverTypeEEEPKT_PKNS_4TypeE.exit, %_ZN4Luau3getINS_9Unifiable5ErrorIPKNS_4TypeEEEEEPKT_S5_.exit, %_ZN4Luau3getINS_7AnyTypeEEEPKT_PKNS_4TypeE.exit, %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit - %.1 = phi i1 [ %spec.select, %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit ], [ true, %_ZN4Luau3getINS_7AnyTypeEEEPKT_PKNS_4TypeE.exit ], [ true, %_ZN4Luau3getINS_9Unifiable5ErrorIPKNS_4TypeEEEEEPKT_S5_.exit ], [ true, %_ZN4Luau3getINS_9NeverTypeEEEPKT_PKNS_4TypeE.exit ], [ true, %.lr.ph.i ], [ true, %.lr.ph.i167 ], [ true, %.lr.ph.i174 ] +"_ZZN4Luau16ConstraintSolver24tryDispatchIterableTableEPKNS_4TypeERKNS_18IterableConstraintENS_7NotNullIKNS_10ConstraintEEEbENK3$_0clES3_.exit": ; preds = %.lr.ph.i174, %.lr.ph.i167, %.lr.ph.i, %_ZN4Luau8TypePackD2Ev.exit, %117, %201, %._crit_edge, %_ZN4Luau3getINS_13MetatableTypeEEEPKT_PKNS_4TypeE.exit, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.thread, %376, %_ZN4Luau7VariantIJNS_12TypeMismatchENS_13UnknownSymbolENS_15UnknownPropertyENS_9NotATableENS_17CannotExtendTableENS_24OnlyTablesCanHaveMethodsENS_23DuplicateTypeDefinitionENS_13CountMismatchENS_23FunctionDoesNotTakeSelfENS_20FunctionRequiresSelfENS_17OccursCheckFailedENS_14UnknownRequireENS_30IncorrectGenericParameterCountENS_11SyntaxErrorENS_14CodeTooComplexENS_21UnificationTooComplexENS_27UnknownPropButFoundLikePropENS_12GenericErrorENS_13InternalErrorENS_32ConstraintSolvingIncompleteErrorENS_21CannotCallNonFunctionENS_16ExtraInformationENS_17DeprecatedApiUsedENS_25ModuleHasCyclicDependencyENS_14IllegalRequireENS_29FunctionExitsWithoutReturningENS_25DuplicateGenericParameterENS_19CannotAssignToNeverENS_26CannotInferBinaryOperationENS_17MissingPropertiesENS_27SwappedGenericTypeParameterENS_19OptionalValueAccessENS_20MissingUnionPropertyENS_17TypesAreUnrelatedENS_23NormalizationTooComplexENS_16TypePackMismatchENS_36DynamicPropertyLookupOnClassesUnsafeENS_23UninhabitedTypeFunctionENS_27UninhabitedTypePackFu205, %222, %241, %240, %_ZN4Luau8TypePackD2Ev.exit203, %_ZN4Luau3getINS_9NeverTypeEEEPKT_PKNS_4TypeE.exit, %_ZN4Luau3getINS_9Unifiable5ErrorIPKNS_4TypeEEEEEPKT_S5_.exit, %_ZN4Luau3getINS_7AnyTypeEEEPKT_PKNS_4TypeE.exit + %.1 = phi i1 [ true, %_ZN4Luau3getINS_7AnyTypeEEEPKT_PKNS_4TypeE.exit ], [ true, %_ZN4Luau3getINS_9Unifiable5ErrorIPKNS_4TypeEEEEEPKT_S5_.exit ], [ true, %_ZN4Luau3getINS_9NeverTypeEEEPKT_PKNS_4TypeE.exit ], [ false, %117 ], [ true, %201 ], [ true, %._crit_edge ], [ false, %222 ], [ true, %_ZN4Luau7VariantIJNS_12TypeMismatchENS_13UnknownSymbolENS_15UnknownPropertyENS_9NotATableENS_17CannotExtendTableENS_24OnlyTablesCanHaveMethodsENS_23DuplicateTypeDefinitionENS_13CountMismatchENS_23FunctionDoesNotTakeSelfENS_20FunctionRequiresSelfENS_17OccursCheckFailedENS_14UnknownRequireENS_30IncorrectGenericParameterCountENS_11SyntaxErrorENS_14CodeTooComplexENS_21UnificationTooComplexENS_27UnknownPropButFoundLikePropENS_12GenericErrorENS_13InternalErrorENS_32ConstraintSolvingIncompleteErrorENS_21CannotCallNonFunctionENS_16ExtraInformationENS_17DeprecatedApiUsedENS_25ModuleHasCyclicDependencyENS_14IllegalRequireENS_29FunctionExitsWithoutReturningENS_25DuplicateGenericParameterENS_19CannotAssignToNeverENS_26CannotInferBinaryOperationENS_17MissingPropertiesENS_27SwappedGenericTypeParameterENS_19OptionalValueAccessENS_20MissingUnionPropertyENS_17TypesAreUnrelatedENS_23NormalizationTooComplexENS_16TypePackMismatchENS_36DynamicPropertyLookupOnClassesUnsafeENS_23UninhabitedTypeFunctionENS_27UninhabitedTypePackFu205 ], [ %372, %_ZN4Luau3getINS_13MetatableTypeEEEPKT_PKNS_4TypeE.exit ], [ true, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.thread ], [ true, %376 ], [ true, %241 ], [ true, %240 ], [ true, %_ZN4Luau8TypePackD2Ev.exit ], [ true, %_ZN4Luau8TypePackD2Ev.exit203 ], [ true, %.lr.ph.i ], [ true, %.lr.ph.i167 ], [ true, %.lr.ph.i174 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) br label %383 diff --git a/bench/luau/optimized/EmitInstructionX64.ll b/bench/luau/optimized/EmitInstructionX64.ll index ffc6054eddc..9386f4627e1 100644 --- a/bench/luau/optimized/EmitInstructionX64.ll +++ b/bench/luau/optimized/EmitInstructionX64.ll @@ -495,7 +495,7 @@ define dso_local void @_ZN4Luau7CodeGen3X6415emitInstSetListERNS1_13IrRegAllocX6 %46 = shl i32 %4, 4 %47 = zext i32 %46 to i64 %48 = shl nuw i64 %47, 32 - %49 = or disjoint i64 %48, 268468224 + %49 = or disjoint i64 %48, 276856834 br label %51 50: ; preds = %42 @@ -504,9 +504,7 @@ define dso_local void @_ZN4Luau7CodeGen3X6415emitInstSetListERNS1_13IrRegAllocX6 br label %51 51: ; preds = %45, %50 - %.sroa.12.0468 = phi i64 [ 268468224, %50 ], [ %49, %45 ] - %.sroa.8.0466 = phi i64 [ 1835008, %50 ], [ 8388608, %45 ] - %.sroa.0223.0464 = phi i64 [ 0, %50 ], [ 2, %45 ] + %.sroa.12.0468 = phi i64 [ 270303232, %50 ], [ %49, %45 ] call void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX648setLabelERNS0_5LabelE(ptr noundef nonnull align 8 dereferenceable(252) %1, ptr noundef nonnull align 4 dereferenceable(8) %9) %52 = shl i32 %3, 4 %.sroa.21.0.insert.ext.i = zext i32 %52 to i64 @@ -515,9 +513,7 @@ define dso_local void @_ZN4Luau7CodeGen3X6415emitInstSetListERNS1_13IrRegAllocX6 call void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX647vmovupsENS1_10OperandX64ES3_(ptr noundef nonnull align 8 dereferenceable(252) %1, i64 268795904, i64 %.sroa.0209.0.insert.insert) call void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX647vmovupsENS1_10OperandX64ES3_(ptr noundef nonnull align 8 dereferenceable(252) %1, i64 353113089, i64 268795904) call void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643addENS1_10OperandX64ES3_(ptr noundef nonnull align 8 dereferenceable(252) %1, i64 269254656, i64 68996333570) - %.sroa.6.0.insert.insert = or i64 %.sroa.12.0468, %.sroa.8.0466 - %.sroa.0223.0.insert.insert = or i64 %.sroa.6.0.insert.insert, %.sroa.0223.0464 - call void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643cmpENS1_10OperandX64ES3_(ptr noundef nonnull align 8 dereferenceable(252) %1, i64 269254656, i64 %.sroa.0223.0.insert.insert) + call void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643cmpENS1_10OperandX64ES3_(ptr noundef nonnull align 8 dereferenceable(252) %1, i64 269254656, i64 %.sroa.12.0468) call void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643jccENS0_12ConditionX64ERNS0_5LabelE(ptr noundef nonnull align 8 dereferenceable(252) %1, i8 noundef zeroext 4, ptr noundef nonnull align 4 dereferenceable(8) %9) call void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX648setLabelERNS0_5LabelE(ptr noundef nonnull align 8 dereferenceable(252) %1, ptr noundef nonnull align 4 dereferenceable(8) %10) call void @llvm.lifetime.end.p0(ptr nonnull %10) diff --git a/bench/luau/optimized/IrTranslateBuiltins.ll b/bench/luau/optimized/IrTranslateBuiltins.ll index 19779a6872a..4cbc074299b 100644 --- a/bench/luau/optimized/IrTranslateBuiltins.ll +++ b/bench/luau/optimized/IrTranslateBuiltins.ll @@ -672,11 +672,11 @@ _ZN4Luau7CodeGenL17builtinLoadDoubleERNS0_9IrBuilderENS0_4IrOpE.exit: ; preds = } ; Function Attrs: mustprogress uwtable -define internal fastcc range(i64 0, -4294967292) i64 @_ZN4Luau7CodeGenL23translateBuiltinMathLogERNS0_9IrBuilderEiiiNS0_4IrOpEii(ptr noundef nonnull align 8 dereferenceable(752) %0, i32 noundef range(i32 0, -1) %1, i32 noundef %2, i32 noundef %3, i32 %4, i32 noundef %5, i32 noundef %6) unnamed_addr #0 personality ptr @__gxx_personality_v0 { +define internal fastcc range(i64 -4294967296, 4294967299) i64 @_ZN4Luau7CodeGenL23translateBuiltinMathLogERNS0_9IrBuilderEiiiNS0_4IrOpEii(ptr noundef nonnull align 8 dereferenceable(752) %0, i32 noundef range(i32 0, -1) %1, i32 noundef %2, i32 noundef %3, i32 %4, i32 noundef %5, i32 noundef %6) unnamed_addr #0 personality ptr @__gxx_personality_v0 { %8 = icmp slt i32 %1, 1 %9 = icmp sgt i32 %5, 1 %or.cond = or i1 %8, %9 - br i1 %or.cond, label %54, label %10 + br i1 %or.cond, label %.critedge, label %10 10: ; preds = %7 %.not = icmp eq i32 %1, 1 @@ -761,14 +761,8 @@ _ZN4Luau7CodeGenL17builtinLoadDoubleERNS0_9IrBuilderENS0_4IrOpE.exit: ; preds = %52 = tail call i32 @_ZN4Luau7CodeGen9IrBuilder4instENS0_5IrCmdENS0_4IrOpES3_(ptr noundef nonnull align 8 dereferenceable(752) %0, i8 noundef zeroext 12, i32 %50, i32 %51) br label %.critedge -.critedge: ; preds = %13, %11, %45, %49 - %.sroa.043.2 = phi i64 [ 2, %49 ], [ 2, %45 ], [ 0, %11 ], [ 0, %13 ] - %.sroa.4.2 = phi i64 [ 4294967296, %49 ], [ 4294967296, %45 ], [ -4294967296, %11 ], [ -4294967296, %13 ] - %53 = or disjoint i64 %.sroa.4.2, %.sroa.043.2 - br label %54 - -54: ; preds = %7, %.critedge - %.sroa.043.0.insert.insert = phi i64 [ %53, %.critedge ], [ -4294967296, %7 ] +.critedge: ; preds = %49, %45, %11, %13, %7 + %.sroa.043.2 = phi i64 [ -4294967296, %7 ], [ 4294967298, %49 ], [ 4294967298, %45 ], [ -4294967296, %11 ], [ -4294967296, %13 ] ret i64 %.sroa.043.0.insert.insert } @@ -1431,7 +1425,7 @@ _ZN4Luau7CodeGen10IrFunction7asIntOpENS0_4IrOpE.exit: ; preds = %50 %59 = icmp ult i32 %58, 32 br i1 %59, label %64, label %.critedge -.critedge: ; preds = %48, %50, %_ZN4Luau7CodeGen10IrFunction7asIntOpENS0_4IrOpE.exit +.critedge: ; preds = %50, %48, %_ZN4Luau7CodeGen10IrFunction7asIntOpENS0_4IrOpE.exit %60 = tail call i32 @_ZN4Luau7CodeGen9IrBuilder5blockENS0_11IrBlockKindE(ptr noundef nonnull align 8 dereferenceable(752) %0, i8 noundef zeroext 2) %61 = tail call i32 @_ZN4Luau7CodeGen9IrBuilder8constIntEi(ptr noundef nonnull align 8 dereferenceable(752) %0, i32 noundef 32) %62 = tail call i32 @_ZN4Luau7CodeGen9IrBuilder4condENS0_11IrConditionE(ptr noundef nonnull align 8 dereferenceable(752) %0, i8 noundef zeroext 13) @@ -1530,7 +1524,7 @@ _ZN4Luau7CodeGenL17builtinLoadDoubleERNS0_9IrBuilderENS0_4IrOpE.exit51: ; preds } ; Function Attrs: mustprogress uwtable -define internal fastcc range(i64 0, -4294967294) i64 @_ZN4Luau7CodeGenL28translateBuiltinBit32ExtractERNS0_9IrBuilderEiiiNS0_4IrOpES3_iS3_i(ptr noundef nonnull align 8 dereferenceable(752) %0, i32 noundef range(i32 0, -1) %1, i32 noundef %2, i32 noundef %3, i32 %4, i32 %5, i32 noundef %6, i32 %7, i32 noundef %8) unnamed_addr #0 { +define internal fastcc range(i64 -4294967296, 4294967298) i64 @_ZN4Luau7CodeGenL28translateBuiltinBit32ExtractERNS0_9IrBuilderEiiiNS0_4IrOpES3_iS3_i(ptr noundef nonnull align 8 dereferenceable(752) %0, i32 noundef range(i32 0, -1) %1, i32 noundef %2, i32 noundef %3, i32 %4, i32 %5, i32 noundef %6, i32 %7, i32 noundef %8) unnamed_addr #0 { %10 = icmp slt i32 %1, 2 %11 = icmp sgt i32 %6, 1 %or.cond = or i1 %10, %11 @@ -1695,10 +1689,8 @@ _ZN4Luau7CodeGenL17builtinLoadDoubleERNS0_9IrBuilderENS0_4IrOpE.exit189: ; preds br label %107 107: ; preds = %98, %103, %16, %9 - %.sroa.0179.0 = phi i64 [ 0, %9 ], [ 0, %16 ], [ 1, %103 ], [ 1, %98 ] - %.sroa.4.0 = phi i64 [ -4294967296, %9 ], [ -4294967296, %16 ], [ 4294967296, %103 ], [ 4294967296, %98 ] - %.sroa.0179.0.insert.insert = or disjoint i64 %.sroa.4.0, %.sroa.0179.0 - ret i64 %.sroa.0179.0.insert.insert + %.sroa.0179.0 = phi i64 [ -4294967296, %9 ], [ -4294967296, %16 ], [ 4294967297, %103 ], [ 4294967297, %98 ] + ret i64 %.sroa.4.0 } ; Function Attrs: mustprogress uwtable diff --git a/bench/lvgl/optimized/lv_chart.ll b/bench/lvgl/optimized/lv_chart.ll index e87f17bbb1b..6ca1e358716 100644 --- a/bench/lvgl/optimized/lv_chart.ll +++ b/bench/lvgl/optimized/lv_chart.ll @@ -1301,19 +1301,22 @@ define void @lv_chart_get_point_pos_by_id(ptr noundef %0, ptr noundef readonly c %or.cond = or i1 %.not102, %63 br i1 %or.cond, label %._crit_edge, label %.lr.ph, !llvm.loop !83 -._crit_edge: ; preds = %.lr.ph, %58 - %.093.lcssa = phi i32 [ 0, %58 ], [ %61, %.lr.ph ] - %64 = add nsw i32 %12, %.sroa.0.0.extract.trunc.i105 - %65 = mul i32 %64, %2 - %66 = load i32, ptr %7, align 4, !tbaa !20 - %67 = udiv i32 %65, %66 +._crit_edge: ; preds = %.lr.ph + %64 = mul i32 %61, %52 + br label %._crit_edge + +._crit_edge:; preds = %._crit_edge.loopexit, %58 + %.093.lcssa = phi i32 [ 0, %58 ], [ %64, %._crit_edge.loopexit ] + %65 = add nsw i32 %12, %.sroa.0.0.extract.trunc.i105 + %66 = mul i32 %65, %2 + %67 = load i32, ptr %7, align 4, !tbaa !20 + %68 = udiv i32 %66, %67 %.not103 = icmp eq i32 %43, 0 br i1 %.not103, label %78, label %68 68: ; preds = %._crit_edge - %69 = mul i32 %.093.lcssa, %52 - %70 = udiv i32 %69, %43 - %71 = add i32 %70, %67 + %70 = udiv i32 %.093.lcssa, %43 + %71 = add i32 %70, %68 %72 = add i32 %43, -1 %73 = mul i32 %72, %.sroa.0.0.extract.trunc.i %74 = sub i32 %52, %73 @@ -1323,7 +1326,7 @@ define void @lv_chart_get_point_pos_by_id(ptr noundef %0, ptr noundef readonly c br label %78 78: ; preds = %11, %68, %._crit_edge, %17, %24, %20 - %.sink = phi i32 [ %40, %24 ], [ %23, %20 ], [ 0, %17 ], [ %77, %68 ], [ %67, %._crit_edge ], [ 0, %11 ] + %.sink = phi i32 [ %40, %24 ], [ %23, %20 ], [ 0, %17 ], [ %77, %69 ], [ %68, %._crit_edge ], [ 0, %11 ] store i32 %.sink, ptr %3, align 4, !tbaa !33 %79 = tail call ptr @lv_obj_get_style_prop(ptr noundef nonnull %0, i32 noundef 0, i8 noundef zeroext 48) #8 %80 = ptrtoint ptr %79 to i64 diff --git a/bench/meshlab/optimized/gltf_loader.ll b/bench/meshlab/optimized/gltf_loader.ll index a9b04a16169..c2146fee70b 100644 --- a/bench/meshlab/optimized/gltf_loader.ll +++ b/bench/meshlab/optimized/gltf_loader.ll @@ -123309,19 +123309,12 @@ _ZNKSt5ctypeIcE6narrowEcc.exit: ; preds = %22, %.noexc, %_ZNKS .critedge: ; preds = %32, %33 %37 = getelementptr inbounds nuw i8, ptr %.016.ptr30, i64 8 %38 = load i32, ptr %37, align 8 - %.sroa.6.0.extract.shift = and i32 %38, -16777216 - %39 = and i32 %38, 16711680 - %40 = and i32 %38, 65535 br label %.loopexit .loopexit: ; preds = %28, %33, %.critedge - %.sroa.024.0 = phi i32 [ %40, %.critedge ], [ 1024, %33 ], [ 0, %28 ] - %.sroa.4.0 = phi i32 [ %39, %.critedge ], [ 0, %33 ], [ 0, %28 ] - %.sroa.6.0 = phi i32 [ %.sroa.6.0.extract.shift, %.critedge ], [ 0, %33 ], [ 0, %28 ] + %.sroa.024.0 = phi i32 [ %38, %.critedge ], [ 1024, %33 ], [ 0, %28 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #54 - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.0, %.sroa.024.0 - %.sroa.024.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.6.0 - ret i32 %.sroa.024.0.insert.insert + ret i32 %.sroa.024.0 } declare void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570)) local_unnamed_addr #0 diff --git a/bench/meshlab/optimized/ml_scene_gl_shared_data_context.ll b/bench/meshlab/optimized/ml_scene_gl_shared_data_context.ll index 9c09578ff39..fa4847db06a 100644 --- a/bench/meshlab/optimized/ml_scene_gl_shared_data_context.ll +++ b/bench/meshlab/optimized/ml_scene_gl_shared_data_context.ll @@ -5467,16 +5467,18 @@ _ZNK3vcg20GLMeshAttributesInfo16InternalRendAttscvNS0_13RenderingAttsINS0_9ATT_N %132 = load i8, ptr %131, align 1 %133 = trunc i8 %132 to i1 %or.cond.i194 = select i1 %130, i1 true, i1 %133 - %134 = getelementptr inbounds nuw i8, ptr %15, i64 6 - %135 = load i8, ptr %134, align 1 - %136 = trunc i8 %135 to i1 - %137 = select i1 %or.cond.i194, i1 true, i1 %136 + br i1 %or.cond.i194, label %.thread, label %134 + +134:; preds = %_ZNK3vcg20GLMeshAttributesInfo16InternalRendAttscvNS0_13RenderingAttsINS0_9ATT_NAMESEEEEv.exit193 + %135 = getelementptr inbounds nuw i8, ptr %15, i64 6 + %136 = load i8, ptr %135, align 1 + %137 = trunc i8 %136 to i1 %.not359 = xor i1 %137, true %138 = or i1 %84, %.not359 br label %.thread -.thread: ; preds = %_ZN3vcg20GLMeshAttributesInfo16InternalRendAtts24replicatedPipelineNeededERKNS0_13RenderingAttsINS0_9ATT_NAMESEEE.exit189, %_ZNK3vcg20GLMeshAttributesInfo16InternalRendAttscvNS0_13RenderingAttsINS0_9ATT_NAMESEEEEv.exit193 - %.not348 = phi i1 [ %138, %_ZNK3vcg20GLMeshAttributesInfo16InternalRendAttscvNS0_13RenderingAttsINS0_9ATT_NAMESEEEEv.exit193 ], [ false, %_ZN3vcg20GLMeshAttributesInfo16InternalRendAtts24replicatedPipelineNeededERKNS0_13RenderingAttsINS0_9ATT_NAMESEEE.exit189 ] +.thread: ; preds = %_ZNK3vcg20GLMeshAttributesInfo16InternalRendAttscvNS0_13RenderingAttsINS0_9ATT_NAMESEEEEv.exit193, %134, %_ZN3vcg20GLMeshAttributesInfo16InternalRendAtts24replicatedPipelineNeededERKNS0_13RenderingAttsINS0_9ATT_NAMESEEE.exit189 + %.not348 = phi i1 [ false, %_ZN3vcg20GLMeshAttributesInfo16InternalRendAtts24replicatedPipelineNeededERKNS0_13RenderingAttsINS0_9ATT_NAMESEEE.exit189 ], [ %84, %_ZNK3vcg20GLMeshAttributesInfo16InternalRendAttscvNS0_13RenderingAttsINS0_9ATT_NAMESEEEEv.exit193 ], [ %138, %134 ] %139 = tail call noundef i64 @_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14boExpectedSizeENS_20GLMeshAttributesInfo13INT_ATT_NAMESEb(ptr noundef nonnull align 8 dereferenceable(472) %0, i32 0, i1 noundef zeroext %84) %140 = getelementptr inbounds nuw i8, ptr %0, i64 16 %141 = load ptr, ptr %140, align 8 @@ -7338,21 +7340,17 @@ _ZNK3vcg20GLMeshAttributesInfo13RenderingAttsINS0_13INT_ATT_NAMESEEixEj.exit60: %132 = load i32, ptr %131, align 4 %switch.tableidx = add i32 %132, -5121 %133 = icmp ult i32 %switch.tableidx, 6 - br i1 %133, label %switch.lookup, label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i + br i1 %133, label %switch.lookup, label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE19boExpectedDimensionENS_20GLMeshAttributesInfo13INT_ATT_NAMESEb.exit switch.lookup: ; preds = %130 %134 = zext nneg i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table._ZN3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE27bufferDeAllocationRequestedENS_20GLMeshAttributesInfo13INT_ATT_NAMESE, i64 %134 %switch.load = load i64, ptr %switch.gep, align 8 - br label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i - -_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i: ; preds = %130, %switch.lookup - %.0.i.i = phi i64 [ %switch.load, %switch.lookup ], [ 0, %130 ] - %135 = mul i64 %.0.i.i, %109 + %135 = mul i64 %switch.load, %109 br label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE19boExpectedDimensionENS_20GLMeshAttributesInfo13INT_ATT_NAMESEb.exit -_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE19boExpectedDimensionENS_20GLMeshAttributesInfo13INT_ATT_NAMESEb.exit: ; preds = %118, %127, %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i - %.0.i = phi i64 [ %135, %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i ], [ 0, %127 ], [ 0, %118 ] +_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE19boExpectedDimensionENS_20GLMeshAttributesInfo13INT_ATT_NAMESEb.exit: ; preds = %switch.lookup, %130, %118, %127 + %.0.i = phi i64 [ 0, %127 ], [ 0, %118 ], [ %135, %switch.lookup ], [ 0, %130 ] %136 = load ptr, ptr @__glewGenBuffers, align 8 %137 = getelementptr inbounds nuw i8, ptr %102, i64 32 tail call void %136(i32 noundef 1, ptr noundef nonnull %137) @@ -9360,30 +9358,30 @@ _ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext 1030: ; preds = %1022 %1031 = load ptr, ptr @__glewBufferSubData, align 8 - %1032 = getelementptr inbounds nuw i8, ptr %1026, i64 8 - %1033 = load i64, ptr %1032, align 8 - %1034 = getelementptr inbounds nuw i8, ptr %1026, i64 20 - %1035 = load i32, ptr %1034, align 4 - %switch.tableidx = add i32 %1035, -5121 - %1036 = icmp ult i32 %switch.tableidx, 6 - br i1 %1036, label %switch.lookup, label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit373 + %1032 = getelementptr inbounds nuw i8, ptr %1026, i64 20 + %1033 = load i32, ptr %1032, align 4 + %switch.tableidx = add i32 %1033, -5121 + %1034 = icmp ult i32 %switch.tableidx, 6 + br i1 %1034, label %switch.lookup, label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit373 switch.lookup: ; preds = %1030 + %1035 = getelementptr inbounds nuw i8, ptr %1026, i64 8 + %1036 = load i64, ptr %1035, align 8 %1037 = zext nneg i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table._ZN3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE27bufferDeAllocationRequestedENS_20GLMeshAttributesInfo13INT_ATT_NAMESE, i64 %1037 %switch.load = load i64, ptr %switch.gep, align 8 + %1038 = mul i64 %switch.load, %1036 br label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit373 _ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit373: ; preds = %1030, %switch.lookup - %.0.i372 = phi i64 [ %switch.load, %switch.lookup ], [ 0, %1030 ] - %1038 = mul i64 %.0.i372, %1033 + %.0.i372 = phi i64 [ %1038, %switch.lookup ], [ 0, %1030 ] %1039 = load ptr, ptr %1007, align 8 %1040 = load ptr, ptr %1006, align 8 %1041 = ptrtoint ptr %1039 to i64 %1042 = ptrtoint ptr %1040 to i64 %1043 = sub i64 %1041, %1042 %1044 = ashr exact i64 %1043, 3 - %1045 = mul i64 %1038, %1044 + %1045 = mul i64 %.0.i372, %1044 invoke void %1031(i32 noundef 34963, i64 noundef 0, i64 noundef %1045, ptr noundef nonnull %1040) to label %1046 unwind label %.loopexit.split-lp @@ -12071,24 +12069,20 @@ _ZNK3vcg20GLMeshAttributesInfo13RenderingAttsINS0_13INT_ATT_NAMESEEixEj.exit: ; %50 = load i32, ptr %49, align 4 %switch.tableidx = add i32 %50, -5121 %51 = icmp ult i32 %switch.tableidx, 6 - br i1 %51, label %switch.lookup, label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i + br i1 %51, label %switch.lookup, label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE19boExpectedDimensionENS_20GLMeshAttributesInfo13INT_ATT_NAMESEb.exit switch.lookup: ; preds = %48 %52 = zext nneg i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table._ZN3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE27bufferDeAllocationRequestedENS_20GLMeshAttributesInfo13INT_ATT_NAMESE, i64 %52 %switch.load = load i64, ptr %switch.gep, align 8 - br label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i - -_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i: ; preds = %48, %switch.lookup - %.0.i.i = phi i64 [ %switch.load, %switch.lookup ], [ 0, %48 ] - %53 = mul i64 %.0.i.i, %27 + %53 = mul i64 %switch.load, %27 br label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE19boExpectedDimensionENS_20GLMeshAttributesInfo13INT_ATT_NAMESEb.exit 54: ; preds = %40 resume { ptr, i32 } %41 -_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE19boExpectedDimensionENS_20GLMeshAttributesInfo13INT_ATT_NAMESEb.exit: ; preds = %36, %45, %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i - %.0.i = phi i64 [ %53, %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit.i ], [ 0, %45 ], [ 0, %36 ] +_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE19boExpectedDimensionENS_20GLMeshAttributesInfo13INT_ATT_NAMESEb.exit: ; preds = %switch.lookup, %48, %36, %45 + %.0.i = phi i64 [ 0, %45 ], [ 0, %36 ], [ %53, %switch.lookup ], [ 0, %48 ] %55 = add nsw i64 %.0.i, %.016 br label %56 @@ -12157,15 +12151,15 @@ switch.lookup: ; preds = %25 %31 = zext nneg i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table._ZN3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE27bufferDeAllocationRequestedENS_20GLMeshAttributesInfo13INT_ATT_NAMESE, i64 %31 %switch.load = load i64, ptr %switch.gep, align 8 + %32 = mul i64 %switch.load, %24 br label %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit _ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit: ; preds = %25, %switch.lookup - %.0.i = phi i64 [ %switch.load, %switch.lookup ], [ 0, %25 ] - %32 = mul i64 %.0.i, %24 + %.0.i = phi i64 [ %32, %switch.lookup ], [ 0, %25 ] %33 = load ptr, ptr %27, align 8 %34 = getelementptr inbounds nuw i8, ptr %33, i64 40 %35 = load ptr, ptr %34, align 8 - tail call void %35(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %32) + tail call void %35(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %.0.i) br label %36 36: ; preds = %_ZNK3vcg49NotThreadSafeGLMeshAttributesMultiViewerBOManagerI6CMeshOP10QGLContext18MLPerViewGLOptionsE14GLBufferObject15getSizeOfGLTypeEv.exit, %21 diff --git a/bench/minetest/optimized/CFileSystem.ll b/bench/minetest/optimized/CFileSystem.ll index b5c349d5d41..06631cd58f9 100644 --- a/bench/minetest/optimized/CFileSystem.ll +++ b/bench/minetest/optimized/CFileSystem.ll @@ -1651,8 +1651,7 @@ for.inc: ; preds = %_ZNK3irr4core6strin br i1 %cmp.not, label %for.body, label %cleanup, !llvm.loop !55 cleanup: ; preds = %for.inc, %if.then, %entry - %cmp.not22 = phi i1 [ true, %if.then ], [ false, %entry ], [ false, %for.inc ] - %retval.0 = phi i1 [ %call13, %if.then ], [ undef, %entry ], [ undef, %for.inc ] + %cmp.not22 = phi i1 [ %call13, %if.then ], [ false, %entry ], [ false, %for.inc ] %18 = load ptr, ptr %absPath, align 8, !tbaa !44 %19 = getelementptr inbounds nuw i8, ptr %absPath, i64 16 %cmp.i.i.i.i = icmp eq ptr %18, %19 @@ -1663,9 +1662,8 @@ if.then.i.i.i: ; preds = %cleanup br label %_ZN3irr4core6stringIcED2Ev.exit _ZN3irr4core6stringIcED2Ev.exit: ; preds = %cleanup, %if.then.i.i.i - %spec.select = and i1 %cmp.not22, %retval.0 call void @llvm.lifetime.end.p0(ptr nonnull %absPath) - ret i1 %spec.select + ret i1 %cmp.not22 } ; Function Attrs: mustprogress nounwind uwtable @@ -1707,6 +1705,7 @@ if.then: ; preds = %for.body.if.then_cr %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 72 %7 = load ptr, ptr %vfn, align 8 %call5 = tail call noundef zeroext i1 %7(ptr noundef nonnull align 8 dereferenceable(144) %this, i32 noundef %indvars.iv.lcssa) #23 + %8 = and i1 %cmp.not15.lcssa, %call5 br label %cleanup for.inc: ; preds = %for.body.preheader, %for.body @@ -1716,10 +1715,8 @@ for.inc: ; preds = %for.body.preheader, br i1 %exitcond.not, label %cleanup, label %for.body, !llvm.loop !56 cleanup: ; preds = %for.inc, %if.then, %entry - %cmp.not11 = phi i1 [ %cmp.not15.lcssa, %if.then ], [ false, %entry ], [ false, %for.inc ] - %retval.0 = phi i1 [ %call5, %if.then ], [ undef, %entry ], [ undef, %for.inc ] - %spec.select = and i1 %cmp.not11, %retval.0 - ret i1 %spec.select + %cmp.not11 = phi i1 [ %8, %if.then ], [ false, %entry ], [ false, %for.inc ] + ret i1 %cmp.not11 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable diff --git a/bench/minetest/optimized/cavegen.ll b/bench/minetest/optimized/cavegen.ll index 70abfd9c16b..751b3713c88 100644 --- a/bench/minetest/optimized/cavegen.ll +++ b/bench/minetest/optimized/cavegen.ll @@ -2448,12 +2448,10 @@ cond.end: ; preds = %cond.false, %land.l %cond-lvalue = phi ptr [ %waternode, %cond.false ], [ %lavanode, %land.lhs.true ] %21 = load i32, ptr %cond-lvalue, align 4, !tbaa.struct !101 %liquidnode.sroa.0.0.extract.trunc = trunc i32 %21 to i16 - %liquidnode.sroa.7.0.extract.shift = and i32 %21, -16777216 - %22 = and i32 %21, 16711680 + %liquidnode.sroa.7.0.extract.shift = and i32 %21, -65536 br label %if.end36 if.end36: ; preds = %cond.end, %if.then24, %entry - %liquidnode.sroa.7.0 = phi i32 [ 0, %entry ], [ %liquidnode.sroa.7.0.extract.shift, %cond.end ], [ 0, %if.then24 ] %liquidnode.sroa.6.0 = phi i32 [ 0, %entry ], [ %22, %cond.end ], [ 0, %if.then24 ] %liquidnode.sroa.0.0 = phi i16 [ 127, %entry ], [ %liquidnode.sroa.0.0.extract.trunc, %cond.end ], [ %16, %if.then24 ] %rs = getelementptr inbounds nuw i8, ptr %this, i64 116 @@ -2518,9 +2516,8 @@ for.body.lr.ph: ; preds = %land.end %water_level214 = getelementptr inbounds nuw i8, ptr %this, i64 44 %conv242 = sext i16 %add8.i to i32 %sub243 = add nsw i32 %conv242, -4 - %liquidnode.sroa.6.0.insert.insert = or disjoint i32 %liquidnode.sroa.6.0, %liquidnode.sroa.7.0 %liquidnode.sroa.0.0.insert.ext = zext i16 %liquidnode.sroa.0.0 to i32 - %liquidnode.sroa.0.0.insert.insert = or disjoint i32 %liquidnode.sroa.6.0.insert.insert, %liquidnode.sroa.0.0.insert.ext + %liquidnode.sroa.0.0.insert.insert = or disjoint i32 %liquidnode.sroa.6.0, %liquidnode.sroa.0.0.insert.ext %waternode.0.waternode.0.waternode.0.waternode.0.waternode.0.waternode.0.waternode.0.waternode.val = load i32, ptr %waternode, align 4 %.pre = load ptr, ptr %ps, align 8, !tbaa !142 %.pre476 = load i32, ptr %.pre, align 4, !tbaa !147 diff --git a/bench/mitsuba3/optimized/ralocal.ll b/bench/mitsuba3/optimized/ralocal.ll index c0193885b1f..95eda504d60 100644 --- a/bench/mitsuba3/optimized/ralocal.ll +++ b/bench/mitsuba3/optimized/ralocal.ll @@ -1478,9 +1478,9 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_1016RALocalAllocator9allocInstEPNS0 %31 = getelementptr inbounds nuw i8, ptr %0, i64 104 br label %32 -32: ; preds = %1344, %2 - %33 = phi i64 [ 0, %2 ], [ %1349, %1344 ] - %34 = phi i8 [ 0, %2 ], [ %917, %1344 ] +32: ; preds = %.loopexit76, %2 + %33 = phi i64 [ 0, %2 ], [ %1347, %.loopexit76 ] + %34 = phi i8 [ 0, %2 ], [ %917, %.loopexit76 ] %35 = trunc i64 %33 to i32 %36 = shl nuw nsw i32 %35, 3 %37 = load i32, ptr %19, align 4, !tbaa !16 @@ -2916,7 +2916,7 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_1016RALocalAllocator9allocInstEPNS0 br i1 %1066, label %.loopexit80, label %1016, !llvm.loop !176 .loopexit80: ; preds = %1063, %1005, %.loopexit81 - br i1 %921, label %1344, label %1067 + br i1 %921, label %.loopexit76, label %1067 1067: ; preds = %.loopexit80 %1068 = load ptr, ptr %22, align 8, !tbaa !22 @@ -3280,27 +3280,26 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_1016RALocalAllocator9allocInstEPNS0 %1341 = icmp eq i64 %1340, %918 br i1 %1341, label %.loopexit76, label %1146, !llvm.loop !185 -.loopexit76: ; preds = %1337, %.loopexit78 - %1342 = phi i32 [ 0, %.loopexit78 ], [ %1339, %1337 ] - %1343 = or i32 %1342, %923 - br label %1344 - -1344: ; preds = %.loopexit76, %.loopexit80 - %1345 = phi i32 [ %1343, %.loopexit76 ], [ %923, %.loopexit80 ] - %1346 = getelementptr inbounds nuw i32, ptr %28, i64 %33 - %1347 = load i32, ptr %1346, align 4, !tbaa !91 - %1348 = or i32 %1347, %1345 - store i32 %1348, ptr %1346, align 4, !tbaa !91 - %1349 = add nuw nsw i64 %33, 1 - %1350 = icmp eq i64 %1349, 4 - br i1 %1350, label %.loopexit72, label %32 - -.loopexit72: ; preds = %1344, %1133, %1078, %176, %70, %501, %458, %627, %595, %947, %1044, %1260, %835, %801, %775, %698, %271 - %1351 = phi i32 [ 61, %271 ], [ %723, %698 ], [ %849, %835 ], [ %826, %801 ], [ %780, %775 ], [ %1268, %1260 ], [ %1049, %1044 ], [ %953, %947 ], [ %618, %595 ], [ %633, %627 ], [ %515, %501 ], [ %482, %458 ], [ 3, %70 ], [ 3, %176 ], [ 0, %1344 ], [ 61, %1133 ], [ 61, %1078 ] +.loopexit76: ; preds = %1337 + %1342 = or i32 %1339, %923 + br label %.loopexit76 + +.loopexit76: ; preds = %.loopexit78, %.loopexit76.loopexit, %.loopexit80 + %1343 = phi i32 [ %923, %.loopexit80 ], [ %923, %.loopexit78 ], [ %1342, %.loopexit76.loopexit ] + %1344 = getelementptr inbounds nuw i32, ptr %28, i64 %33 + %1345 = load i32, ptr %1344, align 4, !tbaa !91 + %1346 = or i32 %1345, %1343 + store i32 %1346, ptr %1344, align 4, !tbaa !91 + %1347 = add nuw nsw i64 %33, 1 + %1348 = icmp eq i64 %1347, 4 + br i1 %1348, label %.loopexit72, label %32 + +.loopexit72: ; preds = %.loopexit76, %1133, %1078, %176, %70, %501, %458, %627, %595, %947, %1044, %1260, %835, %801, %775, %698, %271 + %1349 = phi i32 [ 61, %271 ], [ %723, %698 ], [ %849, %835 ], [ %826, %801 ], [ %780, %775 ], [ %1268, %1260 ], [ %1049, %1044 ], [ %953, %947 ], [ %618, %595 ], [ %633, %627 ], [ %515, %501 ], [ %482, %458 ], [ 3, %70 ], [ 3, %176 ], [ 0, %.loopexit76 ], [ 61, %1133 ], [ 61, %1078 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - ret i32 %1351 + ret i32 %1349 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/mitsuba3/optimized/virtmem.ll b/bench/mitsuba3/optimized/virtmem.ll index 310fc2e77d2..72b3668445c 100644 --- a/bench/mitsuba3/optimized/virtmem.ll +++ b/bench/mitsuba3/optimized/virtmem.ll @@ -586,44 +586,28 @@ define internal fastcc noundef range(i32 1, 9) i32 @_ZN6asmjit9_abi_1_107VirtMem define dso_local noundef range(i32 0, 3) i32 @_ZN6asmjit9_abi_1_107VirtMem18releaseDualMappingEPNS1_11DualMappingEm(ptr noundef captures(none) %0, i64 noundef %1) local_unnamed_addr #0 { %3 = load ptr, ptr %0, align 8, !tbaa !19 %4 = tail call i32 @munmap(ptr noundef %3, i64 noundef %1) #14 - %5 = icmp eq i32 %4, 0 - br i1 %5, label %7, label %6, !prof !7 - -6: ; preds = %2 - br label %7 - -7: ; preds = %6, %2 - %8 = phi i32 [ 2, %6 ], [ 0, %2 ] - %9 = load ptr, ptr %0, align 8, !tbaa !19 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %11 = load ptr, ptr %10, align 8, !tbaa !21 - %12 = icmp eq ptr %9, %11 - br i1 %12, label %20, label %13 - -13: ; preds = %7 - %14 = tail call i32 @munmap(ptr noundef %11, i64 noundef %1) #14 - %15 = icmp eq i32 %14, 0 - br i1 %15, label %17, label %16, !prof !7 - -16: ; preds = %13 - br label %17 + %5 = load ptr, ptr %0, align 8, !tbaa !19 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %7 = load ptr, ptr %6, align 8, !tbaa !21 + %8 = icmp eq ptr %5, %7 + br i1 %8, label %12, label %17 -17: ; preds = %16, %13 - %18 = phi i32 [ 2, %16 ], [ 0, %13 ] - %19 = or i32 %18, %8 - br label %20 +17: ; preds = %2 + %10 = tail call i32 @munmap(ptr noundef %7, i64 noundef %1) #14 + %19 = or i32 %10, %4 + %or.cond = icmp eq i32 %11, 0 + br i1 %or.cond, label %14, label %.thread, !prof !24 -20: ; preds = %17, %7 - %21 = phi i32 [ %19, %17 ], [ %8, %7 ] - %22 = icmp eq i32 %21, 0 - br i1 %22, label %23, label %24 +20: ; preds = %2 + %13 = icmp eq i32 %4, 0 + br i1 %13, label %23, label %24 -23: ; preds = %20 +23: ; preds = %9, %20 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) br label %24 -24: ; preds = %23, %20 - %25 = phi i32 [ 0, %23 ], [ 2, %20 ] +24: ; preds = %9, %23, %20 + %25 = phi i32 [ 0, %14 ], [ 2, %12 ], [ 2, %9 ] ret i32 %25 } @@ -798,3 +782,4 @@ attributes #16 = { noreturn nounwind } !21 = !{!20, !4, i64 8} !22 = distinct !{!22, !23} !23 = !{!"llvm.loop.mustprogress"} +!24 = !{!"branch_weights", i32 2000, i32 2002} diff --git a/bench/mold/optimized/cmdline.cc.X86_64.ll b/bench/mold/optimized/cmdline.cc.X86_64.ll index 10e0adc2852..2c4f781c9bd 100644 --- a/bench/mold/optimized/cmdline.cc.X86_64.ll +++ b/bench/mold/optimized/cmdline.cc.X86_64.ll @@ -38120,9 +38120,6 @@ _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exi .critedge: ; preds = %47, %48 %53 = getelementptr inbounds nuw i8, ptr %.018.ptr36.le, i64 8 %54 = load i32, ptr %53, align 8 - %.sroa.630.0.extract.shift = and i32 %54, -16777216 - %55 = and i32 %54, 16711680 - %56 = and i32 %54, 65535 br label %.critedge23 .critedge21: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit @@ -38131,11 +38128,9 @@ _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exi br i1 %.not19, label %.critedge23, label %42 .critedge23: ; preds = %.critedge21, %48, %.critedge - %.sroa.029.1 = phi i32 [ %56, %.critedge ], [ 1024, %48 ], [ 0, %.critedge21 ] - %.sroa.4.1 = phi i32 [ %55, %.critedge ], [ 0, %48 ], [ 0, %.critedge21 ] - %.sroa.630.3 = phi i32 [ %.sroa.630.0.extract.shift, %.critedge ], [ 0, %48 ], [ 0, %.critedge21 ] - %57 = icmp eq ptr %10, %7 - br i1 %57, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %.sroa.029.1 = phi i32 [ %54, %.critedge ], [ 1024, %48 ], [ 0, %.critedge21 ] + %55 = icmp eq ptr %10, %7 + br i1 %55, 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 = %.critedge23 %58 = icmp ult i64 %11, 16 @@ -38150,9 +38145,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: _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 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.1, %.sroa.029.1 - %.sroa.029.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.630.3 - ret i32 %.sroa.029.0.insert.insert + ret i32 %.sroa.029.1 } ; Function Attrs: mustprogress nounwind diff --git a/bench/msgpack/optimized/asio_send_recv.ll b/bench/msgpack/optimized/asio_send_recv.ll index 90751904a61..ac7183cdd38 100644 --- a/bench/msgpack/optimized/asio_send_recv.ll +++ b/bench/msgpack/optimized/asio_send_recv.ll @@ -32534,14 +32534,13 @@ _ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9 %.not = icmp eq i32 %37, 0 %38 = zext i32 %37 to i64 %39 = select i1 %.not, i64 0, i64 4294967296 - br label %40 + %40 = or disjoint i64 %39, %38 + br label %41 40: ; preds = %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22.thread, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13.thread, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6.thread, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit, %1, %35, %16, %15, %8 %.sroa.1343.0 = phi ptr [ @_ZN5boost6system6detail10cat_holderIvE24system_category_instanceE, %35 ], [ @_ZN5boost6system6detail10cat_holderIvE24system_category_instanceE, %8 ], [ @_ZN5boost6system6detail10cat_holderIvE24system_category_instanceE, %15 ], [ @_ZN5boost6system6detail10cat_holderIvE24system_category_instanceE, %16 ], [ @_ZN5boost6system6detail10cat_holderIvE24system_category_instanceE, %1 ], [ @_ZZN5boost4asio5error18get_netdb_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit ], [ @_ZZN5boost4asio5error18get_netdb_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread ], [ @_ZZN5boost4asio5error18get_netdb_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6 ], [ @_ZZN5boost4asio5error18get_netdb_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6.thread ], [ @_ZZN5boost4asio5error18get_netdb_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13 ], [ @_ZZN5boost4asio5error18get_netdb_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13.thread ], [ @_ZZN5boost4asio5error21get_addrinfo_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit ], [ @_ZZN5boost4asio5error21get_addrinfo_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread ], [ @_ZZN5boost4asio5error21get_addrinfo_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22 ], [ @_ZZN5boost4asio5error21get_addrinfo_categoryEvE8instance, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22.thread ] - %.sroa.11.0 = phi i64 [ %39, %35 ], [ 4294967296, %8 ], [ 4294967296, %15 ], [ 4294967296, %16 ], [ 0, %1 ], [ 0, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit ], [ 4294967296, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread ], [ 0, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6 ], [ 4294967296, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6.thread ], [ 0, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13 ], [ 4294967296, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13.thread ], [ 0, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit ], [ 4294967296, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread ], [ 0, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22 ], [ 4294967296, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22.thread ] - %.sroa.0.0 = phi i64 [ %38, %35 ], [ 22, %8 ], [ 97, %15 ], [ 12, %16 ], [ 0, %1 ], [ 2, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit ], [ 2, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread ], [ 3, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6 ], [ 3, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6.thread ], [ 1, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13 ], [ 1, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13.thread ], [ 4294967288, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit ], [ 4294967288, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread ], [ 4294967289, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22 ], [ 4294967289, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22.thread ] - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.11.0, %.sroa.0.0 - %.fca.0.insert = insertvalue { i64, ptr } poison, i64 %.sroa.0.0.insert.insert, 0 + %.sroa.11.0 = phi i64 [ %40, %35 ], [ 4294967318, %8 ], [ 4294967393, %15 ], [ 4294967308, %16 ], [ 0, %1 ], [ 2, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit ], [ 4294967298, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread ], [ 3, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6 ], [ 4294967299, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit6.thread ], [ 1, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13 ], [ 4294967297, %_ZN5boost6system10error_codeC2INS_4asio5error12netdb_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit13.thread ], [ 4294967288, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit ], [ 8589934584, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit.thread ], [ 4294967289, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22 ], [ 8589934585, %_ZN5boost6system10error_codeC2INS_4asio5error15addrinfo_errorsEEET_PNS0_6detail9enable_ifIXsr18is_error_code_enumIS6_EE5valueEvE4typeE.exit22.thread ] + %.fca.0.insert = insertvalue { i64, ptr } poison, i64 %.sroa.11.0, 0 %.fca.1.insert = insertvalue { i64, ptr } %.fca.0.insert, ptr %.sroa.1343.0, 1 ret { i64, ptr } %.fca.1.insert } diff --git a/bench/ncnn/optimized/pooling_x86_avx.ll b/bench/ncnn/optimized/pooling_x86_avx.ll index dc3263521a3..26ef4096e2a 100644 --- a/bench/ncnn/optimized/pooling_x86_avx.ll +++ b/bench/ncnn/optimized/pooling_x86_avx.ll @@ -2076,12 +2076,15 @@ _ZN4ncnn3MatD2Ev.exit: ; preds = %._crit_edge76, %.pr %wide.trip.count = zext nneg i32 %82 to i64 br label %90 -._crit_edge: ; preds = %90, %.lr.ph75 - %.040.lcssa = phi <8 x float> [ zeroinitializer, %.lr.ph75 ], [ %97, %90 ] - %85 = fmul fast <8 x float> %.040.lcssa, %46 +._crit_edge: ; preds = %90 + %85 = fmul fast <8 x float> %97, %46 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %.lr.ph75 + %.040.lcssa = phi <8 x float> [ zeroinitializer, %.lr.ph75 ], [ %85, %._crit_edge.loopexit ] %.idx = shl nsw i64 %indvars.iv88, 5 %86 = getelementptr inbounds nuw i8, ptr %.03879, i64 %.idx - store <8 x float> %85, ptr %86, align 1, !tbaa !69 + store <8 x float> %.040.lcssa, ptr %86, align 1, !tbaa !69 %indvars.iv.next89 = add nuw nsw i64 %indvars.iv88, 1 %87 = load i32, ptr %7, align 4, !tbaa !31 %88 = sext i32 %87 to i64 @@ -2897,12 +2900,15 @@ _ZN4ncnn3MatD2Ev.exit: ; preds = %._crit_edge76, %.pr %wide.trip.count = zext nneg i32 %82 to i64 br label %90 -._crit_edge: ; preds = %90, %.lr.ph75 - %.040.lcssa = phi <4 x float> [ zeroinitializer, %.lr.ph75 ], [ %97, %90 ] - %85 = fmul fast <4 x float> %.040.lcssa, %46 +._crit_edge: ; preds = %90 + %85 = fmul fast <4 x float> %97, %46 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %.lr.ph75 + %.040.lcssa = phi <4 x float> [ zeroinitializer, %.lr.ph75 ], [ %85, %._crit_edge.loopexit ] %.idx = shl nsw i64 %indvars.iv88, 4 %86 = getelementptr inbounds nuw i8, ptr %.03879, i64 %.idx - store <4 x float> %85, ptr %86, align 1, !tbaa !69 + store <4 x float> %.040.lcssa, ptr %86, align 1, !tbaa !69 %indvars.iv.next89 = add nuw nsw i64 %indvars.iv88, 1 %87 = load i32, ptr %7, align 4, !tbaa !31 %88 = sext i32 %87 to i64 diff --git a/bench/ncnn/optimized/pooling_x86_avx512.ll b/bench/ncnn/optimized/pooling_x86_avx512.ll index 8ec9dd2eed0..8fb793824aa 100644 --- a/bench/ncnn/optimized/pooling_x86_avx512.ll +++ b/bench/ncnn/optimized/pooling_x86_avx512.ll @@ -2501,10 +2501,13 @@ _ZN4ncnn3MatD2Ev.exit: ; preds = %._crit_edge75, %.pr %wide.trip.count = zext nneg i32 %78 to i64 br label %86 -._crit_edge: ; preds = %86, %.lr.ph74 - %.039.lcssa = phi <16 x float> [ zeroinitializer, %.lr.ph74 ], [ %93, %86 ] - %81 = fmul fast <16 x float> %.039.lcssa, %46 - store <16 x float> %81, ptr %.173, align 1, !tbaa !71 +._crit_edge: ; preds = %86 + %81 = fmul fast <16 x float> %93, %46 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %.lr.ph74 + %.039.lcssa = phi <16 x float> [ zeroinitializer, %.lr.ph74 ], [ %81, %._crit_edge.loopexit ] + store <16 x float> %.039.lcssa, ptr %.173, align 1, !tbaa !71 %82 = getelementptr inbounds nuw i8, ptr %.173, i64 64 %83 = add nuw nsw i32 %.04172, 1 %84 = load i32, ptr %7, align 4, !tbaa !31 @@ -3320,12 +3323,15 @@ _ZN4ncnn3MatD2Ev.exit: ; preds = %._crit_edge76, %.pr %wide.trip.count = zext nneg i32 %82 to i64 br label %90 -._crit_edge: ; preds = %90, %.lr.ph75 - %.040.lcssa = phi <8 x float> [ zeroinitializer, %.lr.ph75 ], [ %97, %90 ] - %85 = fmul fast <8 x float> %.040.lcssa, %46 +._crit_edge: ; preds = %90 + %85 = fmul fast <8 x float> %97, %46 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %.lr.ph75 + %.040.lcssa = phi <8 x float> [ zeroinitializer, %.lr.ph75 ], [ %85, %._crit_edge.loopexit ] %.idx = shl nsw i64 %indvars.iv88, 5 %86 = getelementptr inbounds nuw i8, ptr %.03879, i64 %.idx - store <8 x float> %85, ptr %86, align 1, !tbaa !71 + store <8 x float> %.040.lcssa, ptr %86, align 1, !tbaa !71 %indvars.iv.next89 = add nuw nsw i64 %indvars.iv88, 1 %87 = load i32, ptr %7, align 4, !tbaa !31 %88 = sext i32 %87 to i64 @@ -4141,12 +4147,15 @@ _ZN4ncnn3MatD2Ev.exit: ; preds = %._crit_edge76, %.pr %wide.trip.count = zext nneg i32 %82 to i64 br label %90 -._crit_edge: ; preds = %90, %.lr.ph75 - %.040.lcssa = phi <4 x float> [ zeroinitializer, %.lr.ph75 ], [ %97, %90 ] - %85 = fmul fast <4 x float> %.040.lcssa, %46 +._crit_edge: ; preds = %90 + %85 = fmul fast <4 x float> %97, %46 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %.lr.ph75 + %.040.lcssa = phi <4 x float> [ zeroinitializer, %.lr.ph75 ], [ %85, %._crit_edge.loopexit ] %.idx = shl nsw i64 %indvars.iv88, 4 %86 = getelementptr inbounds nuw i8, ptr %.03879, i64 %.idx - store <4 x float> %85, ptr %86, align 1, !tbaa !71 + store <4 x float> %.040.lcssa, ptr %86, align 1, !tbaa !71 %indvars.iv.next89 = add nuw nsw i64 %indvars.iv88, 1 %87 = load i32, ptr %7, align 4, !tbaa !31 %88 = sext i32 %87 to i64 diff --git a/bench/nix/optimized/binary-cache-store.ll b/bench/nix/optimized/binary-cache-store.ll index 335d1e8db67..74c422ab48e 100644 --- a/bench/nix/optimized/binary-cache-store.ll +++ b/bench/nix/optimized/binary-cache-store.ll @@ -50034,9 +50034,6 @@ _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exi .critedge: ; preds = %62, %63 %68 = getelementptr inbounds nuw i8, ptr %.016.ptr39, i64 8 %69 = load i32, ptr %68, align 8 - %.sroa.6.0.extract.shift = and i32 %69, -16777216 - %70 = and i32 %69, 16711680 - %71 = and i32 %69, 65535 br label %.loopexit _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit @@ -50045,11 +50042,9 @@ _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exi br i1 %.not17, label %.loopexit, label %57 .loopexit: ; preds = %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit.thread, %63, %.critedge - %.sroa.032.0 = phi i32 [ %71, %.critedge ], [ 1024, %63 ], [ 0, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit.thread ] - %.sroa.4.0 = phi i32 [ %70, %.critedge ], [ 0, %63 ], [ 0, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit.thread ] - %.sroa.6.0 = phi i32 [ %.sroa.6.0.extract.shift, %.critedge ], [ 0, %63 ], [ 0, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit.thread ] - %72 = icmp eq ptr %13, %8 - br i1 %72, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %.sroa.032.0 = phi i32 [ %69, %.critedge ], [ 1024, %63 ], [ 0, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit.thread ] + %70 = icmp eq ptr %13, %8 + br i1 %70, 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 = %.loopexit %73 = icmp ult i64 %12, 16 @@ -50062,9 +50057,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: _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 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #35 - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.0, %.sroa.032.0 - %.sroa.032.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.6.0 - ret i32 %.sroa.032.0.insert.insert + ret i32 %.sroa.032.0 } ; Function Attrs: mustprogress uwtable diff --git a/bench/oiio/optimized/filesystem.ll b/bench/oiio/optimized/filesystem.ll index b16858488f8..7fcecb84646 100644 --- a/bench/oiio/optimized/filesystem.ll +++ b/bench/oiio/optimized/filesystem.ll @@ -30475,30 +30475,23 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr .critedge: ; preds = %49, %50 %54 = getelementptr inbounds nuw i8, ptr %.021.ptr43, i64 8 %55 = load i32, ptr %54, align 8 - %.sroa.6.0.extract.shift = and i32 %55, -16777216 - %56 = and i32 %55, 16711680 - %57 = and i32 %55, 65535 br label %.critedge28 .critedge28: ; preds = %45, %50, %.critedge - %.sroa.037.1 = phi i32 [ %57, %.critedge ], [ 1024, %50 ], [ 0, %45 ] - %.sroa.4.1 = phi i32 [ %56, %.critedge ], [ 0, %50 ], [ 0, %45 ] - %.sroa.6.3 = phi i32 [ %.sroa.6.0.extract.shift, %.critedge ], [ 0, %50 ], [ 0, %45 ] - %58 = load ptr, ptr %5, align 8, !tbaa !20 - %59 = icmp eq ptr %58, %7 - br i1 %59, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %.sroa.037.1 = phi i32 [ %55, %.critedge ], [ 1024, %50 ], [ 0, %45 ] + %56 = load ptr, ptr %5, align 8, !tbaa !20 + %57 = icmp eq ptr %56, %7 + br i1 %57, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %.critedge28 %60 = load i64, ptr %7, align 8, !tbaa !27 %61 = add i64 %60, 1 - call void @_ZdlPvm(ptr noundef %58, i64 noundef %61) #39 + call void @_ZdlPvm(ptr noundef %56, i64 noundef %61) #39 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %.critedge28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.1, %.sroa.037.1 - %.sroa.037.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.6.3 - ret i32 %.sroa.037.0.insert.insert + ret i32 %.sroa.037.1 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i30: ; preds = %41 %62 = load i64, ptr %7, align 8, !tbaa !27 @@ -60661,11 +60654,11 @@ _ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i: %251 = getelementptr inbounds nuw i32, ptr %228, i64 %250 %252 = load i32, ptr %251, align 4, !tbaa !115 %253 = zext i32 %252 to i64 + %254 = or disjoint i64 %.03561.i, %253 br label %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit48.i _ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit48.i: ; preds = %248, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i - %254 = phi i64 [ %253, %248 ], [ 0, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i ] - %255 = or disjoint i64 %254, %.03561.i + %254 = phi i64 [ %254, %248 ], [ %.03561.i, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i ] %256 = icmp samesign ugt i64 %246, %255 br i1 %256, label %.thread527, label %257 @@ -60780,11 +60773,11 @@ _ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i2 %309 = getelementptr inbounds nuw i32, ptr %294, i64 %308 %310 = load i32, ptr %309, align 4, !tbaa !115 %311 = zext i32 %310 to i64 + %312 = or disjoint i64 %.03561.i195, %311 br label %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit48.i205 _ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit48.i205: ; preds = %306, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i202 - %312 = phi i64 [ %311, %306 ], [ 0, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i202 ] - %313 = or disjoint i64 %312, %.03561.i195 + %312 = phi i64 [ %312, %306 ], [ %.03561.i195, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i202 ] %314 = icmp samesign ugt i64 %304, %313 br i1 %314, label %.thread.sink.split, label %315 @@ -61142,17 +61135,17 @@ _ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i2 %459 = getelementptr inbounds nuw i32, ptr %444, i64 %458 %460 = load i32, ptr %459, align 4, !tbaa !115 %461 = zext i32 %460 to i64 + %462 = or disjoint i64 %.03561.i267, %461 br label %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit48.i277 _ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit48.i277: ; preds = %456, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i274 - %462 = phi i64 [ %461, %456 ], [ 0, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i274 ] - %463 = or disjoint i64 %462, %.03561.i267 + %462 = phi i64 [ %462, %456 ], [ %.03561.i267, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i274 ] %464 = icmp samesign ugt i64 %454, %463 br i1 %464, label %_ZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_.exit280, label %465 465: ; preds = %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit48.i277 %466 = sub nuw nsw i64 %463, %454 - %467 = icmp samesign ult i64 %466, 2 + %467 = icmp ult i64 %466, 2 %468 = shl nuw nsw i64 %466, 32 %.not.not.not.i278 = icmp sgt i32 %.03463.i268, %442 %or.cond363 = select i1 %467, i1 %.not.not.not.i278, i1 false @@ -61362,11 +61355,11 @@ _ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i3 %560 = getelementptr inbounds nuw i32, ptr %545, i64 %559 %561 = load i32, ptr %560, align 4, !tbaa !115 %562 = zext i32 %561 to i64 + %563 = or disjoint i64 %.03561.i306, %562 br label %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit48.i316 _ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit48.i316: ; preds = %557, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i313 - %563 = phi i64 [ %562, %557 ], [ 0, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i313 ] - %564 = or disjoint i64 %563, %.03561.i306 + %563 = phi i64 [ %563, %557 ], [ %.03561.i306, %_ZZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i313 ] %565 = icmp samesign ugt i64 %555, %564 br i1 %565, label %_ZN3fmt2v86detail11add_compareERKNS1_6bigintES4_S4_.exit319, label %566 diff --git a/bench/open3d/optimized/Indexer.ll b/bench/open3d/optimized/Indexer.ll index 7a5420907d4..bd9e1411dc8 100644 --- a/bench/open3d/optimized/Indexer.ll +++ b/bench/open3d/optimized/Indexer.ll @@ -18912,11 +18912,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %244 = getelementptr inbounds nuw i32, ptr %221, i64 %243 %245 = load i32, ptr %244, align 4, !tbaa !16 %246 = zext i32 %245 to i64 + %247 = or disjoint i64 %.03556.i, %246 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i: ; preds = %241, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i - %247 = phi i64 [ %246, %241 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i ] - %248 = or disjoint i64 %247, %.03556.i + %247 = phi i64 [ %247, %241 ], [ %.03556.i, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i ] %249 = icmp samesign ugt i64 %239, %248 br i1 %249, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit, label %250 @@ -19320,11 +19320,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %425 = getelementptr inbounds nuw i32, ptr %402, i64 %424 %426 = load i32, ptr %425, align 4, !tbaa !16 %427 = zext i32 %426 to i64 + %428 = or disjoint i64 %.03556.i240, %427 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i250 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i250: ; preds = %422, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i247 - %428 = phi i64 [ %427, %422 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i247 ] - %429 = or disjoint i64 %428, %.03556.i240 + %428 = phi i64 [ %428, %422 ], [ %.03556.i240, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i247 ] %430 = icmp samesign ugt i64 %420, %429 br i1 %430, label %.thread679, label %431 @@ -19438,11 +19438,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %482 = getelementptr inbounds nuw i32, ptr %467, i64 %481 %483 = load i32, ptr %482, align 4, !tbaa !16 %484 = zext i32 %483 to i64 + %485 = or disjoint i64 %.03556.i258, %484 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i268 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i268: ; preds = %479, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i265 - %485 = phi i64 [ %484, %479 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i265 ] - %486 = or disjoint i64 %485, %.03556.i258 + %485 = phi i64 [ %485, %479 ], [ %.03556.i258, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i265 ] %487 = icmp samesign ugt i64 %477, %486 br i1 %487, label %.thread.sink.split, label %488 @@ -19800,17 +19800,17 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %633 = getelementptr inbounds nuw i32, ptr %618, i64 %632 %634 = load i32, ptr %633, align 4, !tbaa !16 %635 = zext i32 %634 to i64 + %636 = or disjoint i64 %.03556.i334, %635 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i344 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i344: ; preds = %630, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i341 - %636 = phi i64 [ %635, %630 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i341 ] - %637 = or disjoint i64 %636, %.03556.i334 + %636 = phi i64 [ %636, %630 ], [ %.03556.i334, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i341 ] %638 = icmp samesign ugt i64 %628, %637 br i1 %638, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit347, label %639 639: ; preds = %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i344 %640 = sub nuw nsw i64 %637, %628 - %641 = icmp samesign ult i64 %640, 2 + %641 = icmp ult i64 %640, 2 %642 = shl nuw nsw i64 %640, 32 %.not.not.not.i345 = icmp sgt i32 %.03458.i335, %616 %or.cond468 = select i1 %641, i1 %.not.not.not.i345, i1 false @@ -20020,11 +20020,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %734 = getelementptr inbounds nuw i32, ptr %719, i64 %733 %735 = load i32, ptr %734, align 4, !tbaa !16 %736 = zext i32 %735 to i64 + %737 = or disjoint i64 %.03556.i372, %736 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i382 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i382: ; preds = %731, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i379 - %737 = phi i64 [ %736, %731 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i379 ] - %738 = or disjoint i64 %737, %.03556.i372 + %737 = phi i64 [ %737, %731 ], [ %.03556.i372, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i379 ] %739 = icmp samesign ugt i64 %729, %738 br i1 %739, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit385, label %740 @@ -34429,33 +34429,24 @@ define noundef i64 @_ZNK6open3d4core7Indexer17NumOutputElementsEv(ptr noundef no %6 = getelementptr inbounds nuw i8, ptr %0, i64 752 br label %7 -._crit_edge: ; preds = %16, %1 - %.07.lcssa = phi i64 [ 1, %1 ], [ %.1, %16 ] +._crit_edge: ; preds = %7, %1 + %.07.lcssa = phi i64 [ 1, %1 ], [ %.1, %7 ] ret i64 %.07.lcssa -7: ; preds = %.lr.ph, %16 - %.09 = phi i64 [ 0, %.lr.ph ], [ %17, %16 ] - %.078 = phi i64 [ 1, %.lr.ph ], [ %.1, %16 ] +7: ; preds = %.lr.ph, %7 + %.09 = phi i64 [ 0, %.lr.ph ], [ %14, %7 ] + %.078 = phi i64 [ 1, %.lr.ph ], [ %.1, %7 ] %8 = getelementptr inbounds nuw i64, ptr %5, i64 %.09 %9 = load i64, ptr %8, align 8, !tbaa !42 %.not = icmp eq i64 %9, 0 %10 = getelementptr inbounds nuw i64, ptr %6, i64 %.09 %11 = load i64, ptr %10, align 8, !tbaa !42 - br i1 %.not, label %12, label %._crit_edge10 - -12: ; preds = %7 + %12 = mul nsw i64 %11, %.078 %13 = icmp eq i64 %11, 0 - br i1 %13, label %._crit_edge10, label %16 - -._crit_edge10: ; preds = %7, %12 - %14 = phi i64 [ 0, %12 ], [ %11, %7 ] - %15 = mul nsw i64 %14, %.078 - br label %16 - -16: ; preds = %12, %._crit_edge10 - %.1 = phi i64 [ %15, %._crit_edge10 ], [ %.078, %12 ] - %17 = add nuw nsw i64 %.09, 1 - %exitcond.not = icmp eq i64 %17, %3 + %spec.select = select i1 %13, i64 0, i64 %.078 + %.1 = select i1 %.not, i64 %spec.select, i64 %12 + %14 = add nuw nsw i64 %.09, 1 + %exitcond.not = icmp eq i64 %14, %3 br i1 %exitcond.not, label %._crit_edge, label %7, !llvm.loop !754 } diff --git a/bench/open3d/optimized/NumpyIO.ll b/bench/open3d/optimized/NumpyIO.ll index 9d99a79780d..2175044c924 100644 --- a/bench/open3d/optimized/NumpyIO.ll +++ b/bench/open3d/optimized/NumpyIO.ll @@ -17956,11 +17956,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %244 = getelementptr inbounds nuw i32, ptr %221, i64 %243 %245 = load i32, ptr %244, align 4, !tbaa !34 %246 = zext i32 %245 to i64 + %247 = or disjoint i64 %.03556.i, %246 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i: ; preds = %241, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i - %247 = phi i64 [ %246, %241 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i ] - %248 = or disjoint i64 %247, %.03556.i + %247 = phi i64 [ %247, %241 ], [ %.03556.i, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i ] %249 = icmp samesign ugt i64 %239, %248 br i1 %249, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit, label %250 @@ -18364,11 +18364,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %425 = getelementptr inbounds nuw i32, ptr %402, i64 %424 %426 = load i32, ptr %425, align 4, !tbaa !34 %427 = zext i32 %426 to i64 + %428 = or disjoint i64 %.03556.i240, %427 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i250 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i250: ; preds = %422, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i247 - %428 = phi i64 [ %427, %422 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i247 ] - %429 = or disjoint i64 %428, %.03556.i240 + %428 = phi i64 [ %428, %422 ], [ %.03556.i240, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i247 ] %430 = icmp samesign ugt i64 %420, %429 br i1 %430, label %.thread679, label %431 @@ -18482,11 +18482,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %482 = getelementptr inbounds nuw i32, ptr %467, i64 %481 %483 = load i32, ptr %482, align 4, !tbaa !34 %484 = zext i32 %483 to i64 + %485 = or disjoint i64 %.03556.i258, %484 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i268 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i268: ; preds = %479, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i265 - %485 = phi i64 [ %484, %479 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i265 ] - %486 = or disjoint i64 %485, %.03556.i258 + %485 = phi i64 [ %485, %479 ], [ %.03556.i258, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i265 ] %487 = icmp samesign ugt i64 %477, %486 br i1 %487, label %.thread.sink.split, label %488 @@ -18844,17 +18844,17 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %633 = getelementptr inbounds nuw i32, ptr %618, i64 %632 %634 = load i32, ptr %633, align 4, !tbaa !34 %635 = zext i32 %634 to i64 + %636 = or disjoint i64 %.03556.i334, %635 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i344 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i344: ; preds = %630, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i341 - %636 = phi i64 [ %635, %630 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i341 ] - %637 = or disjoint i64 %636, %.03556.i334 + %636 = phi i64 [ %636, %630 ], [ %.03556.i334, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i341 ] %638 = icmp samesign ugt i64 %628, %637 br i1 %638, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit347, label %639 639: ; preds = %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i344 %640 = sub nuw nsw i64 %637, %628 - %641 = icmp samesign ult i64 %640, 2 + %641 = icmp ult i64 %640, 2 %642 = shl nuw nsw i64 %640, 32 %.not.not.not.i345 = icmp sgt i32 %.03458.i335, %616 %or.cond468 = select i1 %641, i1 %.not.not.not.i345, i1 false @@ -19064,11 +19064,11 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i %734 = getelementptr inbounds nuw i32, ptr %719, i64 %733 %735 = load i32, ptr %734, align 4, !tbaa !34 %736 = zext i32 %735 to i64 + %737 = or disjoint i64 %.03556.i372, %736 br label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i382 _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit46.i382: ; preds = %731, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i379 - %737 = phi i64 [ %736, %731 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i379 ] - %738 = or disjoint i64 %737, %.03556.i372 + %737 = phi i64 [ %737, %731 ], [ %.03556.i372, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit44.i379 ] %739 = icmp samesign ugt i64 %729, %738 br i1 %739, label %_ZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_.exit385, label %740 @@ -43810,9 +43810,6 @@ _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exi .critedge: ; preds = %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit.thread, %61 %65 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 8 %66 = load i32, ptr %65, align 8 - %.sroa.6.0.extract.shift = and i32 %66, -16777216 - %67 = and i32 %66, 16711680 - %68 = and i32 %66, 65535 br label %.critedge28 .critedge26: ; preds = %.preheader.split, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit @@ -43822,11 +43819,9 @@ _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exi .critedge28: ; preds = %.critedge26, %.critedge26.us, %61, %.critedge %69 = phi ptr [ %60, %.critedge ], [ %60, %61 ], [ %18, %.critedge26.us ], [ %.pre51, %.critedge26 ] - %.sroa.037.1 = phi i32 [ %68, %.critedge ], [ 1024, %61 ], [ 0, %.critedge26.us ], [ 0, %.critedge26 ] - %.sroa.4.1 = phi i32 [ %67, %.critedge ], [ 0, %61 ], [ 0, %.critedge26.us ], [ 0, %.critedge26 ] - %.sroa.6.3 = phi i32 [ %.sroa.6.0.extract.shift, %.critedge ], [ 0, %61 ], [ 0, %.critedge26.us ], [ 0, %.critedge26 ] - %70 = icmp eq ptr %69, %13 - br i1 %70, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %.sroa.037.1 = phi i32 [ %66, %.critedge ], [ 1024, %61 ], [ 0, %.critedge26.us ], [ 0, %.critedge26 ] + %68 = icmp eq ptr %67, %13 + br i1 %68, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %.critedge28 %71 = load i64, ptr %13, align 8, !tbaa !22 @@ -43836,9 +43831,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %.critedge28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.1, %.sroa.037.1 - %.sroa.037.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.6.3 - ret i32 %.sroa.037.0.insert.insert + ret i32 %.sroa.037.1 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i30: ; preds = %52 %73 = load i64, ptr %13, align 8, !tbaa !22 diff --git a/bench/open3d/optimized/PointCloudPlanarPatchDetection.ll b/bench/open3d/optimized/PointCloudPlanarPatchDetection.ll index 0fd6394f9f5..2eca2320824 100644 --- a/bench/open3d/optimized/PointCloudPlanarPatchDetection.ll +++ b/bench/open3d/optimized/PointCloudPlanarPatchDetection.ll @@ -5653,7 +5653,7 @@ define internal fastcc noundef zeroext i1 @_ZN6open3d8geometry12_GLOBAL__N_129Sp %20 = sub i64 %18, %19 %21 = ashr exact i64 %20, 3 %22 = icmp ult i64 %21, %1 - br i1 %22, label %762, label %23 + br i1 %22, label %_ZNSt12__shared_ptrIN6open3d8geometry12_GLOBAL__N_113PlaneDetectorELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit, label %23 23: ; preds = %8 %24 = getelementptr inbounds nuw i8, ptr %.val34, i64 184 @@ -7412,13 +7412,8 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i: ; preds = %757, %755 call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %194) #4 br label %_ZNSt12__shared_ptrIN6open3d8geometry12_GLOBAL__N_113PlaneDetectorELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit -_ZNSt12__shared_ptrIN6open3d8geometry12_GLOBAL__N_113PlaneDetectorELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit: ; preds = %760, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i, %746, %189, %184 - %.028 = phi i1 [ false, %184 ], [ false, %189 ], [ %.0.i76, %746 ], [ %.0.i76, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i ], [ %.0.i76, %760 ] - %761 = or i1 %.130, %.028 - br label %762 - -762: ; preds = %8, %_ZNSt12__shared_ptrIN6open3d8geometry12_GLOBAL__N_113PlaneDetectorELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit - %.0 = phi i1 [ %761, %_ZNSt12__shared_ptrIN6open3d8geometry12_GLOBAL__N_113PlaneDetectorELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit ], [ false, %8 ] +_ZNSt12__shared_ptrIN6open3d8geometry12_GLOBAL__N_113PlaneDetectorELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit: ; preds = %760, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i, %746, %184, %189, %8 + %.028 = phi i1 [ false, %8 ], [ true, %184 ], [ false, %189 ], [ %.0.i76, %746 ], [ %.0.i76, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i ], [ %.0.i76, %760 ] ret i1 %.0 } diff --git a/bench/openmpi/optimized/pmix_net.ll b/bench/openmpi/optimized/pmix_net.ll index e316fcc716f..f830215524c 100644 --- a/bench/openmpi/optimized/pmix_net.ll +++ b/bench/openmpi/optimized/pmix_net.ll @@ -344,10 +344,10 @@ define noundef zeroext i1 @pmix_net_addr_isipv6linklocal(ptr noundef readonly ca } ; Function Attrs: nounwind uwtable -define zeroext i1 @pmix_net_addr_isipv4public(ptr noundef readonly captures(none) %0) local_unnamed_addr #0 { +define noundef zeroext i1 @pmix_net_addr_isipv4public(ptr noundef readonly captures(none) %0) local_unnamed_addr #0 { %2 = load i16, ptr %0, align 2, !tbaa !22 - switch i16 %2, label %23 [ - i16 10, label %25 + switch i16 %2, label %22 [ + i16 10, label %.loopexit i16 2, label %3 ] @@ -388,19 +388,13 @@ define zeroext i1 @pmix_net_addr_isipv4public(ptr noundef readonly captures(none %.not21.not = icmp ne i32 %13, %21 br i1 %.not21.not, label %9, label %.loopexit -.loopexit: ; preds = %12, %9, %.preheader, %3 - %.1 = phi i1 [ true, %3 ], [ undef, %.preheader ], [ false, %9 ], [ false, %12 ] - %22 = phi i1 [ false, %3 ], [ true, %.preheader ], [ %.not21.not, %9 ], [ %.not21.not, %12 ] - %spec.select = or i1 %.1, %22 - br label %25 +.loopexit: ; preds = %1 + %23 = zext i16 %2 to i32 + tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.7, i32 noundef %23) #15 + br label %.loopexit -23: ; preds = %1 - %24 = zext i16 %2 to i32 - tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.7, i32 noundef %24) #15 - br label %25 - -25: ; preds = %.loopexit, %1, %23 - %.010 = phi i1 [ false, %23 ], [ false, %1 ], [ %spec.select, %.loopexit ] +.loopexit: ; preds = %9, %12, %.preheader, %3, %1, %22 + %.010 = phi i1 [ false, %22 ], [ false, %1 ], [ true, %3 ], [ true, %.preheader ], [ %.not19.not, %12 ], [ %.not19.not, %9 ] ret i1 %.010 } diff --git a/bench/openspiel/optimized/crowd_modelling_2d.ll b/bench/openspiel/optimized/crowd_modelling_2d.ll index bba5079b3f1..bb6b8512ad9 100644 --- a/bench/openspiel/optimized/crowd_modelling_2d.ll +++ b/bench/openspiel/optimized/crowd_modelling_2d.ll @@ -8592,24 +8592,27 @@ define void @_ZNK10open_spiel18crowd_modelling_2d21CrowdModelling2dState7Rewards %exitcond.not = icmp eq i64 %indvars.iv.next, %38 br i1 %exitcond.not, label %._crit_edge, label %49, !llvm.loop !68 -._crit_edge: ; preds = %49, %.preheader - %.025.lcssa = phi double [ 1.000000e+00, %.preheader ], [ %66, %49 ] - %.023.lcssa = phi double [ 1.000000e+00, %.preheader ], [ %60, %49 ] - %67 = getelementptr inbounds nuw i8, ptr %1, i64 192 - %68 = load i32, ptr %67, align 8 - %69 = sext i32 %68 to i64 - %70 = icmp ult i32 %68, 5 - br i1 %70, label %_ZNKSt5arrayIiLm5EE2atEm.exit33, label %71 +._crit_edge: ; preds = %49 + %67 = fadd double %66, %60 + br label %._crit_edge -71: ; preds = %._crit_edge - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.115, i64 noundef %69, i64 noundef 5) #27 +71: ; preds = %._crit_edge, %.preheader + %.025.lcssa = phi double [ 2.000000e+00, %.preheader ], [ %67, %._crit_edge.loopexit ] + %68 = getelementptr inbounds nuw i8, ptr %1, i64 192 + %69 = load i32, ptr %68, align 8 + %70 = sext i32 %69 to i64 + %71 = icmp ult i32 %69, 5 + br i1 %71, label %_ZNKSt5arrayIiLm5EE2atEm.exit33, label %72 + +72: ; preds = %._crit_edge + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.115, i64 noundef %70, i64 noundef 5) #27 unreachable _ZNKSt5arrayIiLm5EE2atEm.exit33: ; preds = %._crit_edge - %72 = getelementptr inbounds nuw i32, ptr @_ZN10open_spiel18crowd_modelling_2d21CrowdModelling2dState14kActionToMoveXE, i64 %69 + %72 = getelementptr inbounds nuw i32, ptr @_ZN10open_spiel18crowd_modelling_2d21CrowdModelling2dState14kActionToMoveXE, i64 %70 %73 = load i32, ptr %72, align 4 %74 = tail call i32 @llvm.abs.i32(i32 %73, i1 true) - %75 = getelementptr inbounds nuw i32, ptr @_ZN10open_spiel18crowd_modelling_2d21CrowdModelling2dState14kActionToMoveYE, i64 %69 + %75 = getelementptr inbounds nuw i32, ptr @_ZN10open_spiel18crowd_modelling_2d21CrowdModelling2dState14kActionToMoveYE, i64 %70 %76 = load i32, ptr %75, align 4 %77 = tail call i32 @llvm.abs.i32(i32 %76, i1 true) %78 = add nuw nsw i32 %77, %74 @@ -8635,11 +8638,10 @@ _ZNKSt5arrayIiLm5EE2atEm.exit33: ; preds = %._crit_edge br label %96 96: ; preds = %87, %_ZNKSt5arrayIiLm5EE2atEm.exit33 - %.022 = phi double [ %95, %87 ], [ %83, %_ZNKSt5arrayIiLm5EE2atEm.exit33 ] + %.022 = phi double [ %95, %88 ], [ %83, %_ZNKSt5arrayIiLm5EE2atEm.exit33 ] tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) %97 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #30 - %98 = fadd double %.025.lcssa, %.023.lcssa - %99 = fadd double %98, %.022 + %98 = fadd double %.025.lcssa, %.022 %100 = fadd double %27, %99 store ptr %97, ptr %0, align 8 %101 = getelementptr inbounds nuw i8, ptr %97, i64 8 @@ -8649,7 +8651,7 @@ _ZNKSt5arrayIiLm5EE2atEm.exit33: ; preds = %._crit_edge br label %103 103: ; preds = %96, %45, %5 - %.sink = phi ptr [ %101, %96 ], [ %47, %45 ], [ %7, %5 ] + %.sink = phi ptr [ %101, %97 ], [ %47, %45 ], [ %7, %5 ] %104 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sink, ptr %104, align 8 ret void diff --git a/bench/openspiel/optimized/stones_and_gems.ll b/bench/openspiel/optimized/stones_and_gems.ll index 474a285aaba..307139ef304 100644 --- a/bench/openspiel/optimized/stones_and_gems.ll +++ b/bench/openspiel/optimized/stones_and_gems.ll @@ -15081,11 +15081,14 @@ _ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10o %.not.i.i = icmp eq ptr %58, %54 br i1 %.not.i.i, label %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit, label %.lr.ph.i.i, !llvm.loop !86 -_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit: ; preds = %.lr.ph.i.i, %_ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10open_spiel15stones_and_gems7ElementEiEENS5_12_GLOBAL__N_111ElementHashESt8equal_toIS6_ESaISt4pairIKS6_iEEE2atIS6_S7_EEDTclsrT0_5valueclL_ZSt9addressofIKSE_EPT_RSL_EclL_ZSt7declvalIRSK_EDTcl9__declvalISL_ELi0EEEvEEEEERSD_.exit - %.0.lcssa.i.i = phi i64 [ 0, %_ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10open_spiel15stones_and_gems7ElementEiEENS5_12_GLOBAL__N_111ElementHashESt8equal_toIS6_ESaISt4pairIKS6_iEEE2atIS6_S7_EEDTclsrT0_5valueclL_ZSt9addressofIKSE_EPT_RSL_EclL_ZSt7declvalIRSK_EDTcl9__declvalISL_ELi0EEEvEEEEERSD_.exit ], [ %spec.select.i.i, %.lr.ph.i.i ] - %59 = mul nsw i64 %.0.lcssa.i.i, %50 +_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit: ; preds = %.lr.ph.i.i + %59 = mul nsw i64 %spec.select.i.i, %50 %60 = sitofp i64 %59 to double - %61 = fadd double %4, %60 + %61 = fadd double %60, %4 + br label %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit + +_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit: ; preds = %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit.loopexit, %_ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10open_spiel15stones_and_gems7ElementEiEENS5_12_GLOBAL__N_111ElementHashESt8equal_toIS6_ESaISt4pairIKS6_iEEE2atIS6_S7_EEDTclsrT0_5valueclL_ZSt9addressofIKSE_EPT_RSL_EclL_ZSt7declvalIRSK_EDTcl9__declvalISL_ELi0EEEvEEEEERSD_.exit + %.0.lcssa.i.i = phi double [ %4, %_ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10open_spiel15stones_and_gems7ElementEiEENS5_12_GLOBAL__N_111ElementHashESt8equal_toIS6_ESaISt4pairIKS6_iEEE2atIS6_S7_EEDTclsrT0_5valueclL_ZSt9addressofIKSE_EPT_RSL_EclL_ZSt7declvalIRSK_EDTcl9__declvalISL_ELi0EEEvEEEEERSD_.exit ], [ %61, %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit.loopexit ] br label %62 62: ; preds = %82, %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit @@ -15303,7 +15306,7 @@ _ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10o _ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit120.loopexit: ; preds = %144 %149 = mul nsw i64 %spec.select.i.i53, %94 %150 = sitofp i64 %149 to double - %151 = fadd double %61, %150 + %151 = fadd double %.0.lcssa.i.i, %150 %152 = uitofp nneg i64 %spec.select.i.i61 to double %153 = fadd double %151, %152 %154 = uitofp nneg i64 %spec.select.i.i69 to double @@ -15323,12 +15326,11 @@ _ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7Eleme %168 = uitofp nneg i64 %spec.select.i.i109 to double %169 = fadd double %167, %168 %170 = uitofp nneg i64 %spec.select.i.i117 to double + %171 = fadd double %169, %170 br label %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit120 _ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit120: ; preds = %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit120.loopexit, %_ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10open_spiel15stones_and_gems7ElementEiEENS5_12_GLOBAL__N_111ElementHashESt8equal_toIS6_ESaISt4pairIKS6_iEEE2atIS6_S7_EEDTclsrT0_5valueclL_ZSt9addressofIKSE_EPT_RSL_EclL_ZSt7declvalIRSK_EDTcl9__declvalISL_ELi0EEEvEEEEERSD_.exit48 - %171 = phi double [ %61, %_ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10open_spiel15stones_and_gems7ElementEiEENS5_12_GLOBAL__N_111ElementHashESt8equal_toIS6_ESaISt4pairIKS6_iEEE2atIS6_S7_EEDTclsrT0_5valueclL_ZSt9addressofIKSE_EPT_RSL_EclL_ZSt7declvalIRSK_EDTcl9__declvalISL_ELi0EEEvEEEEERSD_.exit48 ], [ %169, %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit120.loopexit ] - %.0.lcssa.i.i119 = phi double [ 0.000000e+00, %_ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10open_spiel15stones_and_gems7ElementEiEENS5_12_GLOBAL__N_111ElementHashESt8equal_toIS6_ESaISt4pairIKS6_iEEE2atIS6_S7_EEDTclsrT0_5valueclL_ZSt9addressofIKSE_EPT_RSL_EclL_ZSt7declvalIRSK_EDTcl9__declvalISL_ELi0EEEvEEEEERSD_.exit48 ], [ %170, %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit120.loopexit ] - %172 = fadd double %171, %.0.lcssa.i.i119 + %171 = phi double [ %.0.lcssa.i.i, %_ZNK4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIN10open_spiel15stones_and_gems7ElementEiEENS5_12_GLOBAL__N_111ElementHashESt8equal_toIS6_ESaISt4pairIKS6_iEEE2atIS6_S7_EEDTclsrT0_5valueclL_ZSt9addressofIKSE_EPT_RSL_EclL_ZSt7declvalIRSK_EDTcl9__declvalISL_ELi0EEEvEEEEERSD_.exit48 ], [ %171, %_ZSt5countIN9__gnu_cxx17__normal_iteratorIPKN10open_spiel15stones_and_gems7ElementESt6vectorIS4_SaIS4_EEEES4_ENSt15iterator_traitsIT_E15difference_typeESC_SC_RKT0_.exit120.loopexit ] ret double %172 } diff --git a/bench/openssl/optimized/format_output.ll b/bench/openssl/optimized/format_output.ll index da227c1e853..2d54011f8cc 100644 --- a/bench/openssl/optimized/format_output.ll +++ b/bench/openssl/optimized/format_output.ll @@ -253,7 +253,6 @@ test_string_null_empty.exit134: ; preds = %33, %35 %96 = phi i1 [ true, %._crit_edge149 ], [ %49, %._crit_edge ], [ false, %.thread ], [ %49, %._crit_edge.thread ] %97 = phi i1 [ true, %._crit_edge149 ], [ %83, %._crit_edge ], [ %68, %.thread ], [ %84, %._crit_edge.thread ] %.0113140 = phi i64 [ %70, %._crit_edge149 ], [ %70, %._crit_edge ], [ 0, %.thread ], [ %70, %._crit_edge.thread ] - %.2112 = phi i1 [ true, %._crit_edge149 ], [ false, %._crit_edge ], [ false, %.thread ], [ false, %._crit_edge.thread ] %.0107 = phi i1 [ %.1108.lcssa, %._crit_edge149 ], [ false, %._crit_edge ], [ false, %.thread ], [ false, %._crit_edge.thread ] %98 = icmp ne i64 %.0114, %.0113140 %or.cond5 = select i1 %98, i1 true, i1 %.0107 @@ -319,8 +318,7 @@ test_string_null_empty.exit137: ; preds = %116 br label %123 123: ; preds = %.split122, %test_string_null_empty.exit137, %120, %121 - %or.cond7 = and i1 %.2112, %.0107 - br i1 %or.cond7, label %124, label %126 + br i1 %.0107, label %124, label %126 124: ; preds = %123 %125 = call i32 (ptr, ...) @test_printf_stderr(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.5, ptr noundef nonnull %14) #8 @@ -1049,7 +1047,6 @@ hex_convert_memory.exit: ; preds = %66 111: ; preds = %.thread, %109, %92 %112 = phi i1 [ true, %109 ], [ false, %92 ], [ %69, %.thread ] %.0105143 = phi i64 [ %70, %109 ], [ %70, %92 ], [ 0, %.thread ] - %.0103 = phi i1 [ true, %109 ], [ false, %92 ], [ false, %.thread ] %.0100 = phi i1 [ %110, %109 ], [ false, %92 ], [ false, %.thread ] %113 = icmp ne i64 %.0106, %.0105143 %or.cond5 = select i1 %113, i1 true, i1 %.0100 @@ -1115,8 +1112,7 @@ test_memory_null_empty.exit139.thread: ; preds = %122, %124, %test_me br label %test_memory_null_empty.exit140 test_memory_null_empty.exit140: ; preds = %134, %132, %136, %137 - %or.cond11 = and i1 %.0103, %.0100 - br i1 %or.cond11, label %139, label %141 + br i1 %.0100, label %139, label %141 139: ; preds = %test_memory_null_empty.exit140 %140 = call i32 (ptr, ...) @test_printf_stderr(ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.5, ptr noundef nonnull %14) #8 diff --git a/bench/openssl/optimized/rsa_kmgmt.ll b/bench/openssl/optimized/rsa_kmgmt.ll index 51c6838ccaf..22221a0e838 100644 --- a/bench/openssl/optimized/rsa_kmgmt.ll +++ b/bench/openssl/optimized/rsa_kmgmt.ll @@ -466,7 +466,7 @@ define internal range(i32 0, 2) i32 @rsa_has(ptr noundef %0, i32 noundef %1) #0 define internal range(i32 0, 2) i32 @rsa_match(ptr noundef %0, ptr noundef %1, i32 noundef %2) #0 { %4 = tail call i32 @ossl_prov_is_running() #6 %.not = icmp eq i32 %4, 0 - br i1 %.not, label %32, label %5 + br i1 %.not, label %30, label %5 5: ; preds = %3 %6 = tail call ptr @RSA_get0_e(ptr noundef %0) #6 @@ -475,7 +475,7 @@ define internal range(i32 0, 2) i32 @rsa_match(ptr noundef %0, ptr noundef %1, i %9 = icmp eq i32 %8, 0 %10 = and i32 %2, 3 %.not38 = icmp eq i32 %10, 0 - br i1 %.not38, label %32, label %11 + br i1 %.not38, label %30, label %11 11: ; preds = %5 %12 = and i32 %2, 2 @@ -497,38 +497,32 @@ define internal range(i32 0, 2) i32 @rsa_match(ptr noundef %0, ptr noundef %1, i br label %30 20: ; preds = %13 - br i1 %or.cond.not.not54, label %30, label %.thread - -.thread: ; preds = %11, %20 %21 = and i32 %2, 1 %.not43 = icmp eq i32 %21, 0 - br i1 %.not43, label %30, label %22 + %or.cond = or i1 %or.cond.not.not54, %.not43 + br i1 %or.cond, label %30, label %22 + +.thread: ; preds = %11 + %.old = and i32 %2, 1 + %.not43.old = icmp eq i32 %.old, 0 + br i1 %.not43.old, label %30, label %22 -22: ; preds = %.thread +22: ; preds = %20, %.thread %23 = tail call ptr @RSA_get0_d(ptr noundef %0) #6 %24 = tail call ptr @RSA_get0_d(ptr noundef %1) #6 - %25 = icmp eq ptr %23, null - %26 = icmp eq ptr %24, null - %or.cond3.not63 = select i1 %25, i1 true, i1 %26 - %.not59 = xor i1 %9, true - %brmerge = select i1 %or.cond3.not63, i1 true, i1 %.not59 - %not.or.cond3.not63 = xor i1 %or.cond3.not63, true - %.mux60 = select i1 %or.cond3.not63, i1 %9, i1 false - br i1 %brmerge, label %30, label %27 + %25 = icmp ne ptr %23, null + %26 = icmp ne ptr %24, null + %or.cond3.not63 = select i1 %25, i1 %26, i1 false + %brmerge.not63 = select i1 %or.cond3.not63, i1 %9, i1 false + br i1 %brmerge.not63, label %27, label %30 27: ; preds = %22 %28 = tail call i32 @BN_cmp(ptr noundef nonnull %23, ptr noundef nonnull %24) #6 %29 = icmp eq i32 %28, 0 br label %30 -30: ; preds = %22, %.thread49, %27, %.thread, %20 - %.232 = phi i1 [ true, %20 ], [ false, %.thread ], [ true, %27 ], [ %not.or.cond3.not63, %22 ], [ true, %.thread49 ] - %.3 = phi i1 [ false, %20 ], [ %9, %.thread ], [ %29, %27 ], [ %.mux60, %22 ], [ %19, %.thread49 ] - %31 = and i1 %.232, %.3 - br label %32 - -32: ; preds = %5, %30, %3 - %.0.shrunk = phi i1 [ false, %3 ], [ %31, %30 ], [ %9, %5 ] +30: ; preds = %20, %.thread, %27, %.thread49, %22, %5, %3 + %.232 = phi i1 [ false, %3 ], [ %9, %5 ], [ false, %20 ], [ false, %.thread ], [ %29, %27 ], [ false, %22 ], [ %19, %.thread49 ] %.0 = zext i1 %.0.shrunk to i32 ret i32 %.0 } diff --git a/bench/pbrt-v4/optimized/noise.ll b/bench/pbrt-v4/optimized/noise.ll index aa44611b2a0..bd90d10a99d 100644 --- a/bench/pbrt-v4/optimized/noise.ll +++ b/bench/pbrt-v4/optimized/noise.ll @@ -350,28 +350,33 @@ define dso_local noundef float @_ZN4pbrt3FBmENS_6Point3IfEENS_7Vector3IfEES3_fi( %.sroa.0.4.vec.extract.i69 = extractelement <2 x float> %0, i64 1 br i1 %25, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %.lr.ph, %8 - %.059.lcssa = phi float [ 1.000000e+00, %8 ], [ %50, %.lr.ph ] - %.058.lcssa = phi float [ 1.000000e+00, %8 ], [ %49, %.lr.ph ] - %.0.lcssa = phi float [ 0.000000e+00, %8 ], [ %48, %.lr.ph ] - %26 = sitofp i32 %24 to float - %27 = fsub float %.0.i, %26 - %28 = fadd float %27, 0xBFD3333340000000 - %29 = fdiv float %28, 0x3FD9999980000000 - %30 = fcmp olt float %29, 0.000000e+00 - %31 = fcmp ogt float %29, 1.000000e+00 - %..i.i = select i1 %31, float 1.000000e+00, float %29 - %.0.i.i = select i1 %30, float 0.000000e+00, float %..i.i - %32 = fmul float %.0.i.i, %.0.i.i - %33 = fmul float %.0.i.i, 2.000000e+00 - %34 = fsub float 3.000000e+00, %33 - %35 = fmul float %32, %34 - %36 = fmul float %35, %.059.lcssa - %37 = fmul float %.sroa.0.0.vec.extract.i68, %.058.lcssa - %38 = fmul float %.sroa.0.4.vec.extract.i69, %.058.lcssa +._crit_edge: ; preds = %.lr.ph + %26 = fmul float %.sroa.0.0.vec.extract.i68, %49 + %27 = fmul float %.sroa.0.4.vec.extract.i69, %49 + br label %._crit_edge + +._crit_edge:; preds = %8, %._crit_edge + %.sroa.0.4.vec.extract.i.pre-phi = phi float [ %27, %._crit_edge.loopexit ], [ %.sroa.0.4.vec.extract.i69, %8 ] + %.sroa.0.0.vec.extract.i.pre-phi = phi float [ %26, %._crit_edge.loopexit ], [ %.sroa.0.0.vec.extract.i68, %8 ] + %.059.lcssa = phi float [ %50, %._crit_edge.loopexit ], [ 1.000000e+00, %8 ] + %.058.lcssa = phi float [ %49, %._crit_edge.loopexit ], [ 1.000000e+00, %8 ] + %.0.lcssa = phi float [ %48, %._crit_edge.loopexit ], [ 0.000000e+00, %8 ] + %28 = sitofp i32 %24 to float + %29 = fsub float %.0.i, %28 + %30 = fadd float %29, 0xBFD3333340000000 + %31 = fdiv float %30, 0x3FD9999980000000 + %32 = fcmp olt float %31, 0.000000e+00 + %33 = fcmp ogt float %31, 1.000000e+00 + %..i.i = select i1 %33, float 1.000000e+00, float %31 + %.0.i.i = select i1 %32, float 0.000000e+00, float %..i.i + %34 = fmul float %.0.i.i, %.0.i.i + %35 = fmul float %.0.i.i, 2.000000e+00 + %36 = fsub float 3.000000e+00, %35 + %37 = fmul float %34, %36 + %38 = fmul float %37, %.059.lcssa %39 = fmul float %1, %.058.lcssa - %40 = tail call noundef float @_ZN4pbrt5NoiseEfff(float noundef %37, float noundef %38, float noundef %39) - %41 = fmul float %36, %40 + %40 = tail call noundef float @_ZN4pbrt5NoiseEfff(float noundef %.sroa.0.0.vec.extract.i.pre-phi, float noundef %.sroa.0.4.vec.extract.i.pre-phi, float noundef %39) + %41 = fmul float %38, %40 %42 = fadd float %.0.lcssa, %41 ret float %42 @@ -427,30 +432,35 @@ define dso_local noundef float @_ZN4pbrt10TurbulenceENS_6Point3IfEENS_7Vector3If %.sroa.0.4.vec.extract.i79 = extractelement <2 x float> %0, i64 1 br i1 %25, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %.lr.ph, %8 - %.068.lcssa = phi float [ 1.000000e+00, %8 ], [ %56, %.lr.ph ] - %.067.lcssa = phi float [ 1.000000e+00, %8 ], [ %55, %.lr.ph ] - %.066.lcssa = phi float [ 0.000000e+00, %8 ], [ %54, %.lr.ph ] - %26 = sitofp i32 %24 to float - %27 = fsub float %.0.i, %26 - %28 = fadd float %27, 0xBFD3333340000000 - %29 = fdiv float %28, 0x3FD9999980000000 - %30 = fcmp olt float %29, 0.000000e+00 - %31 = fcmp ogt float %29, 1.000000e+00 - %..i.i = select i1 %31, float 1.000000e+00, float %29 - %.0.i.i = select i1 %30, float 0.000000e+00, float %..i.i - %32 = fmul float %.0.i.i, %.0.i.i - %33 = fmul float %.0.i.i, 2.000000e+00 - %34 = fsub float 3.000000e+00, %33 - %35 = fmul float %32, %34 - %36 = fmul float %.sroa.0.0.vec.extract.i78, %.067.lcssa - %37 = fmul float %.sroa.0.4.vec.extract.i79, %.067.lcssa +._crit_edge: ; preds = %.lr.ph + %26 = fmul float %.sroa.0.0.vec.extract.i78, %55 + %27 = fmul float %.sroa.0.4.vec.extract.i79, %55 + br label %._crit_edge + +._crit_edge:; preds = %8, %._crit_edge + %.sroa.0.4.vec.extract.i.pre-phi = phi float [ %27, %._crit_edge.loopexit ], [ %.sroa.0.4.vec.extract.i79, %8 ] + %.sroa.0.0.vec.extract.i.pre-phi = phi float [ %26, %._crit_edge.loopexit ], [ %.sroa.0.0.vec.extract.i78, %8 ] + %.068.lcssa = phi float [ %56, %._crit_edge.loopexit ], [ 1.000000e+00, %8 ] + %.067.lcssa = phi float [ %55, %._crit_edge.loopexit ], [ 1.000000e+00, %8 ] + %.066.lcssa = phi float [ %54, %._crit_edge.loopexit ], [ 0.000000e+00, %8 ] + %28 = sitofp i32 %24 to float + %29 = fsub float %.0.i, %28 + %30 = fadd float %29, 0xBFD3333340000000 + %31 = fdiv float %30, 0x3FD9999980000000 + %32 = fcmp olt float %31, 0.000000e+00 + %33 = fcmp ogt float %31, 1.000000e+00 + %..i.i = select i1 %33, float 1.000000e+00, float %31 + %.0.i.i = select i1 %32, float 0.000000e+00, float %..i.i + %34 = fmul float %.0.i.i, %.0.i.i + %35 = fmul float %.0.i.i, 2.000000e+00 + %36 = fsub float 3.000000e+00, %35 + %37 = fmul float %34, %36 %38 = fmul float %1, %.067.lcssa - %39 = tail call noundef float @_ZN4pbrt5NoiseEfff(float noundef %36, float noundef %37, float noundef %38) + %39 = tail call noundef float @_ZN4pbrt5NoiseEfff(float noundef %.sroa.0.0.vec.extract.i.pre-phi, float noundef %.sroa.0.4.vec.extract.i.pre-phi, float noundef %38) %40 = tail call noundef float @llvm.fabs.f32(float %39) - %41 = fsub float 1.000000e+00, %35 + %41 = fsub float 1.000000e+00, %37 %42 = fmul float %41, 0x3FC99999A0000000 - %43 = fmul float %35, %40 + %43 = fmul float %37, %40 %44 = fadd float %42, %43 %45 = fmul float %.068.lcssa, %44 %46 = fadd float %.066.lcssa, %45 diff --git a/bench/pcg-cpp/optimized/make-partytrick.ll b/bench/pcg-cpp/optimized/make-partytrick.ll index 4612853fc42..2d09a463243 100644 --- a/bench/pcg-cpp/optimized/make-partytrick.ll +++ b/bench/pcg-cpp/optimized/make-partytrick.ll @@ -270,7 +270,7 @@ _ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_1 _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EE7advanceEmb.exit: ; preds = %70 %75 = load i64, ptr %36, align 8, !tbaa !24 %76 = mul i64 %.116.i.i28.i, %75 - %77 = add i64 %76, %.1.i.i29.i + %77 = add i64 %.1.i.i29.i, %76 store i64 %77, ptr %36, align 8, !tbaa !24 call void @_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EE13advance_tableEmb(ptr noundef nonnull align 8 dereferenceable(272) %4, i64 noundef 4, i1 noundef zeroext false) %78 = load i64, ptr %4, align 8, !tbaa !22 @@ -305,7 +305,7 @@ _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15sp _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EE7advanceEmb.exit44: ; preds = %84 %89 = load i64, ptr %36, align 8, !tbaa !24 %90 = mul i64 %.116.i.i28.i41, %89 - %91 = add i64 %90, %.1.i.i29.i42 + %91 = add i64 %.1.i.i29.i42, %90 store i64 %91, ptr %36, align 8, !tbaa !24 %92 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10pcg_detaillsIcSt11char_traitsIcELh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS3_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS8_IjEEEELb1EEERSt13basic_ostreamIT_T0_ESL_RKNS_8extendedIXT1_EXT2_ET3_T4_XT5_EEE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(272) %4) %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull @.str, i64 noundef 1) @@ -482,7 +482,7 @@ _ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_1 _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EE7advanceEmb.exit69: ; preds = %167 %172 = load i64, ptr %36, align 8, !tbaa !24 %173 = mul i64 %.116.i.i28.i66, %172 - %174 = add i64 %173, %.1.i.i29.i67 + %174 = add i64 %.1.i.i29.i67, %173 store i64 %174, ptr %36, align 8, !tbaa !24 %175 = and i64 %174, 65535 %176 = icmp eq i64 %175, 0 @@ -592,7 +592,7 @@ _ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_1 _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EE7advanceEmb.exit94: ; preds = %219 %224 = load i64, ptr %36, align 8, !tbaa !24 %225 = mul i64 %.116.i.i28.i91, %224 - %226 = add i64 %225, %.1.i.i29.i92 + %226 = add i64 %.1.i.i29.i92, %225 store i64 %226, ptr %36, align 8, !tbaa !24 br label %227 @@ -663,7 +663,7 @@ _ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_1 29: ; preds = %28, %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit %30 = load i64, ptr %5, align 8, !tbaa !24 %.not21.i.i = icmp eq i64 %1, 0 - br i1 %2, label %31, label %43 + br i1 %2, label %31, label %45 31: ; preds = %29 br i1 %.not21.i.i, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit, label %.lr.ph.i.preheader.i @@ -696,22 +696,32 @@ _ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_1 %41 = mul i64 %.01823.i.i, %.01823.i.i %42 = lshr i64 %.01724.i.i, 1 %.not.i.i17 = icmp ult i64 %.01724.i.i, 2 - br i1 %.not.i.i17, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit, label %.lr.ph.i.i15, !llvm.loop !27 + br i1 %.not.i.i17, label %._crit_edge.loopexit.i.i, label %.lr.ph.i.i15, !llvm.loop !27 -43: ; preds = %29 - br i1 %.not21.i.i, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit, label %.lr.ph.i.preheader.i20 +43: ; preds = %38 + %43 = mul i64 %.116.i.i, %30 + br label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit -.lr.ph.i.preheader.i20: ; preds = %43 - %44 = sub i64 0, %1 - %45 = load i64, ptr %0, align 8, !tbaa !22 +.lr.ph.i.preheader.i20: ; preds = %31, %43 + %.015.lcssa.i.i = phi i64 [ %30, %31 ], [ %43, %._crit_edge.loopexit.i.i ] + %.0.lcssa.i.i18 = phi i64 [ 0, %31 ], [ %.1.i.i16, %._crit_edge.loopexit.i.i ] + %44 = add i64 %.0.lcssa.i.i18, %.015.lcssa.i.i + br label %60 + +45: ; preds = %29 + br i1 %.not21.i.i, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit34, label %.lr.ph.i.preheader.i20 + +.lr.ph.i.preheader.i20: ; preds = %45 + %46 = sub i64 0, %1 + %47 = load i64, ptr %0, align 8, !tbaa !22 br label %.lr.ph.i.i21 .lr.ph.i.i21: ; preds = %51, %.lr.ph.i.preheader.i20 - %.026.i.i22 = phi i64 [ %.1.i.i29, %51 ], [ 0, %.lr.ph.i.preheader.i20 ] - %.01525.i.i23 = phi i64 [ %.116.i.i28, %51 ], [ 1, %.lr.ph.i.preheader.i20 ] - %.01724.i.i24 = phi i64 [ %55, %51 ], [ %44, %.lr.ph.i.preheader.i20 ] - %.01823.i.i25 = phi i64 [ %54, %51 ], [ 6364136223846793005, %.lr.ph.i.preheader.i20 ] - %.01922.i.i26 = phi i64 [ %53, %51 ], [ %45, %.lr.ph.i.preheader.i20 ] + %.026.i.i22 = phi i64 [ %.1.i.i29, %53 ], [ 0, %.lr.ph.i.preheader.i20 ] + %.01525.i.i23 = phi i64 [ %.116.i.i28, %53 ], [ 1, %.lr.ph.i.preheader.i20 ] + %.01724.i.i24 = phi i64 [ %55, %53 ], [ %46, %.lr.ph.i.preheader.i20 ] + %.01823.i.i25 = phi i64 [ %54, %53 ], [ 6364136223846793005, %.lr.ph.i.preheader.i20 ] + %.01922.i.i26 = phi i64 [ %53, %53 ], [ %47, %.lr.ph.i.preheader.i20 ] %46 = and i64 %.01724.i.i24, 1 %.not20.i.i27 = icmp eq i64 %46, 0 br i1 %.not20.i.i27, label %51, label %47 @@ -723,8 +733,8 @@ _ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_1 br label %51 51: ; preds = %47, %.lr.ph.i.i21 - %.116.i.i28 = phi i64 [ %48, %47 ], [ %.01525.i.i23, %.lr.ph.i.i21 ] - %.1.i.i29 = phi i64 [ %50, %47 ], [ %.026.i.i22, %.lr.ph.i.i21 ] + %.116.i.i28 = phi i64 [ %48, %49 ], [ %.01525.i.i23, %.lr.ph.i.i21 ] + %.1.i.i29 = phi i64 [ %50, %49 ], [ %.026.i.i22, %.lr.ph.i.i21 ] %52 = add i64 %.01823.i.i25, 1 %53 = mul i64 %52, %.01922.i.i26 %54 = mul i64 %.01823.i.i25, %.01823.i.i25 @@ -732,12 +742,19 @@ _ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_1 %.not.i.i30 = icmp ult i64 %.01724.i.i24, 2 br i1 %.not.i.i30, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit, label %.lr.ph.i.i21, !llvm.loop !27 -_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit: ; preds = %51, %38, %43, %31 - %.015.lcssa.i.i31.sink = phi i64 [ 1, %31 ], [ 1, %43 ], [ %.116.i.i, %38 ], [ %.116.i.i28, %51 ] - %.0.lcssa.i.i32.sink = phi i64 [ 0, %31 ], [ 0, %43 ], [ %.1.i.i16, %38 ], [ %.1.i.i29, %51 ] - %56 = mul i64 %.015.lcssa.i.i31.sink, %30 - %57 = add i64 %56, %.0.lcssa.i.i32.sink - store i64 %57, ptr %5, align 8, !tbaa !24 +_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit: ; preds = %53 + %58 = mul i64 %.116.i.i28, %30 + br label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit34 + +_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit34:; preds = %45, %._crit_edge.loopexit.i.i31 + %.015.lcssa.i.i32 = phi i64 [ %30, %45 ], [ %58, %._crit_edge.loopexit.i.i31 ] + %.0.lcssa.i.i33 = phi i64 [ 0, %45 ], [ %.1.i.i29, %._crit_edge.loopexit.i.i31 ] + %59 = add i64 %.0.lcssa.i.i33, %.015.lcssa.i.i32 + br label %60 + +60: ; preds = %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit34, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit + %storemerge = phi i64 [ %59, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit34 ], [ %44, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE7advanceEm.exit ] + store i64 %storemerge, ptr %5, align 8, !tbaa !24 ret void } @@ -1080,14 +1097,17 @@ _ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18 %.not.i21 = icmp ult i32 %.01724.i, 2 br i1 %.not.i21, label %_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE7advanceEjjjj.exit, label %.lr.ph.i19, !llvm.loop !61 -_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE7advanceEjjjj.exit: ; preds = %.lr.ph.i19, %_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE8distanceEjjjjj.exit - %.015.lcssa.i = phi i32 [ 1, %_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE8distanceEjjjjj.exit ], [ %.116.i, %.lr.ph.i19 ] - %.0.lcssa.i22 = phi i32 [ 0, %_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE8distanceEjjjjj.exit ], [ %.1.i20, %.lr.ph.i19 ] - %33 = sub i32 0, %.0.lcssa.i - %.v = select i1 %3, i32 %.0.lcssa.i, i32 %33 - %34 = icmp uge i32 %2, %.v - %35 = mul i32 %.015.lcssa.i, %12 - %36 = add i32 %35, %.0.lcssa.i22 +_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE7advanceEjjjj.exit: ; preds = %.lr.ph.i19 + %33 = mul i32 %.116.i, %12 + br label %_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE7advanceEjjjj.exit + +_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE7advanceEjjjj.exit:; preds = %_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE8distanceEjjjjj.exit, %._crit_edge.loopexit.i + %.015.lcssa.i = phi i32 [ %12, %_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE8distanceEjjjjj.exit ], [ %33, %._crit_edge.loopexit.i ] + %.0.lcssa.i22 = phi i32 [ 0, %_ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18default_multiplierIjEEE8distanceEjjjjj.exit ], [ %.1.i20, %._crit_edge.loopexit.i ] + %34 = sub i32 0, %.0.lcssa.i + %.v = select i1 %3, i32 %.0.lcssa.i, i32 %34 + %35 = icmp uge i32 %2, %.v + %36 = add i32 %.0.lcssa.i22, %.015.lcssa.i %37 = lshr i32 %36, 28 %38 = add nuw nsw i32 %37, 4 %39 = lshr i32 %36, %38 @@ -1096,7 +1116,7 @@ _ZN10pcg_detail6engineIjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS_18 %42 = lshr i32 %41, 22 %43 = xor i32 %42, %41 store i32 %43, ptr %0, align 4, !tbaa !15 - ret i1 %34 + ret i1 %35 } ; Function Attrs: inlinehint mustprogress uwtable diff --git a/bench/pola-rs/optimized/46cnv2sjhtz31ha66svwl7qte.ll b/bench/pola-rs/optimized/46cnv2sjhtz31ha66svwl7qte.ll index 979aa0466a4..30961fcc9d4 100644 --- a/bench/pola-rs/optimized/46cnv2sjhtz31ha66svwl7qte.ll +++ b/bench/pola-rs/optimized/46cnv2sjhtz31ha66svwl7qte.ll @@ -1356,15 +1356,14 @@ define internal fastcc i64 @"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$ %.sroa.4.6.insert.ext.i = zext i16 %.sroa.4.0.i2047.i to i64 %80 = shl nuw i64 %.sroa.4.6.insert.ext.i, 48 %81 = shl nuw nsw i64 %.sroa.4.2.insert.ext.i, 16 - %82 = or disjoint i64 %.sroa.0.0.i2148.i, %81 - %83 = add nuw nsw i64 %82, %80 + %82 = or disjoint i64 %81, %.sroa.0.0.i37.i + %83 = or disjoint i64 %82, %.sroa.0.0.i2148.i + %84 = add nuw nsw i64 %83, %80 br label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h4adafb8180fc9a06E.exit" "_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h4adafb8180fc9a06E.exit": ; preds = %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i.i", %33, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i18.i", %72, %"_ZN130_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidity$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h804e92bddc6af327E.exit27.thread43.i" - %.sroa.4.sroa.0.0.i = phi i64 [ %83, %"_ZN130_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidity$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h804e92bddc6af327E.exit27.thread43.i" ], [ 0, %33 ], [ 0, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i.i" ], [ 0, %72 ], [ 0, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i18.i" ] - %.sroa.0.0.i = phi i64 [ %.sroa.0.0.i37.i, %"_ZN130_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidity$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h804e92bddc6af327E.exit27.thread43.i" ], [ 2, %33 ], [ 2, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i.i" ], [ 2, %72 ], [ 2, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i18.i" ] - %.sroa.0.0.insert.insert.i = or i64 %.sroa.0.0.i, %.sroa.4.sroa.0.0.i - ret i64 %.sroa.0.0.insert.insert.i + %.sroa.4.sroa.0.0.i = phi i64 [ %84, %"_ZN130_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidity$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h804e92bddc6af327E.exit27.thread43.i" ], [ 2, %33 ], [ 2, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i.i" ], [ 2, %72 ], [ 2, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i18.i" ] + ret i64 %.sroa.4.sroa.0.0.i } ; Function Attrs: inlinehint nonlazybind uwtable @@ -1521,13 +1520,12 @@ select.unfold36.i: ; preds = %70, %"_ZN134_$LT$po %78 = or disjoint i32 %76, %77 %79 = or disjoint i32 %78, %75 %80 = zext nneg i8 %.sroa.0.0.i.i to i32 + %81 = or disjoint i32 %79, %80 br label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17hc41e05eefedbce94E.exit" "_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17hc41e05eefedbce94E.exit": ; preds = %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h89ed22cfc2530cd3E.exit.i.i", %33, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h89ed22cfc2530cd3E.exit.i18.i", %70, %select.unfold36.i - %.sroa.4.sroa.0.0.i = phi i32 [ %79, %select.unfold36.i ], [ 0, %33 ], [ 0, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h89ed22cfc2530cd3E.exit.i.i" ], [ 0, %70 ], [ 0, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h89ed22cfc2530cd3E.exit.i18.i" ] - %.sroa.0.0.i = phi i32 [ %80, %select.unfold36.i ], [ 2, %33 ], [ 2, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h89ed22cfc2530cd3E.exit.i.i" ], [ 2, %70 ], [ 2, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h89ed22cfc2530cd3E.exit.i18.i" ] - %.sroa.0.0.insert.insert.i = or i32 %.sroa.0.0.i, %.sroa.4.sroa.0.0.i - ret i32 %.sroa.0.0.insert.insert.i + %.sroa.4.sroa.0.0.i = phi i32 [ %81, %select.unfold36.i ], [ 2, %33 ], [ 2, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h89ed22cfc2530cd3E.exit.i.i" ], [ 2, %70 ], [ 2, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h89ed22cfc2530cd3E.exit.i18.i" ] + ret i32 %.sroa.4.sroa.0.0.i } ; Function Attrs: inlinehint nonlazybind uwtable @@ -1868,13 +1866,12 @@ select.unfold36.i: ; preds = %70, %"_ZN134_$LT$po %78 = or disjoint i32 %76, %77 %79 = or disjoint i32 %78, %75 %80 = zext nneg i8 %.sroa.0.0.i.i to i32 + %81 = or disjoint i32 %79, %80 br label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h904981606aa8fc71E.exit" "_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h904981606aa8fc71E.exit": ; preds = %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2ecd52593969eeceE.exit.i.i", %33, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2ecd52593969eeceE.exit.i18.i", %70, %select.unfold36.i - %.sroa.4.sroa.0.0.i = phi i32 [ %79, %select.unfold36.i ], [ 0, %33 ], [ 0, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2ecd52593969eeceE.exit.i.i" ], [ 0, %70 ], [ 0, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2ecd52593969eeceE.exit.i18.i" ] - %.sroa.0.0.i = phi i32 [ %80, %select.unfold36.i ], [ 2, %33 ], [ 2, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2ecd52593969eeceE.exit.i.i" ], [ 2, %70 ], [ 2, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2ecd52593969eeceE.exit.i18.i" ] - %.sroa.0.0.insert.insert.i = or i32 %.sroa.0.0.i, %.sroa.4.sroa.0.0.i - ret i32 %.sroa.0.0.insert.insert.i + %.sroa.4.sroa.0.0.i = phi i32 [ %81, %select.unfold36.i ], [ 2, %33 ], [ 2, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2ecd52593969eeceE.exit.i.i" ], [ 2, %70 ], [ 2, %"_ZN134_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidityIter$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2ecd52593969eeceE.exit.i18.i" ] + ret i32 %.sroa.4.sroa.0.0.i } ; Function Attrs: inlinehint nonlazybind uwtable @@ -2229,15 +2226,14 @@ define internal fastcc i64 @"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$ %.sroa.4.6.insert.ext.i = zext i16 %.sroa.4.0.i2047.i to i64 %80 = shl nuw i64 %.sroa.4.6.insert.ext.i, 48 %81 = shl nuw nsw i64 %.sroa.4.2.insert.ext.i, 16 - %82 = or disjoint i64 %.sroa.0.0.i2148.i, %81 - %83 = add nuw nsw i64 %82, %80 + %82 = or disjoint i64 %81, %.sroa.0.0.i37.i + %83 = or disjoint i64 %82, %.sroa.0.0.i2148.i + %84 = add nuw nsw i64 %83, %80 br label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17he7105ddba6545aacE.exit" "_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17he7105ddba6545aacE.exit": ; preds = %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i.i", %33, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i18.i", %72, %"_ZN130_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidity$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5cea1ca5d09a719cE.exit27.thread43.i" - %.sroa.4.sroa.0.0.i = phi i64 [ %83, %"_ZN130_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidity$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5cea1ca5d09a719cE.exit27.thread43.i" ], [ 0, %33 ], [ 0, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i.i" ], [ 0, %72 ], [ 0, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i18.i" ] - %.sroa.0.0.i = phi i64 [ %.sroa.0.0.i37.i, %"_ZN130_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidity$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5cea1ca5d09a719cE.exit27.thread43.i" ], [ 2, %33 ], [ 2, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i.i" ], [ 2, %72 ], [ 2, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i18.i" ] - %.sroa.0.0.insert.insert.i = or i64 %.sroa.0.0.i, %.sroa.4.sroa.0.0.i - ret i64 %.sroa.0.0.insert.insert.i + %.sroa.4.sroa.0.0.i = phi i64 [ %84, %"_ZN130_$LT$polars_arrow..bitmap..utils..zip_validity..ZipValidity$LT$T$C$I$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5cea1ca5d09a719cE.exit27.thread43.i" ], [ 2, %33 ], [ 2, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i.i" ], [ 2, %72 ], [ 2, %"_ZN108_$LT$polars_arrow..bitmap..utils..iterator..BitmapIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heae0858f236b137eE.exit.i.i18.i" ] + ret i64 %.sroa.4.sroa.0.0.i } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/pola-rs/optimized/56y0q1nttgdkjvspd2zn6v52v.ll b/bench/pola-rs/optimized/56y0q1nttgdkjvspd2zn6v52v.ll index 807ff84d116..4f7c1fe533a 100644 --- a/bench/pola-rs/optimized/56y0q1nttgdkjvspd2zn6v52v.ll +++ b/bench/pola-rs/optimized/56y0q1nttgdkjvspd2zn6v52v.ll @@ -114772,13 +114772,15 @@ define hidden noundef float @_ZN14polars_compute7rolling8no_nulls19compute_var_w %exitcond.not.i = icmp eq i64 %13, %10 br i1 %exitcond.not.i, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17hc6d9ba5ead8d381eE.exit", label %12 -"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17hc6d9ba5ead8d381eE.exit": ; preds = %12, %4 - %.sroa.6.0.lcssa.i = phi float [ 0.000000e+00, %4 ], [ %21, %12 ] - %.sroa.0.0.lcssa.i = phi float [ 0.000000e+00, %4 ], [ %19, %12 ] +"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17hc6d9ba5ead8d381eE.exit": ; preds = %12 + %22 = fmul float %21, %21 + %23 = fsub float %19, %22 + br label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17hc6d9ba5ead8d381eE.exit" + +"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17hc6d9ba5ead8d381eE.exit": ; preds = %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17hc6d9ba5ead8d381eE.exit.loopexit", %4 + %24 = phi float [ 0.000000e+00, %4 ], [ %23, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17hc6d9ba5ead8d381eE.exit.loopexit" ] call void @llvm.lifetime.end.p0(ptr nonnull %5) - %22 = fmul float %.sroa.6.0.lcssa.i, %.sroa.6.0.lcssa.i - %23 = fsub float %.sroa.0.0.lcssa.i, %22 - ret float %23 + ret float %.sroa.6.0.lcssa.i } ; Function Attrs: nonlazybind uwtable @@ -114819,15 +114821,17 @@ define hidden noundef double @_ZN14polars_compute7rolling8no_nulls19compute_var_ %20 = fmul double %.val16.i, %.val17.i %21 = fadd double %.sroa.6.019.i, %20 %exitcond.not.i = icmp eq i64 %13, %10 - br i1 %exitcond.not.i, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17h6a4965934af9c689E.exit", label %12 + br i1 %exitcond.not.i, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17h6a4965934af9c689E.exit.loopexit", label %12 + +"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17h6a4965934af9c689E.exit.loopexit": ; preds = %12 + %22 = fmul double %21, %21 + %23 = fsub double %19, %22 + br label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17h6a4965934af9c689E.exit" -"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17h6a4965934af9c689E.exit": ; preds = %12, %4 - %.sroa.6.0.lcssa.i = phi double [ 0.000000e+00, %4 ], [ %21, %12 ] - %.sroa.0.0.lcssa.i = phi double [ 0.000000e+00, %4 ], [ %19, %12 ] +"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17h6a4965934af9c689E.exit": ; preds = %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17h6a4965934af9c689E.exit.loopexit", %4 + %.sroa.6.0.lcssa.i = phi double [ 0.000000e+00, %4 ], [ %23, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4fold17h6a4965934af9c689E.exit.loopexit" ] call void @llvm.lifetime.end.p0(ptr nonnull %5) - %22 = fmul double %.sroa.6.0.lcssa.i, %.sroa.6.0.lcssa.i - %23 = fsub double %.sroa.0.0.lcssa.i, %22 - ret double %23 + ret double %.sroa.6.0.lcssa.i } ; Function Attrs: nonlazybind uwtable diff --git a/bench/pola-rs/optimized/59h0xctzreekd1dj94rqcuqk4.ll b/bench/pola-rs/optimized/59h0xctzreekd1dj94rqcuqk4.ll index 8e38217b453..e6348ca83e6 100644 --- a/bench/pola-rs/optimized/59h0xctzreekd1dj94rqcuqk4.ll +++ b/bench/pola-rs/optimized/59h0xctzreekd1dj94rqcuqk4.ll @@ -226418,15 +226418,15 @@ _ZN8foldhash4fast10FoldHasher9write_num17h6a5a927509602053E.exit.i.i.i.i.i.i.i: %46 = shl i64 %45, 8 %extract.t.i.i.i.i.i.i = or disjoint i64 %46, 1 %47 = lshr i64 %45, 56 + %48 = xor i64 %47, %41 + %49 = xor i64 %extract.t.i.i.i.i.i.i, %.val.i.i.i.i.i br label %_ZN9hashbrown3map9make_hash17he24b8c686ca9c6e2E.exit.i.i.i.i.i _ZN9hashbrown3map9make_hash17he24b8c686ca9c6e2E.exit.i.i.i.i.i: ; preds = %_ZN8foldhash4fast10FoldHasher9write_num17h6a5a927509602053E.exit.i.i.i.i.i.i.i, %37 - %.sroa.0.1.off0.i.i.i.i.i.i = phi i64 [ %extract.t.i.i.i.i.i.i, %_ZN8foldhash4fast10FoldHasher9write_num17h6a5a927509602053E.exit.i.i.i.i.i.i.i ], [ 0, %37 ] - %.sroa.0.1.off64.i.i.i.i.i.i = phi i64 [ %47, %_ZN8foldhash4fast10FoldHasher9write_num17h6a5a927509602053E.exit.i.i.i.i.i.i.i ], [ 0, %37 ] - %48 = xor i64 %.sroa.0.1.off0.i.i.i.i.i.i, %.val.i.i.i.i.i - %49 = xor i64 %.sroa.0.1.off64.i.i.i.i.i.i, %41 - %50 = zext i64 %48 to i128 - %51 = zext i64 %49 to i128 + %.sroa.0.1.off0.i.i.i.i.i.i = phi i64 [ %49, %_ZN8foldhash4fast10FoldHasher9write_num17h6a5a927509602053E.exit.i.i.i.i.i.i.i ], [ %.val.i.i.i.i.i, %37 ] + %.sroa.0.1.off64.i.i.i.i.i.i = phi i64 [ %48, %_ZN8foldhash4fast10FoldHasher9write_num17h6a5a927509602053E.exit.i.i.i.i.i.i.i ], [ %41, %37 ] + %50 = zext i64 %.sroa.0.1.off0.i.i.i.i.i.i to i128 + %51 = zext i64 %.sroa.0.1.off64.i.i.i.i.i.i to i128 %52 = mul nuw i128 %51, %50 %53 = lshr i128 %52, 64 %.masked.i.i.i.i.i.i = and i128 %52, 18446744073709551615 @@ -227528,6 +227528,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h5910203451303186E.exit.i: ; %extract.t.i.i.i.i.i.i = trunc i128 %.pre.i.i.i.i.i.i to i64 %extract.i.i.i.i.i.i = lshr i128 %.pre.i.i.i.i.i.i, 64 %extract.t7.i.i.i.i.i.i = trunc nuw i128 %extract.i.i.i.i.i.i to i64 + %207 = xor i64 %.pre5.i.i.i.i.i.i, %extract.t7.i.i.i.i.i.i br label %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread.i.i.i.i.i.i" 207: ; preds = %.noexc28 @@ -227535,22 +227536,20 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h5910203451303186E.exit.i: ; br label %_ZN9hashbrown3map9make_hash17hc8ed4050a9a1c89fE.exit.i.i.i.i.i "_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread.i.i.i.i.i.i": ; preds = %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit._ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread_crit_edge.i.i.i.i.i.i", %"_ZN112_$LT$polars_arrow..trusted_len..TrustMyLength$LT$I$C$J$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h398088b62436d6d1E.exit.i.thread" - %209 = phi i64 [ %.pre5.i.i.i.i.i.i, %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit._ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread_crit_edge.i.i.i.i.i.i" ], [ %201, %"_ZN112_$LT$polars_arrow..trusted_len..TrustMyLength$LT$I$C$J$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h398088b62436d6d1E.exit.i.thread" ] + %209 = phi i64 [ %207, %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit._ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread_crit_edge.i.i.i.i.i.i" ], [ %201, %"_ZN112_$LT$polars_arrow..trusted_len..TrustMyLength$LT$I$C$J$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h398088b62436d6d1E.exit.i.thread" ] %210 = phi i64 [ %.pre4.i.i.i.i.i.i, %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit._ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread_crit_edge.i.i.i.i.i.i" ], [ %.val.i.i.i.i.i, %"_ZN112_$LT$polars_arrow..trusted_len..TrustMyLength$LT$I$C$J$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h398088b62436d6d1E.exit.i.thread" ] %.off0.i.i.i.i.i.i = phi i64 [ %extract.t.i.i.i.i.i.i, %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit._ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread_crit_edge.i.i.i.i.i.i" ], [ %extract.t6.i.i.i.i.i.i, %"_ZN112_$LT$polars_arrow..trusted_len..TrustMyLength$LT$I$C$J$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h398088b62436d6d1E.exit.i.thread" ] - %.off64.i.i.i.i.i.i = phi i64 [ %extract.t7.i.i.i.i.i.i, %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit._ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread_crit_edge.i.i.i.i.i.i" ], [ 0, %"_ZN112_$LT$polars_arrow..trusted_len..TrustMyLength$LT$I$C$J$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h398088b62436d6d1E.exit.i.thread" ] - %211 = xor i64 %.off0.i.i.i.i.i.i, %210 - %212 = xor i64 %.off64.i.i.i.i.i.i, %209 - %213 = zext i64 %211 to i128 - %214 = zext i64 %212 to i128 - %215 = mul nuw i128 %214, %213 + %212 = xor i64 %.off0.i.i.i.i.i.i, %211 + %213 = zext i64 %212 to i128 + %214 = zext i64 %209 to i128 + %215 = mul nuw i128 %213, %214 %216 = lshr i128 %215, 64 %217 = xor i128 %216, %215 %218 = trunc i128 %217 to i64 br label %_ZN9hashbrown3map9make_hash17hc8ed4050a9a1c89fE.exit.i.i.i.i.i _ZN9hashbrown3map9make_hash17hc8ed4050a9a1c89fE.exit.i.i.i.i.i: ; preds = %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread.i.i.i.i.i.i", %207 - %.sroa.0.0.i.i.i.i.i.i.i = phi i64 [ %218, %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread.i.i.i.i.i.i" ], [ %208, %207 ] + %.sroa.0.0.i.i.i.i.i.i.i = phi i64 [ %218, %"_ZN84_$LT$core..option..Option$LT$T$GT$$u20$as$u20$polars_utils..total_ord..TotalHash$GT$8tot_hash17h5018d3eab275f9d4E.exit.thread.i.i.i.i.i.i" ], [ %208, %208 ] %219 = zext i64 %.sroa.0.0.i.i.i.i.i.i.i to i128 %220 = mul nuw nsw i128 %219, 2611923443488327891 %221 = lshr i128 %220, 64 @@ -232017,12 +232016,12 @@ _ZN8foldhash4fast10FoldHasher9write_num17h741d2713a59ba02bE.exit.i.i.i.i.i.i.i: %46 = zext i32 %45 to i64 %47 = shl nuw nsw i64 %46, 8 %extract.t.i.i.i.i.i.i = or disjoint i64 %47, 1 + %48 = xor i64 %extract.t.i.i.i.i.i.i, %.val.i.i.i.i.i br label %_ZN9hashbrown3map9make_hash17hc5a5a162f3d9c582E.exit.i.i.i.i.i _ZN9hashbrown3map9make_hash17hc5a5a162f3d9c582E.exit.i.i.i.i.i: ; preds = %_ZN8foldhash4fast10FoldHasher9write_num17h741d2713a59ba02bE.exit.i.i.i.i.i.i.i, %37 - %.sroa.0.1.off0.i.i.i.i.i.i = phi i64 [ %extract.t.i.i.i.i.i.i, %_ZN8foldhash4fast10FoldHasher9write_num17h741d2713a59ba02bE.exit.i.i.i.i.i.i.i ], [ 0, %37 ] - %48 = xor i64 %.sroa.0.1.off0.i.i.i.i.i.i, %.val.i.i.i.i.i - %49 = zext i64 %48 to i128 + %.sroa.0.1.off0.i.i.i.i.i.i = phi i64 [ %48, %_ZN8foldhash4fast10FoldHasher9write_num17h741d2713a59ba02bE.exit.i.i.i.i.i.i.i ], [ %.val.i.i.i.i.i, %37 ] + %49 = zext i64 %.sroa.0.1.off0.i.i.i.i.i.i to i128 %50 = zext i64 %41 to i128 %51 = mul nuw i128 %49, %50 %52 = lshr i128 %51, 64 diff --git a/bench/portaudio/optimized/pa_process.ll b/bench/portaudio/optimized/pa_process.ll index 6e9eeada897..b9daf21c4bd 100644 --- a/bench/portaudio/optimized/pa_process.ll +++ b/bench/portaudio/optimized/pa_process.ll @@ -2337,12 +2337,15 @@ define range(i64 0, 4294967296) i64 @PaUtil_CopyInput(ptr noundef %0, ptr nounde %37 = icmp samesign ult i64 %indvars.iv.next, %36 br i1 %37, label %21, label %._crit_edge, !llvm.loop !89 -._crit_edge: ; preds = %21, %11 - %.lcssa = phi i32 [ 0, %11 ], [ %35, %21 ] - %38 = load ptr, ptr %1, align 8, !tbaa !63 - %39 = mul i32 %.lcssa, %8 +._crit_edge: ; preds = %21 + %38 = mul i32 %35, %8 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %11 + %.lcssa = phi i32 [ 0, %11 ], [ %38, %._crit_edge.loopexit ] + %39 = load ptr, ptr %1, align 8, !tbaa !63 %40 = load i32, ptr %14, align 8, !tbaa !26 - %41 = mul i32 %39, %40 + %41 = mul i32 %.lcssa, %40 %42 = zext i32 %41 to i64 %43 = getelementptr inbounds nuw i8, ptr %38, i64 %42 store ptr %43, ptr %1, align 8, !tbaa !63 @@ -2452,12 +2455,15 @@ define range(i64 0, 4294967296) i64 @PaUtil_CopyOutput(ptr noundef %0, ptr nound %37 = icmp samesign ult i64 %indvars.iv.next, %36 br i1 %37, label %21, label %._crit_edge, !llvm.loop !91 -._crit_edge: ; preds = %21, %11 - %.lcssa = phi i32 [ 0, %11 ], [ %35, %21 ] +._crit_edge.loopexit: ; preds = %21 + %38 = mul i32 %35, %8 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge, %11 + %.lcssa = phi i32 [ 0, %11 ], [ %38, %._crit_edge.loopexit ] %38 = load ptr, ptr %1, align 8, !tbaa !63 - %39 = mul i32 %.lcssa, %8 %40 = load i32, ptr %14, align 8, !tbaa !37 - %41 = mul i32 %39, %40 + %41 = mul i32 %.lcssa, %40 %42 = zext i32 %41 to i64 %43 = getelementptr inbounds nuw i8, ptr %38, i64 %42 store ptr %43, ptr %1, align 8, !tbaa !63 diff --git a/bench/postgres/optimized/buffile.ll b/bench/postgres/optimized/buffile.ll index e65587625b5..7bbcc17f426 100644 --- a/bench/postgres/optimized/buffile.ll +++ b/bench/postgres/optimized/buffile.ll @@ -246,11 +246,10 @@ define dso_local void @BufFileDeleteFileSet(ptr noundef %0, ptr noundef %1, i1 n 10: ; preds = %9, %.lr.ph %11 = call i32 (ptr, i64, ptr, ...) @pg_snprintf(ptr noundef nonnull %4, i64 noundef 1024, ptr noundef nonnull @.str.8, ptr noundef %1, i32 noundef %7) #9 %12 = call zeroext i1 @FileSetDelete(ptr noundef %0, ptr noundef nonnull %4, i1 noundef zeroext true) #9 - br i1 %12, label %.lr.ph, label %._crit_edge + br i1 %12, label %.lr.ph, label %.critedge -._crit_edge: ; preds = %10, %3 - %or.cond = or i1 %2, %6 - br i1 %or.cond, label %16, label %13 +._crit_edge: ; preds = %3 + br i1 %2, label %16, label %13 13: ; preds = %._crit_edge %14 = call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #10 @@ -258,7 +257,7 @@ define dso_local void @BufFileDeleteFileSet(ptr noundef %0, ptr noundef %1, i1 n call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 387, ptr noundef nonnull @__func__.BufFileDeleteFileSet) #9 unreachable -16: ; preds = %._crit_edge +16: ; preds = %10, %._crit_edge call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void } diff --git a/bench/proj/optimized/gridshift.ll b/bench/proj/optimized/gridshift.ll index 5cf35b39a19..759f1b999d0 100644 --- a/bench/proj/optimized/gridshift.ll +++ b/bench/proj/optimized/gridshift.ll @@ -2427,14 +2427,14 @@ _ZN12_GLOBAL__N_110normalizeXEPKN5osgeo4proj16GenericShiftGridE6PJ_XYZRPKNS1_12E br label %86 86: ; preds = %.preheader, %152 - %.186 = phi ptr [ %.3, %152 ], [ %17, %.preheader ] - %.082 = phi ptr [ %.183, %152 ], [ %8, %.preheader ] - %.055 = phi i32 [ %151, %152 ], [ 10, %.preheader ] - %.sroa.012.1 = phi double [ %.sroa.012.4, %152 ], [ %79, %.preheader ] - %.sroa.10.1 = phi double [ %.sroa.10.4, %152 ], [ %82, %.preheader ] - %.sroa.024.0 = phi double [ %.sroa.024.2, %152 ], [ %.sroa.0.0.i, %.preheader ] - %.sroa.726.0 = phi double [ %.sroa.726.2, %152 ], [ %.sroa.278.0.copyload, %.preheader ] - %.0 = phi ptr [ %.2, %152 ], [ %7, %.preheader ] + %.186 = phi ptr [ %.3, %155 ], [ %17, %.preheader ] + %.082 = phi ptr [ %.183, %155 ], [ %8, %.preheader ] + %.055 = phi i32 [ %151, %155 ], [ 10, %.preheader ] + %.sroa.012.1 = phi double [ %.sroa.012.4, %155 ], [ %79, %.preheader ] + %.sroa.10.1 = phi double [ %.sroa.10.4, %155 ], [ %82, %.preheader ] + %.sroa.024.0 = phi double [ %.sroa.024.2, %155 ], [ %.sroa.0.0.i, %.preheader ] + %.sroa.726.0 = phi double [ %.sroa.726.2, %155 ], [ %.sroa.278.0.copyload, %.preheader ] + %.0 = phi ptr [ %.2, %155 ], [ %7, %.preheader ] call fastcc void @_ZN12_GLOBAL__N_113gridshiftData16grid_interpolateEP6pj_ctxRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE5PJ_XYPKN5osgeo4proj16GenericShiftGridERb(ptr dead_on_unwind noalias writable align 8 %12, ptr noundef nonnull align 8 dereferenceable(200) %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %3, double %.sroa.012.1, double %.sroa.10.1, ptr noundef %.0, ptr noundef nonnull align 1 dereferenceable(1) %11) %87 = load ptr, ptr %.0, align 8, !tbaa !104 %88 = getelementptr inbounds nuw i8, ptr %87, i64 32 @@ -2540,14 +2540,16 @@ _ZNK12_GLOBAL__N_113gridshiftData8findGridERKNSt7__cxx1112basic_stringIcSt11char %147 = fsub double %146, %.sroa.726.0 %148 = fsub double %.sroa.012.1, %144 %149 = fsub double %.sroa.10.1, %147 - br label %150 + %150 = fmul double %147, %147 + %151 = tail call double @llvm.fmuladd.f64(double %144, double %144, double %150) + %152 = fcmp ogt double %151, 0x3AF357C299A88EA7 + br label %153 150: ; preds = %114, %133, %135, %140, %142 %.3 = phi ptr [ %.186, %142 ], [ %119, %140 ], [ %119, %135 ], [ %119, %133 ], [ %119, %114 ] %.183 = phi ptr [ %.082, %142 ], [ %107, %140 ], [ %107, %135 ], [ %107, %133 ], [ %107, %114 ] %.sroa.012.4 = phi double [ %148, %142 ], [ %.sroa.012.1, %140 ], [ %.sroa.012.1, %135 ], [ %.sroa.012.1, %133 ], [ %.sroa.012.1, %114 ] - %.sroa.7.2 = phi double [ %147, %142 ], [ 0x7FEFFFFFFFFFFFFF, %140 ], [ 0x7FEFFFFFFFFFFFFF, %135 ], [ 0x7FEFFFFFFFFFFFFF, %133 ], [ 0x7FEFFFFFFFFFFFFF, %114 ] - %.sroa.06.2 = phi double [ %144, %142 ], [ 0x7FEFFFFFFFFFFFFF, %140 ], [ 0x7FEFFFFFFFFFFFFF, %135 ], [ 0x7FEFFFFFFFFFFFFF, %133 ], [ 0x7FEFFFFFFFFFFFFF, %114 ] + %.sroa.7.2 = phi i1 [ %152, %142 ], [ true, %140 ], [ true, %135 ], [ true, %133 ], [ true, %114 ] %.sroa.10.4 = phi double [ %149, %142 ], [ %.sroa.10.1, %140 ], [ %.sroa.10.1, %135 ], [ %.sroa.10.1, %133 ], [ %.sroa.10.1, %114 ] %.sroa.024.2 = phi double [ %.sroa.024.0, %142 ], [ %141, %140 ], [ %.sroa.0.0.copyload, %135 ], [ %134, %133 ], [ %.sroa.0.0.copyload, %114 ] %.sroa.726.2 = phi double [ %.sroa.726.0, %142 ], [ %.sroa.2.0.copyload, %140 ], [ %.sroa.2.0.copyload, %135 ], [ %.sroa.2.0.copyload, %133 ], [ %.sroa.2.0.copyload, %114 ] @@ -2557,10 +2559,7 @@ _ZNK12_GLOBAL__N_113gridshiftData8findGridERKNSt7__cxx1112basic_stringIcSt11char br i1 %.not, label %.critedge64, label %152 152: ; preds = %150 - %153 = fmul double %.sroa.7.2, %.sroa.7.2 - %154 = tail call double @llvm.fmuladd.f64(double %.sroa.06.2, double %.sroa.06.2, double %153) - %155 = fcmp ogt double %154, 0x3AF357C299A88EA7 - br i1 %155, label %86, label %.critedge, !llvm.loop !158 + br i1 %.sroa.7.2, label %86, label %.critedge, !llvm.loop !158 .critedge64: ; preds = %150 tail call void (ptr, i32, ptr, ...) @_Z6pj_logP6pj_ctxiPKcz(ptr noundef %2, i32 noundef 3, ptr noundef nonnull @.str.22) diff --git a/bench/proxygen/optimized/HTTPTransaction.ll b/bench/proxygen/optimized/HTTPTransaction.ll index f0271ef9c31..9839e7e4103 100644 --- a/bench/proxygen/optimized/HTTPTransaction.ll +++ b/bench/proxygen/optimized/HTTPTransaction.ll @@ -2813,11 +2813,11 @@ lor.rhs.i: ; preds = %call.i.i.noexc call3.i.noexc: ; preds = %lor.rhs.i %cmp.i13 = icmp eq i16 %call3.i15, 101 + %9 = and i1 %lnot, %cmp.i13 br label %invoke.cont19 invoke.cont19: ; preds = %call3.i.noexc, %call.i.i.noexc, %if.end - %9 = phi i1 [ true, %call.i.i.noexc ], [ true, %if.end ], [ %cmp.i13, %call3.i.noexc ] - %10 = and i1 %lnot, %9 + %9 = phi i1 [ %lnot, %call.i.i.noexc ], [ %lnot, %if.end ], [ %9, %call3.i.noexc ] %cond = zext i1 %10 to i8 %call24 = invoke noundef zeroext i1 @_ZN8proxygen15HTTPTransaction30validateIngressStateTransitionENS_28HTTPTransactionIngressSMData5EventE(ptr noundef nonnull align 8 dereferenceable(912) %this, i8 noundef zeroext %cond) to label %invoke.cont23 unwind label %lpad @@ -14640,11 +14640,9 @@ _ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5: ; preds = % br label %return return: ; preds = %entry, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5 - %retval.sroa.0.0 = phi i64 [ 1, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5 ], [ 2, %entry ] - %retval.sroa.38.0 = phi i64 [ 0, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5 ], [ 8589934592, %entry ] + %retval.sroa.0.0 = phi i64 [ 1, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5 ], [ 8589934594, %entry ] %retval.sroa.5.0 = phi ptr [ %second, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5 ], [ null, %entry ] - %retval.sroa.0.0.insert.insert = or disjoint i64 %retval.sroa.38.0, %retval.sroa.0.0 - %.fca.0.insert = insertvalue { i64, ptr } poison, i64 %retval.sroa.0.0.insert.insert, 0 + %.fca.0.insert = insertvalue { i64, ptr } poison, i64 %retval.sroa.38.0, 0 %.fca.1.insert = insertvalue { i64, ptr } %.fca.0.insert, ptr %retval.sroa.5.0, 1 ret { i64, ptr } %.fca.1.insert } @@ -20735,11 +20733,9 @@ _ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5.i: ; preds = br label %_ZN8proxygen15HTTPTransaction24newWebTransportUniStreamEv.exit _ZN8proxygen15HTTPTransaction24newWebTransportUniStreamEv.exit: ; preds = %entry, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5.i - %retval.sroa.0.0.i = phi i64 [ 1, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5.i ], [ 2, %entry ] - %retval.sroa.38.0.i = phi i64 [ 0, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5.i ], [ 8589934592, %entry ] + %retval.sroa.0.0.i = phi i64 [ 1, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5.i ], [ 8589934594, %entry ] %retval.sroa.5.0.i = phi ptr [ %second.i, %_ZNR5folly8ExpectedImN8proxygen12WebTransport9ErrorCodeEEdeEv.exit5.i ], [ null, %entry ] - %retval.sroa.0.0.insert.insert.i = or disjoint i64 %retval.sroa.38.0.i, %retval.sroa.0.0.i - %.fca.0.insert.i = insertvalue { i64, ptr } poison, i64 %retval.sroa.0.0.insert.insert.i, 0 + %.fca.0.insert.i = insertvalue { i64, ptr } poison, i64 %retval.sroa.38.0.i, 0 %.fca.1.insert.i = insertvalue { i64, ptr } %.fca.0.insert.i, ptr %retval.sroa.5.0.i, 1 call void @llvm.lifetime.end.p0(ptr nonnull %id.i) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp6.i) @@ -21008,18 +21004,11 @@ if.end: ; preds = %_ZNSt3mapImN8proxyg %wtEgressStreams_.i.i = getelementptr inbounds nuw i8, ptr %4, i64 800 %call.i.i.i = call noundef i64 @_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction20TxnStreamWriteHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE5eraseERS1_(ptr noundef nonnull align 8 dereferenceable(48) %wtEgressStreams_.i.i, ptr noundef nonnull align 8 dereferenceable(8) %id.addr.i.i) call void @llvm.lifetime.end.p0(ptr nonnull %id.addr.i.i) - %retval.sroa.32.0.extract.shift = and i64 %call.i.i, -4294967296 - %8 = and i64 %call.i.i, 4294967040 - %9 = and i64 %call.i.i, 255 br label %return return: ; preds = %entry, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction20TxnStreamWriteHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i, %_ZNSt3mapImN8proxygen15HTTPTransaction20TxnStreamWriteHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit, %if.end - %retval.sroa.0.0 = phi i64 [ %9, %if.end ], [ 2, %_ZNSt3mapImN8proxygen15HTTPTransaction20TxnStreamWriteHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit ], [ 2, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction20TxnStreamWriteHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i ], [ 2, %entry ] - %retval.sroa.32.0 = phi i64 [ %retval.sroa.32.0.extract.shift, %if.end ], [ 4294967296, %_ZNSt3mapImN8proxygen15HTTPTransaction20TxnStreamWriteHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit ], [ 4294967296, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction20TxnStreamWriteHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i ], [ 4294967296, %entry ] - %retval.sroa.3.sroa.0.0 = phi i64 [ %8, %if.end ], [ 0, %_ZNSt3mapImN8proxygen15HTTPTransaction20TxnStreamWriteHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit ], [ 0, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction20TxnStreamWriteHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i ], [ 0, %entry ] - %retval.sroa.3.0.insert.insert = or disjoint i64 %retval.sroa.32.0, %retval.sroa.0.0 - %retval.sroa.0.0.insert.insert = or disjoint i64 %retval.sroa.3.0.insert.insert, %retval.sroa.3.sroa.0.0 - ret i64 %retval.sroa.0.0.insert.insert + %retval.sroa.0.0 = phi i64 [ %call.i.i, %if.end ], [ 4294967298, %_ZNSt3mapImN8proxygen15HTTPTransaction20TxnStreamWriteHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit ], [ 4294967298, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction20TxnStreamWriteHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i ], [ 4294967298, %entry ] + ret i64 %retval.sroa.32.0 } ; Function Attrs: mustprogress uwtable @@ -21073,18 +21062,11 @@ if.end: ; preds = %_ZNSt3mapImN8proxyg %wtIngressStreams_.i.i = getelementptr inbounds nuw i8, ptr %4, i64 848 %call.i.i.i = call noundef i64 @_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction19TxnStreamReadHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE5eraseERS1_(ptr noundef nonnull align 8 dereferenceable(48) %wtIngressStreams_.i.i, ptr noundef nonnull align 8 dereferenceable(8) %id.addr.i.i) call void @llvm.lifetime.end.p0(ptr nonnull %id.addr.i.i) - %retval.sroa.32.0.extract.shift = and i64 %call.i.i, -4294967296 - %8 = and i64 %call.i.i, 4294967040 - %9 = and i64 %call.i.i, 255 br label %return return: ; preds = %entry, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction19TxnStreamReadHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i, %_ZNSt3mapImN8proxygen15HTTPTransaction19TxnStreamReadHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit, %if.end - %retval.sroa.0.0 = phi i64 [ %9, %if.end ], [ 2, %_ZNSt3mapImN8proxygen15HTTPTransaction19TxnStreamReadHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit ], [ 2, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction19TxnStreamReadHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i ], [ 2, %entry ] - %retval.sroa.32.0 = phi i64 [ %retval.sroa.32.0.extract.shift, %if.end ], [ 4294967296, %_ZNSt3mapImN8proxygen15HTTPTransaction19TxnStreamReadHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit ], [ 4294967296, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction19TxnStreamReadHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i ], [ 4294967296, %entry ] - %retval.sroa.3.sroa.0.0 = phi i64 [ %8, %if.end ], [ 0, %_ZNSt3mapImN8proxygen15HTTPTransaction19TxnStreamReadHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit ], [ 0, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction19TxnStreamReadHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i ], [ 0, %entry ] - %retval.sroa.3.0.insert.insert = or disjoint i64 %retval.sroa.32.0, %retval.sroa.0.0 - %retval.sroa.0.0.insert.insert = or disjoint i64 %retval.sroa.3.0.insert.insert, %retval.sroa.3.sroa.0.0 - ret i64 %retval.sroa.0.0.insert.insert + %retval.sroa.0.0 = phi i64 [ %call.i.i, %if.end ], [ 4294967298, %_ZNSt3mapImN8proxygen15HTTPTransaction19TxnStreamReadHandleESt4lessImESaISt4pairIKmS2_EEE4findERS6_.exit ], [ 4294967298, %_ZNSt8_Rb_treeImSt4pairIKmN8proxygen15HTTPTransaction19TxnStreamReadHandleEESt10_Select1stIS5_ESt4lessImESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_.exit.i.i ], [ 4294967298, %entry ] + ret i64 %retval.sroa.32.0 } ; Function Attrs: mustprogress uwtable diff --git a/bench/proxygen/optimized/PersistentQuicTokenCache.ll b/bench/proxygen/optimized/PersistentQuicTokenCache.ll index 5b6548c8266..a3685feff45 100644 --- a/bench/proxygen/optimized/PersistentQuicTokenCache.ll +++ b/bench/proxygen/optimized/PersistentQuicTokenCache.ll @@ -3728,16 +3728,13 @@ if.then3: ; preds = %if.end invoke.cont.i: ; preds = %if.then3 %cache_.i = getelementptr inbounds nuw i8, ptr %this, i64 24 %call3.i = call noundef i64 @_ZN6wangle16LRUInMemoryCacheINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_St5mutexE8loadDataERKN5folly7dynamicE(ptr noundef nonnull align 8 dereferenceable(160) %cache_.i, ptr noundef nonnull align 8 dereferenceable(40) %kvPairs.i) #24, !noalias !29 - %version.sroa.3.0.extract.shift = and i64 %call3.i, -256 %.pre.i = load i8, ptr %hasValue.i.i.i, align 8, !noalias !29 - %4 = and i64 %call3.i, 255 br label %cleanup.i cleanup.i: ; preds = %if.then3, %invoke.cont.i - %version.sroa.3.sroa.0.0 = phi i64 [ %version.sroa.3.0.extract.shift, %invoke.cont.i ], [ 0, %if.then3 ] - %version.sroa.0.0 = phi i64 [ %4, %invoke.cont.i ], [ 0, %if.then3 ] - %5 = phi i8 [ %.pre.i, %invoke.cont.i ], [ %3, %if.then3 ] - %tobool.i.i.i.i = trunc i8 %5 to i1 + %version.sroa.3.sroa.0.0 = phi i64 [ %call3.i, %invoke.cont.i ], [ 0, %if.then3 ] + %version.sroa.0.0 = phi i8 [ %.pre.i, %invoke.cont.i ], [ %3, %if.then3 ] + %tobool.i.i.i.i = trunc i8 %version.sroa.0.0 to i1 br i1 %tobool.i.i.i.i, label %if.then.i.i.i.i, label %_ZN6wangle18LRUPersistentCacheINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_St5mutexE4loadERNS_16CachePersistenceE.exit if.then.i.i.i.i: ; preds = %cleanup.i @@ -3752,11 +3749,10 @@ _ZN6wangle18LRUPersistentCacheINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIc invoke.cont10: ; preds = %_ZN6wangle18LRUPersistentCacheINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_St5mutexE4loadERNS_16CachePersistenceE.exit %6 = load ptr, ptr %persistence_, align 8 - %version.sroa.0.0.insert.insert = or disjoint i64 %version.sroa.0.0, %version.sroa.3.sroa.0.0 - %vtable = load ptr, ptr %6, align 8 + %vtable = load ptr, ptr %5, align 8 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 24 %7 = load ptr, ptr %vfn, align 8 - call void %7(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %version.sroa.0.0.insert.insert) #24 + call void %6(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %version.sroa.3.sroa.0.0) #24 br label %monotonic_fail22.i monotonic_fail22.i: ; preds = %_ZN6wangle18LRUPersistentCacheINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_St5mutexE4loadERNS_16CachePersistenceE.exit, %invoke.cont10, %if.end diff --git a/bench/proxygen/optimized/QPACKEncoder.ll b/bench/proxygen/optimized/QPACKEncoder.ll index f883f61244a..c6fa06b71e2 100644 --- a/bench/proxygen/optimized/QPACKEncoder.ll +++ b/bench/proxygen/optimized/QPACKEncoder.ll @@ -1823,19 +1823,9 @@ lpad38: ; preds = %invoke.cont39, %con cleanup br label %eh.resume -if.end53: ; preds = %cleanup.done, %entry - %10 = and i64 %call2, -4294967296 - %11 = and i64 %call2, 4294967040 - %12 = and i64 %call2, 255 - br label %return - -return: ; preds = %cleanup.action46, %cond.end29, %cond.true25, %if.end53 - %retval.sroa.0.0 = phi i64 [ %12, %if.end53 ], [ 1, %cond.true25 ], [ 1, %cond.end29 ], [ 1, %cleanup.action46 ] - %retval.sroa.3.sroa.2.0 = phi i64 [ %10, %if.end53 ], [ 0, %cond.true25 ], [ 0, %cond.end29 ], [ 0, %cleanup.action46 ] - %retval.sroa.3.sroa.0.sroa.0.0 = phi i64 [ %11, %if.end53 ], [ 0, %cond.true25 ], [ 0, %cond.end29 ], [ 0, %cleanup.action46 ] - %retval.sroa.3.sroa.0.0.insert.insert = or disjoint i64 %retval.sroa.3.sroa.2.0, %retval.sroa.0.0 - %retval.sroa.0.0.insert.insert = or disjoint i64 %retval.sroa.3.sroa.0.0.insert.insert, %retval.sroa.3.sroa.0.sroa.0.0 - ret i64 %retval.sroa.0.0.insert.insert +if.end53: ; preds = %entry, %cleanup.done, %cleanup.action46, %cond.end29, %cond.true25 + %retval.sroa.3.sroa.2.0 = phi i64 [ 1, %cond.true25 ], [ 1, %cond.end29 ], [ 1, %cleanup.action46 ], [ %call2, %cleanup.done ], [ %call2, %entry ] + ret i64 %retval.sroa.3.sroa.2.0 eh.resume: ; preds = %lpad38, %lpad %ref.tmp36.sink = phi ptr [ %ref.tmp36, %lpad38 ], [ %ref.tmp8, %lpad ] diff --git a/bench/qemu/optimized/pci.ll b/bench/qemu/optimized/pci.ll index 582929a5595..e23f60048d2 100644 --- a/bench/qemu/optimized/pci.ll +++ b/bench/qemu/optimized/pci.ll @@ -616,6 +616,7 @@ define dso_local i32 @vfio_pci_read_config(ptr noundef %0, i32 noundef %1, i32 n %.pre29 = load i32, ptr %5, align 4 %.pre30 = load i32, ptr %6, align 4 %.pre31 = xor i32 %.pre29, -1 + %31 = and i32 %.pre30, %.pre31 br label %.thread 31: ; preds = %24 @@ -628,12 +629,10 @@ define dso_local i32 @vfio_pci_read_config(ptr noundef %0, i32 noundef %1, i32 n br label %trace_vfio_pci_read_config.exit .thread: ; preds = %..thread_crit_edge, %17 - %.pre-phi = phi i32 [ %.pre31, %..thread_crit_edge ], [ %19, %17 ] - %37 = phi i32 [ %.pre30, %..thread_crit_edge ], [ 0, %17 ] - %38 = phi i32 [ %.pre29, %..thread_crit_edge ], [ %18, %17 ] - %39 = and i32 %38, %.025 - %40 = and i32 %37, %.pre-phi - %41 = or i32 %40, %39 + %.pre-phi = phi i32 [ %31, %..thread_crit_edge ], [ 0, %17 ] + %37 = phi i32 [ %.pre29, %..thread_crit_edge ], [ %18, %17 ] + %40 = and i32 %39, %.025 + %41 = or i32 %38, %40 %42 = getelementptr inbounds nuw i8, ptr %7, i64 2824 %43 = load ptr, ptr %42, align 8 %44 = load i32, ptr @trace_events_enabled_count, align 4 @@ -673,7 +672,7 @@ define dso_local i32 @vfio_pci_read_config(ptr noundef %0, i32 noundef %1, i32 n br label %trace_vfio_pci_read_config.exit trace_vfio_pci_read_config.exit: ; preds = %59, %53, %47, %45, %.thread, %31 - %.1 = phi i32 [ %36, %31 ], [ %41, %.thread ], [ %41, %45 ], [ %41, %47 ], [ %41, %53 ], [ %41, %59 ] + %.1 = phi i32 [ %36, %32 ], [ %41, %.thread ], [ %41, %45 ], [ %41, %47 ], [ %41, %53 ], [ %41, %59 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.1 diff --git a/bench/qemu/optimized/tcg-op-ldst.ll b/bench/qemu/optimized/tcg-op-ldst.ll index b70e1bfbd0d..8a026b16990 100644 --- a/bench/qemu/optimized/tcg-op-ldst.ll +++ b/bench/qemu/optimized/tcg-op-ldst.ll @@ -262,14 +262,14 @@ tcg_canonicalize_memop.exit: ; preds = %memop_alignment_bit 39: ; preds = %37 %40 = and i32 %.3.i, 15 %41 = icmp eq i32 %40, 9 - %spec.select.v = select i1 %41, i32 -31, i32 -17 + %spec.select.v = select i1 %41, i32 268435425, i32 268435439 %spec.select = and i32 %spec.select.v, %.3.i - %42 = shl i32 %spec.select, 4 + %42 = shl nuw i32 %spec.select, 4 %43 = or i32 %42, %33 br label %44 44: ; preds = %39, %37, %tcg_canonicalize_memop.exit - %.027 = phi i32 [ %.3.i, %37 ], [ %spec.select, %39 ], [ %.3.i, %tcg_canonicalize_memop.exit ] + %.027 = phi i1 [ true, %37 ], [ false, %39 ], [ true, %tcg_canonicalize_memop.exit ] %.026 = phi i32 [ %35, %37 ], [ %43, %39 ], [ %35, %tcg_canonicalize_memop.exit ] %45 = load ptr, ptr %5, align 8 %46 = getelementptr inbounds nuw i8, ptr %45, i64 232 @@ -327,14 +327,11 @@ plugin_maybe_preserve_addr.exit: ; preds = %.plugin_maybe_prese br label %plugin_gen_mem_callbacks_i32.exit plugin_gen_mem_callbacks_i32.exit: ; preds = %plugin_maybe_preserve_addr.exit, %72 - %74 = xor i32 %.027, %.3.i - %75 = and i32 %74, 16 - %.not28 = icmp eq i32 %75, 0 - br i1 %.not28, label %83, label %76 + br i1 %.027, label %83, label %74 76: ; preds = %plugin_gen_mem_callbacks_i32.exit %77 = and i32 %.3.i, 7 - switch i32 %77, label %82 [ + switch i32 %77, label %80 [ i32 1, label %78 i32 2, label %81 ] @@ -616,15 +613,15 @@ tcg_canonicalize_memop.exit: ; preds = %memop_alignment_bit %41 = and i32 %.3.i, 7 %42 = icmp samesign ult i32 %41, 3 %or.cond = select i1 %.not35, i1 %42, i1 false - %.1.v = select i1 %or.cond, i32 -25, i32 -17 + %.1.v = select i1 %or.cond, i32 268435431, i32 268435439 %.1 = and i32 %.1.v, %.3.i - %43 = shl i32 %.1, 4 + %43 = shl nuw i32 %.1, 4 %44 = or i32 %43, %33 br label %45 45: ; preds = %39, %37, %tcg_canonicalize_memop.exit %.032 = phi i32 [ %35, %37 ], [ %44, %39 ], [ %35, %tcg_canonicalize_memop.exit ] - %.0 = phi i32 [ %.3.i, %37 ], [ %.1, %39 ], [ %.3.i, %tcg_canonicalize_memop.exit ] + %.0 = phi i1 [ true, %37 ], [ false, %39 ], [ true, %tcg_canonicalize_memop.exit ] %46 = load ptr, ptr %5, align 8 %47 = getelementptr inbounds nuw i8, ptr %46, i64 232 %48 = load ptr, ptr %47, align 8 @@ -677,20 +674,17 @@ plugin_maybe_preserve_addr.exit: ; preds = %45, %59, %60 br label %plugin_gen_mem_callbacks_i64.exit plugin_gen_mem_callbacks_i64.exit: ; preds = %plugin_maybe_preserve_addr.exit, %74 - %76 = xor i32 %.0, %.3.i - %77 = and i32 %76, 16 - %.not36 = icmp eq i32 %77, 0 - br i1 %.not36, label %86, label %78 - -78: ; preds = %plugin_gen_mem_callbacks_i64.exit - %79 = and i32 %.3.i, 8 - %.not37 = icmp eq i32 %79, 0 - %80 = select i1 %.not37, i32 3, i32 5 - %81 = and i32 %.3.i, 7 - switch i32 %81, label %85 [ - i32 1, label %82 - i32 2, label %83 - i32 3, label %84 + br i1 %.0, label %84, label %76 + +76:; preds = %plugin_gen_mem_callbacks_i64.exit + %77 = and i32 %.3.i, 8 + %.not37 = icmp eq i32 %77, 0 + %78 = select i1 %.not37, i32 3, i32 5 + %79 = and i32 %.3.i, 7 + switch i32 %79, label %83 [ + i32 1, label %80 + i32 2, label %81 + i32 3, label %82 ] 82: ; preds = %78 diff --git a/bench/qemu/optimized/tcg.ll b/bench/qemu/optimized/tcg.ll index c329dac2a94..8eebceb066f 100644 --- a/bench/qemu/optimized/tcg.ll +++ b/bench/qemu/optimized/tcg.ll @@ -11023,31 +11023,34 @@ la_func_end.exit313: ; preds = %la_reset_pref.exit1 %465 = load i64, ptr %456, align 4 %466 = and i64 %465, 2147483648 %.not262 = icmp eq i64 %466, 0 - br i1 %.not262, label %478, label %467 + br i1 %.not262, label %output_pref.exit, label %467 467: ; preds = %455 %468 = trunc i64 %465 to i32 %469 = lshr i32 %468, 16 %470 = and i32 %469, 15 %471 = icmp samesign ult i32 %470, 2 - br i1 %471, label %472, label %output_pref.exit + br i1 %471, label %472, label %output_pref.exit.thread 472: ; preds = %467 %473 = zext nneg i32 %470 to i64 %474 = getelementptr inbounds nuw i32, ptr %453, i64 %473 %475 = load i32, ptr %474, align 4 + %476 = and i32 %475, %464 br label %output_pref.exit -output_pref.exit: ; preds = %467, %472 - %476 = phi i32 [ %475, %472 ], [ 0, %467 ] - %477 = and i32 %476, %464 +output_pref.exit: ; preds = %472, %455 + %476 = phi i32 [ %464, %455 ], [ %476, %472 ] + %.0.fr = freeze i32 %476 + %477 = icmp eq i32 %.0.fr, 0 + br i1 %477, label %output_pref.exit.thread, label %478 + +output_pref.exit.thread: ; preds = %467, %output_pref.exit br label %478 -478: ; preds = %output_pref.exit, %455 - %.0 = phi i32 [ %477, %output_pref.exit ], [ %464, %455 ] - %479 = icmp eq i32 %.0, 0 - %spec.select = select i1 %479, i32 %463, i32 %.0 - store i32 %spec.select, ptr %.val273, align 4 +478: ; preds = %output_pref.exit, %output_pref.exit.thread + %.0 = phi i32 [ %463, %output_pref.exit.thread ], [ %.0.fr, %output_pref.exit ] + store i32 %.0, ptr %.val273, align 4 %indvars.iv.next453 = add nuw nsw i64 %indvars.iv452, 1 %480 = icmp samesign ult i64 %indvars.iv.next453, %454 br i1 %480, label %455, label %.thread, !llvm.loop !77 diff --git a/bench/quantlib/optimized/constantestimator.ll b/bench/quantlib/optimized/constantestimator.ll index 5d68752438a..5948b2d0a2d 100644 --- a/bench/quantlib/optimized/constantestimator.ll +++ b/bench/quantlib/optimized/constantestimator.ll @@ -146,13 +146,16 @@ for.body13: ; preds = %for.body13.lr.ph, % %exitcond.not = icmp eq i64 %inc, %i.033 br i1 %exitcond.not, label %for.end, label %for.body13, !llvm.loop !26 -for.end: ; preds = %for.body13, %for.body - %sumu2.0.lcssa = phi double [ 0.000000e+00, %for.body ], [ %10, %for.body13 ] - %sumu.0.lcssa = phi double [ 0.000000e+00, %for.body ], [ %add, %for.body13 ] +for.end: ; preds = %for.body13 + %11 = fmul double %add, %add + br label %for.end + +for.end: ; preds = %for.end.loopexit, %for.body + %sumu2.0.lcssa = phi double [ 0.000000e+00, %for.body ], [ %10, %for.end.loopexit ] + %sumu.0.lcssa = phi double [ 0.000000e+00, %for.body ], [ %11, %for.end.loopexit ] %conv = uitofp i64 %7 to double %div = fdiv double %sumu2.0.lcssa, %conv - %mul = fmul double %sumu.0.lcssa, %sumu.0.lcssa - %div20 = fdiv double %mul, %conv + %div20 = fdiv double %sumu.0.lcssa, %conv %add22 = add i64 %7, 1 %conv23 = uitofp i64 %add22 to double %div24 = fdiv double %div20, %conv23 diff --git a/bench/quest/optimized/QuEST_validation.ll b/bench/quest/optimized/QuEST_validation.ll index 43252c6132a..9d6a5efeb0d 100644 --- a/bench/quest/optimized/QuEST_validation.ll +++ b/bench/quest/optimized/QuEST_validation.ll @@ -3988,52 +3988,44 @@ define void @validateQuregAllocation(ptr noundef captures(none) %0, ptr noundef %7 = getelementptr inbounds nuw i8, ptr %0, i64 40 %8 = load ptr, ptr %7, align 8, !tbaa !39 %.not17 = icmp eq ptr %8, null - br i1 %.not17, label %14, label %9 + br i1 %.not17, label %12, label %9 9: ; preds = %6 %10 = getelementptr inbounds nuw i8, ptr %0, i64 48 %11 = load ptr, ptr %10, align 8, !tbaa !40 - %12 = icmp ne ptr %11, null - %13 = zext i1 %12 to i32 - br label %14 - -14: ; preds = %9, %6 - %15 = phi i32 [ 0, %6 ], [ %13, %9 ] - %16 = getelementptr inbounds nuw i8, ptr %0, i64 36 - %17 = load i32, ptr %16, align 4, !tbaa !41 - %18 = icmp sgt i32 %17, 1 - br i1 %18, label %19, label %30 - -19: ; preds = %14 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %21 = load ptr, ptr %20, align 8, !tbaa !42 - %.not18 = icmp eq ptr %21, null - br i1 %.not18, label %27, label %22 - -22: ; preds = %19 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %24 = load ptr, ptr %23, align 8, !tbaa !43 - %25 = icmp ne ptr %24, null - %26 = zext i1 %25 to i32 - br label %27 - -27: ; preds = %22, %19 - %28 = phi i32 [ 0, %19 ], [ %26, %22 ] - %29 = and i32 %28, %15 - br label %30 - -30: ; preds = %14, %27 - %.0 = phi i32 [ %29, %27 ], [ %15, %14 ] - %.not19 = icmp eq i32 %.0, 0 + %12 = icmp eq ptr %11, null + br label %12 + +12: ; preds = %9, %6 + %.not19 = phi i1 [ true, %6 ], [ %12, %9 ] + %13 = getelementptr inbounds nuw i8, ptr %0, i64 36 + %14 = load i32, ptr %13, align 4, !tbaa !41 + %15 = icmp sgt i32 %14, 1 + br i1 %15, label %16, label %22 + +16: ; preds = %12 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %18 = load ptr, ptr %17, align 8, !tbaa !42 + %.not18 = icmp eq ptr %18, null + br i1 %.not18, label %.split16, label %19 + +19: ; preds = %16 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %21 = load ptr, ptr %20, align 8, !tbaa !43 + %.not22 = icmp eq ptr %21, null + %or.cond = select i1 %.not22, i1 true, i1 %.not19 + br i1 %or.cond, label %.split16, label %.split + +22: ; preds = %12 br i1 %.not19, label %.split16, label %.split -.split16: ; preds = %30 +.split16: ; preds = %19, %16, %22 tail call void @destroyQureg(ptr noundef nonnull byval(%struct.Qureg) align 8 %0, ptr noundef nonnull byval(%struct.QuESTEnv) align 8 %1) #14 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %7, i8 0, i64 32, i1 false) tail call void @invalidQuESTInputError(ptr noundef nonnull @.str.87, ptr noundef %2) br label %.split -.split: ; preds = %3, %30, %.split16 +.split: ; preds = %19, %3, %22, %.split16 ret void } diff --git a/bench/quinn-rs/optimized/7yqfzisqbnqsiwjrqtgcfuc30.ll b/bench/quinn-rs/optimized/7yqfzisqbnqsiwjrqtgcfuc30.ll index efe466253c1..df9742eeecc 100644 --- a/bench/quinn-rs/optimized/7yqfzisqbnqsiwjrqtgcfuc30.ll +++ b/bench/quinn-rs/optimized/7yqfzisqbnqsiwjrqtgcfuc30.ll @@ -3447,7 +3447,7 @@ common.resume: ; preds = %.thread66, %28 cleanup br label %.thread66 -.thread72.loopexit.split-lp: ; preds = %189, %122, %99, %78, %71, %54, %40, %248 +.thread72.loopexit.split-lp: ; preds = %189, %122, %99, %78, %71, %54, %40, %247 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.thread66 @@ -3922,30 +3922,29 @@ select.unfold.i: ; preds = %202, %._crit_edge.i unreachable .loopexit: ; preds = %.backedge.i, %185 - %239 = phi i1 [ false, %185 ], [ true, %.backedge.i ] + %239 = phi i1 [ %171, %185 ], [ true, %.backedge.i ] call void @llvm.lifetime.end.p0(ptr nonnull %4) - %240 = or i1 %239, %171 - %241 = getelementptr inbounds nuw i8, ptr %34, i64 40 - %242 = load i64, ptr %241, align 8, !noundef !3 - %243 = icmp eq i64 %242, 0 - br i1 %243, label %244, label %248 - -244: ; preds = %248, %.loopexit - %245 = getelementptr inbounds nuw i8, ptr %34, i64 1000 - %246 = load i64, ptr %245, align 8, !noundef !3 - %247 = icmp eq i64 %246, 0 - br i1 %247, label %249, label %252 - -248: ; preds = %.loopexit + %240 = getelementptr inbounds nuw i8, ptr %34, i64 40 + %241 = load i64, ptr %240, align 8, !noundef !3 + %242 = icmp eq i64 %241, 0 + br i1 %242, label %243, label %247 + +243: ; preds = %247, %.loopexit + %244 = getelementptr inbounds nuw i8, ptr %34, i64 1000 + %245 = load i64, ptr %244, align 8, !noundef !3 + %246 = icmp eq i64 %245, 0 + br i1 %246, label %248, label %251 + +247: ; preds = %.loopexit invoke void @_ZN5tokio4sync6notify6Notify14notify_waiters17h88f79be220ab0135E(ptr noundef nonnull align 8 %172) - to label %244 unwind label %.thread72.loopexit.split-lp + to label %243 unwind label %.thread72.loopexit.split-lp -249: ; preds = %244 +249: ; preds = %243 %250 = load i64, ptr %176, align 8, !noundef !3 %251 = icmp eq i64 %250, 0 br i1 %251, label %270, label %252 -252: ; preds = %249, %244 +252: ; preds = %249, %243 %253 = getelementptr inbounds nuw i8, ptr %34, i64 4 br i1 %37, label %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i43, label %254 @@ -3973,7 +3972,7 @@ _ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i43: ; preds = %259, %. br label %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit46" "_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit46": ; preds = %262, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i43 - br i1 %240, label %263, label %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit" + br i1 %239, label %263, label %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit" 263: ; preds = %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit46" %264 = load ptr, ptr %1, align 8, !nonnull !3, !align !7, !noundef !3 @@ -3982,7 +3981,7 @@ _ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i43: ; preds = %259, %. %267 = load ptr, ptr %266, align 8, !nonnull !3, !noundef !3 %268 = getelementptr inbounds nuw i8, ptr %264, i64 8 %269 = load ptr, ptr %268, align 8, !noundef !3 - call void %267(ptr noundef %269) + call void %266(ptr noundef %269) br label %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit" 270: ; preds = %249 @@ -4013,8 +4012,8 @@ _ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i47: ; preds = %278, %2 br label %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit" "_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit": ; preds = %263, %281, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i47, %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit46", %169, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i - %.sroa.5.0 = phi ptr [ %.sroa.75.0.copyload.i, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i ], [ %.sroa.75.0.copyload.i, %169 ], [ null, %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit46" ], [ null, %263 ], [ null, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i47 ], [ null, %281 ] - %.sroa.0.0 = phi i64 [ 0, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i ], [ 0, %169 ], [ 1, %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit46" ], [ 1, %263 ], [ 0, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i47 ], [ 0, %281 ] + %.sroa.5.0 = phi ptr [ %.sroa.75.0.copyload.i, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i ], [ %.sroa.75.0.copyload.i, %169 ], [ null, %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit46" ], [ null, %262 ], [ null, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i47 ], [ null, %280 ] + %.sroa.0.0 = phi i64 [ 0, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i ], [ 0, %169 ], [ 1, %"_ZN4core3ptr87drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$quinn..endpoint..State$GT$$GT$17h12c0053696d7a6edE.exit46" ], [ 1, %262 ], [ 0, %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i.i47 ], [ 0, %280 ] %282 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 %283 = insertvalue { i64, ptr } %282, ptr %.sroa.5.0, 1 ret { i64, ptr } %283 diff --git a/bench/raylib/optimized/rcore.ll b/bench/raylib/optimized/rcore.ll index 2df335a1977..4f07d95e836 100644 --- a/bench/raylib/optimized/rcore.ll +++ b/bench/raylib/optimized/rcore.ll @@ -19034,7 +19034,7 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr br i1 %103, label %618, label %622 184: ; preds = %101, %615 - %185 = phi i1 [ true, %101 ], [ false, %615 ] + %185 = phi i1 [ %103, %101 ], [ false, %615 ] %indvars.iv385 = phi i64 [ 0, %101 ], [ 1, %615 ] br i1 %103, label %186, label %260 @@ -19804,14 +19804,13 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr 615: ; preds = %613, %610 %616 = load ptr, ptr @glad_glUseProgram, align 8 call void %616(i32 noundef 0) #60 - %617 = and i1 %185, %103 - br i1 %617, label %184, label %183 + br i1 %185, label %184, label %183 618: ; preds = %183 %619 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2688), align 8 %620 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2692), align 4 %621 = load ptr, ptr @glad_glViewport, align 8 - call void %621(i32 noundef 0, i32 noundef 0, i32 noundef %619, i32 noundef %620) #60 + call void %620(i32 noundef 0, i32 noundef 0, i32 noundef %619, i32 noundef %620) #60 br label %622 622: ; preds = %618, %183 @@ -19838,7 +19837,7 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr br label %624 624: ; preds = %622, %624 - %indvars.iv388 = phi i64 [ 0, %622 ], [ %indvars.iv.next389, %624 ] + %indvars.iv388 = phi i64 [ 0, %621 ], [ %indvars.iv.next389, %623 ] %625 = load ptr, ptr %182, align 8 %626 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %625, i64 %indvars.iv388 store i32 7, ptr %626, align 4 diff --git a/bench/re2/optimized/onepass.ll b/bench/re2/optimized/onepass.ll index a0490e7acc5..6e18e0474e8 100644 --- a/bench/re2/optimized/onepass.ll +++ b/bench/re2/optimized/onepass.ll @@ -1385,14 +1385,17 @@ for.inc317: ; preds = %sw.epilog %cmp58.not = icmp eq ptr %incdec.ptr, %add.ptr.i153 br i1 %cmp58.not, label %for.end318, label %for.body, !llvm.loop !14 -for.end318: ; preds = %for.inc317, %invoke.cont52 - %nalloc.0.lcssa = phi i32 [ 1, %invoke.cont52 ], [ %nalloc.3, %for.inc317 ] - %mul319 = mul nsw i32 %nalloc.0.lcssa, %add9 - %conv320 = sext i32 %mul319 to i64 - %117 = load i64, ptr %dfa_mem_, align 8 - %sub322 = sub nsw i64 %117, %conv320 +for.end318: ; preds = %for.inc317 + %117 = mul nsw i32 %nalloc.3, %add9 + br label %for.end318 + +for.end318:; preds = %for.end318, %invoke.cont52 + %nalloc.0.lcssa = phi i32 [ %add9, %invoke.cont52 ], [ %117, %for.end318.loopexit ] + %conv320 = sext i32 %nalloc.0.lcssa to i64 + %118 = load i64, ptr %dfa_mem_, align 8 + %sub322 = sub nsw i64 %118, %conv320 store i64 %sub322, ptr %dfa_mem_, align 8 - %cmp.i.i = icmp slt i32 %mul319, 0 + %cmp.i.i = icmp slt i32 %nalloc.0.lcssa, 0 br i1 %cmp.i.i, label %if.end.i.i368, label %if.end4.i.i if.end.i.i368: ; preds = %for.end318 @@ -1403,7 +1406,7 @@ if.end.i.i368: ; preds = %for.end318 unreachable if.end4.i.i: ; preds = %for.end318 - %conv.i367 = zext nneg i32 %mul319 to i64 + %conv.i367 = zext nneg i32 %nalloc.0.lcssa to i64 %call5.i2.i370 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %conv.i367) #20 to label %invoke.cont325 unwind label %lpad42.loopexit.split-lp.loopexit.split-lp @@ -1422,7 +1425,7 @@ if.then.i.i.i.i.i372: ; preds = %invoke.cont325 _ZN3re28PODArrayIhED2Ev.exit: ; preds = %if.then.i.i.i.i.i372, %invoke.cont325 %119 = phi ptr [ %.pre701, %if.then.i.i.i.i.i372 ], [ %call5.i2.i370, %invoke.cont325 ] - store i32 %mul319, ptr %onepass_nodes_326, align 8 + store i32 %nalloc.0.lcssa, ptr %onepass_nodes_326, align 8 %120 = load i64, ptr %nodes, align 8 %and.i.i376 = and i64 %120, 1 %tobool.i.not.i377 = icmp eq i64 %and.i.i376, 0 diff --git a/bench/recastnavigation/optimized/RecastMeshDetail.ll b/bench/recastnavigation/optimized/RecastMeshDetail.ll index 4e048152338..1e4a5c89b17 100644 --- a/bench/recastnavigation/optimized/RecastMeshDetail.ll +++ b/bench/recastnavigation/optimized/RecastMeshDetail.ll @@ -6319,9 +6319,13 @@ _ZL6onHulliiiPi.exit: ; preds = %41, %45, %_ZN10rcIn %exitcond.not.i41 = icmp eq i64 %indvars.iv.next.i40, %wide.trip.count.i br i1 %exitcond.not.i41, label %_ZL6onHulliiiPi.exit42, label %.lr.ph.i37, !llvm.loop !59 -_ZL6onHulliiiPi.exit42: ; preds = %55, %51, %_ZL6onHulliiiPi.exit - %57 = phi i32 [ 0, %_ZL6onHulliiiPi.exit ], [ 0, %55 ], [ 4, %51 ] +_ZL6onHulliiiPi.exit42: ; preds = %51, %55 + %57 = phi i32 [ 4, %51 ], [ 0, %55 ] %58 = or disjoint i32 %57, %.015.i + br label %_ZL6onHulliiiPi.exit42 + +_ZL6onHulliiiPi.exit42: ; preds = %_ZL6onHulliiiPi.exit42.loopexit, %_ZL6onHulliiiPi.exit + %58 = phi i32 [ %.015.i, %_ZL6onHulliiiPi.exit ], [ %57, %_ZL6onHulliiiPi.exit42.loopexit ] %or.cond.i45 = and i1 %.not.i, %.not19.i31 %or.cond25.i46 = and i1 %8, %or.cond.i45 br i1 %or.cond25.i46, label %.lr.ph.i50, label %_ZL6onHulliiiPi.exit55 diff --git a/bench/redis/optimized/rax.ll b/bench/redis/optimized/rax.ll index 2f7dfc3d3d6..6e9715b255d 100644 --- a/bench/redis/optimized/rax.ll +++ b/bench/redis/optimized/rax.ll @@ -4892,8 +4892,8 @@ define dso_local range(i32 0, 2) i32 @raxCompare(ptr noundef readonly captures(n 12: ; preds = %11, %7 %.not41.not = phi i1 [ true, %11 ], [ false, %7 ] - %13 = icmp ne i8 %5, 62 - br i1 %13, label %14, label %19 + %13 = icmp eq i8 %5, 62 + br i1 %13, label %18, label %13 14: ; preds = %12 %15 = icmp eq i8 %5, 60 @@ -4906,58 +4906,56 @@ define dso_local range(i32 0, 2) i32 @raxCompare(ptr noundef readonly captures(n br i1 %.not, label %19, label %41 19: ; preds = %14, %12, %16 - %20 = phi i1 [ true, %16 ], [ true, %12 ], [ false, %14 ] - %21 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %22 = load i64, ptr %21, align 8, !tbaa !37 - %23 = icmp ult i64 %3, %22 - %. = tail call i64 @llvm.umin.i64(i64 %3, i64 %22) - %24 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %25 = load ptr, ptr %24, align 8, !tbaa !38 - %26 = tail call i32 @memcmp(ptr noundef %25, ptr noundef %2, i64 noundef %.) #30 - %or.cond = and i1 %13, %20 - %27 = icmp eq i32 %26, 0 - br i1 %or.cond, label %28, label %30 - -28: ; preds = %19 - %29 = icmp eq i64 %3, %22 - %spec.select = and i1 %27, %29 + %20 = phi i1 [ true, %15 ], [ false, %12 ], [ false, %13 ] + %.not41 = phi i1 [ true, %15 ], [ true, %12 ], [ false, %13 ] + %.033 = phi i32 [ 0, %15 ], [ 0, %12 ], [ 1, %13 ] + %19 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %20 = load i64, ptr %19, align 8, !tbaa !37 + %21 = icmp ult i64 %3, %20 + %. = tail call i64 @llvm.umin.i64(i64 %3, i64 %20) + %22 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %23 = load ptr, ptr %22, align 8, !tbaa !40 + %24 = tail call i32 @memcmp(ptr noundef %23, ptr noundef %2, i64 noundef %.) #30 + %25 = icmp eq i32 %24, 0 + br i1 %or.cond, label %26, label %30 + +26:; preds = %18 + br i1 %25, label %27, label %41 + +27: ; preds = %26 + %28 = icmp eq i64 %3, %20 + %29 = zext i1 %28 to i32 br label %41 30: ; preds = %19 - br i1 %27, label %31, label %37 + br i1 %25, label %31, label %38 31: ; preds = %30 - %32 = icmp eq i64 %3, %22 + %32 = icmp eq i64 %3, %20 %or.cond44 = and i1 %.not41.not, %32 br i1 %or.cond44, label %41, label %33 33: ; preds = %31 - br i1 %20, label %36, label %34 + br i1 %.not41, label %36, label %34 34: ; preds = %33 - %35 = icmp ult i64 %22, %3 + %35 = icmp ult i64 %20, %3 + %36 = zext i1 %35 to i32 br label %41 36: ; preds = %33 - %not.45 = xor i1 %13, true - %narrow = and i1 %23, %not.45 + %narrow = and i1 %13, %21 + %spec.select = zext i1 %narrow to i32 br label %41 -37: ; preds = %30 - %38 = icmp sgt i32 %26, 0 - br i1 %38, label %39, label %40 - -39: ; preds = %37 - %not.40 = xor i1 %13, true - br label %41 - -40: ; preds = %37 - %not. = xor i1 %20, true +40: ; preds = %30 + %39 = icmp sgt i32 %24, 0 + %40 = zext i1 %.not44 to i32 + %spec.select45 = select i1 %39, i32 %40, i32 %.033 br label %41 -41: ; preds = %28, %36, %31, %34, %39, %40, %16 - %.0.shrunk = phi i1 [ false, %16 ], [ %35, %34 ], [ %not.40, %39 ], [ %not., %40 ], [ true, %31 ], [ %narrow, %36 ], [ %spec.select, %28 ] - %.0 = zext i1 %.0.shrunk to i32 +41: ; preds = %38, %36, %31, %34, %27, %26, %16 + %.0.shrunk = phi i32 [ 0, %15 ], [ %36, %34 ], [ 0, %26 ], [ %29, %27 ], [ 1, %31 ], [ %spec.select, %37 ], [ %spec.select45, %38 ] ret i32 %.0 } diff --git a/bench/ripgrep-rs/optimized/1en8ulv4lf1lnd4m.ll b/bench/ripgrep-rs/optimized/1en8ulv4lf1lnd4m.ll index 90f035339f3..aea6cfb5550 100644 --- a/bench/ripgrep-rs/optimized/1en8ulv4lf1lnd4m.ll +++ b/bench/ripgrep-rs/optimized/1en8ulv4lf1lnd4m.ll @@ -923,8 +923,6 @@ default.unreachable: ; preds = %2 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %1, i64 2 %7 = load i32, ptr %6, align 1, !alias.scope !178, !noalias !181 - %.sroa.18.sroa.6.0.extract.shift = and i32 %7, -256 - %8 = and i32 %7, 255 br label %_ZN12grep_printer5color9SpecValue10merge_into17h1295fde2aeb3836aE.exit 9: ; preds = %2 @@ -950,12 +948,11 @@ switch.lookup: ; preds = %2 br label %_ZN12grep_printer5color9SpecValue10merge_into17h1295fde2aeb3836aE.exit _ZN12grep_printer5color9SpecValue10merge_into17h1295fde2aeb3836aE.exit: ; preds = %switch.lookup, %2, %5, %9 - %.sroa.7.0 = phi i8 [ 0, %5 ], [ 0, %9 ], [ %4, %2 ], [ %switch.masked, %switch.lookup ] - %.sroa.10.0 = phi i8 [ 0, %5 ], [ 0, %9 ], [ %4, %2 ], [ %switch.masked9, %switch.lookup ] - %.sroa.18.sroa.6.sroa.0.0 = phi i32 [ %.sroa.18.sroa.6.0.extract.shift, %5 ], [ 0, %9 ], [ 0, %2 ], [ 0, %switch.lookup ] - %.sroa.18.sroa.0.0 = phi i32 [ %8, %5 ], [ 11, %9 ], [ 11, %2 ], [ 11, %switch.lookup ] - %.sroa.21.0 = phi i32 [ 11, %5 ], [ %11, %9 ], [ 11, %2 ], [ 11, %switch.lookup ] - %.sroa.0.0 = phi i8 [ 0, %5 ], [ 0, %9 ], [ %4, %2 ], [ %switch.masked13, %switch.lookup ] + %.sroa.7.0 = phi i8 [ 0, %5 ], [ 0, %8 ], [ %4, %2 ], [ %switch.masked, %switch.lookup ] + %.sroa.10.0 = phi i8 [ 0, %5 ], [ 0, %8 ], [ %4, %2 ], [ %switch.masked9, %switch.lookup ] + %.sroa.18.sroa.6.sroa.0.0 = phi i32 [ %7, %5 ], [ 11, %8 ], [ 11, %2 ], [ 11, %switch.lookup ] + %.sroa.18.sroa.0.0 = phi i32 [ 11, %5 ], [ %11, %8 ], [ 11, %2 ], [ 11, %switch.lookup ] + %.sroa.21.0 = phi i8 [ 0, %5 ], [ 0, %8 ], [ %4, %2 ], [ %switch.masked13, %switch.lookup ] store i8 %.sroa.0.0, ptr %0, align 1 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 1 store i8 %.sroa.7.0, ptr %.sroa.7.0..sroa_idx, align 1 @@ -970,8 +967,7 @@ _ZN12grep_printer5color9SpecValue10merge_into17h1295fde2aeb3836aE.exit: ; preds %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 6 store i8 0, ptr %.sroa.16.0..sroa_idx, align 1 %.sroa.18.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 7 - %.sroa.18.sroa.0.0.insert.insert = or disjoint i32 %.sroa.18.sroa.0.0, %.sroa.18.sroa.6.sroa.0.0 - store i32 %.sroa.18.sroa.0.0.insert.insert, ptr %.sroa.18.0..sroa_idx, align 1 + store i32 %.sroa.18.sroa.6.sroa.0.0, ptr %.sroa.18.0..sroa_idx, align 1 %.sroa.21.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 11 store i32 %.sroa.21.0, ptr %.sroa.21.0..sroa_idx, align 1 ret void diff --git a/bench/ruby/optimized/ipsocket.ll b/bench/ruby/optimized/ipsocket.ll index 384548bdd86..31fd71a07c7 100644 --- a/bench/ruby/optimized/ipsocket.ll +++ b/bench/ruby/optimized/ipsocket.ll @@ -2198,14 +2198,16 @@ any_addrinfos.exit676.thread: ; preds = %579, %.loopexit949. %695 = icmp eq i64 %.fca.0.load.i638.fr, %683 %.not11.i684 = icmp sge i64 %.fca.1.load.i641.fr, %694 %or.cond.not.i685 = select i1 %695, i1 %.not11.i684, i1 false - br label %is_timeout_tv.exit688 + %696 = or i1 %672, %or.cond.not.i685 + br i1 %696, label %is_timeout_tv.exit688.thread, label %any_addrinfos.exit.backedge -is_timeout_tv.exit688: ; preds = %681, %685, %691 - %.0.i687 = phi i1 [ false, %681 ], [ false, %685 ], [ %or.cond.not.i685, %691 ] - %or.cond47 = or i1 %672, %.0.i687 - br i1 %or.cond47, label %is_timeout_tv.exit688.thread, label %any_addrinfos.exit.backedge +is_timeout_tv.exit688: ; preds = %691, %is_timeout_tv.exit694, %.thread880, %is_timeout_tv.exit694.thread, %is_timeout_tv.exit688 + br label %any_addrinfos.exit + +is_timeout_tv.exit688:; preds = %681, %685 + br i1 %672, label %is_timeout_tv.exit688.thread, label %any_addrinfos.exit.backedge -is_timeout_tv.exit688.thread: ; preds = %689, %is_timeout_tv.exit688 +is_timeout_tv.exit688.thread: ; preds = %691, %689, %is_timeout_tv.exit688 %.not.i689 = icmp eq ptr %.7500, null br i1 %.not.i689, label %is_timeout_tv.exit694.thread, label %696 @@ -2234,10 +2236,7 @@ is_timeout_tv.exit694: ; preds = %703 %brmerge916 = or i1 %675, %or.cond.not.i691.not.not br i1 %brmerge916, label %is_timeout_tv.exit694.thread896, label %any_addrinfos.exit.backedge -any_addrinfos.exit.backedge: ; preds = %is_timeout_tv.exit694, %.thread880, %is_timeout_tv.exit694.thread, %is_timeout_tv.exit688 - br label %any_addrinfos.exit - -is_timeout_tv.exit694.thread: ; preds = %699, %is_timeout_tv.exit688.thread +any_addrinfos.exit.backedge: ; preds = %699, %is_timeout_tv.exit688.thread br i1 %675, label %is_timeout_tv.exit694.thread896, label %any_addrinfos.exit.backedge is_timeout_tv.exit694.thread896: ; preds = %is_timeout_tv.exit694, %703, %is_timeout_tv.exit694.thread @@ -2267,7 +2266,7 @@ pick_addrinfo.exit.thread899: ; preds = %344, %pick_addrinfo br label %719 719: ; preds = %716, %pick_addrinfo.exit.thread899 - %720 = phi i64 [ %718, %716 ], [ %714, %pick_addrinfo.exit.thread899 ] + %720 = phi i64 [ %718, %717 ], [ %714, %pick_addrinfo.exit.thread899 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) diff --git a/bench/ruby/optimized/time.ll b/bench/ruby/optimized/time.ll index e2226f6985f..cf7db767f73 100644 --- a/bench/ruby/optimized/time.ll +++ b/bench/ruby/optimized/time.ll @@ -9564,7 +9564,7 @@ obj2ubits.exit: ; preds = %obj2int.exit.i 57: ; preds = %33, %obj2ubits.exit %58 = phi i64 [ %56, %obj2ubits.exit ], [ 8192, %33 ] - %59 = and i64 %34, -536862721 + %59 = and i64 %34, -8380417 %60 = or disjoint i64 %58, %59 %61 = icmp eq i64 %5, 4 br i1 %61, label %83, label %62 @@ -9615,11 +9615,11 @@ obj2int.exit.i17: ; preds = %76, %74 obj2ubits.exit20: ; preds = %obj2int.exit.i17 %81 = shl i64 %.0.i3.i.i18, 18 %82 = and i64 %81, 8126464 - br label %83 + %83 = or disjoint i64 %82, %60 + br label %84 83: ; preds = %57, %obj2ubits.exit20 - %84 = phi i64 [ %82, %obj2ubits.exit20 ], [ 0, %57 ] - %85 = or disjoint i64 %84, %60 + %84 = phi i64 [ %83, %obj2ubits.exit20 ], [ %60, %57 ] %86 = icmp eq i64 %6, 4 br i1 %86, label %108, label %87 @@ -9672,13 +9672,14 @@ obj2ubits.exit28: ; preds = %obj2int.exit.i25 br label %108 108: ; preds = %83, %obj2ubits.exit28 - %109 = phi i64 [ %107, %obj2ubits.exit28 ], [ 0, %83 ] - %110 = or disjoint i64 %109, %85 - %111 = icmp eq i64 %7, 4 - br i1 %111, label %112, label %114 + %109 = phi i64 [ %107, %obj2ubits.exit28 ], [ 0, %84 ] + %110 = and i64 %84, -528482305 + %111 = or disjoint i64 %109, %110 + %112 = icmp eq i64 %7, 4 + br i1 %112, label %113, label %115 112: ; preds = %108 - %113 = and i64 %110, -270582939649 + %113 = and i64 %111, -270582939649 br label %121 114: ; preds = %108 @@ -9686,15 +9687,15 @@ obj2ubits.exit28: ; preds = %obj2int.exit.i25 %115 = call fastcc i32 @obj2subsecx(i64 noundef %7, ptr noundef %11) %116 = zext nneg i32 %115 to i64 %117 = shl nuw nsw i64 %116, 32 - %118 = and i64 %110, -270582939649 + %118 = and i64 %111, -270582939649 %119 = or disjoint i64 %117, %118 %120 = load i64, ptr %11, align 8, !tbaa !11 call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %121 121: ; preds = %114, %112 - %.sink29 = phi i64 [ %113, %112 ], [ %119, %114 ] - %.sink = phi i64 [ 1, %112 ], [ %120, %114 ] + %.sink29 = phi i64 [ %113, %113 ], [ %119, %115 ] + %.sink = phi i64 [ 1, %113 ], [ %120, %115 ] store i64 %.sink29, ptr %12, align 8 %122 = getelementptr inbounds nuw i8, ptr %10, i64 8 store i64 %.sink, ptr %122, align 8, !tbaa !82 diff --git a/bench/rust-analyzer-rs/optimized/2ajuxklycdgazr2a.ll b/bench/rust-analyzer-rs/optimized/2ajuxklycdgazr2a.ll index 3b0068f14f2..a89c18536b5 100644 --- a/bench/rust-analyzer-rs/optimized/2ajuxklycdgazr2a.ll +++ b/bench/rust-analyzer-rs/optimized/2ajuxklycdgazr2a.ll @@ -39181,7 +39181,6 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %21, %.thread, br i1 %75, label %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h3018705fadd8a8beE.exit.thread.i", label %"_ZN4core6option15Option$LT$T$GT$6filter17hf8552f46b5f36961E.exit" "_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h3018705fadd8a8beE.exit.thread.i": ; preds = %.noexc38, %63 - %.sroa.055.sroa.5.0.extract.shift = and i64 %.sroa.061.0.copyload, -4294967296 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.657, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.664.0..sroa_idx, i64 3, i1 false) br label %"_ZN4core6option15Option$LT$T$GT$6filter17hf8552f46b5f36961E.exit" @@ -39190,8 +39189,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %21, %.thread, %.sroa.758.0 = phi i32 [ %.sroa.765.0.copyload, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h3018705fadd8a8beE.exit.thread.i" ], [ undef, %"_ZN4core6option15Option$LT$T$GT$6filter17h6a9a67e95646d520E.exit" ], [ undef, %.noexc38 ], [ undef, %72 ] %.sroa.859.0 = phi i64 [ %.sroa.866.0.copyload, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h3018705fadd8a8beE.exit.thread.i" ], [ undef, %"_ZN4core6option15Option$LT$T$GT$6filter17h6a9a67e95646d520E.exit" ], [ undef, %.noexc38 ], [ undef, %72 ] %.sroa.960.0 = phi i64 [ %.sroa.967.0.copyload, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h3018705fadd8a8beE.exit.thread.i" ], [ undef, %"_ZN4core6option15Option$LT$T$GT$6filter17h6a9a67e95646d520E.exit" ], [ undef, %.noexc38 ], [ undef, %72 ] - %.sroa.055.sroa.0.0 = phi i64 [ %62, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h3018705fadd8a8beE.exit.thread.i" ], [ 3, %"_ZN4core6option15Option$LT$T$GT$6filter17h6a9a67e95646d520E.exit" ], [ 3, %.noexc38 ], [ 3, %72 ] - %.sroa.055.sroa.5.0 = phi i64 [ %.sroa.055.sroa.5.0.extract.shift, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h3018705fadd8a8beE.exit.thread.i" ], [ 0, %"_ZN4core6option15Option$LT$T$GT$6filter17h6a9a67e95646d520E.exit" ], [ 0, %.noexc38 ], [ 0, %72 ] + %.sroa.055.sroa.0.0 = phi i64 [ %.sroa.061.0.copyload, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h3018705fadd8a8beE.exit.thread.i" ], [ 3, %"_ZN4core6option15Option$LT$T$GT$6filter17h6a9a67e95646d520E.exit" ], [ 3, %.noexc38 ], [ 3, %72 ] %76 = getelementptr inbounds nuw i8, ptr %0, i64 72 store i8 %.sroa.0.0, ptr %76, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 73 @@ -39216,8 +39214,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %21, %.thread, store i64 %.sroa.748.0, ptr %.sroa.748.0..sroa_idx, align 4 %.sroa.849.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 48 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %.sroa.849.0..sroa_idx, ptr noundef nonnull align 4 dereferenceable(24) %.sroa.849, i64 24, i1 false) - %.sroa.055.sroa.0.0.insert.insert = or disjoint i64 %.sroa.055.sroa.5.0, %.sroa.055.sroa.0.0 - store i64 %.sroa.055.sroa.0.0.insert.insert, ptr %0, align 4 + store i64 %.sroa.055.sroa.5.0, ptr %0, align 4 %.sroa.556.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i8 %.sroa.556.0, ptr %.sroa.556.0..sroa_idx, align 4 %.sroa.657.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 @@ -39651,7 +39648,6 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %21, %.thread, br i1 %75, label %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h58b1929ac9e4b098E.exit.thread.i", label %"_ZN4core6option15Option$LT$T$GT$6filter17hd5f2856acf577916E.exit" "_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h58b1929ac9e4b098E.exit.thread.i": ; preds = %.noexc38, %63 - %.sroa.055.sroa.5.0.extract.shift = and i64 %.sroa.061.0.copyload, -4294967296 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.657, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.664.0..sroa_idx, i64 3, i1 false) br label %"_ZN4core6option15Option$LT$T$GT$6filter17hd5f2856acf577916E.exit" @@ -39660,8 +39656,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %21, %.thread, %.sroa.758.0 = phi i32 [ %.sroa.765.0.copyload, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h58b1929ac9e4b098E.exit.thread.i" ], [ undef, %"_ZN4core6option15Option$LT$T$GT$6filter17he07fa41cd37c6864E.exit" ], [ undef, %.noexc38 ], [ undef, %72 ] %.sroa.859.0 = phi i64 [ %.sroa.866.0.copyload, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h58b1929ac9e4b098E.exit.thread.i" ], [ undef, %"_ZN4core6option15Option$LT$T$GT$6filter17he07fa41cd37c6864E.exit" ], [ undef, %.noexc38 ], [ undef, %72 ] %.sroa.960.0 = phi i64 [ %.sroa.967.0.copyload, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h58b1929ac9e4b098E.exit.thread.i" ], [ undef, %"_ZN4core6option15Option$LT$T$GT$6filter17he07fa41cd37c6864E.exit" ], [ undef, %.noexc38 ], [ undef, %72 ] - %.sroa.055.sroa.0.0 = phi i64 [ %62, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h58b1929ac9e4b098E.exit.thread.i" ], [ 3, %"_ZN4core6option15Option$LT$T$GT$6filter17he07fa41cd37c6864E.exit" ], [ 3, %.noexc38 ], [ 3, %72 ] - %.sroa.055.sroa.5.0 = phi i64 [ %.sroa.055.sroa.5.0.extract.shift, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h58b1929ac9e4b098E.exit.thread.i" ], [ 0, %"_ZN4core6option15Option$LT$T$GT$6filter17he07fa41cd37c6864E.exit" ], [ 0, %.noexc38 ], [ 0, %72 ] + %.sroa.055.sroa.0.0 = phi i64 [ %.sroa.061.0.copyload, %"_ZN7hir_def6per_ns5PerNs17filter_visibility28_$u7b$$u7b$closure$u7d$$u7d$17h58b1929ac9e4b098E.exit.thread.i" ], [ 3, %"_ZN4core6option15Option$LT$T$GT$6filter17he07fa41cd37c6864E.exit" ], [ 3, %.noexc38 ], [ 3, %72 ] %76 = getelementptr inbounds nuw i8, ptr %0, i64 72 store i8 %.sroa.0.0, ptr %76, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 73 @@ -39686,8 +39681,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %21, %.thread, store i64 %.sroa.748.0, ptr %.sroa.748.0..sroa_idx, align 4 %.sroa.849.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 48 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %.sroa.849.0..sroa_idx, ptr noundef nonnull align 4 dereferenceable(24) %.sroa.849, i64 24, i1 false) - %.sroa.055.sroa.0.0.insert.insert = or disjoint i64 %.sroa.055.sroa.5.0, %.sroa.055.sroa.0.0 - store i64 %.sroa.055.sroa.0.0.insert.insert, ptr %0, align 4 + store i64 %.sroa.055.sroa.5.0, ptr %0, align 4 %.sroa.556.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i8 %.sroa.556.0, ptr %.sroa.556.0..sroa_idx, align 4 %.sroa.657.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 diff --git a/bench/rust-analyzer-rs/optimized/hajha7nvyoiczny.ll b/bench/rust-analyzer-rs/optimized/hajha7nvyoiczny.ll index 5d95d6d6854..4f6522f7e5d 100644 --- a/bench/rust-analyzer-rs/optimized/hajha7nvyoiczny.ll +++ b/bench/rust-analyzer-rs/optimized/hajha7nvyoiczny.ll @@ -21307,12 +21307,12 @@ _ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit: ; pre %53 = load i8, ptr %28, align 1, !range !1487, !noalias !5592, !noundef !9 call void @llvm.lifetime.end.p0(ptr nonnull %28), !noalias !5592 %54 = trunc nuw i8 %53 to i1 + %55 = or i1 %44, %54 br label %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit112 _ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit112: ; preds = %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit, %51 - %.0.i111 = phi i1 [ %54, %51 ], [ true, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit ] - %55 = or i1 %44, %.0.i111 - %56 = zext i1 %55 to i8 + %.0.i111 = phi i1 [ %55, %51 ], [ true, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit ] + %56 = zext i1 %.0.i111 to i8 store i8 %56, ptr %1, align 1, !noalias !5589 %57 = getelementptr inbounds nuw i8, ptr %0, i64 12 %58 = load i32, ptr %57, align 4, !range !1493, !noundef !9 @@ -21601,7 +21601,7 @@ _ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit126: ; %199 = tail call noundef align 16 dereferenceable(64) ptr @"_ZN110_$LT$hir_def..body..Body$u20$as$u20$core..ops..index..Index$LT$la_arena..Idx$LT$hir_def..hir..Expr$GT$$GT$$GT$5index17h0a3ee76193f793b2E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(184) %2, i32 noundef %198, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.bc7b273225b5f56df674db017bc9edca.568.llvm.3864848197730831337), !noalias !5670 %200 = load i8, ptr %199, align 16, !range !5582, !noalias !5670, !noundef !9 %201 = icmp eq i8 %200, 28 - br i1 %201, label %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit128, label %202 + br i1 %201, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h30a5e2b9927ac740E.exit.sink.split", label %202 202: ; preds = %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit126 call void @llvm.lifetime.start.p0(ptr nonnull %20), !noalias !5673 @@ -21611,11 +21611,7 @@ _ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit126: ; %204 = load i8, ptr %20, align 1, !range !1487, !noalias !5673, !noundef !9 call void @llvm.lifetime.end.p0(ptr nonnull %20), !noalias !5673 %205 = trunc nuw i8 %204 to i1 - br label %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit128 - -_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit128: ; preds = %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit126, %202 - %.0.i127 = phi i1 [ %205, %202 ], [ true, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit126 ] - %206 = or i1 %195, %.0.i127 + %206 = or i1 %195, %205 %207 = zext i1 %206 to i8 br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h30a5e2b9927ac740E.exit.sink.split" @@ -21655,7 +21651,7 @@ _ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit130: ; %227 = tail call noundef align 16 dereferenceable(64) ptr @"_ZN110_$LT$hir_def..body..Body$u20$as$u20$core..ops..index..Index$LT$la_arena..Idx$LT$hir_def..hir..Expr$GT$$GT$$GT$5index17h0a3ee76193f793b2E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(184) %2, i32 noundef %226, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.bc7b273225b5f56df674db017bc9edca.568.llvm.3864848197730831337), !noalias !5682 %228 = load i8, ptr %227, align 16, !range !5582, !noalias !5682, !noundef !9 %229 = icmp eq i8 %228, 28 - br i1 %229, label %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit132, label %230 + br i1 %229, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h30a5e2b9927ac740E.exit.sink.split", label %230 230: ; preds = %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit130 call void @llvm.lifetime.start.p0(ptr nonnull %18), !noalias !5685 @@ -21665,11 +21661,7 @@ _ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit130: ; %232 = load i8, ptr %18, align 1, !range !1487, !noalias !5685, !noundef !9 call void @llvm.lifetime.end.p0(ptr nonnull %18), !noalias !5685 %233 = trunc nuw i8 %232 to i1 - br label %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit132 - -_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit132: ; preds = %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit130, %230 - %.0.i131 = phi i1 [ %233, %230 ], [ true, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit130 ] - %234 = or i1 %223, %.0.i131 + %234 = or i1 %223, %233 %235 = zext i1 %234 to i8 br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h30a5e2b9927ac740E.exit.sink.split" @@ -21769,7 +21761,7 @@ _ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit136: ; %281 = getelementptr inbounds nuw i8, ptr %0, i64 16 %282 = load i32, ptr %281, align 16, !noundef !9 %283 = tail call noundef zeroext i1 @_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE(ptr noalias noundef nonnull readonly align 8 dereferenceable(184) %2, i32 noundef %282), !noalias !5711 - %284 = or i1 %55, %283 + %284 = or i1 %.0.i111, %283 %285 = zext i1 %284 to i8 br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h30a5e2b9927ac740E.exit.sink.split" @@ -22095,8 +22087,8 @@ _ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit150: ; %443 = zext i1 %442 to i8 br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h30a5e2b9927ac740E.exit.sink.split" -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h30a5e2b9927ac740E.exit.sink.split": ; preds = %431, %404, %376, %280, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit136, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit134, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit132, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit128, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit150, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit124, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit116, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit114, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit138, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit146 - %.sink278 = phi i8 [ %360, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit146 ], [ %310, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit138 ], [ %69, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit114 ], [ %80, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit116 ], [ %175, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit124 ], [ %392, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit150 ], [ %207, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit128 ], [ %235, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit132 ], [ %246, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit134 ], [ %279, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit136 ], [ %285, %280 ], [ %382, %376 ], [ %411, %404 ], [ %443, %431 ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h30a5e2b9927ac740E.exit.sink.split": ; preds = %230, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit130, %202, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit126, %431, %404, %376, %280, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit136, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit134, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit150, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit124, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit116, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit114, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit138, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit146 + %.sink278 = phi i8 [ %360, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit146 ], [ %310, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit138 ], [ %69, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit114 ], [ %80, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit116 ], [ %175, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit124 ], [ %392, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit150 ], [ %246, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit134 ], [ %279, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit136 ], [ %285, %280 ], [ %382, %376 ], [ %411, %404 ], [ %443, %431 ], [ %207, %202 ], [ 1, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit126 ], [ %235, %230 ], [ 1, %_ZN6hir_ty9consteval13eval_to_const11has_closure17h56ee66f17f1a05abE.exit130 ] store i8 %.sink278, ptr %1, align 1, !noalias !9 br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h30a5e2b9927ac740E.exit" diff --git a/bench/rustfmt-rs/optimized/5genfix4t5066ss.ll b/bench/rustfmt-rs/optimized/5genfix4t5066ss.ll index 850c57a57bb..1dd99bad031 100644 --- a/bench/rustfmt-rs/optimized/5genfix4t5066ss.ll +++ b/bench/rustfmt-rs/optimized/5genfix4t5066ss.ll @@ -35196,25 +35196,19 @@ define noundef zeroext i1 @"_ZN15rustfmt_nightly6config5lists109_$LT$impl$u20$ru ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define noundef zeroext i1 @"_ZN15rustfmt_nightly6config5lists109_$LT$impl$u20$rustfmt_nightly..config..lists..__define_config_type_on_enum_SeparatorPlace..SeparatorPlace$GT$11from_tactic17h2b72c829b92232c5E"(i1 noundef zeroext %0, i64 noundef %1, i64 %2, ptr noalias noundef nonnull readonly align 1 captures(none) %3, i64 noundef %4) unnamed_addr #11 { - %6 = icmp eq i64 %1, 0 - br i1 %6, label %10, label %7 - -7: ; preds = %5 + %6 = icmp ne i64 %1, 0 %.not.i = icmp eq i64 %4, 1 - br i1 %.not.i, label %8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h884929514755f779E.exit" + %or.cond = and i1 %6, %.not.i + br i1 %or.cond, label %7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h884929514755f779E.exit" -8: ; preds = %7 +8: ; preds = %5 %lhsc = load i8, ptr %3, align 1 %9 = icmp eq i8 %lhsc, 44 + %9 = or i1 %0, %8 br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h884929514755f779E.exit" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h884929514755f779E.exit": ; preds = %7, %8 - %.0.i = phi i1 [ %9, %8 ], [ false, %7 ] - %. = or i1 %0, %.0.i - br label %10 - -10: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h884929514755f779E.exit", %5 - %.0.shrunk = phi i1 [ %0, %5 ], [ %., %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h884929514755f779E.exit" ] +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h884929514755f779E.exit": ; preds = %7, %5 + %.0.i = phi i1 [ %0, %5 ], [ %9, %7 ] ret i1 %.0.shrunk } diff --git a/bench/sdl/optimized/SDL_gpu_vulkan.ll b/bench/sdl/optimized/SDL_gpu_vulkan.ll index a82ff39977d..18b32e44e5d 100644 --- a/bench/sdl/optimized/SDL_gpu_vulkan.ll +++ b/bench/sdl/optimized/SDL_gpu_vulkan.ll @@ -19513,15 +19513,11 @@ define internal fastcc noundef ptr @VULKAN_INTERNAL_CreateTexture(ptr noundef %0 br label %SwizzleForSDLFormat.exit SwizzleForSDLFormat.exit: ; preds = %3, %17, %18 - %.sroa.7.0.i = phi i64 [ 6, %17 ], [ 0, %18 ], [ 1, %3 ] - %.sroa.4.0.i = phi i64 [ 12884901888, %17 ], [ 0, %18 ], [ 4294967296, %3 ] - %.sroa.0.0.i = phi i64 [ 4, %17 ], [ 0, %18 ], [ 1, %3 ] - %.sroa.11.0.i = phi i64 [ 21474836480, %17 ], [ 0, %18 ], [ 12884901888, %3 ] - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.0.0.i, %.sroa.4.0.i - %.sroa.7.8.insert.insert.i = or disjoint i64 %.sroa.11.0.i, %.sroa.7.0.i - store i64 %.sroa.0.0.insert.insert.i, ptr %14, align 8 + %.sroa.7.0.i = phi i64 [ 12884901892, %17 ], [ 0, %18 ], [ 4294967297, %3 ] + %.sroa.4.0.i = phi i64 [ 21474836486, %17 ], [ 0, %18 ], [ 12884901889, %3 ] + store i64 %.sroa.4.0.i, ptr %14, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 48 - store i64 %.sroa.7.8.insert.insert.i, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %.sroa.7.0.i, ptr %.sroa.4.0..sroa_idx, align 8 %19 = getelementptr inbounds nuw i8, ptr %13, i64 60 store i32 %.279, ptr %19, align 4 %20 = getelementptr inbounds nuw i8, ptr %2, i64 8 diff --git a/bench/sdl/optimized/e_fmod.ll b/bench/sdl/optimized/e_fmod.ll index 8dfe8bc4aba..f417cd46f37 100644 --- a/bench/sdl/optimized/e_fmod.ll +++ b/bench/sdl/optimized/e_fmod.ll @@ -279,57 +279,58 @@ define hidden double @SDL_uclibc_fmod(double noundef %0, double noundef %1) loca %.3159.lcssa = phi i32 [ %.2158, %.preheader ], [ %131, %.lr.ph213 ] %.4.lcssa = phi i32 [ %.3, %.preheader ], [ %130, %.lr.ph213 ] %133 = icmp sgt i32 %.3159.lcssa, -1023 - br i1 %133, label %134, label %139 + br i1 %133, label %134, label %140 134: ; preds = %._crit_edge214 %135 = add nsw i32 %.4170.lcssa, -1048576 %136 = shl i32 %.3159.lcssa, 20 %137 = add i32 %136, 1072693248 %138 = or i32 %135, %137 - br label %158 - -139: ; preds = %._crit_edge214 - %140 = sub nuw nsw i32 -1022, %.3159.lcssa - %141 = icmp samesign ugt i32 %.3159.lcssa, -1043 - br i1 %141, label %142, label %148 - -142: ; preds = %139 - %143 = lshr i32 %.4.lcssa, %140 - %144 = add nsw i32 %.3159.lcssa, 1054 - %145 = shl i32 %.4170.lcssa, %144 - %146 = or i32 %143, %145 - %147 = lshr i32 %.4170.lcssa, %140 - br label %158 - -148: ; preds = %139 - %149 = icmp samesign ugt i32 %.3159.lcssa, -1054 - br i1 %149, label %150, label %155 - -150: ; preds = %148 - %151 = add nsw i32 %.3159.lcssa, 1054 - %152 = shl i32 %.4170.lcssa, %151 - %153 = lshr i32 %.4.lcssa, %140 - %154 = or i32 %152, %153 - br label %158 - -155: ; preds = %148 - %156 = sub nuw nsw i32 -1054, %.3159.lcssa - %157 = lshr i32 %.4170.lcssa, %156 - br label %158 - -158: ; preds = %150, %155, %142, %134 - %.5171.sink = phi i32 [ %138, %134 ], [ %147, %142 ], [ %5, %150 ], [ %5, %155 ] - %.5.sink = phi i32 [ %.4.lcssa, %134 ], [ %146, %142 ], [ %154, %150 ], [ %157, %155 ] - %159 = or i32 %.5171.sink, %5 - %.sroa.0.4.insert.ext = zext i32 %159 to i64 + %139 = or i32 %138, %5 + br label %160 + +140:; preds = %._crit_edge214 + %141 = sub nuw nsw i32 -1022, %.3159.lcssa + %142 = icmp samesign ugt i32 %.3159.lcssa, -1043 + br i1 %142, label %143, label %150 + +143:; preds = %140 + %144 = lshr i32 %.4.lcssa, %141 + %145 = add nsw i32 %.3159.lcssa, 1054 + %146 = shl i32 %.4170.lcssa, %145 + %147 = or i32 %144, %146 + %148 = lshr i32 %.4170.lcssa, %141 + %149 = or disjoint i32 %148, %5 + br label %160 + +150:; preds = %140 + %151 = icmp samesign ugt i32 %.3159.lcssa, -1054 + br i1 %151, label %152, label %157 + +152:; preds = %150 + %153 = add nsw i32 %.3159.lcssa, 1054 + %154 = shl i32 %.4170.lcssa, %153 + %155 = lshr i32 %.4.lcssa, %141 + %156 = or i32 %154, %155 + br label %160 + +157:; preds = %150 + %158 = sub nuw nsw i32 -1054, %.3159.lcssa + %159 = lshr i32 %.4170.lcssa, %158 + br label %160 + +160: ; preds = %152, %157, %143, %134 + %.5171.sink = phi i32 [ %139, %134 ], [ %149, %143 ], [ %5, %152 ], [ %5, %157 ] + %.5.sink = phi i32 [ %.4.lcssa, %134 ], [ %147, %143 ], [ %156, %152 ], [ %159, %157 ] + %.sroa.0.4.insert.ext = zext i32 %.5171.sink to i64 %.sroa.0.4.insert.shift = shl nuw i64 %.sroa.0.4.insert.ext, 32 %.sroa.0.0.insert.ext = zext i32 %.5.sink to i64 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.4.insert.shift, %.sroa.0.0.insert.ext %.0148 = bitcast i64 %.sroa.0.0.insert.insert to double br label %160 -160: ; preds = %20, %158, %125, %109, %25, %16 - %.0 = phi double [ %18, %16 ], [ %28, %25 ], [ %112, %109 ], [ %128, %125 ], [ %.0148, %158 ], [ %0, %20 ] +160: ; preds = %20, %160, %125, %109, %25, %16 + %.0 = phi double [ %18, %16 ], [ %28, %25 ], [ %112, %109 ], [ %128, %125 ], [ %.0148, %160 ], [ %0, %20 ] ret double %.0 } diff --git a/bench/sentencepiece/optimized/strutil.ll b/bench/sentencepiece/optimized/strutil.ll index a63bb387a7a..416fbec085a 100644 --- a/bench/sentencepiece/optimized/strutil.ll +++ b/bench/sentencepiece/optimized/strutil.ll @@ -7005,11 +7005,11 @@ switch.early.test: ; preds = %switch.early.test.l .preheader.thread829: ; preds = %.preheader367 %202 = icmp sgt i32 %1, 0 - br i1 %202, label %.lr.ph558.us.preheader, label %.critedge + br i1 %202, label %.lr.ph558.us.preheader, label %_ZN6google8protobuf13ascii_isspaceEc.exit318 .preheader.thread: ; preds = %.preheader374 %203 = icmp sgt i32 %1, 0 - br i1 %203, label %.lr.ph558.preheader, label %.critedge + br i1 %203, label %.lr.ph558.preheader, label %_ZN6google8protobuf13ascii_isspaceEc.exit318 .lr.ph558.lr.ph: ; preds = %.preheader br i1 %.not, label %.lr.ph558.us.preheader, label %.lr.ph558.preheader @@ -7194,11 +7194,11 @@ _ZN6google8protobuf13ascii_isspaceEc.exit319: ; preds = %234, %234, %234, %2 br label %.fold.split .fold.split: ; preds = %.outer, %.outer.us, %234, %234, %219, %219, %.fold.split.loopexit1231, %.fold.split.loopexit1202, %.preheader, %223 - %.13261 = phi i32 [ %224, %223 ], [ %.14262.ph, %.preheader ], [ %.13261.ph, %.fold.split.loopexit1202 ], [ %.13261.ph1232, %.fold.split.loopexit1231 ], [ %.14262556.us, %219 ], [ %.14262556.us, %219 ], [ %.14262556, %234 ], [ %.14262556, %234 ], [ %205, %.outer.us ], [ %227, %.outer ] - %.3236 = phi i32 [ %.1234339, %223 ], [ %.4237.ph, %.preheader ], [ %.4237.ph355576.us, %.fold.split.loopexit1202 ], [ %.4237.ph355576, %.fold.split.loopexit1231 ], [ %.4237.ph355576.us, %219 ], [ %.4237.ph355576.us, %219 ], [ %.4237.ph355576, %234 ], [ %.4237.ph355576, %234 ], [ %.5238.us, %.outer.us ], [ %.5238, %.outer ] - %.1230 = phi i32 [ %.0229342, %223 ], [ %.2231.ph, %.preheader ], [ %.2231.ph356577.us, %.fold.split.loopexit1202 ], [ %.2231.ph356577, %.fold.split.loopexit1231 ], [ %.2231.ph356577.us, %219 ], [ %.2231.ph356577.us, %219 ], [ %.2231.ph356577, %234 ], [ %.2231.ph356577, %234 ], [ %.3232.us, %.outer.us ], [ %.3232, %.outer ] - %.7221 = phi i32 [ %.3217347, %223 ], [ %.8222.ph, %.preheader ], [ %.8222.ph357578.us, %.fold.split.loopexit1202 ], [ %.8222.ph357578, %.fold.split.loopexit1231 ], [ %.8222.ph357578.us, %219 ], [ %.8222.ph357578.us, %219 ], [ %.8222.ph357578, %234 ], [ %.8222.ph357578, %234 ], [ %.9223.us, %.outer.us ], [ %.9223, %.outer ] - %.13 = phi ptr [ %225, %223 ], [ %.14.ph, %.preheader ], [ %206, %.fold.split.loopexit1202 ], [ %228, %.fold.split.loopexit1231 ], [ %.14557.us, %219 ], [ %.14557.us, %219 ], [ %.14557, %234 ], [ %.14557, %234 ], [ %206, %.outer.us ], [ %228, %.outer ] + %.13261 = phi i32 [ %224, %223 ], [ %.14262.ph, %.preheader ], [ %.13261.ph, %.fold.split.loopexit1201 ], [ %.13261.ph1232, %.fold.split.loopexit1230 ], [ %.14262556.us, %219 ], [ %.14262556.us, %219 ], [ %.14262556, %234 ], [ %.14262556, %234 ], [ %205, %.outer.us ], [ %227, %.outer ] + %.3236 = phi i32 [ %.1234339, %223 ], [ %.4237.ph, %.preheader ], [ %.4237.ph355576.us, %.fold.split.loopexit1201 ], [ %.4237.ph355576, %.fold.split.loopexit1230 ], [ %.4237.ph355576.us, %219 ], [ %.4237.ph355576.us, %219 ], [ %.4237.ph355576, %234 ], [ %.4237.ph355576, %234 ], [ %.5238.us, %.outer.us ], [ %.5238, %.outer ] + %.1230 = phi i32 [ %.0229342, %223 ], [ %.2231.ph, %.preheader ], [ %.2231.ph356577.us, %.fold.split.loopexit1201 ], [ %.2231.ph356577, %.fold.split.loopexit1230 ], [ %.2231.ph356577.us, %219 ], [ %.2231.ph356577.us, %219 ], [ %.2231.ph356577, %234 ], [ %.2231.ph356577, %234 ], [ %.3232.us, %.outer.us ], [ %.3232, %.outer ] + %.7221 = phi i32 [ %.3217347, %223 ], [ %.8222.ph, %.preheader ], [ %.8222.ph357578.us, %.fold.split.loopexit1201 ], [ %.8222.ph357578, %.fold.split.loopexit1230 ], [ %.8222.ph357578.us, %219 ], [ %.8222.ph357578.us, %219 ], [ %.8222.ph357578, %234 ], [ %.8222.ph357578, %234 ], [ %.9223.us, %.outer.us ], [ %.9223, %.outer ] + %.13 = phi ptr [ %225, %223 ], [ %.14.ph, %.preheader ], [ %206, %.fold.split.loopexit1201 ], [ %228, %.fold.split.loopexit1230 ], [ %.14557.us, %219 ], [ %.14557.us, %219 ], [ %.14557, %234 ], [ %.14557, %234 ], [ %206, %.outer.us ], [ %228, %.outer ] switch i32 %.1230, label %default.unreachable [ i32 0, label %._crit_edge i32 1, label %_ZN6google8protobuf13ascii_isspaceEc.exit318 @@ -7252,7 +7252,7 @@ default.unreachable: ; preds = %.fold.split %.6239 = phi i32 [ %.3236, %.fold.split ], [ %264, %263 ], [ %.pre, %268 ], [ %.pre, %265 ] %276 = phi i32 [ -1, %.fold.split ], [ -3, %263 ], [ -2, %268 ], [ -2, %265 ] %277 = icmp sgt i32 %.13261, 0 - br i1 %277, label %.lr.ph607, label %.critedge + br i1 %277, label %.lr.ph607, label %_ZN6google8protobuf13ascii_isspaceEc.exit318 .lr.ph607: ; preds = %._crit_edge, %_ZN6google8protobuf13ascii_isspaceEc.exit320.thread %.0606 = phi i32 [ %.1, %_ZN6google8protobuf13ascii_isspaceEc.exit320.thread ], [ 0, %._crit_edge ] @@ -7282,17 +7282,15 @@ _ZN6google8protobuf13ascii_isspaceEc.exit320.thread: ; preds = %.lr.ph607, %.lr. %283 = icmp sgt i32 %.15263604, 1 br i1 %283, label %.lr.ph607, label %.critedge, !llvm.loop !102 -.critedge: ; preds = %_ZN6google8protobuf13ascii_isspaceEc.exit320.thread, %.lr.ph607, %.preheader.thread, %.preheader.thread829, %._crit_edge - %284 = phi i32 [ %276, %._crit_edge ], [ -1, %.preheader.thread829 ], [ -1, %.preheader.thread ], [ %276, %.lr.ph607 ], [ %276, %_ZN6google8protobuf13ascii_isspaceEc.exit320.thread ] - %.6239856 = phi i32 [ %.6239, %._crit_edge ], [ 0, %.preheader.thread829 ], [ 0, %.preheader.thread ], [ %.6239, %.lr.ph607 ], [ %.6239, %_ZN6google8protobuf13ascii_isspaceEc.exit320.thread ] - %.0.lcssa = phi i32 [ 0, %._crit_edge ], [ 0, %.preheader.thread829 ], [ 0, %.preheader.thread ], [ %.1, %_ZN6google8protobuf13ascii_isspaceEc.exit320.thread ], [ %.0606, %.lr.ph607 ] - %285 = and i32 %.0.lcssa, %284 - %or.cond310 = icmp eq i32 %285, 0 - %286 = select i1 %or.cond310, i32 %.6239856, i32 -1 +.critedge: ; preds = %.lr.ph607, %_ZN6google8protobuf13ascii_isspaceEc.exit320.thread + %284 = phi i32 [ %.1, %_ZN6google8protobuf13ascii_isspaceEc.exit320.thread ], [ %.0606, %.lr.ph607 ] + %284 = and i32 %.0.lcssa.ph, %276 + %285 = icmp eq i32 %284, 0 + %286 = select i1 %285, i32 %.6239, i32 -1 br label %_ZN6google8protobuf13ascii_isspaceEc.exit318 -_ZN6google8protobuf13ascii_isspaceEc.exit318: ; preds = %97, %242, %234, %219, %.lr.ph607, %221, %.fold.split, %257, %266, %.critedge - %.0245 = phi i32 [ -1, %.fold.split ], [ -1, %257 ], [ -1, %266 ], [ %286, %.critedge ], [ -1, %221 ], [ -1, %.lr.ph607 ], [ -1, %219 ], [ -1, %234 ], [ -1, %242 ], [ -1, %97 ] +_ZN6google8protobuf13ascii_isspaceEc.exit318: ; preds = %97, %242, %234, %219, %.lr.ph607, %.preheader.thread, %.preheader.thread829, %._crit_edge, %.critedge, %221, %.fold.split, %257, %266 + %.0245 = phi i32 [ -1, %.fold.split ], [ -1, %257 ], [ -1, %266 ], [ -1, %221 ], [ %.6239, %._crit_edge ], [ %286, %.critedge.loopexit ], [ 0, %.preheader.thread829 ], [ 0, %.preheader.thread ], [ -1, %.lr.ph607 ], [ -1, %219 ], [ -1, %234 ], [ -1, %242 ], [ -1, %97 ] ret i32 %.0245 } diff --git a/bench/slurm/optimized/topology_block.ll b/bench/slurm/optimized/topology_block.ll index 14ae280d13c..49fdf84299c 100644 --- a/bench/slurm/optimized/topology_block.ll +++ b/bench/slurm/optimized/topology_block.ll @@ -1027,19 +1027,16 @@ define dso_local i32 @topology_p_get_fragmentation(ptr noundef %0) local_unnamed call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %2, i8 0, i64 16, i1 false) %3 = load i32, ptr @block_record_cnt, align 4 %4 = icmp sgt i32 %3, 0 - br i1 %4, label %.lr.ph41, label %.._crit_edge_crit_edge + br i1 %4, label %.lr.ph41, label %._crit_edge -.._crit_edge_crit_edge: ; preds = %1 - %.pre58 = load i16, ptr @bblock_node_cnt, align 2 - %.pre59 = zext i16 %.pre58 to i32 +.._crit_edge_crit_edge: ; preds = %.loopexit + %5 = mul i32 %.3, %17 br label %._crit_edge -._crit_edge: ; preds = %.loopexit, %.._crit_edge_crit_edge - %.pre-phi = phi i32 [ %.pre59, %.._crit_edge_crit_edge ], [ %17, %.loopexit ] - %.027.lcssa = phi i32 [ 0, %.._crit_edge_crit_edge ], [ %.3, %.loopexit ] - %5 = mul i32 %.027.lcssa, %.pre-phi +._crit_edge: ; preds = %1, %.._crit_edge_crit_edge + %.pre-phi = phi i32 [ %5, %._crit_edge.loopexit ], [ 0, %1 ] %6 = load i32, ptr @blocks_nodes_cnt, align 4 - %7 = add i32 %5, %6 + %7 = add i32 %.pre-phi, %6 %8 = load ptr, ptr @blocks_nodes_bitmap, align 8 %9 = tail call i32 @slurm_bit_overlap(ptr noundef %0, ptr noundef %8) #9 %10 = sub i32 %7, %9 @@ -1133,7 +1130,7 @@ define dso_local i32 @topology_p_get_fragmentation(ptr noundef %0) local_unnamed %indvars.iv.next53 = add nuw nsw i64 %indvars.iv52, 1 %37 = sext i32 %.pre57 to i64 %38 = icmp slt i64 %indvars.iv.next53, %37 - br i1 %38, label %.lr.ph41, label %._crit_edge, !llvm.loop !26 + br i1 %38, label %.lr.ph41, label %._crit_edge.loopexit, !llvm.loop !26 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) diff --git a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll index 770705c8448..412b800e8b2 100644 --- a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll +++ b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll @@ -52,7 +52,7 @@ define noundef i16 @"_ZN9softposit5p16e17convert41_$LT$impl$u20$softposit..p16e1 br i1 %7, label %8, label %9 8: ; preds = %49, %14, %13, %6, %1, %17 - %.0 = phi i16 [ %.023, %17 ], [ 0, %1 ], [ -32768, %6 ], [ %., %13 ], [ %.34, %14 ], [ %.35, %49 ] + %.0 = phi i16 [ %.023, %17 ], [ 0, %1 ], [ -32768, %6 ], [ %., %13 ], [ %.34, %14 ], [ %.35, %50 ] ret i16 %.0 9: ; preds = %6 @@ -135,7 +135,7 @@ define noundef i16 @"_ZN9softposit5p16e17convert41_$LT$impl$u20$softposit..p16e1 br i1 %7, label %8, label %9 8: ; preds = %49, %14, %13, %6, %1, %17 - %.0 = phi i16 [ %.023, %17 ], [ 0, %1 ], [ -32768, %6 ], [ %., %13 ], [ %.34, %14 ], [ %.35, %49 ] + %.0 = phi i16 [ %.023, %17 ], [ 0, %1 ], [ -32768, %6 ], [ %., %13 ], [ %.34, %14 ], [ %.35, %50 ] ret i16 %.0 9: ; preds = %6 @@ -4643,7 +4643,7 @@ define noundef zeroext i1 @"_ZN72_$LT$softposit..p16e1..P16E1$u20$as$u20$num_tra } ; Function Attrs: nonlazybind uwtable -define range(i32 0, -65534) i32 @"_ZN59_$LT$softposit..p16e1..P16E1$u20$as$u20$num_traits..Num$GT$14from_str_radix17h4280cb1270eb223fE"(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, i32 noundef %2) unnamed_addr #2 { +define range(i32 0, -65535) i32 @"_ZN59_$LT$softposit..p16e1..P16E1$u20$as$u20$num_traits..Num$GT$14from_str_radix17h4280cb1270eb223fE"(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, i32 noundef %2) unnamed_addr #2 { %4 = alloca { i8, [15 x i8] }, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @"_ZN39_$LT$f64$u20$as$u20$num_traits..Num$GT$14from_str_radix17h0a4767a2e72cb71bE"(ptr noalias noundef nonnull sret([16 x i8]) align 8 captures(none) dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, i32 noundef %2) @@ -4732,10 +4732,10 @@ define range(i32 0, -65534) i32 @"_ZN59_$LT$softposit..p16e1..P16E1$u20$as$u20$n br label %"_ZN9softposit5p16e17convert41_$LT$impl$u20$softposit..p16e1..P16E1$GT$8from_f6417h13faf94e193caccaE.exit" "_ZN9softposit5p16e17convert41_$LT$impl$u20$softposit..p16e1..P16E1$GT$8from_f6417h13faf94e193caccaE.exit": ; preds = %6, %13, %19, %20, %23, %55 - %.0.i = phi i16 [ %.023.i, %23 ], [ 0, %6 ], [ -32768, %13 ], [ %..i, %19 ], [ %.34.i, %20 ], [ %.35.i, %55 ] + %.0.i = phi i16 [ %.023.i, %23 ], [ 0, %6 ], [ -32768, %13 ], [ %..i, %19 ], [ %.34.i, %20 ], [ %.35.i, %56 ] %56 = zext i16 %.0.i to i32 %57 = shl nuw i32 %56, 16 - br label %63 + br label %65 58: ; preds = %3 %59 = getelementptr inbounds nuw i8, ptr %4, i64 1 @@ -4743,13 +4743,12 @@ define range(i32 0, -65534) i32 @"_ZN59_$LT$softposit..p16e1..P16E1$u20$as$u20$n call void @llvm.lifetime.end.p0(ptr nonnull %4) %61 = zext nneg i8 %60 to i32 %62 = shl nuw nsw i32 %61, 8 - br label %63 + %64 = or disjoint i32 %63, 1 + br label %65 -63: ; preds = %58, %"_ZN9softposit5p16e17convert41_$LT$impl$u20$softposit..p16e1..P16E1$GT$8from_f6417h13faf94e193caccaE.exit" - %.sroa.0.0 = phi i32 [ 0, %"_ZN9softposit5p16e17convert41_$LT$impl$u20$softposit..p16e1..P16E1$GT$8from_f6417h13faf94e193caccaE.exit" ], [ 1, %58 ] - %.sroa.3.0.insert.insert = phi i32 [ %57, %"_ZN9softposit5p16e17convert41_$LT$impl$u20$softposit..p16e1..P16E1$GT$8from_f6417h13faf94e193caccaE.exit" ], [ %62, %58 ] - %.sroa.0.0.insert.insert = or disjoint i32 %.sroa.3.0.insert.insert, %.sroa.0.0 - ret i32 %.sroa.0.0.insert.insert +65:; preds = %59, %"_ZN9softposit5p16e17convert41_$LT$impl$u20$softposit..p16e1..P16E1$GT$8from_f6417h13faf94e193caccaE.exit" + %.sroa.3.0.insert.insert = phi i32 [ %57, %"_ZN9softposit5p16e17convert41_$LT$impl$u20$softposit..p16e1..P16E1$GT$8from_f6417h13faf94e193caccaE.exit" ], [ %64, %59 ] + ret i32 %.sroa.3.0.insert.insert } ; Function Attrs: nonlazybind uwtable diff --git a/bench/spike/optimized/processor.ll b/bench/spike/optimized/processor.ll index bf43a81fff2..b79b5ab7a95 100644 --- a/bench/spike/optimized/processor.ll +++ b/bench/spike/optimized/processor.ll @@ -94667,20 +94667,19 @@ define void @_ZN11processor_t14take_interruptEm(ptr noundef nonnull align 8 dere %14 = and i64 %12, 8 %15 = icmp ne i64 %14, 0 %16 = and i1 %13, %15 - %.neg = sext i1 %16 to i64 + %17 = select i1 %16, i64 %1, i64 0 br label %17 17: ; preds = %8, %3 - %.neg43 = phi i64 [ -1, %3 ], [ %.neg, %8 ] + %.neg43 = phi i64 [ %1, %3 ], [ %17, %8 ] %18 = getelementptr inbounds nuw i8, ptr %0, i64 1296 %19 = load ptr, ptr %18, align 8, !tbaa !253 %20 = load ptr, ptr %19, align 8, !tbaa !3 %21 = getelementptr inbounds nuw i8, ptr %20, i64 8 %22 = load ptr, ptr %21, align 8 - %23 = tail call noundef i64 %22(ptr noundef nonnull align 8 dereferenceable(37) %19) #39 + %23 = tail call noundef i64 %23(ptr noundef nonnull align 8 dereferenceable(37) %19) #39 %24 = xor i64 %23, -1 %25 = and i64 %.neg43, %24 - %26 = and i64 %25, %1 %27 = icmp eq i64 %26, 0 br i1 %27, label %28, label %76 @@ -94744,7 +94743,7 @@ define void @_ZN11processor_t14take_interruptEm(ptr noundef nonnull align 8 dere br label %76 76: ; preds = %.thread, %60, %63, %17 - %.0 = phi i64 [ %26, %17 ], [ %75, %63 ], [ %61, %60 ], [ %59, %.thread ] + %.0 = phi i64 [ %26, %18 ], [ %75, %63 ], [ %61, %60 ], [ %59, %.thread ] %77 = getelementptr inbounds nuw i8, ptr %0, i64 1808 %78 = load ptr, ptr %77, align 8, !tbaa !253 %.not63 = icmp eq ptr %78, null diff --git a/bench/spike/optimized/spike-log-parser.ll b/bench/spike/optimized/spike-log-parser.ll index 74a5ed16927..f35d51ee2e5 100644 --- a/bench/spike/optimized/spike-log-parser.ll +++ b/bench/spike/optimized/spike-log-parser.ll @@ -13443,9 +13443,6 @@ _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exi .critedge: ; preds = %52, %53 %58 = getelementptr inbounds nuw i8, ptr %.021.ptr44, i64 8 %59 = load i32, ptr %58, align 8 - %.sroa.6.0.extract.shift = and i32 %59, -16777216 - %60 = and i32 %59, 16711680 - %61 = and i32 %59, 65535 br label %.critedge28 .critedge26: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit @@ -13454,11 +13451,9 @@ _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exi br i1 %.not23, label %.critedge28, label %47 .critedge28: ; preds = %.critedge26, %53, %.critedge - %.sroa.038.1 = phi i32 [ %61, %.critedge ], [ 1024, %53 ], [ 0, %.critedge26 ] - %.sroa.4.1 = phi i32 [ %60, %.critedge ], [ 0, %53 ], [ 0, %.critedge26 ] - %.sroa.6.3 = phi i32 [ %.sroa.6.0.extract.shift, %.critedge ], [ 0, %53 ], [ 0, %.critedge26 ] - %62 = icmp eq ptr %10, %7 - br i1 %62, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %.sroa.038.1 = phi i32 [ %59, %.critedge ], [ 1024, %53 ], [ 0, %.critedge26 ] + %60 = icmp eq ptr %10, %7 + br i1 %60, 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 = %.critedge28 %63 = icmp ult i64 %11, 16 @@ -13473,9 +13468,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: _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 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.1, %.sroa.038.1 - %.sroa.038.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.6.3 - ret i32 %.sroa.038.0.insert.insert + ret i32 %.sroa.038.1 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31: ; preds = %43 %66 = load i64, ptr %7, align 8, !tbaa !12 diff --git a/bench/spike/optimized/triggers.ll b/bench/spike/optimized/triggers.ll index 889e32c1797..36bc019c4d9 100644 --- a/bench/spike/optimized/triggers.ll +++ b/bench/spike/optimized/triggers.ll @@ -2946,14 +2946,13 @@ define { i64, i8 } @_ZN8triggers8module_t26detect_memory_access_matchENS_11opera %46 = zext i32 %.sroa.2.2 to i64 %47 = shl nuw i64 %46, 32 %48 = zext i32 %.sroa.023.2 to i64 + %49 = or disjoint i64 %47, %48 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %10, %5 - %.sroa.023.0 = phi i64 [ 0, %5 ], [ 0, %10 ], [ %48, %.loopexit.loopexit ] - %.sroa.2.0 = phi i64 [ 0, %5 ], [ 0, %10 ], [ %47, %.loopexit.loopexit ] + %.sroa.023.0 = phi i64 [ 0, %5 ], [ 0, %10 ], [ %49, %.loopexit.loopexit ] %.sroa.3.0 = phi i8 [ 0, %5 ], [ 0, %10 ], [ %.sroa.3.2, %.loopexit.loopexit ] - %.sroa.023.0.insert.insert = or disjoint i64 %.sroa.2.0, %.sroa.023.0 - %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.023.0.insert.insert, 0 + %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.2.0, 0 %.fca.1.insert = insertvalue { i64, i8 } %.fca.0.insert, i8 %.sroa.3.0, 1 ret { i64, i8 } %.fca.1.insert @@ -3158,14 +3157,13 @@ define { i64, i8 } @_ZN8triggers8module_t17detect_trap_matchERK6trap_t(ptr nound %26 = zext i32 %.sroa.2.2 to i64 %27 = shl nuw i64 %26, 32 %28 = zext i32 %.sroa.013.2 to i64 + %29 = or disjoint i64 %27, %28 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %7, %2 - %.sroa.013.0 = phi i64 [ 0, %2 ], [ 0, %7 ], [ %28, %.loopexit.loopexit ] - %.sroa.2.0 = phi i64 [ 0, %2 ], [ 0, %7 ], [ %27, %.loopexit.loopexit ] + %.sroa.013.0 = phi i64 [ 0, %2 ], [ 0, %7 ], [ %29, %.loopexit.loopexit ] %.sroa.3.0 = phi i8 [ 0, %2 ], [ 0, %7 ], [ %.sroa.3.2, %.loopexit.loopexit ] - %.sroa.013.0.insert.insert = or disjoint i64 %.sroa.2.0, %.sroa.013.0 - %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.013.0.insert.insert, 0 + %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.2.0, 0 %.fca.1.insert = insertvalue { i64, i8 } %.fca.0.insert, i8 %.sroa.3.0, 1 ret { i64, i8 } %.fca.1.insert } diff --git a/bench/sqlite/optimized/shell.ll b/bench/sqlite/optimized/shell.ll index 3c82cdeb46d..03d475e21eb 100644 --- a/bench/sqlite/optimized/shell.ll +++ b/bench/sqlite/optimized/shell.ll @@ -64637,30 +64637,35 @@ doAutoDetectRestore.exit.thread42: ; preds = %149 %153 = call i32 @sqlite3_prepare_v2(ptr noundef %152, ptr noundef nonnull @.str.1889, i32 noundef -1, ptr noundef nonnull %5, ptr noundef null) #43 %.fr = freeze i32 %153 %.not.i.i37 = icmp eq i32 %.fr, 0 - br i1 %.not.i.i37, label %158, label %shellPrepare.exit.i - -shellPrepare.exit.i: ; preds = %151 - %154 = load ptr, ptr @stderr, align 8, !tbaa !14 - %155 = call ptr @sqlite3_errmsg(ptr noundef %152) #43 - %156 = call i32 @sqlite3_errcode(ptr noundef %152) #43 - %157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %154, ptr noundef nonnull @.str.1354, ptr noundef %155, i32 noundef %156) #46 - br label %162 + br i1 %.not.i.i37, label %158, label %.thread61 158: ; preds = %151 %159 = load ptr, ptr %5, align 8, !tbaa !31 %160 = call i32 @sqlite3_step(ptr noundef %159) #43 %161 = icmp ne i32 %160, 100 - br label %162 - -162: ; preds = %158, %shellPrepare.exit.i - %163 = phi i1 [ true, %shellPrepare.exit.i ], [ %161, %158 ] - %164 = load ptr, ptr %5, align 8, !tbaa !31 - %.not.i31.i = icmp eq ptr %164, null - br i1 %.not.i31.i, label %172, label %165 + %158 = load ptr, ptr %5, align 8, !tbaa !31 + %.not.i31.i = icmp eq ptr %158, null + br i1 %.not.i31.i, label %172, label %164 + +.thread61:; preds = %151 + %159 = load ptr, ptr @stderr, align 8, !tbaa !14 + %160 = call ptr @sqlite3_errmsg(ptr noundef %152) #43 + %161 = call i32 @sqlite3_errcode(ptr noundef %152) #43 + %162 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %159, ptr noundef nonnull @.str.1354, ptr noundef %160, i32 noundef %161) #46 + %163 = load ptr, ptr %5, align 8, !tbaa !31 + %.not.i31.i63 = icmp eq ptr %163, null + br i1 %.not.i31.i63, label %doAutoDetectRestore.exit.thread68, label %164 + +doAutoDetectRestore.exit.thread68: ; preds = %.thread61 + call void @llvm.lifetime.end.p0(ptr nonnull %5) + store i8 7, ptr %134, align 1, !tbaa !1172 + br label %doAutoDetectRestore.exit.thread -165: ; preds = %162 - %166 = call ptr @sqlite3_db_handle(ptr noundef nonnull %164) #43 - %167 = call i32 @sqlite3_finalize(ptr noundef nonnull %164) #43 +165: ; preds = %.thread61, %154 + %165 = phi ptr [ %163, %.thread61 ], [ %158, %154 ] + %or.cond.i65 = phi i1 [ false, %.thread61 ], [ %161, %154 ] + %166 = call ptr @sqlite3_db_handle(ptr noundef nonnull %165) #43 + %167 = call i32 @sqlite3_finalize(ptr noundef nonnull %165) #43 br i1 %.not.i.i37, label %168, label %doAutoDetectRestore.exit.thread46 168: ; preds = %165 @@ -64673,14 +64678,13 @@ shellPrepare.exit.i: ; preds = %151 %171 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %169, ptr noundef nonnull @.str.59, ptr noundef %170) #46 br label %doAutoDetectRestore.exit.thread46 -172: ; preds = %162 +172: ; preds = %154 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %or.cond.i = and i1 %.not.i.i37, %163 - br i1 %or.cond.i, label %173, label %doAutoDetectRestore.exit + br i1 %157, label %173, label %doAutoDetectRestore.exit .thread: ; preds = %168 call void @llvm.lifetime.end.p0(ptr nonnull %5) - br i1 %163, label %173, label %doAutoDetectRestore.exit.thread61 + br i1 %or.cond.i65, label %173, label %doAutoDetectRestore.exit.thread61 doAutoDetectRestore.exit.thread61: ; preds = %.thread store i8 7, ptr %134, align 1, !tbaa !1172 @@ -64751,13 +64755,10 @@ doAutoDetectRestore.exit.thread46: ; preds = %165, %.thread44.i doAutoDetectRestore.exit: ; preds = %172 store i8 7, ptr %134, align 1, !tbaa !1172 - br i1 %.not.i.i37, label %doAutoDetectRestore.exit.thread, label %203 - -doAutoDetectRestore.exit.thread: ; preds = %doAutoDetectRestore.exit.thread61, %133, %173, %148, %202, %187, %doAutoDetectRestore.exit.thread42, %doAutoDetectRestore.exit - br label %203 + br label %doAutoDetectRestore.exit.thread -203: ; preds = %doAutoDetectRestore.exit.thread, %doAutoDetectRestore.exit, %doAutoDetectRestore.exit.thread46, %118 - %.025 = phi i32 [ 1, %118 ], [ 0, %doAutoDetectRestore.exit.thread ], [ 1, %doAutoDetectRestore.exit ], [ 1, %doAutoDetectRestore.exit.thread46 ] +203: ; preds = %doAutoDetectRestore.exit.thread42, %187, %202, %148, %173, %133, %doAutoDetectRestore.exit.thread60, %doAutoDetectRestore.exit, %doAutoDetectRestore.exit.thread68, %doAutoDetectRestore.exit.thread46, %118 + %.025 = phi i32 [ 1, %118 ], [ 1, %doAutoDetectRestore.exit.thread46 ], [ 1, %doAutoDetectRestore.exit.thread68 ], [ 0, %doAutoDetectRestore.exit ], [ 0, %doAutoDetectRestore.exit.thread60 ], [ 0, %133 ], [ 0, %173 ], [ 0, %148 ], [ 0, %202 ], [ 0, %187 ], [ 0, %doAutoDetectRestore.exit.thread42 ] call void @llvm.lifetime.end.p0(ptr nonnull %13) ret i32 %.025 } diff --git a/bench/stb/optimized/stb_ds.ll b/bench/stb/optimized/stb_ds.ll index 3730d6fb073..2a58efe0ac9 100644 --- a/bench/stb/optimized/stb_ds.ll +++ b/bench/stb/optimized/stb_ds.ll @@ -320,11 +320,14 @@ define i64 @stbds_hash_string(ptr noundef readonly captures(none) %0, i64 nounde %.not = icmp eq i8 %9, 0 br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !34 -._crit_edge: ; preds = %.lr.ph, %2 - %.0.lcssa = phi i64 [ %1, %2 ], [ %8, %.lr.ph ] - %10 = xor i64 %.0.lcssa, %1 - %11 = xor i64 %10, -1 - %12 = shl i64 %10, 18 +._crit_edge: ; preds = %.lr.ph + %10 = xor i64 %8, %1 + br label %._crit_edge + +._crit_edge:; preds = %._crit_edge, %2 + %.0.lcssa = phi i64 [ 0, %2 ], [ %10, %._crit_edge.loopexit ] + %11 = xor i64 %.0.lcssa, -1 + %12 = shl i64 %.0.lcssa, 18 %13 = add i64 %12, %11 %14 = tail call i64 @llvm.fshl.i64(i64 %13, i64 %13, i64 33) %15 = mul i64 %14, 21 @@ -709,13 +712,16 @@ define i64 @stbds_hm_find_slot(ptr noundef readonly captures(none) %0, i64 nound %20 = add i64 %17, %19 %21 = load i8, ptr %18, align 1, !tbaa !27 %.not.i = icmp eq i8 %21, 0 - br i1 %.not.i, label %stbds_hash_string.exit, label %.lr.ph.i, !llvm.loop !34 + br i1 %.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !34 -stbds_hash_string.exit: ; preds = %.lr.ph.i, %14 - %.0.lcssa.i = phi i64 [ %13, %14 ], [ %20, %.lr.ph.i ] - %22 = xor i64 %.0.lcssa.i, %13 - %23 = xor i64 %22, -1 - %24 = shl i64 %22, 18 +._crit_edge.loopexit.i: ; preds = %.lr.ph.i + %22 = xor i64 %20, %13 + br label %stbds_hash_string.exit + +stbds_hash_string.exit: ; preds = %14, %._crit_edge.loopexit.i + %.0.lcssa.i = phi i64 [ 0, %14 ], [ %22, %._crit_edge.loopexit.i ] + %22 = xor i64 %.0.lcssa.i, -1 + %24 = shl i64 %.0.lcssa.i, 18 %25 = add i64 %24, %23 %26 = tail call i64 @llvm.fshl.i64(i64 %25, i64 %25, i64 33) %27 = mul i64 %26, 21 @@ -1244,13 +1250,16 @@ define ptr @stbds_hmput_key(ptr noundef captures(address, ret: address, provenan %64 = add i64 %61, %63 %65 = load i8, ptr %62, align 1, !tbaa !27 %.not.i = icmp eq i8 %65, 0 - br i1 %.not.i, label %stbds_hash_string.exit, label %.lr.ph.i184, !llvm.loop !34 + br i1 %.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i184, !llvm.loop !34 + +._crit_edge.loopexit.i: ; preds = %.lr.ph.i184 + %66 = xor i64 %64, %57 + br label %stbds_hash_string.exit -stbds_hash_string.exit: ; preds = %.lr.ph.i184, %58 - %.0.lcssa.i = phi i64 [ %57, %58 ], [ %64, %.lr.ph.i184 ] - %66 = xor i64 %.0.lcssa.i, %57 - %67 = xor i64 %66, -1 - %68 = shl i64 %66, 18 +stbds_hash_string.exit: ; preds = %58, %._crit_edge.loopexit.i + %.0.lcssa.i = phi i64 [ 0, %58 ], [ %66, %._crit_edge.loopexit.i ] + %66 = xor i64 %.0.lcssa.i, -1 + %68 = shl i64 %.0.lcssa.i, 18 %69 = add i64 %68, %67 %70 = tail call i64 @llvm.fshl.i64(i64 %69, i64 %69, i64 33) %71 = mul i64 %70, 21 diff --git a/bench/stb/optimized/stb_vorbis.ll b/bench/stb/optimized/stb_vorbis.ll index ab3bb7b48b5..f4bfd09d2fe 100644 --- a/bench/stb/optimized/stb_vorbis.ll +++ b/bench/stb/optimized/stb_vorbis.ll @@ -1823,13 +1823,12 @@ get8.exit10.thread: ; preds = %21 39: ; preds = %32 %40 = shl i32 %35, 8 %41 = and i32 %40, 65280 + %42 = or disjoint i32 %41, %.0.i.ph br label %get8.exit10 get8.exit10: ; preds = %25, %37, %39 - %.ph = phi i32 [ %.0.i.ph, %39 ], [ %.0.i.ph, %37 ], [ %23, %25 ] - %.0.i9.ph = phi i32 [ %41, %39 ], [ 0, %37 ], [ 0, %25 ] + %.ph = phi i32 [ %42, %39 ], [ %.0.i.ph, %37 ], [ %23, %25 ] %.pr21 = load ptr, ptr %2, align 8, !tbaa !59 - %42 = or disjoint i32 %.0.i9.ph, %.ph %.not.i11 = icmp eq ptr %.pr21, null br i1 %.not.i11, label %54, label %get8.exit10._crit_edge @@ -1840,7 +1839,7 @@ get8.exit10._crit_edge: ; preds = %get8.exit10 43: ; preds = %get8.exit10._crit_edge, %get8.exit10.thread %44 = phi ptr [ %22, %get8.exit10.thread ], [ %.pre29, %get8.exit10._crit_edge ] - %45 = phi i32 [ %31, %get8.exit10.thread ], [ %42, %get8.exit10._crit_edge ] + %45 = phi i32 [ %31, %get8.exit10.thread ], [ %.ph, %get8.exit10._crit_edge ] %46 = phi ptr [ %27, %get8.exit10.thread ], [ %.pr21, %get8.exit10._crit_edge ] %.not11.i12 = icmp ult ptr %46, %44 br i1 %.not11.i12, label %get8.exit14.thread, label %47 @@ -1874,13 +1873,12 @@ get8.exit14.thread: ; preds = %43 61: ; preds = %54 %62 = shl i32 %57, 16 %63 = and i32 %62, 16711680 + %64 = or disjoint i32 %63, %.0.i9.ph br label %get8.exit14 get8.exit14: ; preds = %47, %59, %61 - %.ph24 = phi i32 [ %42, %61 ], [ %42, %59 ], [ %45, %47 ] - %.0.i13.ph = phi i32 [ %63, %61 ], [ 0, %59 ], [ 0, %47 ] + %.ph24 = phi i32 [ %64, %61 ], [ %.ph, %59 ], [ %45, %47 ] %.pr25 = load ptr, ptr %2, align 8, !tbaa !59 - %64 = or disjoint i32 %.0.i13.ph, %.ph24 %.not.i15 = icmp eq ptr %.pr25, null br i1 %.not.i15, label %74, label %get8.exit14._crit_edge @@ -1891,7 +1889,7 @@ get8.exit14._crit_edge: ; preds = %get8.exit14 65: ; preds = %get8.exit14._crit_edge, %get8.exit14.thread %66 = phi ptr [ %44, %get8.exit14.thread ], [ %.pre31, %get8.exit14._crit_edge ] - %67 = phi i32 [ %53, %get8.exit14.thread ], [ %64, %get8.exit14._crit_edge ] + %67 = phi i32 [ %53, %get8.exit14.thread ], [ %.ph24, %get8.exit14._crit_edge ] %68 = phi ptr [ %49, %get8.exit14.thread ], [ %.pr25, %get8.exit14._crit_edge ] %.not11.i16 = icmp ult ptr %68, %66 br i1 %.not11.i16, label %71, label %69 @@ -1924,7 +1922,7 @@ get8.exit14._crit_edge: ; preds = %get8.exit14 br label %get8.exit18 get8.exit18: ; preds = %69, %71, %79, %81 - %83 = phi i32 [ %67, %69 ], [ %67, %71 ], [ %64, %79 ], [ %64, %81 ] + %83 = phi i32 [ %67, %69 ], [ %67, %71 ], [ %.ph24, %79 ], [ %.ph24, %81 ] %.0.i17 = phi i8 [ 0, %69 ], [ %73, %71 ], [ 0, %79 ], [ %82, %81 ] %84 = zext i8 %.0.i17 to i32 %85 = shl nuw i32 %84, 24 diff --git a/bench/tokenizers-rs/optimized/5e69nv5s2wu1vtyr.ll b/bench/tokenizers-rs/optimized/5e69nv5s2wu1vtyr.ll index c9acd84dea5..72cb2bc5c30 100644 --- a/bench/tokenizers-rs/optimized/5e69nv5s2wu1vtyr.ll +++ b/bench/tokenizers-rs/optimized/5e69nv5s2wu1vtyr.ll @@ -22328,13 +22328,19 @@ _ZN4core4iter6traits8iterator8Iterator3nth17hf2bec2b797a45864E.exit74: ; preds = %251 = add i64 %250, %249 br label %144 -"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each17h5c5211be30e6dab8E.exit": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i", %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i48", %144 - %.sroa.8.0 = phi i64 [ 0, %144 ], [ 0, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i48" ], [ %.sroa.8.1163, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i" ], [ %65, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i" ] - %.sroa.081.0 = phi i64 [ %.sroa.034.0103109, %144 ], [ %.sroa.034.0103109, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i48" ], [ %.sroa.081.1164, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i" ], [ 1, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i" ] - %.sroa.9.0 = phi i64 [ 0, %144 ], [ 0, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i48" ], [ %.sroa.9.1165, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i" ], [ %spec.select148227, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i" ] - %.sroa.079.0 = phi i64 [ %.sroa.034.0103109, %144 ], [ %.sroa.034.0103109, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i48" ], [ %.sroa.079.1166, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i" ], [ %spec.select149228, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i" ] +"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each17h5c5211be30e6dab8E.exit": ; preds = %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i" + %.sroa.8.0 = phi i64 [ %65, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i" ], [ %.sroa.8.1163, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i" ] + %.sroa.081.0 = phi i64 [ 1, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i" ], [ %.sroa.081.1164, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i" ] + %.sroa.9.0 = phi i64 [ %spec.select148227, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i" ], [ %.sroa.9.1165, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i" ] + %.sroa.079.0 = phi i64 [ %spec.select149228, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each5check28_$u7b$$u7b$closure$u7d$$u7d$17h7f55da4ae6d81e5fE.exit.i.i.i" ], [ %.sroa.079.1166, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i" ] %252 = and i64 %.sroa.079.0, %.sroa.081.0 - %253 = and i64 %252, 1 + br label %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each17h5c5211be30e6dab8E.exit" + +"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each17h5c5211be30e6dab8E.exit": ; preds = %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each17h5c5211be30e6dab8E.exit.loopexit", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i48", %144 + %.sroa.8.0 = phi i64 [ 0, %144 ], [ 0, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i48" ], [ %.sroa.8.0.ph, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each17h5c5211be30e6dab8E.exit.loopexit" ] + %.sroa.9.0 = phi i64 [ 0, %144 ], [ 0, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i48" ], [ %.sroa.9.0.ph, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each17h5c5211be30e6dab8E.exit.loopexit" ] + %.sroa.079.0 = phi i64 [ %.sroa.034.0103109, %144 ], [ %.sroa.034.0103109, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8c5eef63cfad1b8E.llvm.12244614425474959946.exit.i.i.i.i48" ], [ %252, %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each17h5c5211be30e6dab8E.exit.loopexit" ] + %253 = and i64 %.sroa.079.0, 1 %or.cond241.not = icmp eq i64 %253, 0 br i1 %or.cond241.not, label %"_ZN98_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..adapters..take..SpecTake$GT$13spec_for_each17h5c5211be30e6dab8E.exit.thread142", label %.thread127 diff --git a/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll b/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll index 4f24f72545a..2ab5e842f23 100644 --- a/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll +++ b/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll @@ -1143,19 +1143,20 @@ define hidden void @_ZN4core3fmt9Arguments6new_v117h14574ab706dc1eb0E.llvm.55429 ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind memory(none) uwtable define hidden noundef i64 @"_ZN4core3num23_$LT$impl$u20$usize$GT$3pow17hc21baa1d6648cdfdE.llvm.5542961546488995764"(i64 noundef %0, i32 noundef %1) unnamed_addr #6 { switch i32 %1, label %.lr.ph [ - i32 0, label %3 - i32 1, label %._crit_edge + i32 0, label %._crit_edge + i32 1, label %._crit_edge.fold.split ] -3: ; preds = %2, %._crit_edge - %.011 = phi i64 [ %4, %._crit_edge ], [ 1, %2 ] +3: ; preds = %2 + br label %._crit_edge + +._crit_edge: ; preds = %2, %._crit_edge.fold.split, %._crit_edge.loopexit + %.011 = phi i64 [ 1, %2 ], [ %3, %._crit_edge.loopexit ], [ %0, %._crit_edge.fold.split ] ret i64 %.011 -._crit_edge: ; preds = %.lr.ph, %2 - %.013.lcssa = phi i64 [ 1, %2 ], [ %spec.select, %.lr.ph ] - %.012.lcssa = phi i64 [ %0, %2 ], [ %8, %.lr.ph ] - %4 = mul i64 %.012.lcssa, %.013.lcssa - br label %3 +._crit_edge: ; preds = %.lr.ph + %3 = mul i64 %7, %spec.select + br label %._crit_edge .lr.ph: ; preds = %2, %.lr.ph %.017 = phi i32 [ %7, %.lr.ph ], [ %1, %2 ] @@ -7385,9 +7386,9 @@ _ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.55429615 br i1 %42, label %.lr.ph.i.i, label %._crit_edge.i.loopexit.i _ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit: ; preds = %.thread28, %.thread, %._crit_edge.i.loopexit.i - %.in = phi i64 [ %34, %._crit_edge.i.loopexit.i ], [ %13, %.thread ], [ %17, %.thread28 ] - %.011.i.i.i18 = phi i64 [ %36, %._crit_edge.i.loopexit.i ], [ 64, %.thread ], [ 4096, %.thread28 ] - %.011.i.i = phi i64 [ %37, %._crit_edge.i.loopexit.i ], [ 1, %.thread ], [ 64, %.thread28 ] + %.in = phi i64 [ %34, %._crit_edge.loopexit.i.i ], [ %13, %.thread ], [ %17, %.thread28 ] + %.011.i.i.i18 = phi i64 [ %36, %._crit_edge.loopexit.i.i ], [ 64, %.thread ], [ 4096, %.thread28 ] + %.011.i.i = phi i64 [ %37, %._crit_edge.loopexit.i.i ], [ 1, %.thread ], [ 64, %.thread28 ] %43 = and i64 %.in, 63 %44 = sub i64 0, %.011.i.i.i18 %45 = and i64 %2, %44 @@ -7455,7 +7456,7 @@ _ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.55429615 ret { i64, i64 } %19 _ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit.thread: ; preds = %._crit_edge.i.i, %6, %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit - %.011.i.i3 = phi i64 [ %15, %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit ], [ 64, %._crit_edge.i.i ], [ 1, %6 ] + %.011.i.i3 = phi i64 [ %15, %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit ], [ 64, %._crit_edge.fold.split.i.i ], [ 1, %6 ] %20 = udiv i64 %1, %.011.i.i3 %21 = tail call i64 @llvm.fshr.i64(i64 %4, i64 %4, i64 %20) %22 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %21, i1 true) @@ -7617,14 +7618,14 @@ define hidden noundef i64 @_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b %2 = trunc i64 %0 to i32 switch i32 %2, label %.lr.ph.i [ i32 0, label %"_ZN4core3num23_$LT$impl$u20$usize$GT$3pow17hc21baa1d6648cdfdE.llvm.5542961546488995764.exit" - i32 1, label %._crit_edge.i + i32 1, label %._crit_edge.i.loopexit ] -._crit_edge.i.loopexit: ; preds = %.lr.ph.i - %3 = mul i64 %7, %spec.select.i +._crit_edge.i.loopexit: ; preds = %1 br label %"_ZN4core3num23_$LT$impl$u20$usize$GT$3pow17hc21baa1d6648cdfdE.llvm.5542961546488995764.exit" -._crit_edge.i: ; preds = %1 +._crit_edge.i: ; preds = %.lr.ph.i + %3 = mul i64 %spec.select.i, %7 br label %"_ZN4core3num23_$LT$impl$u20$usize$GT$3pow17hc21baa1d6648cdfdE.llvm.5542961546488995764.exit" .lr.ph.i: ; preds = %1, %.lr.ph.i @@ -7638,10 +7639,10 @@ define hidden noundef i64 @_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b %6 = lshr i32 %.017.i, 1 %7 = mul i64 %.01216.i, %.01216.i %8 = icmp ugt i32 %.017.i, 3 - br i1 %8, label %.lr.ph.i, label %._crit_edge.i.loopexit + br i1 %8, label %.lr.ph.i, label %._crit_edge.loopexit.i -"_ZN4core3num23_$LT$impl$u20$usize$GT$3pow17hc21baa1d6648cdfdE.llvm.5542961546488995764.exit": ; preds = %._crit_edge.i.loopexit, %1, %._crit_edge.i - %.011.i = phi i64 [ 1, %1 ], [ %3, %._crit_edge.i.loopexit ], [ 64, %._crit_edge.i ] +"_ZN4core3num23_$LT$impl$u20$usize$GT$3pow17hc21baa1d6648cdfdE.llvm.5542961546488995764.exit": ; preds = %1, %._crit_edge.i.loopexit, %._crit_edge.i + %.011.i = phi i64 [ 1, %1 ], [ %3, %._crit_edge.loopexit.i ], [ 64, %._crit_edge.fold.split.i ] ret i64 %.011.i } @@ -7653,12 +7654,12 @@ define hidden noundef range(i64 0, -63) i64 @_ZN5tokio7runtime4time5wheel5level1 i32 1, label %._crit_edge.i.i ] -._crit_edge.i.loopexit.i: ; preds = %.lr.ph.i.i - %3 = shl i64 %8, 6 - %4 = mul i64 %3, %spec.select.i.i +._crit_edge.i.loopexit.i: ; preds = %1 br label %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit -._crit_edge.i.i: ; preds = %1 +._crit_edge.i.i: ; preds = %.lr.ph.i.i + %3 = shl i64 %8, 6 + %4 = mul i64 %3, %spec.select.i.i br label %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit .lr.ph.i.i: ; preds = %1, %.lr.ph.i.i @@ -7675,7 +7676,7 @@ define hidden noundef range(i64 0, -63) i64 @_ZN5tokio7runtime4time5wheel5level1 br i1 %9, label %.lr.ph.i.i, label %._crit_edge.i.loopexit.i _ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit: ; preds = %1, %._crit_edge.i.loopexit.i, %._crit_edge.i.i - %.011.i.i = phi i64 [ 64, %1 ], [ %4, %._crit_edge.i.loopexit.i ], [ 4096, %._crit_edge.i.i ] + %.011.i.i = phi i64 [ 64, %1 ], [ %4, %._crit_edge.loopexit.i.i ], [ 4096, %._crit_edge.fold.split.i.i ] ret i64 %.011.i.i } diff --git a/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll b/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll index c003065fc86..d00fc65df2f 100644 --- a/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll +++ b/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll @@ -1112,25 +1112,25 @@ _RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4IterhENtNtNtNtBa_4iter6traits8 44: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread" %45 = icmp samesign ugt i32 %42, 127 - br i1 %45, label %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit, label %46 + br i1 %45, label %46, label %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit 46: ; preds = %44 - %47 = add nsw i32 %42, -65 - %or.cond1.i.i.i = icmp ult i32 %47, 26 - br i1 %or.cond1.i.i.i, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread6", label %.backedge + %47 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9lowercase6lookup17hfa932dd632b2e5c7E(i32 noundef %42) + %48 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9uppercase6lookup17h9584a746a3745ef3E(i32 noundef %42) + %49 = xor i1 %47, %48 + br i1 %49, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread6", label %.backedge _RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit: ; preds = %44 - %48 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9lowercase6lookup17hfa932dd632b2e5c7E(i32 noundef %42) - %49 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9uppercase6lookup17h9584a746a3745ef3E(i32 noundef %42) - %50 = xor i1 %48, %49 - br i1 %50, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread6", label %.backedge + %50 = add nsw i32 %42, -65 + %or.cond1.i.i.i = icmp ult i32 %50, 26 + br i1 %or.cond1.i.i.i, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread6", label %.backedge .backedge: ; preds = %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit, %46 %51 = icmp eq ptr %41, %3 br i1 %51, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread6", label %.lr.ph -"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread6": ; preds = %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit", %.backedge, %46, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread", %1 - %52 = phi i1 [ false, %1 ], [ true, %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit" ], [ false, %.backedge ], [ true, %46 ], [ true, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread" ] +"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread6": ; preds = %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit", %.backedge, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread", %46, %1 + %52 = phi i1 [ false, %1 ], [ true, %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit" ], [ false, %.backedge ], [ true, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread" ], [ true, %46 ] ret i1 %52 } @@ -1152,13 +1152,12 @@ define hidden noundef zeroext i1 @_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6trai 8: ; preds = %4 %9 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9lowercase6lookup17hfa932dd632b2e5c7E(i32 noundef %1) %10 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9uppercase6lookup17h9584a746a3745ef3E(i32 noundef %1) + %11 = xor i1 %9, %10 br label %_RNvYNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingINtNtNtCs1LoaDTb72WA_4core3ops8function5FnMutTcEE8call_mutB8_.llvm.8606166020250795160.exit _RNvYNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingINtNtNtCs1LoaDTb72WA_4core3ops8function5FnMutTcEE8call_mutB8_.llvm.8606166020250795160.exit: ; preds = %2, %6, %8 - %.sroa.0.06.i.i = phi i1 [ %9, %8 ], [ true, %2 ], [ false, %6 ] - %.sroa.02.0.i.i = phi i1 [ %10, %8 ], [ false, %2 ], [ %or.cond1.i.i, %6 ] - %11 = xor i1 %.sroa.0.06.i.i, %.sroa.02.0.i.i - ret i1 %11 + %.sroa.0.06.i.i = phi i1 [ %11, %8 ], [ true, %2 ], [ %or.cond1.i.i, %6 ] + ret i1 %.sroa.0.06.i.i } ; Function Attrs: inlinehint nonlazybind uwtable @@ -2558,13 +2557,12 @@ define hidden noundef zeroext i1 @_RNvYNvYcNtCseG2FYMysgNb_3wax7CharExt10has_cas 8: ; preds = %4 %9 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9lowercase6lookup17hfa932dd632b2e5c7E(i32 noundef %1) %10 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9uppercase6lookup17h9584a746a3745ef3E(i32 noundef %1) + %11 = xor i1 %9, %10 br label %_RNvXCseG2FYMysgNb_3waxcNtB2_7CharExt10has_casing.exit _RNvXCseG2FYMysgNb_3waxcNtB2_7CharExt10has_casing.exit: ; preds = %2, %6, %8 - %.sroa.0.06.i = phi i1 [ %9, %8 ], [ true, %2 ], [ false, %6 ] - %.sroa.02.0.i = phi i1 [ %10, %8 ], [ false, %2 ], [ %or.cond1.i, %6 ] - %11 = xor i1 %.sroa.0.06.i, %.sroa.02.0.i - ret i1 %11 + %.sroa.0.06.i = phi i1 [ %11, %8 ], [ true, %2 ], [ %or.cond1.i, %6 ] + ret i1 %.sroa.0.06.i } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -3510,13 +3508,12 @@ define noundef zeroext i1 @_RNvXCseG2FYMysgNb_3waxcNtB2_7CharExt10has_casing(i32 7: ; preds = %3 %8 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9lowercase6lookup17hfa932dd632b2e5c7E(i32 noundef %0) %9 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9uppercase6lookup17h9584a746a3745ef3E(i32 noundef %0) + %10 = xor i1 %8, %9 br label %.thread7 .thread7: ; preds = %5, %1, %7 - %.sroa.0.06 = phi i1 [ %8, %7 ], [ true, %1 ], [ false, %5 ] - %.sroa.02.0 = phi i1 [ %9, %7 ], [ false, %1 ], [ %or.cond1, %5 ] - %10 = xor i1 %.sroa.0.06, %.sroa.02.0 - ret i1 %10 + %.sroa.0.06 = phi i1 [ %10, %7 ], [ true, %1 ], [ %or.cond1, %5 ] + ret i1 %.sroa.0.06 } ; Function Attrs: nonlazybind uwtable @@ -3588,25 +3585,25 @@ _RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4IterhENtNtNtNtBa_4iter6traits8 44: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread.i" %45 = icmp samesign ugt i32 %42, 127 - br i1 %45, label %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit.i, label %46 + br i1 %45, label %46, label %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit.i 46: ; preds = %44 - %47 = add nsw i32 %42, -65 - %or.cond1.i.i.i.i = icmp ult i32 %47, 26 - br i1 %or.cond1.i.i.i.i, label %_RNvXs7_NtNtCs1LoaDTb72WA_4core3ops12control_flowINtB5_11ControlFlowuENtNtB9_3cmp9PartialEq2eqCseG2FYMysgNb_3wax.llvm.8606166020250795160.exit, label %.backedge.i + %47 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9lowercase6lookup17hfa932dd632b2e5c7E(i32 noundef %42), !noalias !852 + %48 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9uppercase6lookup17h9584a746a3745ef3E(i32 noundef %42), !noalias !852 + %49 = xor i1 %47, %48 + br i1 %49, label %_RNvXs7_NtNtCs1LoaDTb72WA_4core3ops12control_flowINtB5_11ControlFlowuENtNtB9_3cmp9PartialEq2eqCseG2FYMysgNb_3wax.llvm.8606166020250795160.exit, label %.backedge.i _RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit.i: ; preds = %44 - %48 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9lowercase6lookup17hfa932dd632b2e5c7E(i32 noundef %42), !noalias !852 - %49 = tail call noundef zeroext i1 @_ZN4core7unicode12unicode_data9uppercase6lookup17h9584a746a3745ef3E(i32 noundef %42), !noalias !852 - %50 = xor i1 %48, %49 - br i1 %50, label %_RNvXs7_NtNtCs1LoaDTb72WA_4core3ops12control_flowINtB5_11ControlFlowuENtNtB9_3cmp9PartialEq2eqCseG2FYMysgNb_3wax.llvm.8606166020250795160.exit, label %.backedge.i + %50 = add nsw i32 %42, -65 + %or.cond1.i.i.i.i = icmp ult i32 %50, 26 + br i1 %or.cond1.i.i.i.i, label %_RNvXs7_NtNtCs1LoaDTb72WA_4core3ops12control_flowINtB5_11ControlFlowuENtNtB9_3cmp9PartialEq2eqCseG2FYMysgNb_3wax.llvm.8606166020250795160.exit, label %.backedge.i .backedge.i: ; preds = %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit.i, %46 %51 = icmp eq ptr %41, %3 br i1 %51, label %_RNvXs7_NtNtCs1LoaDTb72WA_4core3ops12control_flowINtB5_11ControlFlowuENtNtB9_3cmp9PartialEq2eqCseG2FYMysgNb_3wax.llvm.8606166020250795160.exit, label %.lr.ph -_RNvXs7_NtNtCs1LoaDTb72WA_4core3ops12control_flowINtB5_11ControlFlowuENtNtB9_3cmp9PartialEq2eqCseG2FYMysgNb_3wax.llvm.8606166020250795160.exit: ; preds = %.backedge.i, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.i", %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit.i, %46, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread.i", %2 - %52 = phi i1 [ false, %2 ], [ true, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread.i" ], [ true, %46 ], [ true, %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit.i ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.i" ], [ false, %.backedge.i ] +_RNvXs7_NtNtCs1LoaDTb72WA_4core3ops12control_flowINtB5_11ControlFlowuENtNtB9_3cmp9PartialEq2eqCseG2FYMysgNb_3wax.llvm.8606166020250795160.exit: ; preds = %.backedge.i, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.i", %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit.i, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread.i", %46, %2 + %52 = phi i1 [ false, %2 ], [ true, %46 ], [ true, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.thread.i" ], [ true, %_RNCINvNvNtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator3any5checkcNvYcNtCseG2FYMysgNb_3wax7CharExt10has_casingE0B1i_.llvm.8606166020250795160.exit.i ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe36c38de9a872aaE.llvm.8606166020250795160.exit.i" ], [ false, %.backedge.i ] ret i1 %52 } diff --git a/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll b/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll index 2fb610ae897..309d10668f2 100644 --- a/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll +++ b/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll @@ -8377,7 +8377,6 @@ _ZN12typst_syntax6parser12code_primary17hba1d6f9c87dfc218E.exit: ; preds = %.pre %627 = getelementptr inbounds nuw i8, ptr %10, i64 24 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %10, i64 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx.i = getelementptr inbounds nuw i8, ptr %10, i64 16 - %.not = xor i1 %1, true %.not16 = icmp ult i64 %2, 5 %628 = getelementptr inbounds nuw i8, ptr %0, i64 88 br label %.backedge @@ -8539,10 +8538,8 @@ _ZN12typst_syntax6parser6Parser4wrap17hcddcf5c3b4d7d21dE.exit34: ; preds = %647, %680 = invoke noundef i8 @_ZN12typst_syntax5lexer5Lexer4next17hf6d67c4b9b5a164bE(ptr noalias noundef nonnull align 8 dereferenceable(80) %10) to label %684 unwind label %682, !range !72 -681: ; preds = %636, %684 - %.012 = phi i1 [ %685, %684 ], [ false, %636 ] - %or.cond = or i1 %.012, %.not - br i1 %or.cond, label %686, label %_ZN12typst_syntax6parser6Parser8expected17hfecc2e4804b084e3E.exit +681: ; preds = %636 + br i1 %1, label %_ZN12typst_syntax6parser6Parser8expected17hfecc2e4804b084e3E.exit, label %686 682: ; preds = %"_ZN65_$LT$typst_syntax..lexer..Lexer$u20$as$u20$core..clone..Clone$GT$5clone17ha00c0f4f9a43ed24E.exit" %683 = landingpad { ptr, i32 } @@ -8551,12 +8548,13 @@ _ZN12typst_syntax6parser6Parser4wrap17hcddcf5c3b4d7d21dE.exit34: ; preds = %647, to label %common.resume unwind label %771 684: ; preds = %"_ZN65_$LT$typst_syntax..lexer..Lexer$u20$as$u20$core..clone..Clone$GT$5clone17ha00c0f4f9a43ed24E.exit" - %685 = icmp eq i8 %680, 89 + %685 = icmp ne i8 %680, 89 call void @"_ZN4core3ptr47drop_in_place$LT$typst_syntax..lexer..Lexer$GT$17h8564f4160488ca09E"(ptr noalias noundef nonnull align 8 dereferenceable(80) %10) call void @llvm.lifetime.end.p0(ptr nonnull %10) - br label %681 + %.not426 = and i1 %685, %1 + br i1 %.not426, label %_ZN12typst_syntax6parser6Parser8expected17hfecc2e4804b084e3E.exit, label %686 -686: ; preds = %681 +686: ; preds = %684, %681 %687 = load i8, ptr %614, align 1, !range !72, !noundef !4 %688 = icmp eq i8 %687, 53 br i1 %688, label %689, label %_ZN12typst_syntax6parser6Parser6eat_if17h83c90b6095f7b9afE.exit.thread275 @@ -8582,7 +8580,7 @@ _ZN12typst_syntax6parser6Parser4wrap17hcddcf5c3b4d7d21dE.exit34: ; preds = %647, call void @_ZN12typst_syntax6parser6Parser3lex17h397541c91631bbdbE.llvm.17794941744620341598(ptr noalias noundef nonnull align 8 dereferenceable(264) %0) br label %.preheader.i.i.i -_ZN12typst_syntax6parser6Parser8expected17hfecc2e4804b084e3E.exit: ; preds = %switch.hole_check, %716, %_ZN12typst_syntax6parser6Parser6eat_if17h83c90b6095f7b9afE.exit.thread275, %_ZN12typst_syntax6parser6Parser6at_set17h8ef76507d85bbf77E.exit37.thread, %_ZN12typst_syntax3ast5BinOp10precedence17h2766c9fdd4451086E.exit, %681, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit.i, %724 +_ZN12typst_syntax6parser6Parser8expected17hfecc2e4804b084e3E.exit: ; preds = %switch.hole_check, %716, %_ZN12typst_syntax6parser6Parser6eat_if17h83c90b6095f7b9afE.exit.thread275, %_ZN12typst_syntax6parser6Parser6at_set17h8ef76507d85bbf77E.exit37.thread, %_ZN12typst_syntax3ast5BinOp10precedence17h2766c9fdd4451086E.exit, %681, %684, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit.i, %724 ret void _ZN12typst_syntax6parser6Parser6eat_if17h83c90b6095f7b9afE.exit.thread275: ; preds = %686 diff --git a/bench/typst-rs/optimized/40w6rezair915kkd.ll b/bench/typst-rs/optimized/40w6rezair915kkd.ll index f4fdfc89f56..673be6a5ed8 100644 --- a/bench/typst-rs/optimized/40w6rezair915kkd.ll +++ b/bench/typst-rs/optimized/40w6rezair915kkd.ll @@ -93822,7 +93822,7 @@ _ZN5typst5model10numbering_13NumberingKind9from_char17h2c74da6d5069f7a3E.exit: ; .thread103: ; preds = %63 call void @llvm.lifetime.start.p0(ptr nonnull %7) - br label %89 + br label %105 "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i": ; preds = %62 %65 = getelementptr inbounds i8, ptr %1, i64 %.0.ph @@ -93887,23 +93887,17 @@ _ZN5typst5model10numbering_13NumberingKind9from_char17h2c74da6d5069f7a3E.exit: ; 85: ; preds = %81 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(15) %7, i8 0, i64 15, i1 false), !noalias !24734 %.not.i.i53 = icmp eq i64 %82, 0 - br i1 %.not.i.i53, label %89, label %.lr.ph.preheader.i.i + br i1 %.not.i.i53, label %105, label %.lr.ph.preheader.i.i .lr.ph.preheader.i.i: ; preds = %85 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %7, ptr nonnull readonly align 1 %83, i64 %82, i1 false), !noalias !24736 %86 = shl nuw nsw i64 %82, 56 - %87 = or disjoint i64 %86, -9223372036854775808 %.0..0..0..sroa.083.0.copyload84.pre = load ptr, ptr %7, align 8, !noalias !24731 %.8..8..8..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 %.8..8..8..sroa.585.0.copyload87.pre = load i56, ptr %.8..8..8..sroa_idx, align 8, !noalias !24731 %88 = zext i56 %.8..8..8..sroa.585.0.copyload87.pre to i64 - br label %89 - -89: ; preds = %.thread103, %.lr.ph.preheader.i.i, %85 - %.8..8..sroa.585.0.copyload87 = phi i64 [ 0, %.thread103 ], [ %88, %.lr.ph.preheader.i.i ], [ 0, %85 ] - %.0..0..sroa.083.0.copyload84 = phi ptr [ null, %.thread103 ], [ %.0..0..0..sroa.083.0.copyload84.pre, %.lr.ph.preheader.i.i ], [ null, %85 ] - %.sroa.585.15.insert.ext = phi i64 [ -9223372036854775808, %.thread103 ], [ %87, %.lr.ph.preheader.i.i ], [ -9223372036854775808, %85 ] - %.sroa.585.15.insert.insert = or i64 %.sroa.585.15.insert.ext, %.8..8..sroa.585.0.copyload87 + %88 = or disjoint i64 %86, %87 + %89 = or disjoint i64 %88, -9223372036854775808 br label %105 .lr.ph.i.i.i: ; preds = %81 @@ -93954,10 +93948,10 @@ _ZN5typst5model10numbering_13NumberingKind9from_char17h2c74da6d5069f7a3E.exit: ; %.pre = load i64, ptr %12, align 8 br label %105 -105: ; preds = %"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E.exit.i", %89 - %106 = phi i64 [ %.pre, %"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E.exit.i" ], [ %17, %89 ] - %.sroa.083.0 = phi ptr [ %.pre.i.i, %"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E.exit.i" ], [ %.0..0..sroa.083.0.copyload84, %89 ] - %.sroa.585.0 = phi i64 [ %99, %"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E.exit.i" ], [ %.sroa.585.15.insert.insert, %89 ] +105: ; preds = %85, %.lr.ph.preheader.i.i, %.thread103, %"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E.exit.i" + %106 = phi i64 [ %.pre, %"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E.exit.i" ], [ %17, %.thread103 ], [ %17, %.lr.ph.preheader.i.i ], [ %17, %85 ] + %.sroa.083.0 = phi ptr [ %.pre.i.i, %"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E.exit.i" ], [ null, %.thread103 ], [ %.0..0..0..sroa.083.0.copyload84.pre, %.lr.ph.preheader.i.i ], [ null, %85 ] + %.sroa.585.0 = phi i64 [ %99, %"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E.exit.i" ], [ -9223372036854775808, %.thread103 ], [ %89, %.lr.ph.preheader.i.i ], [ -9223372036854775808, %85 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) store ptr %.sroa.083.0, ptr %8, align 8 %.sroa.585.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 8 @@ -102543,8 +102537,8 @@ default.unreachable: ; preds = %40 br label %_ZN5typst5model10numbering_13NumberingKind7to_char17h278b798d82c2c96bE.exit _ZN5typst5model10numbering_13NumberingKind7to_char17h278b798d82c2c96bE.exit: ; preds = %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %40 - %.0.i21 = phi i32 [ 97, %43 ], [ 105, %44 ], [ 42, %45 ], [ 1488, %46 ], [ 19968, %47 ], [ 12354, %48 ], [ 12356, %49 ], [ 12450, %50 ], [ 12452, %51 ], [ 12593, %52 ], [ 44032, %53 ], [ 49, %40 ] %.0 = phi i1 [ true, %43 ], [ true, %44 ], [ false, %45 ], [ false, %46 ], [ false, %47 ], [ false, %48 ], [ false, %49 ], [ false, %50 ], [ false, %51 ], [ false, %52 ], [ false, %53 ], [ false, %40 ] + %.0.i21 = phi i32 [ 97, %43 ], [ 105, %44 ], [ 42, %45 ], [ 1488, %46 ], [ 19968, %47 ], [ 12354, %48 ], [ 12356, %49 ], [ 12450, %50 ], [ 12452, %51 ], [ 12593, %52 ], [ 44032, %53 ], [ 49, %40 ] %54 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 17 %55 = load i8, ptr %54, align 1, !range !87, !noundef !4 %56 = trunc nuw i8 %55 to i1 diff --git a/bench/uv-rs/optimized/blga9afykac2ursvzy4lhyrgl.ll b/bench/uv-rs/optimized/blga9afykac2ursvzy4lhyrgl.ll index 8b14f076bb2..81a32f5bd76 100644 --- a/bench/uv-rs/optimized/blga9afykac2ursvzy4lhyrgl.ll +++ b/bench/uv-rs/optimized/blga9afykac2ursvzy4lhyrgl.ll @@ -2278,7 +2278,7 @@ define hidden noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17hc4181fa35d4 } ; Function Attrs: inlinehint nonlazybind uwtable -define hidden range(i64 0, -4294967294) i64 @"_ZN4core3num21_$LT$impl$u20$u32$GT$16from_ascii_radix17h9db09a45631ff61cE.llvm.13452247604522872897"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i32 noundef %2) unnamed_addr #3 { +define hidden range(i64 0, -4294967295) i64 @"_ZN4core3num21_$LT$impl$u20$u32$GT$16from_ascii_radix17h9db09a45631ff61cE.llvm.13452247604522872897"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i32 noundef %2) unnamed_addr #3 { %4 = add i32 %2, -37 %or.cond = icmp ult i32 %4, -35 br i1 %or.cond, label %5, label %6, !prof !264 @@ -2294,10 +2294,8 @@ define hidden range(i64 0, -4294967294) i64 @"_ZN4core3num21_$LT$impl$u20$u32$GT ] .loopexit56: ; preds = %37, %39, %29, %57, %45, %59, %.lr.ph.split.us, %.lr.ph.split, %7, %7, %6, %.loopexit - %.sroa.0.0 = phi i64 [ 0, %.loopexit ], [ 1, %6 ], [ 1, %7 ], [ 1, %7 ], [ 1, %.lr.ph.split ], [ 1, %.lr.ph.split.us ], [ 1, %59 ], [ 1, %45 ], [ 1, %57 ], [ 1, %29 ], [ 1, %39 ], [ 1, %37 ] - %.sroa.8.0.insert.insert = phi i64 [ %44, %.loopexit ], [ %1, %6 ], [ 256, %7 ], [ 256, %7 ], [ 256, %.lr.ph.split ], [ 256, %.lr.ph.split.us ], [ 512, %57 ], [ 256, %45 ], [ 512, %59 ], [ 512, %37 ], [ 512, %39 ], [ 256, %29 ] - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.8.0.insert.insert, %.sroa.0.0 - ret i64 %.sroa.0.0.insert.insert + %.sroa.0.0 = phi i64 [ %44, %.loopexit ], [ 1, %6 ], [ 257, %7 ], [ 257, %7 ], [ 257, %.lr.ph.split ], [ 257, %.lr.ph.split.us ], [ 513, %59 ], [ 513, %57 ], [ 257, %45 ], [ 513, %39 ], [ 513, %37 ], [ 257, %29 ] + ret i64 %.sroa.8.0.insert.insert 7: ; preds = %6 %8 = load i8, ptr %0, align 1, !noundef !3 @@ -2455,7 +2453,7 @@ thread-pre-split: ; preds = %6 } ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind memory(argmem: read) uwtable -define hidden range(i64 0, -4294967294) i64 @"_ZN4core3num60_$LT$impl$u20$core..str..traits..FromStr$u20$for$u20$u32$GT$8from_str17h97726dcafe2d40b6E.llvm.13452247604522872897"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1) unnamed_addr #12 { +define hidden range(i64 0, -4294967295) i64 @"_ZN4core3num60_$LT$impl$u20$core..str..traits..FromStr$u20$for$u20$u32$GT$8from_str17h97726dcafe2d40b6E.llvm.13452247604522872897"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1) unnamed_addr #12 { switch i64 %1, label %15 [ i64 0, label %"_ZN4core3num21_$LT$impl$u20$u32$GT$16from_ascii_radix17h9db09a45631ff61cE.llvm.13452247604522872897.exit" i64 1, label %3 @@ -2546,14 +2544,12 @@ define hidden range(i64 0, -4294967294) i64 @"_ZN4core3num60_$LT$impl$u20$core.. br label %"_ZN4core3num21_$LT$impl$u20$u32$GT$16from_ascii_radix17h9db09a45631ff61cE.llvm.13452247604522872897.exit" "_ZN4core3num21_$LT$impl$u20$u32$GT$16from_ascii_radix17h9db09a45631ff61cE.llvm.13452247604522872897.exit": ; preds = %20, %28, %30, %.lr.ph.split.us.i, %2, %3, %3, %.loopexit.i - %.sroa.0.0.i = phi i64 [ 0, %.loopexit.i ], [ 1, %2 ], [ 1, %3 ], [ 1, %3 ], [ 1, %.lr.ph.split.us.i ], [ 1, %30 ], [ 1, %28 ], [ 1, %20 ] - %.sroa.8.0.insert.insert.i = phi i64 [ %35, %.loopexit.i ], [ %1, %2 ], [ 256, %3 ], [ 256, %3 ], [ 256, %.lr.ph.split.us.i ], [ 256, %20 ], [ 512, %28 ], [ 512, %30 ] - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.8.0.insert.insert.i, %.sroa.0.0.i - ret i64 %.sroa.0.0.insert.insert.i + %.sroa.0.0.i = phi i64 [ %35, %.loopexit.i ], [ 1, %2 ], [ 257, %3 ], [ 257, %3 ], [ 257, %.lr.ph.split.us.i ], [ 257, %20 ], [ 513, %28 ], [ 513, %30 ] + ret i64 %.sroa.8.0.insert.insert.i } ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind memory(argmem: read) uwtable -define hidden range(i64 0, -4294967294) i64 @_ZN4core3ops8function5FnMut8call_mut17h2e73faab25d8966eE.llvm.13452247604522872897(ptr noalias noundef nonnull readnone align 1 captures(none) %0, ptr noalias noundef nonnull readonly align 1 captures(none) %1, i64 noundef %2) unnamed_addr #12 { +define hidden range(i64 0, -4294967295) i64 @_ZN4core3ops8function5FnMut8call_mut17h2e73faab25d8966eE.llvm.13452247604522872897(ptr noalias noundef nonnull readnone align 1 captures(none) %0, ptr noalias noundef nonnull readonly align 1 captures(none) %1, i64 noundef %2) unnamed_addr #12 { switch i64 %2, label %16 [ i64 0, label %"_ZN4core3str21_$LT$impl$u20$str$GT$5parse17h6d08b54dfe7f4588E.llvm.13452247604522872897.exit" i64 1, label %4 @@ -2644,10 +2640,8 @@ define hidden range(i64 0, -4294967294) i64 @_ZN4core3ops8function5FnMut8call_mu br label %"_ZN4core3str21_$LT$impl$u20$str$GT$5parse17h6d08b54dfe7f4588E.llvm.13452247604522872897.exit" "_ZN4core3str21_$LT$impl$u20$str$GT$5parse17h6d08b54dfe7f4588E.llvm.13452247604522872897.exit": ; preds = %21, %29, %31, %.lr.ph.split.us.i.i.i, %3, %4, %4, %.loopexit.i.i.i - %.sroa.0.0.i.i.i = phi i64 [ 0, %.loopexit.i.i.i ], [ 1, %3 ], [ 1, %4 ], [ 1, %4 ], [ 1, %.lr.ph.split.us.i.i.i ], [ 1, %31 ], [ 1, %29 ], [ 1, %21 ] - %.sroa.8.0.insert.insert.i.i.i = phi i64 [ %36, %.loopexit.i.i.i ], [ %2, %3 ], [ 256, %4 ], [ 256, %4 ], [ 256, %.lr.ph.split.us.i.i.i ], [ 256, %21 ], [ 512, %29 ], [ 512, %31 ] - %.sroa.0.0.insert.insert.i.i.i = or disjoint i64 %.sroa.8.0.insert.insert.i.i.i, %.sroa.0.0.i.i.i - ret i64 %.sroa.0.0.insert.insert.i.i.i + %.sroa.0.0.i.i.i = phi i64 [ %36, %.loopexit.i.i.i ], [ 1, %3 ], [ 257, %4 ], [ 257, %4 ], [ 257, %.lr.ph.split.us.i.i.i ], [ 257, %21 ], [ 513, %29 ], [ 513, %31 ] + ret i64 %.sroa.8.0.insert.insert.i.i.i } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable @@ -2705,7 +2699,7 @@ define hidden { ptr, i64 } @"_ZN4core3ops8function5impls80_$LT$impl$u20$core..op } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: read) uwtable -define hidden range(i64 0, -4294967294) i64 @"_ZN4core3ops8function5impls80_$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$9call_once17h593bb5a196c778e0E"(ptr noalias noundef nonnull readnone align 1 captures(none) %0, ptr noalias noundef nonnull readonly align 1 captures(none) %1, i64 noundef %2) unnamed_addr #14 { +define hidden range(i64 0, -4294967295) i64 @"_ZN4core3ops8function5impls80_$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$9call_once17h593bb5a196c778e0E"(ptr noalias noundef nonnull readnone align 1 captures(none) %0, ptr noalias noundef nonnull readonly align 1 captures(none) %1, i64 noundef %2) unnamed_addr #14 { switch i64 %2, label %16 [ i64 0, label %_ZN4core3ops8function5FnMut8call_mut17h2e73faab25d8966eE.llvm.13452247604522872897.exit i64 1, label %4 @@ -2796,10 +2790,8 @@ define hidden range(i64 0, -4294967294) i64 @"_ZN4core3ops8function5impls80_$LT$ br label %_ZN4core3ops8function5FnMut8call_mut17h2e73faab25d8966eE.llvm.13452247604522872897.exit _ZN4core3ops8function5FnMut8call_mut17h2e73faab25d8966eE.llvm.13452247604522872897.exit: ; preds = %21, %29, %31, %.lr.ph.split.us.i.i.i.i, %3, %4, %4, %.loopexit.i.i.i.i - %.sroa.0.0.i.i.i.i = phi i64 [ 0, %.loopexit.i.i.i.i ], [ 1, %3 ], [ 1, %4 ], [ 1, %4 ], [ 1, %.lr.ph.split.us.i.i.i.i ], [ 1, %31 ], [ 1, %29 ], [ 1, %21 ] - %.sroa.8.0.insert.insert.i.i.i.i = phi i64 [ %36, %.loopexit.i.i.i.i ], [ %2, %3 ], [ 256, %4 ], [ 256, %4 ], [ 256, %.lr.ph.split.us.i.i.i.i ], [ 256, %21 ], [ 512, %29 ], [ 512, %31 ] - %.sroa.0.0.insert.insert.i.i.i.i = or disjoint i64 %.sroa.8.0.insert.insert.i.i.i.i, %.sroa.0.0.i.i.i.i - ret i64 %.sroa.0.0.insert.insert.i.i.i.i + %.sroa.0.0.i.i.i.i = phi i64 [ %36, %.loopexit.i.i.i.i ], [ 1, %3 ], [ 257, %4 ], [ 257, %4 ], [ 257, %.lr.ph.split.us.i.i.i.i ], [ 513, %31 ], [ 513, %29 ], [ 257, %21 ] + ret i64 %.sroa.8.0.insert.insert.i.i.i.i } ; Function Attrs: inlinehint nonlazybind uwtable @@ -4882,7 +4874,7 @@ define hidden { ptr, ptr } @"_ZN4core3str21_$LT$impl$u20$str$GT$5chars17ha3a2fe8 } ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind memory(argmem: read) uwtable -define hidden range(i64 0, -4294967294) i64 @"_ZN4core3str21_$LT$impl$u20$str$GT$5parse17h6d08b54dfe7f4588E.llvm.13452247604522872897"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1) unnamed_addr #12 { +define hidden range(i64 0, -4294967295) i64 @"_ZN4core3str21_$LT$impl$u20$str$GT$5parse17h6d08b54dfe7f4588E.llvm.13452247604522872897"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1) unnamed_addr #12 { switch i64 %1, label %15 [ i64 0, label %"_ZN4core3num60_$LT$impl$u20$core..str..traits..FromStr$u20$for$u20$u32$GT$8from_str17h97726dcafe2d40b6E.llvm.13452247604522872897.exit" i64 1, label %3 @@ -4973,10 +4965,8 @@ define hidden range(i64 0, -4294967294) i64 @"_ZN4core3str21_$LT$impl$u20$str$GT br label %"_ZN4core3num60_$LT$impl$u20$core..str..traits..FromStr$u20$for$u20$u32$GT$8from_str17h97726dcafe2d40b6E.llvm.13452247604522872897.exit" "_ZN4core3num60_$LT$impl$u20$core..str..traits..FromStr$u20$for$u20$u32$GT$8from_str17h97726dcafe2d40b6E.llvm.13452247604522872897.exit": ; preds = %20, %28, %30, %.lr.ph.split.us.i.i, %2, %3, %3, %.loopexit.i.i - %.sroa.0.0.i.i = phi i64 [ 0, %.loopexit.i.i ], [ 1, %2 ], [ 1, %3 ], [ 1, %3 ], [ 1, %.lr.ph.split.us.i.i ], [ 1, %30 ], [ 1, %28 ], [ 1, %20 ] - %.sroa.8.0.insert.insert.i.i = phi i64 [ %35, %.loopexit.i.i ], [ %1, %2 ], [ 256, %3 ], [ 256, %3 ], [ 256, %.lr.ph.split.us.i.i ], [ 256, %20 ], [ 512, %28 ], [ 512, %30 ] - %.sroa.0.0.insert.insert.i.i = or disjoint i64 %.sroa.8.0.insert.insert.i.i, %.sroa.0.0.i.i - ret i64 %.sroa.0.0.insert.insert.i.i + %.sroa.0.0.i.i = phi i64 [ %35, %.loopexit.i.i ], [ 1, %2 ], [ 257, %3 ], [ 257, %3 ], [ 257, %.lr.ph.split.us.i.i ], [ 513, %30 ], [ 513, %28 ], [ 257, %20 ] + ret i64 %.sroa.8.0.insert.insert.i.i } ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable diff --git a/bench/velox/optimized/Expr.ll b/bench/velox/optimized/Expr.ll index bfabc341407..fce209635e9 100644 --- a/bench/velox/optimized/Expr.ll +++ b/bench/velox/optimized/Expr.ll @@ -30924,13 +30924,13 @@ cleanup.sink.split: ; preds = %invoke.cont16, %inv %5 = load atomic i8, ptr %asciiInfo seq_cst, align 8 %frombool11 = and i8 %5, 1 %6 = zext nneg i8 %frombool11 to i16 + %7 = or disjoint i16 %6, 256 br label %cleanup cleanup: ; preds = %cleanup.sink.split, %if.end, %invoke.cont16, %invoke.cont6 - %retval.sroa.0.0 = phi i16 [ 0, %invoke.cont6 ], [ 0, %invoke.cont16 ], [ 0, %if.end ], [ %6, %cleanup.sink.split ] - %retval.sroa.3.0 = phi i16 [ 0, %invoke.cont6 ], [ 0, %invoke.cont16 ], [ 0, %if.end ], [ 256, %cleanup.sink.split ] - %7 = load i8, ptr %_M_owns.i2.i.i.i, align 8 - %tobool.i.i = trunc i8 %7 to i1 + %retval.sroa.0.0 = phi i16 [ 0, %invoke.cont6 ], [ 0, %invoke.cont16 ], [ 0, %if.end ], [ %7, %cleanup.sink.split ] + %8 = load i8, ptr %_M_owns.i2.i.i.i, align 8 + %tobool.i.i = trunc i8 %8 to i1 br i1 %tobool.i.i, label %if.then.i.i, label %_ZN5folly9LockedPtrIKNS_12SynchronizedIN8facebook5velox17SelectivityVectorENS_15SharedMutexImplILb0EvSt6atomicNS_24SharedMutexPolicyDefaultEEEEENS_6detail22SynchronizedLockPolicyILNSB_22SynchronizedMutexLevelE2ELNSB_23SynchronizedMutexMethodE0EEEED2Ev.exit if.then.i.i: ; preds = %cleanup @@ -30946,8 +30946,7 @@ terminate.lpad.i.i: ; preds = %if.then.i.i unreachable _ZN5folly9LockedPtrIKNS_12SynchronizedIN8facebook5velox17SelectivityVectorENS_15SharedMutexImplILb0EvSt6atomicNS_24SharedMutexPolicyDefaultEEEEENS_6detail22SynchronizedLockPolicyILNSB_22SynchronizedMutexLevelE2ELNSB_23SynchronizedMutexMethodE0EEEED2Ev.exit: ; preds = %cleanup, %if.then.i.i - %retval.sroa.0.0.insert.insert = or disjoint i16 %retval.sroa.3.0, %retval.sroa.0.0 - ret i16 %retval.sroa.0.0.insert.insert + ret i16 %retval.sroa.3.0 } ; Function Attrs: mustprogress uwtable diff --git a/bench/velox/optimized/Type.ll b/bench/velox/optimized/Type.ll index 50e0b473cc7..1288ab1c577 100644 --- a/bench/velox/optimized/Type.ll +++ b/bench/velox/optimized/Type.ll @@ -3143,13 +3143,12 @@ if.end: ; preds = %entry %second = getelementptr inbounds nuw i8, ptr %call.i, i64 40 %0 = load i8, ptr %second, align 1 %1 = zext i8 %0 to i16 + %2 = or disjoint i16 %1, 256 br label %return return: ; preds = %entry, %if.end - %retval.sroa.0.0 = phi i16 [ %1, %if.end ], [ 0, %entry ] - %retval.sroa.2.0 = phi i16 [ 256, %if.end ], [ 0, %entry ] - %retval.sroa.0.0.insert.insert = or disjoint i16 %retval.sroa.2.0, %retval.sroa.0.0 - ret i16 %retval.sroa.0.0.insert.insert + %retval.sroa.0.0 = phi i16 [ %2, %if.end ], [ 0, %entry ] + ret i16 %retval.sroa.2.0 } ; Function Attrs: mustprogress uwtable @@ -8385,13 +8384,12 @@ if.then: ; preds = %land.rhs.i.i.i, %if %second = getelementptr inbounds nuw i8, ptr %add.ptr9.i.i, i64 32 %16 = load i32, ptr %second, align 4 %17 = zext i32 %16 to i64 + %18 = or disjoint i64 %17, 4294967296 br label %return return: ; preds = %while.end.i, %if.end20.i, %if.then - %retval.sroa.0.0 = phi i64 [ %17, %if.then ], [ 0, %if.end20.i ], [ 0, %while.end.i ] - %retval.sroa.2.0 = phi i64 [ 4294967296, %if.then ], [ 0, %if.end20.i ], [ 0, %while.end.i ] - %retval.sroa.0.0.insert.insert = or disjoint i64 %retval.sroa.2.0, %retval.sroa.0.0 - ret i64 %retval.sroa.0.0.insert.insert + %retval.sroa.0.0 = phi i64 [ %18, %if.then ], [ 0, %if.end20.i ], [ 0, %while.end.i ] + ret i64 %retval.sroa.2.0 } ; Function Attrs: mustprogress uwtable diff --git a/bench/wasmi-rs/optimized/5u9yytvr2y94asl5o7aafpnhk.ll b/bench/wasmi-rs/optimized/5u9yytvr2y94asl5o7aafpnhk.ll index d9f6001f756..6159cc02760 100644 --- a/bench/wasmi-rs/optimized/5u9yytvr2y94asl5o7aafpnhk.ll +++ b/bench/wasmi-rs/optimized/5u9yytvr2y94asl5o7aafpnhk.ll @@ -7628,7 +7628,7 @@ _ZN5wasmi6engine10translator13instr_encoder13InstrSequence3get17he6af849e6ecf8da %21 = call { i16, i16 } @_ZN8wasmi_ir4enum11Instruction6result17h6b21ddbcdcae7d7fE(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %5) %22 = extractvalue { i16, i16 } %21, 0 %23 = trunc i16 %22 to i1 - br i1 %23, label %24, label %28 + br i1 %23, label %24, label %.sink.split 24: ; preds = %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence3get17he6af849e6ecf8dacE.exit %25 = extractvalue { i16, i16 } %21, 1 @@ -7636,29 +7636,26 @@ _ZN5wasmi6engine10translator13instr_encoder13InstrSequence3get17he6af849e6ecf8da %27 = icmp ne i8 %26, 1 %.not = icmp eq i16 %25, %3 %or.cond = and i1 %.not, %27 - br i1 %or.cond, label %29, label %28 + br i1 %or.cond, label %28, label %.sink.split -28: ; preds = %29, %24, %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence3get17he6af849e6ecf8dacE.exit - call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %33 +28: ; preds = %24 + %29 = call i64 @"_ZN108_$LT$wasmi_ir..enum..Instruction$u20$as$u20$wasmi..engine..translator..comparator..TryIntoCmpSelectInstr$GT$25try_into_cmp_select_instr17h78b0f9e44fe2f618E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %5, i16 noundef %2) + %30 = and i64 %29, 65535 + %.not11 = icmp eq i64 %30, 806 + br i1 %.not11, label %.sink.split, label %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence7get_mut17h75ef1203a494ab49E.exit -29: ; preds = %24 - %30 = call i64 @"_ZN108_$LT$wasmi_ir..enum..Instruction$u20$as$u20$wasmi..engine..translator..comparator..TryIntoCmpSelectInstr$GT$25try_into_cmp_select_instr17h78b0f9e44fe2f618E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %5, i16 noundef %2) - %31 = and i64 %30, 65535 - %.not11 = icmp eq i64 %31, 806 - br i1 %.not11, label %28, label %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence7get_mut17h75ef1203a494ab49E.exit +29: ; preds = %28 + store i64 %29, ptr %19, align 4 + br label %.sink.split -_ZN5wasmi6engine10translator13instr_encoder13InstrSequence7get_mut17h75ef1203a494ab49E.exit: ; preds = %29 - store i64 %30, ptr %19, align 4 +29:; preds = %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence3get17he6af849e6ecf8dacE.exit, %24, %28, %29 + %.sroa.7.sroa.0.0.ph = phi i64 [ %29, %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence7get_mut17h75ef1203a494ab49E.exit ], [ 806, %28 ], [ 806, %24 ], [ 806, %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence3get17he6af849e6ecf8dacE.exit ] call void @llvm.lifetime.end.p0(ptr nonnull %5) - %32 = and i64 %30, -65536 br label %33 -33: ; preds = %4, %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence7get_mut17h75ef1203a494ab49E.exit, %28 - %.sroa.7.sroa.0.0 = phi i64 [ 0, %28 ], [ %32, %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence7get_mut17h75ef1203a494ab49E.exit ], [ 0, %4 ] - %.sroa.0.0 = phi i64 [ 806, %28 ], [ %31, %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence7get_mut17h75ef1203a494ab49E.exit ], [ 806, %4 ] - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0, %.sroa.7.sroa.0.0 - ret i64 %.sroa.0.0.insert.insert +33: ; preds = %_ZN5wasmi6engine10translator13instr_encoder13InstrSequence7get_mut17h75ef1203a494ab49E.exit, %4 + %.sroa.7.sroa.0.0 = phi i64 [ 806, %4 ], [ %.sroa.7.sroa.0.0.ph, %.sink.split ] + ret i64 %.sroa.7.sroa.0.0 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/wasmi-rs/optimized/81zenk7vnx5bb2cqs914cjtg3.ll b/bench/wasmi-rs/optimized/81zenk7vnx5bb2cqs914cjtg3.ll index 58f8625831d..bbba27bf5b7 100644 --- a/bench/wasmi-rs/optimized/81zenk7vnx5bb2cqs914cjtg3.ll +++ b/bench/wasmi-rs/optimized/81zenk7vnx5bb2cqs914cjtg3.ll @@ -189,14 +189,17 @@ define { i32, i32 } @_ZN8wasmi_ir9primitive19ComparatorAndOffset3new17h581df51a5 ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define { i32, i32 } @_ZN8wasmi_ir9primitive19ComparatorAndOffset8from_u6417h319113588d3c6badE(i64 noundef %0) unnamed_addr #0 { + %switch.idx.mult.i = and i64 %0, -4294967296 %2 = trunc i64 %0 to i32 - %3 = icmp ugt i64 %0, 154618822655 - %4 = lshr i64 %0, 32 - %5 = trunc nuw nsw i64 %4 to i32 - %.sroa.02.0 = select i1 %3, i32 36, i32 %5 - %6 = insertvalue { i32, i32 } poison, i32 %.sroa.02.0, 0 - %7 = insertvalue { i32, i32 } %6, i32 %2, 1 - ret { i32, i32 } %7 + %3 = icmp ult i64 %0, 154618822656 + %.sroa.3937.0.i = select i1 %3, i64 %switch.idx.mult.i, i64 513 + %5 = trunc i64 %.sroa.3937.0.i to i1 + %.sroa.5.0.extract.shift = lshr i64 %.sroa.3937.0.i, 32 + %.sroa.5.0.extract.trunc = trunc nuw i64 %.sroa.5.0.extract.shift to i32 + %.sroa.02.0 = select i1 %4, i32 36, i32 %.sroa.5.0.extract.trunc + %5 = insertvalue { i32, i32 } poison, i32 %.sroa.02.0, 0 + %6 = insertvalue { i32, i32 } %5, i32 %2, 1 + ret { i32, i32 } %6 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable @@ -335,15 +338,13 @@ define noundef double @"_ZN8wasmi_ir9primitive97_$LT$impl$u20$core..convert..Fro } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable -define range(i64 512, 150323855874) i64 @"_ZN85_$LT$wasmi_ir..primitive..Comparator$u20$as$u20$core..convert..TryFrom$LT$u32$GT$$GT$8try_from17hc348f4b912607b8dE"(i32 noundef %0) unnamed_addr #0 { - %2 = icmp ugt i32 %0, 35 +define range(i64 512, 150323855873) i64 @"_ZN85_$LT$wasmi_ir..primitive..Comparator$u20$as$u20$core..convert..TryFrom$LT$u32$GT$$GT$8try_from17hc348f4b912607b8dE"(i32 noundef %0) unnamed_addr #0 { + %2 = icmp ult i32 %0, 36 %switch.idx.cast = zext i32 %0 to i64 %switch.idx.mult = shl nuw nsw i64 %switch.idx.cast, 32 %switch.offset = or disjoint i64 %switch.idx.mult, 512 - %.sroa.036.0 = zext i1 %2 to i64 - %.sroa.3937.0 = select i1 %2, i64 512, i64 %switch.offset - %.sroa.036.0.insert.insert = or disjoint i64 %.sroa.3937.0, %.sroa.036.0 - ret i64 %.sroa.036.0.insert.insert + %.sroa.3937.0 = select i1 %2, i64 %switch.offset, i64 513 + ret i64 %.sroa.3937.0 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/wasmi-rs/optimized/cfqsonek5l7h839gg4bayo6fi.ll b/bench/wasmi-rs/optimized/cfqsonek5l7h839gg4bayo6fi.ll index 24ed00cc7d6..d673f163e34 100644 --- a/bench/wasmi-rs/optimized/cfqsonek5l7h839gg4bayo6fi.ll +++ b/bench/wasmi-rs/optimized/cfqsonek5l7h839gg4bayo6fi.ll @@ -11750,7 +11750,7 @@ define hidden { i16, i16 } @"_ZN5wasmi6engine10translator8provider17Provider$LT$ } ; Function Attrs: nonlazybind uwtable -define hidden range(i32 0, -65534) i32 @"_ZN5wasmi6engine10translator8provider17Provider$LT$T$GT$9map_const17h78911ab22799f472E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(24) %0) unnamed_addr #0 { +define hidden range(i32 0, -65535) i32 @"_ZN5wasmi6engine10translator8provider17Provider$LT$T$GT$9map_const17h78911ab22799f472E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(24) %0) unnamed_addr #0 { %2 = alloca [24 x i8], align 8 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load i8, ptr %3, align 8, !range !265, !noundef !3 @@ -11764,7 +11764,8 @@ define hidden range(i32 0, -65534) i32 @"_ZN5wasmi6engine10translator8provider17 call void @llvm.lifetime.end.p0(ptr nonnull %2) %7 = shl i32 %6, 8 %8 = and i32 %7, 65280 - br label %13 + %9 = or disjoint i32 %8, 1 + br label %14 9: ; preds = %1 %10 = load i16, ptr %0, align 8, !noundef !3 @@ -11773,10 +11774,8 @@ define hidden range(i32 0, -65534) i32 @"_ZN5wasmi6engine10translator8provider17 br label %13 13: ; preds = %9, %5 - %.sroa.0.0 = phi i32 [ 1, %5 ], [ 0, %9 ] - %.sroa.3.0.insert.insert = phi i32 [ %8, %5 ], [ %12, %9 ] - %.sroa.0.0.insert.insert = or disjoint i32 %.sroa.3.0.insert.insert, %.sroa.0.0 - ret i32 %.sroa.0.0.insert.insert + %.sroa.0.0 = phi i32 [ %9, %5 ], [ %13, %10 ] + ret i32 %.sroa.3.0.insert.insert } ; Function Attrs: nonlazybind uwtable diff --git a/bench/wasmtime-rs/optimized/1zz7jsxv168dc7km.ll b/bench/wasmtime-rs/optimized/1zz7jsxv168dc7km.ll index e0ead0413a4..4d06399b988 100644 --- a/bench/wasmtime-rs/optimized/1zz7jsxv168dc7km.ll +++ b/bench/wasmtime-rs/optimized/1zz7jsxv168dc7km.ll @@ -4014,7 +4014,7 @@ _ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.14031171042790067460.exit } ; Function Attrs: nonlazybind uwtable -define range(i64 0, -4294967294) i64 @_ZN16wasmtime_runtime7threads13shared_memory12SharedMemory13atomic_notify17h0c4ac33da2261278E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0, i64 noundef %1, i32 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { +define range(i64 0, -4294967295) i64 @_ZN16wasmtime_runtime7threads13shared_memory12SharedMemory13atomic_notify17h0c4ac33da2261278E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0, i64 noundef %1, i32 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { %4 = alloca { i64, [3 x i64] }, align 8 %5 = alloca { { ptr, i8, [7 x i8] } }, align 8 %6 = alloca i64, align 8 @@ -4312,10 +4312,8 @@ _ZN16wasmtime_runtime7threads12parking_spot11ParkingSpot8with_lot17h53d7222de958 br label %27 _ZN16wasmtime_runtime6memory20validate_atomic_addr17he3c8806ff4ecac7dE.exit.thread: ; preds = %_ZN16wasmtime_runtime7threads12parking_spot11ParkingSpot8with_lot17h53d7222de958dc7fE.exit.i, %27, %16, %3 - %.sroa.0.0 = phi i64 [ 1, %3 ], [ 1, %16 ], [ 0, %27 ], [ 0, %_ZN16wasmtime_runtime7threads12parking_spot11ParkingSpot8with_lot17h53d7222de958dc7fE.exit.i ] - %.sroa.3.0.insert.insert = phi i64 [ 512, %3 ], [ 256, %16 ], [ 0, %27 ], [ %.1.i, %_ZN16wasmtime_runtime7threads12parking_spot11ParkingSpot8with_lot17h53d7222de958dc7fE.exit.i ] - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.3.0.insert.insert, %.sroa.0.0 - ret i64 %.sroa.0.0.insert.insert + %.sroa.0.0 = phi i64 [ 257, %16 ], [ 513, %3 ], [ %.1.i, %_ZN16wasmtime_runtime7threads12parking_spot11ParkingSpot8with_lot17h53d7222de958dc7fE.exit.i ], [ 0, %27 ] + ret i64 %.sroa.0.0 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/wasmtime-rs/optimized/3flv1664rwe55t82.ll b/bench/wasmtime-rs/optimized/3flv1664rwe55t82.ll index 5c02a8c87d4..615ea4fb7c9 100644 --- a/bench/wasmtime-rs/optimized/3flv1664rwe55t82.ll +++ b/bench/wasmtime-rs/optimized/3flv1664rwe55t82.ll @@ -6343,15 +6343,14 @@ define hidden void @_ZN6wiggle19validate_size_align17h69b2e60738568642E(ptr noal call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !778 %42 = lshr i64 %.sroa.6.0.copyload.i, 1 %43 = and i64 %.sroa.6.0.copyload.i, 1 + %44 = or i64 %43, %.sroa.4.0.copyload.i br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8align_to17h44ab2d3b2a597a9fE.exit" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8align_to17h44ab2d3b2a597a9fE.exit": ; preds = %31, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" - %.sroa.4.0.copyload.sink.i = phi i64 [ %.sroa.4.0.copyload.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ %27, %31 ] + %.sroa.4.0.copyload.sink.i = phi i64 [ %44, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ %27, %31 ] %.sroa.5.0.copyload.sink.i = phi ptr [ %.sroa.5.0.copyload.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ @anon.bf702594c4d0f4706ef572971e5bd535.7.llvm.17069743828446960565, %31 ] %.sink13.i = phi i64 [ %42, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ 0, %31 ] - %.sink.i = phi i64 [ %43, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ 0, %31 ] - %44 = or i64 %.sink.i, %.sroa.4.0.copyload.sink.i - %or.cond.not = icmp eq i64 %44, 0 + %or.cond.not = icmp eq i64 %.sroa.4.0.copyload.sink.i, 0 br i1 %or.cond.not, label %47, label %49 45: ; preds = %.thread121, %25 @@ -6486,15 +6485,14 @@ define hidden void @_ZN6wiggle19validate_size_align17hc5ec65dbd100716dE(ptr noal call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !787 %42 = lshr i64 %.sroa.6.0.copyload.i, 3 %43 = and i64 %.sroa.6.0.copyload.i, 7 + %44 = or i64 %43, %.sroa.4.0.copyload.i br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8align_to17hf9a0734a7369c6f5E.exit" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8align_to17hf9a0734a7369c6f5E.exit": ; preds = %31, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" - %.sroa.4.0.copyload.sink.i = phi i64 [ %.sroa.4.0.copyload.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ %27, %31 ] + %.sroa.4.0.copyload.sink.i = phi i64 [ %44, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ %27, %31 ] %.sroa.5.0.copyload.sink.i = phi ptr [ %.sroa.5.0.copyload.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ @anon.bf702594c4d0f4706ef572971e5bd535.7.llvm.17069743828446960565, %31 ] %.sink13.i = phi i64 [ %42, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ 0, %31 ] - %.sink.i = phi i64 [ %43, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ 0, %31 ] - %44 = or i64 %.sink.i, %.sroa.4.0.copyload.sink.i - %or.cond.not = icmp eq i64 %44, 0 + %or.cond.not = icmp eq i64 %.sroa.4.0.copyload.sink.i, 0 br i1 %or.cond.not, label %47, label %49 45: ; preds = %.thread121, %25 @@ -6629,15 +6627,14 @@ define hidden void @_ZN6wiggle19validate_size_align17hf2cd7a7f4bf4ac97E(ptr noal call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !796 %42 = lshr i64 %.sroa.6.0.copyload.i, 2 %43 = and i64 %.sroa.6.0.copyload.i, 3 + %44 = or i64 %43, %.sroa.4.0.copyload.i br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8align_to17h896515478202e9b5E.exit" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8align_to17h896515478202e9b5E.exit": ; preds = %31, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" - %.sroa.4.0.copyload.sink.i = phi i64 [ %.sroa.4.0.copyload.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ %27, %31 ] + %.sroa.4.0.copyload.sink.i = phi i64 [ %44, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ %27, %31 ] %.sroa.5.0.copyload.sink.i = phi ptr [ %.sroa.5.0.copyload.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ @anon.bf702594c4d0f4706ef572971e5bd535.7.llvm.17069743828446960565, %31 ] %.sink13.i = phi i64 [ %42, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ 0, %31 ] - %.sink.i = phi i64 [ %43, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h96f9bf8a428d623cE.llvm.17069743828446960565.exit.i" ], [ 0, %31 ] - %44 = or i64 %.sink.i, %.sroa.4.0.copyload.sink.i - %or.cond.not = icmp eq i64 %44, 0 + %or.cond.not = icmp eq i64 %.sroa.4.0.copyload.sink.i, 0 br i1 %or.cond.not, label %47, label %49 45: ; preds = %.thread121, %25 diff --git a/bench/wireshark/optimized/data_printer.ll b/bench/wireshark/optimized/data_printer.ll index 34d056a727e..eb1f3b50856 100644 --- a/bench/wireshark/optimized/data_printer.ll +++ b/bench/wireshark/optimized/data_printer.ll @@ -112,9 +112,7 @@ $_ZN9QtPrivate25QMetaTypeInterfaceWrapperIPvE8metaTypeE = comdat any @_ZN12QMetaTypeId2IPvE11nameAsArrayE = linkonce_odr constant %"struct.std::array" { [6 x i8] c"void*\00" }, comdat, align 1 @_ZN9QtPrivate25QMetaTypeInterfaceWrapperIPvE8metaTypeE = linkonce_odr global { i16, i16, i32, i32, { { i32 } }, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr } { i16 0, i16 8, i32 8, i32 2052, { { i32 } } { { i32 } { i32 31 } }, ptr null, ptr @_ZN12QMetaTypeId2IPvE11nameAsArrayE, ptr @_ZZN9QtPrivate16QMetaTypeForTypeIPvE13getDefaultCtrEvENUlPKNS_18QMetaTypeInterfaceES1_E_8__invokeES5_S1_, ptr @_ZZN9QtPrivate16QMetaTypeForTypeIPvE10getCopyCtrEvENUlPKNS_18QMetaTypeInterfaceES1_PKvE_8__invokeES5_S1_S7_, ptr @_ZZN9QtPrivate16QMetaTypeForTypeIPvE10getMoveCtrEvENUlPKNS_18QMetaTypeInterfaceES1_S1_E_8__invokeES5_S1_S1_, ptr null, ptr null, ptr null, ptr null, ptr null, ptr null, ptr null }, comdat, align 8 @_ZN7QAction16staticMetaObjectE = external global %struct.QMetaObject, align 8 -@switch.table._ZN11DataPrinter8hexCharsEv = private unnamed_addr constant [4 x i32] [i32 1, i32 0, i32 1, i32 1], align 4 -@switch.table._ZN11DataPrinter8hexCharsEv.1 = private unnamed_addr constant [4 x i32] [i32 16, i32 8, i32 16, i32 16], align 4 -@switch.table._ZN11DataPrinter8hexCharsEv.2 = private unnamed_addr constant [4 x i32] [i32 3, i32 9, i32 4, i32 4], align 4 +@switch.table._ZN11DataPrinter8hexCharsEv = private unnamed_addr constant [4 x i32] [i32 49, i32 72, i32 65, i32 65], align 4 @_ZN11DataPrinterC1EP7QObject = unnamed_addr alias void (ptr, ptr), ptr @_ZN11DataPrinterC2EP7QObject @@ -2970,7 +2968,7 @@ define noundef i32 @_ZNK11DataPrinter14byteLineLengthEv(ptr noundef readonly ali } ; Function Attrs: mustprogress null_pointer_is_valid sspstrong uwtable -define noundef range(i32 24, 146) i32 @_ZN11DataPrinter8hexCharsEv() local_unnamed_addr #0 align 2 { +define noundef range(i32 49, 73) i32 @_ZN11DataPrinter8hexCharsEv() local_unnamed_addr #0 align 2 { %1 = load i32, ptr getelementptr inbounds nuw (i8, ptr @recent, i64 28), align 4 %2 = icmp ult i32 %1, 4 br i1 %2, label %switch.lookup, label %3 @@ -2983,15 +2981,7 @@ switch.lookup: ; preds = %0 %4 = zext nneg i32 %1 to i64 %switch.gep = getelementptr inbounds nuw i32, ptr @switch.table._ZN11DataPrinter8hexCharsEv, i64 %4 %switch.load = load i32, ptr %switch.gep, align 4 - %5 = zext nneg i32 %1 to i64 - %switch.gep4 = getelementptr inbounds nuw i32, ptr @switch.table._ZN11DataPrinter8hexCharsEv.1, i64 %5 - %switch.load5 = load i32, ptr %switch.gep4, align 4 - %6 = zext nneg i32 %1 to i64 - %switch.gep6 = getelementptr inbounds nuw i32, ptr @switch.table._ZN11DataPrinter8hexCharsEv.2, i64 %6 - %switch.load7 = load i32, ptr %switch.gep6, align 4 - %7 = mul nuw nsw i32 %switch.load7, %switch.load5 - %8 = or disjoint i32 %7, %switch.load - ret i32 %8 + ret i32 %switch.load } ; Function Attrs: noreturn null_pointer_is_valid diff --git a/bench/wireshark/optimized/qcustomplot.ll b/bench/wireshark/optimized/qcustomplot.ll index 0c85feebac8..4470e4b96a3 100644 --- a/bench/wireshark/optimized/qcustomplot.ll +++ b/bench/wireshark/optimized/qcustomplot.ll @@ -68089,24 +68089,16 @@ _ZNK8QPointerI7QCPAxisE4dataEv.exit3: ; preds = %_ZNK8QPointerI7QCPA store i64 %.sroa.2.0.copyload.i6, ptr %35, align 8 %36 = call { i64, i64 } @_ZNK5QRectanERKS_(ptr noundef nonnull align 4 dereferenceable_or_null(16) %2, ptr noundef nonnull align 4 dereferenceable(16) %3) #52 %37 = extractvalue { i64, i64 } %36, 0 - %.sroa.3.0.extract.shift = and i64 %37, -4294967296 %38 = extractvalue { i64, i64 } %36, 1 - %.sroa.7.8.extract.shift = and i64 %38, -4294967296 call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) - %39 = and i64 %37, 4294967295 - %40 = and i64 %38, 4294967295 br label %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit.thread _ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit.thread: ; preds = %13, %17, %1, %7, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit2, %_ZNK8QPointerI7QCPAxisE4dataEv.exit3 - %.sroa.7.0 = phi i64 [ %.sroa.7.8.extract.shift, %_ZNK8QPointerI7QCPAxisE4dataEv.exit3 ], [ -4294967296, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit2 ], [ -4294967296, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit ], [ -4294967296, %7 ], [ -4294967296, %1 ], [ -4294967296, %17 ], [ -4294967296, %13 ] - %.sroa.4.0 = phi i64 [ %40, %_ZNK8QPointerI7QCPAxisE4dataEv.exit3 ], [ 4294967295, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit2 ], [ 4294967295, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit ], [ 4294967295, %7 ], [ 4294967295, %1 ], [ 4294967295, %17 ], [ 4294967295, %13 ] - %.sroa.3.0 = phi i64 [ %.sroa.3.0.extract.shift, %_ZNK8QPointerI7QCPAxisE4dataEv.exit3 ], [ 0, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit2 ], [ 0, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit ], [ 0, %7 ], [ 0, %1 ], [ 0, %17 ], [ 0, %13 ] - %.sroa.0.0 = phi i64 [ %39, %_ZNK8QPointerI7QCPAxisE4dataEv.exit3 ], [ 0, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit2 ], [ 0, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit ], [ 0, %7 ], [ 0, %1 ], [ 0, %17 ], [ 0, %13 ] - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0, %.sroa.3.0 - %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.insert.insert, 0 - %.sroa.4.8.insert.insert = or disjoint i64 %.sroa.4.0, %.sroa.7.0 - %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.4.8.insert.insert, 1 + %.sroa.7.0 = phi i64 [ %38, %_ZNK8QPointerI7QCPAxisE4dataEv.exit3 ], [ -1, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit2 ], [ -1, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit ], [ -1, %7 ], [ -1, %1 ], [ -1, %17 ], [ -1, %13 ] + %.sroa.4.0 = phi i64 [ %37, %_ZNK8QPointerI7QCPAxisE4dataEv.exit3 ], [ 0, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit2 ], [ 0, %_ZNK8QPointerI7QCPAxisEcvPS0_Ev.exit ], [ 0, %7 ], [ 0, %1 ], [ 0, %17 ], [ 0, %13 ] + %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.3.0, 0 + %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.7.0, 1 ret { i64, i64 } %.fca.1.insert } @@ -225185,21 +225177,13 @@ _ZNK8QPointerI19QCPPolarAxisAngularE4dataEv.exit: ; preds = %_ZNK8QPointerI19QCP %.sroa.0.0.copyload.i = load i64, ptr %13, align 4 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 100 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 4 - %.sroa.3.0.extract.shift = and i64 %.sroa.0.0.copyload.i, -4294967296 - %.sroa.7.8.extract.shift = and i64 %.sroa.2.0.copyload.i, -4294967296 - %14 = and i64 %.sroa.0.0.copyload.i, 4294967295 - %15 = and i64 %.sroa.2.0.copyload.i, 4294967295 br label %_ZNK8QPointerI19QCPPolarAxisAngularEcvPS0_Ev.exit.thread _ZNK8QPointerI19QCPPolarAxisAngularEcvPS0_Ev.exit.thread: ; preds = %1, %5, %_ZNK8QPointerI19QCPPolarAxisAngularEcvPS0_Ev.exit, %_ZNK8QPointerI19QCPPolarAxisAngularE4dataEv.exit - %.sroa.7.0 = phi i64 [ %.sroa.7.8.extract.shift, %_ZNK8QPointerI19QCPPolarAxisAngularE4dataEv.exit ], [ -4294967296, %_ZNK8QPointerI19QCPPolarAxisAngularEcvPS0_Ev.exit ], [ -4294967296, %5 ], [ -4294967296, %1 ] - %.sroa.4.0 = phi i64 [ %15, %_ZNK8QPointerI19QCPPolarAxisAngularE4dataEv.exit ], [ 4294967295, %_ZNK8QPointerI19QCPPolarAxisAngularEcvPS0_Ev.exit ], [ 4294967295, %5 ], [ 4294967295, %1 ] - %.sroa.3.0 = phi i64 [ %.sroa.3.0.extract.shift, %_ZNK8QPointerI19QCPPolarAxisAngularE4dataEv.exit ], [ 0, %_ZNK8QPointerI19QCPPolarAxisAngularEcvPS0_Ev.exit ], [ 0, %5 ], [ 0, %1 ] - %.sroa.0.0 = phi i64 [ %14, %_ZNK8QPointerI19QCPPolarAxisAngularE4dataEv.exit ], [ 0, %_ZNK8QPointerI19QCPPolarAxisAngularEcvPS0_Ev.exit ], [ 0, %5 ], [ 0, %1 ] - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0, %.sroa.3.0 - %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.insert.insert, 0 - %.sroa.4.8.insert.insert = or disjoint i64 %.sroa.4.0, %.sroa.7.0 - %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.4.8.insert.insert, 1 + %.sroa.7.0 = phi i64 [ %.sroa.2.0.copyload.i, %_ZNK8QPointerI19QCPPolarAxisAngularE4dataEv.exit ], [ -1, %_ZNK8QPointerI19QCPPolarAxisAngularEcvPS0_Ev.exit ], [ -1, %5 ], [ -1, %1 ] + %.sroa.4.0 = phi i64 [ %.sroa.0.0.copyload.i, %_ZNK8QPointerI19QCPPolarAxisAngularE4dataEv.exit ], [ 0, %_ZNK8QPointerI19QCPPolarAxisAngularEcvPS0_Ev.exit ], [ 0, %5 ], [ 0, %1 ] + %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.3.0, 0 + %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.7.0, 1 ret { i64, i64 } %.fca.1.insert } @@ -228945,7 +228929,7 @@ _ZNK8QPointerI19QCPPolarAxisAngularEptEv.exit: ; preds = %56, %70, %74 %82 = inttoptr i64 %81 to ptr %.sroa.0.0.copyload137 = load ptr, ptr %3, align 8 %.not136138 = icmp eq ptr %.sroa.0.0.copyload137, %82 - br i1 %.not136138, label %._crit_edge.thread, label %.lr.ph + br i1 %.not136138, label %.thread, label %.lr.ph .lr.ph: ; preds = %_ZNK8QPointerI19QCPPolarAxisAngularEptEv.exit, %129 %.0143 = phi double [ %.2, %129 ], [ 0.000000e+00, %_ZNK8QPointerI19QCPPolarAxisAngularEptEv.exit ] @@ -229073,25 +229057,19 @@ _ZNK8QPointerI19QCPPolarAxisAngularEptEv.exit: ; preds = %56, %70, %74 ._crit_edge: ; preds = %129 %131 = trunc nuw i8 %.256 to i1 - %132 = xor i1 %131, true - %or.cond = or i1 %132, %47 - br i1 %or.cond, label %._crit_edge.thread, label %.sink.split165 - -._crit_edge.thread: ; preds = %_ZNK8QPointerI19QCPPolarAxisAngularEptEv.exit, %._crit_edge - %.058.lcssa163 = phi i8 [ %.260, %._crit_edge ], [ 0, %_ZNK8QPointerI19QCPPolarAxisAngularEptEv.exit ] - %.sroa.089.0.lcssa162 = phi ptr [ %130, %._crit_edge ], [ %82, %_ZNK8QPointerI19QCPPolarAxisAngularEptEv.exit ] - %133 = and i8 %.058.lcssa163, %46 - %or.cond3.not = icmp eq i8 %133, 0 - br i1 %or.cond3.not, label %136, label %.sink.split165 - -.sink.split165: ; preds = %._crit_edge.thread, %._crit_edge - %.lcssa.sink = phi ptr [ %130, %._crit_edge ], [ %.sroa.089.0.lcssa162, %._crit_edge.thread ] - %134 = getelementptr i8, ptr %.lcssa.sink, i64 -16 - %135 = load i64, ptr %10, align 8 - call void @_ZN9QtPrivate12QPodArrayOpsI12QCPGraphDataE7emplaceIJRKS1_EEEvxDpOT_(ptr noundef align 8 dereferenceable_or_null(24) %1, i64 noundef %135, ptr noundef align 8 dereferenceable(16) %134) - br label %136 + %132 = and i8 %.260, %46 + %133 = icmp ne i8 %132, 0 + %.not169 = xor i1 %47, true + %.not = and i1 %131, %.not169 + %brmerge168 = or i1 %.not, %133 + br i1 %brmerge168, label %.thread.sink.split, label %136 + +.thread.sink.split:; preds = %._crit_edge + %134 = load i64, ptr %10, align 8 + call void @_ZN9QtPrivate12QPodArrayOpsI12QCPGraphDataE7emplaceIJRKS1_EEEvxDpOT_(ptr noundef align 8 dereferenceable_or_null(24) %1, i64 noundef %134, ptr noundef align 8 dereferenceable(16) %.sroa.089.0139) + br label %.thread -136: ; preds = %.sink.split165, %._crit_edge.thread +136: ; preds = %._crit_edge, %.thread.sink.split, %_ZNK8QPointerI19QCPPolarAxisAngularEptEv.exit ret void } diff --git a/bench/wireshark/optimized/text_import_regex.ll b/bench/wireshark/optimized/text_import_regex.ll index c5008079c6e..a289a1a4bd6 100644 --- a/bench/wireshark/optimized/text_import_regex.ll +++ b/bench/wireshark/optimized/text_import_regex.ll @@ -64,7 +64,7 @@ define hidden i32 @text_import_regex(ptr noundef readonly captures(none) %0) loc br label %36 36: ; preds = %.lr.ph, %103 - %.03242 = phi i32 [ 0, %.lr.ph ], [ %.1, %103 ] + %.03242 = phi i32 [ 0, %.lr.ph ], [ %.1, %104 ] %37 = load ptr, ptr %3, align 8 %38 = call i32 @g_match_info_fetch_named_pos(ptr noundef %37, ptr noundef nonnull @.str.3, ptr noundef nonnull %4, ptr noundef nonnull %5) %.not34 = icmp eq i32 %38, 0 @@ -179,6 +179,7 @@ define hidden i32 @text_import_regex(ptr noundef readonly captures(none) %0) loc 102: ; preds = %99 call void @g_error_free(ptr noundef nonnull %98) + %103 = sub i32 0, %.1 br label %.loopexit 103: ; preds = %99, %95 @@ -188,16 +189,14 @@ define hidden i32 @text_import_regex(ptr noundef readonly captures(none) %0) loc br i1 %.not, label %.loopexit, label %36, !llvm.loop !6 .loopexit: ; preds = %103, %27, %102 - %.2 = phi i32 [ %.1, %102 ], [ 0, %27 ], [ %.1, %103 ] - %.031 = phi i32 [ -1, %102 ], [ 1, %27 ], [ 1, %103 ] - %106 = load ptr, ptr %3, align 8 - call void @g_match_info_unref(ptr noundef %106) + %.2 = phi i32 [ %103, %102 ], [ 0, %27 ], [ %.1, %104 ] + %107 = load ptr, ptr %3, align 8 + call void @g_match_info_unref(ptr noundef %107) call void @g_mapped_file_unref(ptr noundef %8) - %107 = mul i32 %.031, %.2 br label %108 108: ; preds = %.loopexit, %24 - %.0 = phi i32 [ -1, %24 ], [ %107, %.loopexit ] + %.0 = phi i32 [ -1, %24 ], [ %.031, %.loopexit ] call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) diff --git a/bench/wolfssl/optimized/internal.ll b/bench/wolfssl/optimized/internal.ll index 1c4d709c45a..935c65023c0 100644 --- a/bench/wolfssl/optimized/internal.ll +++ b/bench/wolfssl/optimized/internal.ll @@ -7185,7 +7185,7 @@ define i32 @DoVerifyCallback(ptr noundef %0, ptr noundef readonly captures(addre br label %79 79: ; preds = %.thread77, %76 - %.4 = phi i32 [ %spec.select62, %.thread77 ], [ %.3, %76 ] + %.4 = phi i32 [ %spec.select62, %.thread ], [ %.3, %76 ] %80 = load ptr, ptr %51, align 8, !tbaa !263 %.not.i68 = icmp eq ptr %80, null br i1 %.not.i68, label %CleanupStoreCtxCallback.exit, label %81 @@ -7204,7 +7204,7 @@ CleanupStoreCtxCallback.exit: ; preds = %79, %81 br label %.critedge .critedge: ; preds = %.critedge.sink.split, %22, %.thread, %4 - %.0 = phi i32 [ -173, %4 ], [ %2, %.thread ], [ -125, %22 ], [ %.0.ph, %.critedge.sink.split ] + %.0 = phi i32 [ -173, %4 ], [ %2, %.critedge ], [ -125, %22 ], [ %.0.ph, %.critedge64.sink.split ] ret i32 %.0 } @@ -15130,12 +15130,15 @@ IsEncryptionOn.exit406.i: ; preds = %183 %217 = or i32 %.010.i.i.i, %216 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i, %208 - br i1 %exitcond.not.i.i.i, label %ConstantCompare.exit.i.i, label %.lr.ph.i.i.i, !llvm.loop !357 + br i1 %exitcond.not.i.i.i, label %ConstantCompare.exit.loopexit.i.i, label %.lr.ph.i.i.i, !llvm.loop !357 -ConstantCompare.exit.i.i: ; preds = %.lr.ph.i.i.i, %199 - %.0.lcssa.i.i.i = phi i32 [ 0, %199 ], [ %217, %.lr.ph.i.i.i ] - %218 = or i32 %.0.lcssa.i.i.i, %205 - %.not.i407.i = icmp eq i32 %218, 0 +ConstantCompare.exit.loopexit.i.i: ; preds = %.lr.ph.i.i.i + %218 = or i32 %217, %205 + br label %ConstantCompare.exit.i.i + +ConstantCompare.exit.i.i: ; preds = %ConstantCompare.exit.loopexit.i.i, %199 + %.0.lcssa.i.i.i = phi i32 [ %205, %199 ], [ %218, %ConstantCompare.exit.loopexit.i.i ] + %.not.i407.i = icmp eq i32 %.0.lcssa.i.i.i, 0 br i1 %.not.i407.i, label %219, label %VerifyMacEnc.exit.thread.i VerifyMacEnc.exit.thread.i: ; preds = %ConstantCompare.exit.i.i, %190 diff --git a/bench/wolfssl/optimized/ssl.ll b/bench/wolfssl/optimized/ssl.ll index d4819f9c0e7..320addbffb2 100644 --- a/bench/wolfssl/optimized/ssl.ll +++ b/bench/wolfssl/optimized/ssl.ll @@ -8333,25 +8333,28 @@ define noundef ptr @wolfSSL_get_system_CA_dirs(ptr noundef writeonly captures(ad ; Function Attrs: nounwind uwtable define range(i32 -461, 2) i32 @wolfSSL_CTX_load_system_CA_certs(ptr noundef %0) local_unnamed_addr #0 { %2 = icmp ne ptr %0, null - br i1 %2, label %.lr.ph.split.i, label %LoadSystemCaCertsNix.exit - -.lr.ph.split.i: ; preds = %1, %.lr.ph.split.i - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.split.i ], [ 0, %1 ] - %3 = getelementptr inbounds nuw ptr, ptr @systemCaDirs, i64 %indvars.iv.i - %4 = load ptr, ptr %3, align 8, !tbaa !218 - %5 = tail call i32 @wolfSSL_CTX_load_verify_locations_ex(ptr noundef nonnull %0, ptr noundef null, ptr noundef %4, i32 noundef 1) - %.not.i.not = icmp ne i32 %5, 1 + br i1 %2, label %.lr.ph.split.i, label %LoadSystemCaCertsNix.exit.thread + +.lr.ph.split.i: ; preds = %.lr.ph.split.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp ne i64 %indvars.iv.next.i, 3 - %or.cond.not3 = select i1 %.not.i.not, i1 %exitcond.not.i, i1 false - br i1 %or.cond.not3, label %.lr.ph.split.i, label %LoadSystemCaCertsNix.exit, !llvm.loop !220 - -LoadSystemCaCertsNix.exit: ; preds = %.lr.ph.split.i, %1 - %.not = phi i1 [ true, %1 ], [ %.not.i.not, %.lr.ph.split.i ] - %spec.select.i = zext i1 %2 to i32 - %or.cond.not = and i1 %2, %.not - %spec.store.select = select i1 %or.cond.not, i32 -461, i32 %spec.select.i - ret i32 %spec.store.select + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 + br i1 %exitcond.not.i, label %.loopexit, label %.lr.ph.split.i, !llvm.loop !220 + +.lr.ph.split.i: ; preds = %1, %3 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %3 ], [ 0, %1 ] + %4 = getelementptr inbounds nuw ptr, ptr @systemCaDirs, i64 %indvars.iv.i + %5 = load ptr, ptr %4, align 8, !tbaa !218 + %6 = tail call i32 @wolfSSL_CTX_load_verify_locations_ex(ptr noundef nonnull %0, ptr noundef null, ptr noundef %5, i32 noundef 1) + %.not.i.not = icmp eq i32 %6, 1 + br i1 %.not.i.not, label %LoadSystemCaCertsNix.exit.thread, label %3 + +LoadSystemCaCertsNix.exit.thread: ; preds = %.lr.ph.split.i, %1 + %spec.select.i4 = zext i1 %2 to i32 + br label %.loopexit + +.loopexit: ; preds = %3, %LoadSystemCaCertsNix.exit.thread + %7 = phi i32 [ %spec.select.i4, %LoadSystemCaCertsNix.exit.thread ], [ -461, %3 ] + ret i32 %7 } ; Function Attrs: nounwind uwtable diff --git a/bench/xgboost/optimized/context.ll b/bench/xgboost/optimized/context.ll index 3ebcd2adaa3..b6ebf457323 100644 --- a/bench/xgboost/optimized/context.ll +++ b/bench/xgboost/optimized/context.ll @@ -6199,13 +6199,12 @@ _ZNSt8__detail22__from_chars_pow2_baseILb1EjEEbRPKcS2_RT0_i.exit.i: ; preds = %. %71 = sub i32 0, %.0.i %72 = select i1 %6, i32 %71, i32 %.0.i %73 = zext i32 %72 to i64 + %74 = or disjoint i64 %73, 4294967296 br label %_ZNSt8__detail22__from_chars_pow2_baseILb1EjEEbRPKcS2_RT0_i.exit.thread.i _ZNSt8__detail22__from_chars_pow2_baseILb1EjEEbRPKcS2_RT0_i.exit.thread.i: ; preds = %59, %62, %70, %_ZNSt8__detail22__from_chars_pow2_baseILb1EjEEbRPKcS2_RT0_i.exit.i, %"_ZSt6all_ofIPKcZN7xgboost12_GLOBAL__N_18ParseIntENS2_10StringViewEE3$_0EbT_S6_T0_.exit", %4, %2 - %.sroa.011.0 = phi i64 [ 0, %2 ], [ 0, %4 ], [ 0, %"_ZSt6all_ofIPKcZN7xgboost12_GLOBAL__N_18ParseIntENS2_10StringViewEE3$_0EbT_S6_T0_.exit" ], [ %73, %70 ], [ 4294967295, %_ZNSt8__detail22__from_chars_pow2_baseILb1EjEEbRPKcS2_RT0_i.exit.i ], [ 4294967295, %62 ], [ 4294967295, %59 ] - %.sroa.2.0 = phi i64 [ 0, %2 ], [ 0, %4 ], [ 0, %"_ZSt6all_ofIPKcZN7xgboost12_GLOBAL__N_18ParseIntENS2_10StringViewEE3$_0EbT_S6_T0_.exit" ], [ 4294967296, %70 ], [ 0, %_ZNSt8__detail22__from_chars_pow2_baseILb1EjEEbRPKcS2_RT0_i.exit.i ], [ 0, %62 ], [ 0, %59 ] - %.sroa.011.0.insert.insert = or disjoint i64 %.sroa.2.0, %.sroa.011.0 - ret i64 %.sroa.011.0.insert.insert + %.sroa.011.0 = phi i64 [ 0, %2 ], [ 0, %4 ], [ 0, %"_ZSt6all_ofIPKcZN7xgboost12_GLOBAL__N_18ParseIntENS2_10StringViewEE3$_0EbT_S6_T0_.exit" ], [ %74, %70 ], [ 4294967295, %_ZNSt8__detail22__from_chars_pow2_baseILb1EjEEbRPKcS2_RT0_i.exit.i ], [ 4294967295, %62 ], [ 4294967295, %59 ] + ret i64 %.sroa.2.0 } ; Function Attrs: mustprogress nounwind uwtable @@ -18668,30 +18667,23 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr .critedge: ; preds = %49, %50 %54 = getelementptr inbounds nuw i8, ptr %.021.ptr43, i64 8 %55 = load i32, ptr %54, align 8 - %.sroa.6.0.extract.shift = and i32 %55, -16777216 - %56 = and i32 %55, 16711680 - %57 = and i32 %55, 65535 br label %.critedge28 .critedge28: ; preds = %45, %50, %.critedge - %.sroa.037.1 = phi i32 [ %57, %.critedge ], [ 1024, %50 ], [ 0, %45 ] - %.sroa.4.1 = phi i32 [ %56, %.critedge ], [ 0, %50 ], [ 0, %45 ] - %.sroa.6.3 = phi i32 [ %.sroa.6.0.extract.shift, %.critedge ], [ 0, %50 ], [ 0, %45 ] - %58 = load ptr, ptr %5, align 8, !tbaa !4 - %59 = icmp eq ptr %58, %7 - br i1 %59, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %.sroa.037.1 = phi i32 [ %55, %.critedge ], [ 1024, %50 ], [ 0, %45 ] + %56 = load ptr, ptr %5, align 8, !tbaa !4 + %57 = icmp eq ptr %56, %7 + br i1 %57, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %.critedge28 %60 = load i64, ptr %7, align 8, !tbaa !12 %61 = add i64 %60, 1 - call void @_ZdlPvm(ptr noundef %58, i64 noundef %61) #34 + call void @_ZdlPvm(ptr noundef %56, i64 noundef %61) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %.critedge28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.4.0.insert.insert = or disjoint i32 %.sroa.4.1, %.sroa.037.1 - %.sroa.037.0.insert.insert = or disjoint i32 %.sroa.4.0.insert.insert, %.sroa.6.3 - ret i32 %.sroa.037.0.insert.insert + ret i32 %.sroa.037.1 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i30: ; preds = %41 %62 = load i64, ptr %7, align 8, !tbaa !12 diff --git a/bench/yara-x-rs/optimized/98ju2vcu3mcgze6k61u00b6zf.ll b/bench/yara-x-rs/optimized/98ju2vcu3mcgze6k61u00b6zf.ll index 4896af9ba9e..0d7decf9711 100644 --- a/bench/yara-x-rs/optimized/98ju2vcu3mcgze6k61u00b6zf.ll +++ b/bench/yara-x-rs/optimized/98ju2vcu3mcgze6k61u00b6zf.ll @@ -14144,7 +14144,7 @@ define hidden void @"_ZN52_$LT$F$u20$as$u20$nom..internal..Parser$LT$I$GT$$GT$7p br label %12 12: ; preds = %18, %8 - %storemerge = phi i64 [ 0, %8 ], [ 1, %18 ] + %storemerge = phi i64 [ 0, %8 ], [ 1, %16 ] store i64 %storemerge, ptr %0, align 8 ret void @@ -14157,32 +14157,25 @@ default.unreachable: ; preds = %4 14: ; preds = %4 %.sroa.524.sroa.4.sroa.3.0..sroa.524.sroa.4.0..sroa.524.0..sroa_idx.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 28 %.sroa.524.sroa.4.sroa.3.0.copyload = load i32, ptr %.sroa.524.sroa.4.sroa.3.0..sroa.524.sroa.4.0..sroa.524.0..sroa_idx.sroa_idx.sroa_idx, align 4 - %.sroa.524.sroa.4.0..sroa.524.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 25 - %.sroa.524.sroa.4.sroa.0.0.copyload = load i24, ptr %.sroa.524.sroa.4.0..sroa.524.0..sroa_idx.sroa_idx, align 1 - %.sroa.524.sroa.3.0..sroa.524.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 24 - %.sroa.524.sroa.3.0.copyload = load i8, ptr %.sroa.524.sroa.3.0..sroa.524.0..sroa_idx.sroa_idx, align 8 + %.sroa.524.sroa.4.0..sroa.524.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 24 + %.sroa.524.sroa.4.sroa.0.0.copyload = load i32, ptr %.sroa.524.sroa.4.0..sroa.524.0..sroa_idx.sroa_idx, align 8 %.sroa.524.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 16 %.sroa.524.sroa.0.0.copyload = load i64, ptr %.sroa.524.0..sroa_idx, align 8 - %15 = zext i8 %.sroa.524.sroa.3.0.copyload to i32 - %16 = zext i24 %.sroa.524.sroa.4.sroa.0.0.copyload to i32 - %17 = shl nuw i32 %16, 8 - br label %18 + br label %16 18: ; preds = %4, %14, %13 %.sroa.026.0 = phi i64 [ undef, %13 ], [ %.sroa.044.0.copyload, %14 ], [ %.sroa.044.0.copyload, %4 ] %.sroa.528.0 = phi i64 [ undef, %13 ], [ %.sroa.524.sroa.0.0.copyload, %14 ], [ undef, %4 ] - %.sroa.530.0 = phi i32 [ 58, %13 ], [ %15, %14 ], [ 57, %4 ] - %.sroa.7.sroa.0.0 = phi i32 [ 0, %13 ], [ %17, %14 ], [ 0, %4 ] + %.sroa.530.0 = phi i32 [ 58, %13 ], [ %.sroa.524.sroa.3.0.copyload, %14 ], [ 57, %4 ] %.sroa.7.sroa.4.0 = phi i32 [ undef, %13 ], [ %.sroa.524.sroa.4.sroa.3.0.copyload, %14 ], [ undef, %4 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) - %.sroa.670.17.insert.insert = or disjoint i32 %.sroa.7.sroa.0.0, %.sroa.530.0 - %19 = inttoptr i64 %.sroa.026.0 to ptr - %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %19, ptr %20, align 8 + %17 = inttoptr i64 %.sroa.026.0 to ptr + %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %17, ptr %18, align 8 %.sroa.273.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %.sroa.528.0, ptr %.sroa.273.0..sroa_idx, align 8 %.sroa.374.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 %.sroa.670.17.insert.insert, ptr %.sroa.374.0..sroa_idx, align 8 + store i32 %.sroa.530.0, ptr %.sroa.374.0..sroa_idx, align 8 %.sroa.475.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 28 store i32 %.sroa.7.sroa.4.0, ptr %.sroa.475.0..sroa_idx, align 4 br label %12 diff --git a/bench/zxing/optimized/ODDataBarCommon.ll b/bench/zxing/optimized/ODDataBarCommon.ll index 2f9ab62b87b..a0e8acb4392 100644 --- a/bench/zxing/optimized/ODDataBarCommon.ll +++ b/bench/zxing/optimized/ODDataBarCommon.ll @@ -75,9 +75,9 @@ _ZN5ZXing6ReduceISt4spanIiLm18446744073709551615EEiSt4plusIiEEET0_RKT_S5_T1_.exi br label %32 32: ; preds = %.lr.ph118, %87 - %.060116 = phi i32 [ 1, %.lr.ph118 ], [ %89, %87 ] - %.163115 = phi i32 [ 1, %.lr.ph118 ], [ %31, %87 ] - %.165114 = phi i32 [ %.064124, %.lr.ph118 ], [ %88, %87 ] + %.060116 = phi i32 [ 1, %.lr.ph118 ], [ %89, %88 ] + %.163115 = phi i32 [ 1, %.lr.ph118 ], [ %31, %88 ] + %.165114 = phi i32 [ %.064124, %.lr.ph118 ], [ %88, %88 ] %33 = sub nsw i32 %.066123, %.060116 %34 = add nsw i32 %33, -1 %35 = sub nsw i32 %34, %27 @@ -186,11 +186,14 @@ _ZN5ZXing4OneD7DataBarL7combinsEii.exit87: ; preds = %.lr.ph45.i75, %.pre %66 = icmp sgt i32 %65, %2 br i1 %66, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %_ZN5ZXing4OneD7DataBarL7combinsEii.exit106, %64 - %.058.lcssa = phi i32 [ 0, %64 ], [ %81, %_ZN5ZXing4OneD7DataBarL7combinsEii.exit106 ] - %.neg68 = mul i32 %.058.lcssa, %.neg - %67 = add i32 %.neg68, %.059 - br label %87 +._crit_edge: ; preds = %_ZN5ZXing4OneD7DataBarL7combinsEii.exit106 + %67 = mul i32 %81, %.neg + br label %._crit_edge + +._crit_edge:; preds = %._crit_edge, %64 + %.058.lcssa = phi i32 [ 0, %64 ], [ %67, %._crit_edge.loopexit ] + %68 = add i32 %.058.lcssa, %.059 + br label %88 .lr.ph: ; preds = %64, %_ZN5ZXing4OneD7DataBarL7combinsEii.exit106 %.0113 = phi i32 [ %82, %_ZN5ZXing4OneD7DataBarL7combinsEii.exit106 ], [ %65, %64 ] @@ -204,15 +207,15 @@ _ZN5ZXing4OneD7DataBarL7combinsEii.exit87: ; preds = %.lr.ph45.i75, %.pre br i1 %71, label %.lr.ph.i99, label %.preheader.i90 .preheader.i90: ; preds = %76, %.lr.ph - %.027.lcssa.i91 = phi i32 [ 1, %.lr.ph ], [ %.128.i104, %76 ] - %.026.lcssa.i92 = phi i32 [ 1, %.lr.ph ], [ %.1.i105, %76 ] + %.027.lcssa.i91 = phi i32 [ 1, %.lr.ph ], [ %.128.i104, %77 ] + %.026.lcssa.i92 = phi i32 [ 1, %.lr.ph ], [ %.1.i105, %77 ] %.not42.i93 = icmp sgt i32 %.026.lcssa.i92, %.37.i89 br i1 %.not42.i93, label %_ZN5ZXing4OneD7DataBarL7combinsEii.exit106, label %.lr.ph45.i94 .lr.ph.i99: ; preds = %.lr.ph, %76 - %.040.i100 = phi i32 [ %77, %76 ], [ %69, %.lr.ph ] - %.02639.i101 = phi i32 [ %.1.i105, %76 ], [ 1, %.lr.ph ] - %.02738.i102 = phi i32 [ %.128.i104, %76 ], [ 1, %.lr.ph ] + %.040.i100 = phi i32 [ %77, %77 ], [ %69, %.lr.ph ] + %.02639.i101 = phi i32 [ %.1.i105, %77 ], [ 1, %.lr.ph ] + %.02738.i102 = phi i32 [ %.128.i104, %77 ], [ 1, %.lr.ph ] %72 = mul nsw i32 %.02738.i102, %.040.i100 %.not36.i103 = icmp sgt i32 %.02639.i101, %.37.i89 br i1 %.not36.i103, label %76, label %73 @@ -223,8 +226,8 @@ _ZN5ZXing4OneD7DataBarL7combinsEii.exit87: ; preds = %.lr.ph45.i75, %.pre br label %76 76: ; preds = %73, %.lr.ph.i99 - %.128.i104 = phi i32 [ %74, %73 ], [ %72, %.lr.ph.i99 ] - %.1.i105 = phi i32 [ %75, %73 ], [ %.02639.i101, %.lr.ph.i99 ] + %.128.i104 = phi i32 [ %74, %74 ], [ %72, %.lr.ph.i99 ] + %.1.i105 = phi i32 [ %75, %74 ], [ %.02639.i101, %.lr.ph.i99 ] %77 = add nsw i32 %.040.i100, -1 %78 = icmp sgt i32 %77, %..i88 br i1 %78, label %.lr.ph.i99, label %.preheader.i90, !llvm.loop !9 @@ -251,16 +254,16 @@ _ZN5ZXing4OneD7DataBarL7combinsEii.exit106: ; preds = %.lr.ph45.i94, %.pre br label %87 87: ; preds = %84, %._crit_edge - %.1 = phi i32 [ %67, %._crit_edge ], [ %spec.select, %84 ] + %.1 = phi i32 [ %68, %._crit_edge ], [ %spec.select, %85 ] %88 = add nsw i32 %.1, %.165114 %89 = add nuw nsw i32 %.060116, 1 %exitcond.not = icmp eq i32 %89, %18 br i1 %exitcond.not, label %._crit_edge119, label %32, !llvm.loop !12 ._crit_edge119: ; preds = %87, %.lr.ph127 - %.165.lcssa = phi i32 [ %.064124, %.lr.ph127 ], [ %88, %87 ] - %.163.lcssa = phi i32 [ %16, %.lr.ph127 ], [ %31, %87 ] - %.060.lcssa = phi i32 [ 1, %.lr.ph127 ], [ %18, %87 ] + %.165.lcssa = phi i32 [ %.064124, %.lr.ph127 ], [ %88, %88 ] + %.163.lcssa = phi i32 [ %16, %.lr.ph127 ], [ %31, %88 ] + %.060.lcssa = phi i32 [ 1, %.lr.ph127 ], [ %18, %88 ] %90 = sub nsw i32 %.066123, %.060.lcssa %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond139.not = icmp eq i64 %indvars.iv.next, %wide.trip.count diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..1bce14a53bf 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/166102 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""