diff --git a/bench/hermes/optimized/Passes.ll b/bench/hermes/optimized/Passes.ll index 1e50acbcb13..c11ad5c7a8c 100644 --- a/bench/hermes/optimized/Passes.ll +++ b/bench/hermes/optimized/Passes.ll @@ -3148,16 +3148,19 @@ if.end.i58: ; preds = %if.end13.i.i.i51, % if.end57: ; preds = %if.end9.i.i.i47, %if.end.i58, %if.end55, %if.end20 %call59 = call i32 @_ZN6hermes11Instruction18getChangedOperandsEv(ptr noundef nonnull align 8 dereferenceable(132) %__begin3.sroa.0.0196) #13 %tobool.not.i.i = icmp eq i32 %call59, 0 - br i1 %tobool.not.i.i, label %for.inc81, label %for.body65.preheader + %52 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %call59, i1 true) + %.fr.i = freeze i32 %52 + %cmp.i61.not191217 = icmp eq i32 %.fr.i, -1 + %cmp.i61.not191 = or i1 %tobool.not.i.i, %cmp.i61.not191217 + br i1 %cmp.i61.not191, label %for.inc81, label %for.body65.preheader for.body65.preheader: ; preds = %if.end57 - %52 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %call59, i1 true) - %shr.i.i = lshr exact i32 %call59, %52 + %shr.i.i = lshr exact i32 %call59, %.fr.i br label %for.body65 for.body65: ; preds = %for.body65.preheader, %_ZN6hermes10WordBitSetIjE14const_iteratorppEv.exit %__begin4.sroa.0.0192 = phi i32 [ %shr5.i, %_ZN6hermes10WordBitSetIjE14const_iteratorppEv.exit ], [ %shr.i.i, %for.body65.preheader ] - %__begin4.sroa.4.0191 = phi i32 [ %add6.i, %_ZN6hermes10WordBitSetIjE14const_iteratorppEv.exit ], [ %52, %for.body65.preheader ] + %__begin4.sroa.4.0191 = phi i32 [ %add6.i, %_ZN6hermes10WordBitSetIjE14const_iteratorppEv.exit ], [ %.fr.i, %for.body65.preheader ] %call67 = call noundef ptr @_ZNK6hermes11Instruction10getOperandEj(ptr noundef nonnull align 8 dereferenceable(132) %__begin3.sroa.0.0196, i32 noundef %__begin4.sroa.4.0191) #13 %53 = load ptr, ptr %RA_, align 8 %54 = icmp eq ptr %call67, null diff --git a/bench/postgres/optimized/rewriteheap.ll b/bench/postgres/optimized/rewriteheap.ll index 7a27628c1e8..847e289213a 100644 --- a/bench/postgres/optimized/rewriteheap.ll +++ b/bench/postgres/optimized/rewriteheap.ll @@ -1071,14 +1071,14 @@ define dso_local void @CheckPointLogicalRewriteHeap() local_unnamed_addr #0 { call void @llvm.lifetime.start.p0(i64 1044, ptr nonnull %1) #13 %8 = tail call i64 @GetRedoRecPtr() #13 %9 = tail call i64 @ReplicationSlotsComputeLogicalRestartLSN() #13 - %.not = icmp ne i64 %9, 0 %10 = tail call ptr @AllocateDir(ptr noundef nonnull @.str.4) #13 %11 = tail call ptr @ReadDir(ptr noundef %10, ptr noundef nonnull @.str.4) #13 %.not2740 = icmp eq ptr %11, null br i1 %.not2740, label %._crit_edge, label %sub_0.lr.ph sub_0.lr.ph: ; preds = %0 - %spec.select = tail call i64 @llvm.umin.i64(i64 %8, i64 %9) + %.fr = freeze i64 %8 + %spec.select = tail call i64 @llvm.umin.i64(i64 %.fr, i64 %9) %12 = add i64 %spec.select, -1 br label %sub_0 @@ -1145,7 +1145,6 @@ sub_135: ; preds = %.tail %39 = zext i32 %38 to i64 %40 = or disjoint i64 %37, %39 %or.cond3.not32 = icmp ult i64 %12, %40 - %or.cond3.not = select i1 %.not, i1 %or.cond3.not32, i1 false br i1 %or.cond3.not, label %52, label %41 41: ; preds = %34 diff --git a/bench/recastnavigation/optimized/catch_amalgamated.ll b/bench/recastnavigation/optimized/catch_amalgamated.ll index 7828338c980..99216e1dfe5 100644 --- a/bench/recastnavigation/optimized/catch_amalgamated.ll +++ b/bench/recastnavigation/optimized/catch_amalgamated.ll @@ -38927,7 +38927,7 @@ define dso_local void @_ZN5Catch17parseReporterSpecENS_9StringRefE(ptr dead_on_u %35 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %34, i64 %.013108 %36 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %35) #56 %37 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %35) #56 - %38 = getelementptr inbounds i8, ptr %36, i64 %37 + %38 = getelementptr i8, ptr %36, i64 %37 %39 = ptrtoint ptr %38 to i64 %40 = ptrtoint ptr %36 to i64 %41 = ashr i64 %37, 2 @@ -39031,7 +39031,6 @@ define dso_local void @_ZN5Catch17parseReporterSpecENS_9StringRefE(ptr dead_on_u %.not.i = icmp eq i64 %37, 0 %81 = call i64 @llvm.umin.i64(i64 %37, i64 %80) %.sroa.0.0.i.i = select i1 %.not.i, ptr @.str.14, ptr %36 - %.sroa.4.0.i.i = select i1 %.not.i, i64 0, i64 %81 %82 = add i64 %80, 1 %83 = icmp ult i64 %82, %37 %84 = sub nuw i64 %37, %82 @@ -39039,7 +39038,7 @@ define dso_local void @_ZN5Catch17parseReporterSpecENS_9StringRefE(ptr dead_on_u %86 = call i64 @llvm.umin.i64(i64 %84, i64 %37) %.sroa.0.0.i2.i = select i1 %83, ptr %85, ptr @.str.14 %.sroa.4.0.i3.i = select i1 %83, i64 %86, i64 0 - %87 = icmp eq i64 %.sroa.4.0.i.i, 0 + %87 = icmp eq i64 %81, 0 %88 = icmp eq i64 %.sroa.4.0.i3.i, 0 %or.cond = select i1 %87, i1 true, i1 %88 br i1 %or.cond, label %89, label %90 @@ -39054,7 +39053,7 @@ define dso_local void @_ZN5Catch17parseReporterSpecENS_9StringRefE(ptr dead_on_u br i1 %92, label %93, label %121 93: ; preds = %90 - %94 = icmp eq i64 %.sroa.4.0.i.i, 1 + %94 = icmp eq i64 %81, 1 br i1 %94, label %95, label %96 95: ; preds = %93 @@ -39064,7 +39063,7 @@ define dso_local void @_ZN5Catch17parseReporterSpecENS_9StringRefE(ptr dead_on_u 96: ; preds = %93 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #56, !noalias !547 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcmRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull %.sroa.0.0.i.i, i64 noundef %.sroa.4.0.i.i, ptr noundef nonnull align 1 dereferenceable(1) %6) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcmRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull %.sroa.0.0.i.i, i64 noundef %81, ptr noundef nonnull align 1 dereferenceable(1) %6) to label %99 unwind label %97 97: ; preds = %96 @@ -39166,7 +39165,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi br label %.body 121: ; preds = %90 - switch i64 %.sroa.4.0.i.i, label %_ZNK5Catch9StringRefeqES0_.exit28.thread [ + switch i64 %81, label %_ZNK5Catch9StringRefeqES0_.exit28.thread [ i64 3, label %_ZNK5Catch9StringRefeqES0_.exit i64 11, label %_ZNK5Catch9StringRefeqES0_.exit28 ] diff --git a/bench/ruby/optimized/string.ll b/bench/ruby/optimized/string.ll index 85b62d9ef49..f8d541c61b3 100644 --- a/bench/ruby/optimized/string.ll +++ b/bench/ruby/optimized/string.ll @@ -8129,14 +8129,12 @@ get_encoding.exit: ; preds = %RSTRING_END.exit, % str_offset.exit: ; preds = %18, %20 %.010.i.i = phi ptr [ %19, %18 ], [ %21, %20 ] - %.not12.i.i = icmp eq ptr %.010.i.i, null %22 = icmp ugt ptr %.010.i.i, %9 %spec.select.i.i = select i1 %22, ptr %9, ptr %.010.i.i - %.0.i.i7 = select i1 %.not12.i.i, ptr null, ptr %spec.select.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) - %.not.i = icmp eq ptr %.0.i.i7, null + %.not.i = icmp eq ptr %spec.select.i.i, null %23 = ptrtoint ptr %.sroa.5.0.i to i64 - %.0.v.v.i = select i1 %.not.i, ptr %9, ptr %.0.i.i7 + %.0.v.v.i = select i1 %.not.i, ptr %9, ptr %spec.select.i.i %.0.v.i = ptrtoint ptr %.0.v.v.i to i64 %.0.i = sub i64 %.0.v.i, %23 ret i64 %.0.i @@ -8680,14 +8678,12 @@ RSTRING_PTR.exit: ; preds = %get_encoding.exit, call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) store i64 %.5119, ptr %4, align 8, !tbaa !26 %114 = call fastcc ptr @str_nth_len(ptr noundef %108, ptr noundef %24, ptr noundef %4, ptr noundef nonnull %19) - %.not12.i.i = icmp eq ptr %114, null %115 = icmp ugt ptr %114, %24 %spec.select.i.i = select i1 %115, ptr %24, ptr %114 - %.0.i.i113 = select i1 %.not12.i.i, ptr null, ptr %spec.select.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) - %.not.i = icmp eq ptr %.0.i.i113, null + %.not.i = icmp eq ptr %spec.select.i.i, null %116 = ptrtoint ptr %108 to i64 - %.0.v.v.i = select i1 %.not.i, ptr %24, ptr %.0.i.i113 + %.0.v.v.i = select i1 %.not.i, ptr %24, ptr %spec.select.i.i %.0.v.i = ptrtoint ptr %.0.v.v.i to i64 %.0.i = sub i64 %.0.v.i, %116 br label %117 @@ -13823,12 +13819,10 @@ RSTRING_END.exit: ; preds = %30, %37 str_nth.exit: ; preds = %39, %41 %.pre = phi i64 [ %34, %39 ], [ %.pre.pre, %41 ] %.010.i = phi ptr [ %40, %39 ], [ %42, %41 ] - %.not12.i = icmp eq ptr %.010.i, null %43 = icmp ugt ptr %.010.i, %38 %spec.select.i = select i1 %43, ptr %38, ptr %.010.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %.not98 = icmp eq ptr %spec.select.i, null - %.not = select i1 %.not12.i, i1 true, i1 %.not98 %44 = and i64 %.pre, 8192 br i1 %.not, label %45, label %str_nth.exit._crit_edge @@ -13847,7 +13841,7 @@ RSTRING_END.exit66: ; preds = %45, %46 br label %str_nth.exit._crit_edge str_nth.exit._crit_edge: ; preds = %str_nth.exit, %RSTRING_END.exit66 - %.047 = phi ptr [ %47, %RSTRING_END.exit66 ], [ %spec.select.i, %str_nth.exit ] + %.047 = phi ptr [ %47, %RSTRING_END.exit65 ], [ %spec.select.i, %str_nth.exit ] %.not.i.i67 = icmp eq i64 %44, 0 br i1 %.not.i.i67, label %RSTRING_END.exit72, label %48 @@ -13875,12 +13869,10 @@ RSTRING_END.exit72: ; preds = %str_nth.exit._crit_ str_nth.exit78: ; preds = %50, %52 %.pre101 = phi i64 [ %.pre, %50 ], [ %.pre101.pre, %52 ] %.010.i74 = phi ptr [ %51, %50 ], [ %53, %52 ] - %.not12.i75 = icmp eq ptr %.010.i74, null - %54 = icmp ugt ptr %.010.i74, %49 - %spec.select.i76 = select i1 %54, ptr %49, ptr %.010.i74 + %.not12.i75 = icmp ugt ptr %.010.i74, %49 + %spec.select.i74 = select i1 %54, ptr %49, ptr %.010.i74 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - %.not5699 = icmp eq ptr %spec.select.i76, null - %.not56 = select i1 %.not12.i75, i1 true, i1 %.not5699 + %.not5699 = icmp eq ptr %spec.select.i74, null %55 = and i64 %.pre101, 8192 br i1 %.not56, label %56, label %str_nth.exit78._crit_edge @@ -13899,7 +13891,7 @@ RSTRING_END.exit84: ; preds = %56, %57 br label %str_nth.exit78._crit_edge str_nth.exit78._crit_edge: ; preds = %str_nth.exit78, %RSTRING_END.exit84 - %.048 = phi ptr [ %58, %RSTRING_END.exit84 ], [ %spec.select.i76, %str_nth.exit78 ] + %.048 = phi ptr [ %58, %RSTRING_END.exit81 ], [ %spec.select.i74, %str_nth.exit75 ] %.not.i.i85 = icmp eq i64 %55, 0 br i1 %.not.i.i85, label %RSTRING_PTR.exit88, label %59 @@ -13908,7 +13900,7 @@ str_nth.exit78._crit_edge: ; preds = %str_nth.exit78, %RS br label %RSTRING_PTR.exit88 RSTRING_PTR.exit88: ; preds = %str_nth.exit78._crit_edge, %59 - %.sroa.2.0.i87 = phi ptr [ %.sroa.2.0.copyload.i86, %59 ], [ %36, %str_nth.exit78._crit_edge ] + %.sroa.2.0.i87 = phi ptr [ %.sroa.2.0.copyload.i86, %59 ], [ %36, %str_nth.exit75._crit_edge ] %60 = ptrtoint ptr %.047 to i64 %61 = ptrtoint ptr %.sroa.2.0.i87 to i64 %62 = sub i64 %60, %61 @@ -13946,7 +13938,7 @@ RB_ENC_CODERANGE_AND.exit.thread.fold.split: ; preds = %75, %RB_ENC_CODERAN br label %RB_ENC_CODERANGE_AND.exit.thread RB_ENC_CODERANGE_AND.exit.thread: ; preds = %75, %RB_ENC_CODERANGE_AND.exit.thread.fold.split, %RSTRING_PTR.exit88 - %.0.i8997 = phi i64 [ 0, %RSTRING_PTR.exit88 ], [ 2097152, %75 ], [ %76, %RB_ENC_CODERANGE_AND.exit.thread.fold.split ] + %.0.i8997 = phi i64 [ 0, %RSTRING_PTR.exit85 ], [ 2097152, %75 ], [ %76, %RB_ENC_CODERANGE_AND.exit.thread.fold.split ] %77 = and i64 %69, -3145729 %78 = or disjoint i64 %.0.i8997, %77 store i64 %78, ptr %33, align 8, !tbaa !7 @@ -14836,14 +14828,12 @@ RSTRING_PTR.exit61: ; preds = %RSTRING_END.exit, % str_offset.exit: ; preds = %66, %68 %.010.i.i = phi ptr [ %67, %66 ], [ %69, %68 ] - %.not12.i.i = icmp eq ptr %.010.i.i, null %70 = icmp ugt ptr %.010.i.i, %38 %spec.select.i.i = select i1 %70, ptr %38, ptr %.010.i.i - %.0.i.i63 = select i1 %.not12.i.i, ptr null, ptr %spec.select.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - %.not.i = icmp eq ptr %.0.i.i63, null + %.not.i = icmp eq ptr %spec.select.i.i, null %71 = ptrtoint ptr %.sroa.5.0.i to i64 - %.0.v.v.i = select i1 %.not.i, ptr %38, ptr %.0.i.i63 + %.0.v.v.i = select i1 %.not.i, ptr %38, ptr %spec.select.i.i %.0.v.i = ptrtoint ptr %.0.v.v.i to i64 %.0.i = sub i64 %.0.v.i, %71 br label %72 @@ -21913,14 +21903,12 @@ RSTRING_END.exit: ; preds = %53, %57 str_offset.exit: ; preds = %60, %62 %64 = phi i64 [ %17, %60 ], [ %.0..pre, %62 ] %.010.i.i = phi ptr [ %61, %60 ], [ %63, %62 ] - %.not12.i.i = icmp eq ptr %.010.i.i, null %65 = icmp ugt ptr %.010.i.i, %58 %spec.select.i.i = select i1 %65, ptr %58, ptr %.010.i.i - %.0.i.i42 = select i1 %.not12.i.i, ptr null, ptr %spec.select.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) - %.not.i43 = icmp eq ptr %.0.i.i42, null + %.not.i43 = icmp eq ptr %spec.select.i.i, null %66 = ptrtoint ptr %.sroa.5.0.i to i64 - %.0.v.v.i = select i1 %.not.i43, ptr %58, ptr %.0.i.i42 + %.0.v.v.i = select i1 %.not.i43, ptr %58, ptr %spec.select.i.i %.0.v.i = ptrtoint ptr %.0.v.v.i to i64 %.0.i44 = sub i64 %.0.v.i, %66 %67 = tail call i64 @rb_reg_search(i64 noundef %64, i64 noundef %2, i64 noundef %.0.i44, i32 noundef 0) #29 @@ -22040,7 +22028,7 @@ RSTRING_PTR.exit.i53: ; preds = %117, %113 br label %get_encoding.exit.i55 get_encoding.exit.i55: ; preds = %123, %RSTRING_PTR.exit.i53 - %.0.i.i.i56 = phi i32 [ %124, %123 ], [ %121, %RSTRING_PTR.exit.i53 ] + %.0.i.i.i56 = phi i32 [ %124, %123 ], [ %121, %RSTRING_PTR.exit.i52 ] %125 = tail call ptr @rb_enc_from_index(i32 noundef %.0.i.i.i56) #29 %126 = load i64, ptr %6, align 8, !tbaa !7 %127 = trunc i64 %126 to i32 @@ -22049,7 +22037,7 @@ get_encoding.exit.i55: ; preds = %123, %RSTRING_PTR.e br label %rb_str_sublen.exit58 rb_str_sublen.exit58: ; preds = %111, %get_encoding.exit.i55 - %.0.i57 = phi i64 [ %129, %get_encoding.exit.i55 ], [ %109, %111 ] + %.0.i57 = phi i64 [ %129, %get_encoding.exit.i54 ], [ %109, %111 ] %130 = add i64 %.0.i57, 4611686018427387904 %or.cond.i59 = icmp sgt i64 %130, -1 br i1 %or.cond.i59, label %131, label %134 @@ -22396,14 +22384,12 @@ RSTRING_END.exit: ; preds = %52, %56 str_offset.exit: ; preds = %59, %61 %63 = phi i64 [ %18, %59 ], [ %.0..pre, %61 ] %.010.i.i = phi ptr [ %60, %59 ], [ %62, %61 ] - %.not12.i.i = icmp eq ptr %.010.i.i, null %64 = icmp ugt ptr %.010.i.i, %57 %spec.select.i.i = select i1 %64, ptr %57, ptr %.010.i.i - %.0.i.i42 = select i1 %.not12.i.i, ptr null, ptr %spec.select.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) - %.not.i43 = icmp eq ptr %.0.i.i42, null + %.not.i43 = icmp eq ptr %spec.select.i.i, null %65 = ptrtoint ptr %.sroa.5.0.i to i64 - %.0.v.v.i = select i1 %.not.i43, ptr %57, ptr %.0.i.i42 + %.0.v.v.i = select i1 %.not.i43, ptr %57, ptr %spec.select.i.i %.0.v.i = ptrtoint ptr %.0.v.v.i to i64 %.0.i44 = sub i64 %.0.v.i, %65 %66 = tail call i64 @rb_reg_search(i64 noundef %63, i64 noundef %2, i64 noundef %.0.i44, i32 noundef 1) #29 @@ -22523,7 +22509,7 @@ RSTRING_PTR.exit.i53: ; preds = %116, %112 br label %get_encoding.exit.i55 get_encoding.exit.i55: ; preds = %122, %RSTRING_PTR.exit.i53 - %.0.i.i.i56 = phi i32 [ %123, %122 ], [ %120, %RSTRING_PTR.exit.i53 ] + %.0.i.i.i56 = phi i32 [ %123, %122 ], [ %120, %RSTRING_PTR.exit.i52 ] %124 = tail call ptr @rb_enc_from_index(i32 noundef %.0.i.i.i56) #29 %125 = load i64, ptr %6, align 8, !tbaa !7 %126 = trunc i64 %125 to i32 @@ -22532,7 +22518,7 @@ get_encoding.exit.i55: ; preds = %122, %RSTRING_PTR.e br label %rb_str_sublen.exit58 rb_str_sublen.exit58: ; preds = %110, %get_encoding.exit.i55 - %.0.i57 = phi i64 [ %128, %get_encoding.exit.i55 ], [ %108, %110 ] + %.0.i57 = phi i64 [ %128, %get_encoding.exit.i54 ], [ %108, %110 ] %129 = add i64 %.0.i57, 4611686018427387904 %or.cond.i59 = icmp sgt i64 %129, -1 br i1 %or.cond.i59, label %130, label %133 @@ -33257,12 +33243,10 @@ RSTRING_END.exit: ; preds = %RSTRING_PTR.exit.th str_nth.exit: ; preds = %63, %65 %.010.i = phi ptr [ %64, %63 ], [ %66, %65 ] - %.not12.i = icmp eq ptr %.010.i, null %67 = icmp ugt ptr %.010.i, %62 %spec.select.i = select i1 %67, ptr %62, ptr %.010.i - %.0.i = select i1 %.not12.i, ptr null, ptr %spec.select.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) - %68 = tail call fastcc i64 @str_rindex(i64 noundef %0, i64 noundef %1, ptr noundef %.0.i, ptr noundef %5) + %68 = tail call fastcc i64 @str_rindex(i64 noundef %0, i64 noundef %1, ptr noundef %spec.select.i, ptr noundef %5) br label %69 69: ; preds = %RSTRING_PTR.exit39, %42, %38, %is_broken_string.exit, %str_nth.exit @@ -35344,8 +35328,8 @@ define internal fastcc i64 @rb_str_justify(i32 noundef %0, ptr noundef readonly br label %14 14: ; preds = %.preheader197, %11 - %.sink = phi i64 [ %13, %11 ], [ 4, %.preheader197 ] - %.185.i.lcssa = phi i32 [ 2, %11 ], [ 1, %.preheader197 ] + %.sink = phi i64 [ %13, %11 ], [ 4, %.preheader194 ] + %.185.i.lcssa = phi i32 [ 2, %11 ], [ 1, %.preheader194 ] store i64 %.sink, ptr %7, align 8, !tbaa !26 %15 = icmp eq i32 %.185.i.lcssa, %0 br i1 %15, label %rb_scan_args_set.exit, label %16 @@ -35499,14 +35483,12 @@ RSTRING_PTR.exit: ; preds = %rb_string_value.exi str_offset.exit: ; preds = %83, %85 %.010.i.i = phi ptr [ %84, %83 ], [ %86, %85 ] - %.not12.i.i = icmp eq ptr %.010.i.i, null %87 = icmp ugt ptr %.010.i.i, %81 %spec.select.i.i = select i1 %87, ptr %81, ptr %.010.i.i - %.0.i.i153 = select i1 %.not12.i.i, ptr null, ptr %spec.select.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - %.not.i154 = icmp eq ptr %.0.i.i153, null + %.not.i154 = icmp eq ptr %spec.select.i.i, null %88 = ptrtoint ptr %.0132 to i64 - %.0.v.v.i = select i1 %.not.i154, ptr %81, ptr %.0.i.i153 + %.0.v.v.i = select i1 %.not.i154, ptr %81, ptr %spec.select.i.i %.0.v.i = ptrtoint ptr %.0.v.v.i to i64 %.0.i155 = sub i64 %.0.v.i, %88 %89 = srem i64 %75, %.0130 @@ -35524,20 +35506,18 @@ str_offset.exit: ; preds = %83, %85 str_offset.exit165: ; preds = %90, %92 %.010.i.i157 = phi ptr [ %91, %90 ], [ %93, %92 ] - %.not12.i.i158 = icmp eq ptr %.010.i.i157, null - %94 = icmp ugt ptr %.010.i.i157, %81 - %spec.select.i.i159 = select i1 %94, ptr %81, ptr %.010.i.i157 - %.0.i.i160 = select i1 %.not12.i.i158, ptr null, ptr %spec.select.i.i159 + %.not12.i.i158 = icmp ugt ptr %.010.i.i157, %81 + %spec.select.i.i157 = select i1 %94, ptr %81, ptr %.010.i.i157 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - %.not.i161 = icmp eq ptr %.0.i.i160, null - %.0.v.v.i162 = select i1 %.not.i161, ptr %81, ptr %.0.i.i160 + %.not.i161 = icmp eq ptr %spec.select.i.i157, null + %.0.v.v.i162 = select i1 %.not.i161, ptr %81, ptr %spec.select.i.i157 %.0.v.i163 = ptrtoint ptr %.0.v.v.i162 to i64 %.0.i164 = sub i64 %.0.v.i163, %88 br label %95 95: ; preds = %str_offset.exit165, %73 - %.0127 = phi i64 [ %.0.i155, %str_offset.exit165 ], [ 0, %73 ] - %.0126 = phi i64 [ %.0.i164, %str_offset.exit165 ], [ 0, %73 ] + %.0127 = phi i64 [ %.0.i155, %str_offset.exit162 ], [ 0, %73 ] + %.0126 = phi i64 [ %.0.i164, %str_offset.exit162 ], [ 0, %73 ] %96 = getelementptr inbounds nuw i8, ptr %17, i64 16 %97 = load i64, ptr %96, align 8, !tbaa !12 %98 = sdiv i64 %74, %.0130 @@ -35596,8 +35576,8 @@ RSTRING_PTR.exit169: ; preds = %111, %119 br label %130 ruby_nonempty_memcpy.exit: ; preds = %.preheader196, %ruby_nonempty_memcpy.exit - %.0129205 = phi i64 [ %125, %ruby_nonempty_memcpy.exit ], [ %74, %.preheader196 ] - %.1204 = phi ptr [ %124, %ruby_nonempty_memcpy.exit ], [ %.sroa.2.0.i168, %.preheader196 ] + %.0129205 = phi i64 [ %125, %ruby_nonempty_memcpy.exit ], [ %74, %.preheader193 ] + %.1204 = phi ptr [ %124, %ruby_nonempty_memcpy.exit ], [ %.sroa.2.0.i168, %.preheader193 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 %.1204, ptr noundef nonnull readonly align 1 %.0132, i64 noundef range(i64 1, 0) %.0123, i1 noundef false) #29 %124 = getelementptr i8, ptr %.1204, i64 %.0123 %125 = sub i64 %.0129205, %.0130 @@ -35605,8 +35585,8 @@ ruby_nonempty_memcpy.exit: ; preds = %.preheader196, %rub br i1 %.not145, label %._crit_edge, label %ruby_nonempty_memcpy.exit, !llvm.loop !954 ._crit_edge: ; preds = %ruby_nonempty_memcpy.exit, %.preheader196 - %.1.lcssa = phi ptr [ %.sroa.2.0.i168, %.preheader196 ], [ %124, %ruby_nonempty_memcpy.exit ] - %.0129.lcssa = phi i64 [ %74, %.preheader196 ], [ %125, %ruby_nonempty_memcpy.exit ] + %.1.lcssa = phi ptr [ %.sroa.2.0.i168, %.preheader193 ], [ %124, %ruby_nonempty_memcpy.exit ] + %.0129.lcssa = phi i64 [ %74, %.preheader193 ], [ %125, %ruby_nonempty_memcpy.exit ] %126 = icmp sgt i64 %.0129.lcssa, 0 br i1 %126, label %127, label %130 @@ -35623,7 +35603,7 @@ ruby_nonempty_memcpy.exit174: ; preds = %127, %128 br label %130 130: ; preds = %._crit_edge, %ruby_nonempty_memcpy.exit174, %121 - %.0131 = phi ptr [ %123, %121 ], [ %129, %ruby_nonempty_memcpy.exit174 ], [ %.1.lcssa, %._crit_edge ] + %.0131 = phi ptr [ %123, %121 ], [ %129, %ruby_nonempty_memcpy.exit171 ], [ %.1.lcssa, %._crit_edge ] %131 = load i64, ptr %17, align 8, !tbaa !7, !noalias !955 %132 = and i64 %131, 8192 %.not.i.i175 = icmp eq i64 %132, 0 @@ -35658,8 +35638,8 @@ ruby_nonempty_memcpy.exit181: ; preds = %RSTRING_PTR.exit178 br label %146 ruby_nonempty_memcpy.exit184: ; preds = %.preheader, %ruby_nonempty_memcpy.exit184 - %.0128209 = phi i64 [ %141, %ruby_nonempty_memcpy.exit184 ], [ %75, %.preheader ] - %.2208 = phi ptr [ %140, %ruby_nonempty_memcpy.exit184 ], [ %136, %.preheader ] + %.0128209 = phi i64 [ %141, %ruby_nonempty_memcpy.exit181 ], [ %75, %.preheader ] + %.2208 = phi ptr [ %140, %ruby_nonempty_memcpy.exit181 ], [ %136, %.preheader ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 %.2208, ptr noundef nonnull readonly align 1 %.0132, i64 noundef range(i64 1, 0) %.0123, i1 noundef false) #29 %140 = getelementptr i8, ptr %.2208, i64 %.0123 %141 = sub i64 %.0128209, %.0130 @@ -35667,8 +35647,8 @@ ruby_nonempty_memcpy.exit184: ; preds = %.preheader, %ruby_n br i1 %.not146, label %._crit_edge210, label %ruby_nonempty_memcpy.exit184, !llvm.loop !958 ._crit_edge210: ; preds = %ruby_nonempty_memcpy.exit184, %.preheader - %.2.lcssa = phi ptr [ %136, %.preheader ], [ %140, %ruby_nonempty_memcpy.exit184 ] - %.0128.lcssa = phi i64 [ %75, %.preheader ], [ %141, %ruby_nonempty_memcpy.exit184 ] + %.2.lcssa = phi ptr [ %136, %.preheader ], [ %140, %ruby_nonempty_memcpy.exit181 ] + %.0128.lcssa = phi i64 [ %75, %.preheader ], [ %141, %ruby_nonempty_memcpy.exit181 ] %142 = icmp sgt i64 %.0128.lcssa, 0 br i1 %142, label %143, label %146 @@ -35685,7 +35665,7 @@ ruby_nonempty_memcpy.exit187: ; preds = %143, %144 br label %146 146: ; preds = %137, %ruby_nonempty_memcpy.exit187, %._crit_edge210 - %.3 = phi ptr [ %139, %137 ], [ %145, %ruby_nonempty_memcpy.exit187 ], [ %.2.lcssa, %._crit_edge210 ] + %.3 = phi ptr [ %139, %137 ], [ %145, %ruby_nonempty_memcpy.exit184 ], [ %.2.lcssa, %._crit_edge207 ] store i8 0, ptr %.3, align 1, !tbaa !19 %147 = icmp sgt i32 %.val, 1 br i1 %147, label %148, label %150, !prof !41 @@ -35730,7 +35710,7 @@ RSTRING_PTR.exit191: ; preds = %150, %153 br i1 %165, label %RB_ENC_CODERANGE_AND.exit.thread, label %RB_ENC_CODERANGE_AND.exit RB_ENC_CODERANGE_AND.exit: ; preds = %164, %158, %RSTRING_PTR.exit191 - %.0124 = phi i32 [ %78, %RSTRING_PTR.exit191 ], [ %163, %158 ], [ %163, %164 ] + %.0124 = phi i32 [ %78, %RSTRING_PTR.exit188 ], [ %163, %158 ], [ %163, %164 ] %.not147 = icmp eq i32 %.0124, 3145728 br i1 %.not147, label %169, label %RB_ENC_CODERANGE_AND.exit.thread diff --git a/bench/yosys/optimized/stat.ll b/bench/yosys/optimized/stat.ll index e101b699d74..adffccb3629 100644 --- a/bench/yosys/optimized/stat.ll +++ b/bench/yosys/optimized/stat.ll @@ -18316,25 +18316,26 @@ _ZN5Yosys5RTLIL8IdStringD2Ev.exit55: ; preds = %208, %214, %221 %.sroa.speculated70 = call i32 @llvm.umin.i32(i32 %238, i32 %101) %239 = sub i32 %101, %.sroa.speculated70 %240 = sub i32 %238, %.sroa.speculated70 + %241 = freeze i32 %240 br label %.thread .thread: ; preds = %_ZN5Yosys5RTLIL8IdStringD2Ev.exit55, %237 %.0129 = phi i32 [ %239, %237 ], [ %101, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit55 ] - %.1 = phi i32 [ %240, %237 ], [ 0, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit55 ] + %.1 = phi i32 [ %241, %237 ], [ 0, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit55 ] + %.fr = freeze i32 %137 %.not32 = icmp eq i32 %173, 0 %241 = call i32 @llvm.usub.sat.i32(i32 %173, i32 %.0129) %.0130 = select i1 %.not32, i32 0, i32 %241 - %.not33 = icmp eq i32 %.1, 0 - %.sroa.speculated = call i32 @llvm.umin.i32(i32 %.1, i32 %137) - %242 = select i1 %.not33, i32 0, i32 %.sroa.speculated - %.0132 = sub i32 %137, %242 + %.sroa.speculated = call i32 @llvm.umin.i32(i32 %.1, i32 %.fr) + %.0132 = sub i32 %.fr, %.sroa.speculated %.not34 = icmp eq i32 %.0130, 0 %243 = call i32 @llvm.usub.sat.i32(i32 %.0130, i32 %.0132) %.1131 = select i1 %.not34, i32 0, i32 %243 + %.not33 = icmp eq i32 %.1, 0 %244 = sub i32 %.1, %.sroa.speculated %245 = add i32 %65, %29 %246 = add i32 %245, %101 - %247 = add i32 %246, %137 + %247 = add i32 %246, %.fr %248 = add i32 %244, 1 %249 = select i1 %.not33, i32 1, i32 %248 %250 = add i32 %249, %.1131 diff --git a/bench/zed-rs/optimized/eiu35781qwj0wy44b83i3e7bt.ll b/bench/zed-rs/optimized/eiu35781qwj0wy44b83i3e7bt.ll index 1091b17ef73..a7c018afb91 100644 --- a/bench/zed-rs/optimized/eiu35781qwj0wy44b83i3e7bt.ll +++ b/bench/zed-rs/optimized/eiu35781qwj0wy44b83i3e7bt.ll @@ -22281,7 +22281,7 @@ common.ret: ; preds = %210, %"_ZN50_$LT$T$ "_ZN50_$LT$T$u20$as$u20$core..convert..Into$LT$U$GT$$GT$4into17ha04ee329d7e6fdcfE.exit": ; preds = %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i46", %45, %49, %54, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" %.sroa.082.0 = phi i64 [ %.sroa.017.i.sroa.0.0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ -9223372036854775808, %54 ], [ -9223372036854775808, %49 ], [ -9223372036854775808, %45 ], [ -9223372036854775808, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i46" ], [ -9223372036854775808, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] %.sroa.683.0 = phi ptr [ %.sroa.017.i.sroa.5.0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ %55, %54 ], [ %50, %49 ], [ %46, %45 ], [ %215, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i46" ], [ %215, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] - %.sroa.1184.0 = phi i64 [ %spec.select, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ undef, %54 ], [ undef, %49 ], [ undef, %45 ], [ undef, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i46" ], [ undef, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] + %.sroa.1184.0 = phi i64 [ %217, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ undef, %54 ], [ undef, %49 ], [ undef, %45 ], [ undef, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i46" ], [ undef, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] %.sroa.12.0 = phi i8 [ %218, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ undef, %54 ], [ undef, %49 ], [ undef, %45 ], [ undef, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i46" ], [ undef, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] store i64 %.sroa.082.0, ptr %0, align 8 %.sroa.683.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -22882,8 +22882,8 @@ common.ret: ; preds = %210, %"_ZN50_$LT$T$ "_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit": ; preds = %.thread118 %216 = icmp eq i64 %.sroa.4.0.i, 0 - %217 = call i64 @llvm.umin.i64(i64 %.sroa.4.0.i, i64 %.sroa.017.i.sroa.6.0) - %spec.select = select i1 %216, i64 0, i64 %217 + %.sroa.017.i.sroa.6.0.fr = freeze i64 %.sroa.017.i.sroa.6.0 + %217 = call i64 @llvm.umin.i64(i64 %.sroa.4.0.i, i64 %.sroa.017.i.sroa.6.0.fr) %218 = zext i1 %216 to i8 br label %"_ZN50_$LT$T$u20$as$u20$core..convert..Into$LT$U$GT$$GT$4into17ha04ee329d7e6fdcfE.exit" diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..2755994a456 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/147605 export COMPTIME_MODE=0 # Please rebase manually