diff --git a/bench/arrow/optimized/transform.cc.ll b/bench/arrow/optimized/transform.cc.ll index 6b0d253f703..12e0144d52a 100644 --- a/bench/arrow/optimized/transform.cc.ll +++ b/bench/arrow/optimized/transform.cc.ll @@ -2071,12 +2071,12 @@ if.else.i.i: ; preds = %_ZNSt10shared_ptrIN to label %invoke.cont79 unwind label %lpad60 invoke.cont79: ; preds = %if.then.i.i, %if.else.i.i - %. = select i1 %cmp54, i32 7, i32 0 + %spec.select = select i1 %cmp54, i32 7, i32 0 br label %cleanup82 cleanup82: ; preds = %invoke.cont79, %if.then66 %avail_size.3 = phi i64 [ %avail_size.1, %if.then66 ], [ %add78, %invoke.cont79 ] - %cleanup.dest.slot.2 = phi i32 [ 1, %if.then66 ], [ %., %invoke.cont79 ] + %cleanup.dest.slot.2 = phi i32 [ 1, %if.then66 ], [ %spec.select, %invoke.cont79 ] call void @_ZN5arrow6ResultISt10shared_ptrINS_6BufferEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp55) #20 %46 = load ptr, ptr %_M_refcount.i.i.i.i, align 8 %cmp.not.i.i.i95 = icmp eq ptr %46, null diff --git a/bench/assimp/optimized/PlyParser.cpp.ll b/bench/assimp/optimized/PlyParser.cpp.ll index e6ab8828115..113b0815b9a 100644 --- a/bench/assimp/optimized/PlyParser.cpp.ll +++ b/bench/assimp/optimized/PlyParser.cpp.ll @@ -3743,15 +3743,12 @@ entry: %_M_finish.i = getelementptr inbounds i8, ptr %this, i64 8 %_M_end_of_storage.i = getelementptr inbounds i8, ptr %this, i64 16 %_M_finish.i.i12 = getelementptr inbounds i8, ptr %out, i64 8 - br label %while.cond - -while.cond: ; preds = %_ZN6Assimp3PLY7ElementD2Ev.exit, %entry %0 = load ptr, ptr %buffer, align 8 %1 = load ptr, ptr %_M_finish.i.i, align 8 - %cmp.i.i = icmp eq ptr %0, %1 - br i1 %cmp.i.i, label %while.end, label %while.body + %cmp.i.i45 = icmp eq ptr %0, %1 + br i1 %cmp.i.i45, label %while.end, label %while.body -while.body: ; preds = %while.cond +while.body: ; preds = %entry, %while.cond.backedge call void @_ZNSt6vectorIcSaIcEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(24) %buffer) %call3 = invoke noundef zeroext i1 @_ZN6Assimp3PLY3DOM12SkipCommentsESt6vectorIcSaIcEE(ptr noundef nonnull %agg.tmp) to label %invoke.cont unwind label %lpad @@ -3808,11 +3805,11 @@ _ZNSt16allocator_traitsISaIN6Assimp3PLY7ElementEEE9constructIS2_JRKS2_EEEvRS3_PT %8 = load ptr, ptr %_M_finish.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %8, i64 72 store ptr %incdec.ptr.i, ptr %_M_finish.i, align 8 - br label %if.end16 + br label %cleanup.jt0 if.else.i: ; preds = %if.then invoke void @_ZNSt6vectorIN6Assimp3PLY7ElementESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr %3, ptr noundef nonnull align 8 dereferenceable(68) %out) - to label %if.end16 unwind label %lpad4 + to label %cleanup.jt0 unwind label %lpad4 lpad: ; preds = %while.body %9 = landingpad { ptr, i32 } @@ -3880,73 +3877,115 @@ if.end.i.i.i: ; preds = %_ZSt4moveIN9__gnu_c %sub.ptr.sub.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.pre-phi.i.i.i, %14 %add.ptr.i5.i.i = getelementptr inbounds i8, ptr %11, i64 %sub.ptr.sub.i.i.i.i %tobool.not.i.i.i.i = icmp eq ptr %16, %add.ptr.i5.i.i - br i1 %tobool.not.i.i.i.i, label %cleanup, label %invoke.cont.i.i.i.i + br i1 %tobool.not.i.i.i.i, label %cleanup.jt3, label %invoke.cont.i.i.i.i invoke.cont.i.i.i.i: ; preds = %if.end.i.i.i store ptr %add.ptr.i5.i.i, ptr %_M_finish.i.i, align 8 - br label %cleanup + br label %cleanup.jt3 if.else11: ; preds = %if.else, %land.lhs.true.i.i, %if.then.i9 %call13 = invoke noundef zeroext i1 @_ZN6Assimp14IOStreamBufferIcE11getNextLineERSt6vectorIcSaIcEE(ptr noundef nonnull align 8 dereferenceable(80) %streamBuffer, ptr noundef nonnull align 8 dereferenceable(24) %buffer) to label %invoke.cont12 unwind label %lpad4 invoke.cont12: ; preds = %if.else11 - br i1 %call13, label %if.end16, label %cleanup - -if.end16: ; preds = %_ZNSt16allocator_traitsISaIN6Assimp3PLY7ElementEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i, %if.else.i, %invoke.cont12 - br label %cleanup + br i1 %call13, label %cleanup.jt0, label %cleanup.jt1 -cleanup: ; preds = %if.end.i.i.i, %invoke.cont.i.i.i.i, %invoke.cont12, %if.end16 - %cleanup.dest.slot.0 = phi i32 [ 0, %if.end16 ], [ 1, %invoke.cont12 ], [ 3, %invoke.cont.i.i.i.i ], [ 3, %if.end.i.i.i ] +cleanup.jt3: ; preds = %if.end.i.i.i, %invoke.cont.i.i.i.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %szName.i) #23 %17 = load ptr, ptr %out, align 8 %18 = load ptr, ptr %_M_finish.i.i12, align 8 - %cmp.not3.i.i.i.i.i = icmp eq ptr %17, %18 - br i1 %cmp.not3.i.i.i.i.i, label %invoke.cont.i.i, label %for.body.i.i.i.i.i + %cmp.not3.i.i.i.i.i.jt3 = icmp eq ptr %17, %18 + br i1 %cmp.not3.i.i.i.i.i.jt3, label %invoke.cont.i.i.jt3, label %for.body.i.i.i.i.i.preheader -for.body.i.i.i.i.i: ; preds = %cleanup, %for.body.i.i.i.i.i - %__first.addr.04.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %17, %cleanup ] +cleanup.jt1: ; preds = %invoke.cont12 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %szName.i) #23 + %19 = load ptr, ptr %out, align 8 + %20 = load ptr, ptr %_M_finish.i.i12, align 8 + %cmp.not3.i.i.i.i.i.jt1 = icmp eq ptr %19, %20 + br i1 %cmp.not3.i.i.i.i.i.jt1, label %invoke.cont.i.i.jt1, label %for.body.i.i.i.i.i.preheader + +cleanup.jt0: ; preds = %invoke.cont12, %if.else.i, %_ZNSt16allocator_traitsISaIN6Assimp3PLY7ElementEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %szName.i) #23 + %21 = load ptr, ptr %out, align 8 + %22 = load ptr, ptr %_M_finish.i.i12, align 8 + %cmp.not3.i.i.i.i.i.jt0 = icmp eq ptr %21, %22 + br i1 %cmp.not3.i.i.i.i.i.jt0, label %invoke.cont.i.i.jt0, label %for.body.i.i.i.i.i.preheader + +for.body.i.i.i.i.i.preheader: ; preds = %cleanup.jt3, %cleanup.jt1, %cleanup.jt0 + %23 = phi ptr [ %18, %cleanup.jt3 ], [ %20, %cleanup.jt1 ], [ %22, %cleanup.jt0 ] + %24 = phi ptr [ %17, %cleanup.jt3 ], [ %19, %cleanup.jt1 ], [ %21, %cleanup.jt0 ] + %cleanup.dest.slot.040 = phi i32 [ 3, %cleanup.jt3 ], [ 1, %cleanup.jt1 ], [ 0, %cleanup.jt0 ] + br label %for.body.i.i.i.i.i + +for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader, %for.body.i.i.i.i.i + %__first.addr.04.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %24, %for.body.i.i.i.i.i.preheader ] %szName.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %szName.i.i.i.i.i.i.i) #23 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i, i64 48 - %cmp.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i, %18 + %cmp.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i, %23 br i1 %cmp.not.i.i.i.i.i, label %invoke.contthread-pre-split.i.i, label %for.body.i.i.i.i.i, !llvm.loop !14 invoke.contthread-pre-split.i.i: ; preds = %for.body.i.i.i.i.i %.pr.i.i = load ptr, ptr %out, align 8 - br label %invoke.cont.i.i - -invoke.cont.i.i: ; preds = %invoke.contthread-pre-split.i.i, %cleanup - %19 = phi ptr [ %.pr.i.i, %invoke.contthread-pre-split.i.i ], [ %17, %cleanup ] - %tobool.not.i.i.i.i13 = icmp eq ptr %19, null + %tobool.not.i.i.i.i13 = icmp eq ptr %.pr.i.i, null br i1 %tobool.not.i.i.i.i13, label %_ZN6Assimp3PLY7ElementD2Ev.exit, label %if.then.i.i.i.i -if.then.i.i.i.i: ; preds = %invoke.cont.i.i - call void @_ZdlPv(ptr noundef nonnull %19) #24 +invoke.cont.i.i.jt3: ; preds = %cleanup.jt3 + %tobool.not.i.i.i.i13.jt3 = icmp eq ptr %17, null + br i1 %tobool.not.i.i.i.i13.jt3, label %while.end, label %if.then.i.i.i.i.jt3 + +invoke.cont.i.i.jt1: ; preds = %cleanup.jt1 + %tobool.not.i.i.i.i13.jt1 = icmp eq ptr %19, null + br i1 %tobool.not.i.i.i.i13.jt1, label %return, label %if.then.i.i.i.i.jt1 + +invoke.cont.i.i.jt0: ; preds = %cleanup.jt0 + %tobool.not.i.i.i.i13.jt0 = icmp eq ptr %21, null + br i1 %tobool.not.i.i.i.i13.jt0, label %while.cond.backedge, label %if.then.i.i.i.i.jt0 + +if.then.i.i.i.i: ; preds = %invoke.contthread-pre-split.i.i + call void @_ZdlPv(ptr noundef nonnull %.pr.i.i) #24 br label %_ZN6Assimp3PLY7ElementD2Ev.exit -_ZN6Assimp3PLY7ElementD2Ev.exit: ; preds = %invoke.cont.i.i, %if.then.i.i.i.i - switch i32 %cleanup.dest.slot.0, label %unreachable [ - i32 0, label %while.cond +if.then.i.i.i.i.jt3: ; preds = %invoke.cont.i.i.jt3 + call void @_ZdlPv(ptr noundef nonnull %17) #24 + br label %while.end + +if.then.i.i.i.i.jt1: ; preds = %invoke.cont.i.i.jt1 + call void @_ZdlPv(ptr noundef nonnull %19) #24 + br label %return + +if.then.i.i.i.i.jt0: ; preds = %invoke.cont.i.i.jt0 + call void @_ZdlPv(ptr noundef nonnull %21) #24 + br label %while.cond.backedge + +_ZN6Assimp3PLY7ElementD2Ev.exit: ; preds = %invoke.contthread-pre-split.i.i, %if.then.i.i.i.i + switch i32 %cleanup.dest.slot.040, label %unreachable [ + i32 0, label %while.cond.backedge i32 3, label %while.end i32 1, label %return - ], !llvm.loop !15 + ] -while.end: ; preds = %_ZN6Assimp3PLY7ElementD2Ev.exit, %while.cond +while.cond.backedge: ; preds = %invoke.cont.i.i.jt0, %if.then.i.i.i.i.jt0, %_ZN6Assimp3PLY7ElementD2Ev.exit + %25 = load ptr, ptr %buffer, align 8 + %26 = load ptr, ptr %_M_finish.i.i, align 8 + %cmp.i.i = icmp eq ptr %25, %26 + br i1 %cmp.i.i, label %while.end, label %while.body, !llvm.loop !15 + +while.end: ; preds = %while.cond.backedge, %_ZN6Assimp3PLY7ElementD2Ev.exit, %entry, %invoke.cont.i.i.jt3, %if.then.i.i.i.i.jt3 br i1 %isBinary, label %if.end19, label %if.then17 if.then17: ; preds = %while.end - %20 = load ptr, ptr %buffer, align 8 - %21 = load ptr, ptr %_M_finish.i.i, align 8 - %cmp.i.i.i15 = icmp eq ptr %20, %21 - %tobool.not.i16 = icmp eq ptr %20, null + %27 = load ptr, ptr %buffer, align 8 + %28 = load ptr, ptr %_M_finish.i.i, align 8 + %cmp.i.i.i15 = icmp eq ptr %27, %28 + %tobool.not.i16 = icmp eq ptr %27, null %or.cond.i17 = or i1 %tobool.not.i16, %cmp.i.i.i15 br i1 %or.cond.i17, label %if.end19, label %while.cond.i.i while.cond.i.i: ; preds = %if.then17, %while.body.i.i - %in.addr.0.i.i = phi ptr [ %incdec.ptr.i.i, %while.body.i.i ], [ %20, %if.then17 ] - %22 = load i8, ptr %in.addr.0.i.i, align 1 - switch i8 %22, label %_ZN6Assimp20SkipSpacesAndLineEndIcEEbPKT_PS3_.exit.i [ + %in.addr.0.i.i = phi ptr [ %incdec.ptr.i.i, %while.body.i.i ], [ %27, %if.then17 ] + %29 = load i8, ptr %in.addr.0.i.i, align 1 + switch i8 %29, label %_ZN6Assimp20SkipSpacesAndLineEndIcEEbPKT_PS3_.exit.i [ i8 32, label %while.body.i.i i8 9, label %while.body.i.i i8 13, label %while.body.i.i @@ -3958,31 +3997,31 @@ while.body.i.i: ; preds = %while.cond.i.i, %wh br label %while.cond.i.i, !llvm.loop !8 _ZN6Assimp20SkipSpacesAndLineEndIcEEbPKT_PS3_.exit.i: ; preds = %while.cond.i.i - %23 = ptrtoint ptr %in.addr.0.i.i to i64 - %24 = ptrtoint ptr %20 to i64 - %sub.i18 = sub i64 %23, %24 - %add.ptr.i.i19 = getelementptr inbounds i8, ptr %20, i64 %sub.i18 - %cmp.i.not.i.i.i = icmp eq ptr %20, %in.addr.0.i.i + %30 = ptrtoint ptr %in.addr.0.i.i to i64 + %31 = ptrtoint ptr %27 to i64 + %sub.i18 = sub i64 %30, %31 + %add.ptr.i.i19 = getelementptr inbounds i8, ptr %27, i64 %sub.i18 + %cmp.i.not.i.i.i = icmp eq ptr %27, %in.addr.0.i.i br i1 %cmp.i.not.i.i.i, label %if.end19, label %if.then.i.i.i20 if.then.i.i.i20: ; preds = %_ZN6Assimp20SkipSpacesAndLineEndIcEEbPKT_PS3_.exit.i - %cmp.i1.not.i.i.i21 = icmp eq ptr %in.addr.0.i.i, %21 + %cmp.i1.not.i.i.i21 = icmp eq ptr %in.addr.0.i.i, %28 br i1 %cmp.i1.not.i.i.i21, label %if.end.i.i.i27, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i22 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i22: ; preds = %if.then.i.i.i20 - %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i23 = ptrtoint ptr %21 to i64 - %sub.ptr.sub.i.i.i.i.i.i.i.i24 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i23, %23 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %20, ptr align 1 %add.ptr.i.i19, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i24, i1 false) + %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i23 = ptrtoint ptr %28 to i64 + %sub.ptr.sub.i.i.i.i.i.i.i.i24 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i23, %30 + call void @llvm.memmove.p0.p0.i64(ptr align 1 %27, ptr align 1 %add.ptr.i.i19, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i24, i1 false) %.pre.i.i.i25 = load ptr, ptr %_M_finish.i.i, align 8 %.pre9.i.i.i26 = ptrtoint ptr %.pre.i.i.i25 to i64 br label %if.end.i.i.i27 if.end.i.i.i27: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i22, %if.then.i.i.i20 - %sub.ptr.lhs.cast.i.pre-phi.i.i.i28 = phi i64 [ %.pre9.i.i.i26, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i22 ], [ %23, %if.then.i.i.i20 ] - %25 = phi ptr [ %.pre.i.i.i25, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i22 ], [ %add.ptr.i.i19, %if.then.i.i.i20 ] - %sub.ptr.sub.i.i.i.i29 = sub i64 %sub.ptr.lhs.cast.i.pre-phi.i.i.i28, %23 - %add.ptr.i5.i.i30 = getelementptr inbounds i8, ptr %20, i64 %sub.ptr.sub.i.i.i.i29 - %tobool.not.i.i.i.i31 = icmp eq ptr %25, %add.ptr.i5.i.i30 + %sub.ptr.lhs.cast.i.pre-phi.i.i.i28 = phi i64 [ %.pre9.i.i.i26, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i22 ], [ %30, %if.then.i.i.i20 ] + %32 = phi ptr [ %.pre.i.i.i25, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit.i.i.i22 ], [ %add.ptr.i.i19, %if.then.i.i.i20 ] + %sub.ptr.sub.i.i.i.i29 = sub i64 %sub.ptr.lhs.cast.i.pre-phi.i.i.i28, %30 + %add.ptr.i5.i.i30 = getelementptr inbounds i8, ptr %27, i64 %sub.ptr.sub.i.i.i.i29 + %tobool.not.i.i.i.i31 = icmp eq ptr %32, %add.ptr.i5.i.i30 br i1 %tobool.not.i.i.i.i31, label %if.end19, label %invoke.cont.i.i.i.i32 invoke.cont.i.i.i.i32: ; preds = %if.end.i.i.i27 @@ -3994,8 +4033,8 @@ if.end19: ; preds = %invoke.cont.i.i.i.i call void @_ZN6Assimp6Logger12verboseDebugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %call20, ptr noundef nonnull @.str.71) br label %return -return: ; preds = %_ZN6Assimp3PLY7ElementD2Ev.exit, %if.end19 - %retval.2 = phi i1 [ true, %if.end19 ], [ false, %_ZN6Assimp3PLY7ElementD2Ev.exit ] +return: ; preds = %_ZN6Assimp3PLY7ElementD2Ev.exit, %if.then.i.i.i.i.jt1, %invoke.cont.i.i.jt1, %if.end19 + %retval.2 = phi i1 [ true, %if.end19 ], [ false, %invoke.cont.i.i.jt1 ], [ false, %if.then.i.i.i.i.jt1 ], [ false, %_ZN6Assimp3PLY7ElementD2Ev.exit ] ret i1 %retval.2 eh.resume: ; preds = %lpad4.body, %lpad diff --git a/bench/bullet3/optimized/btGeneric6DofSpring2Constraint.ll b/bench/bullet3/optimized/btGeneric6DofSpring2Constraint.ll index ba9eab9b0e0..8271a958c4c 100644 --- a/bench/bullet3/optimized/btGeneric6DofSpring2Constraint.ll +++ b/bench/bullet3/optimized/btGeneric6DofSpring2Constraint.ll @@ -2284,21 +2284,15 @@ for.body31: ; preds = %for.cond29.preheade %13 = load float, ptr %m_hiLimit.i, align 4 %cmp.i.i = fcmp ogt float %12, %13 %m_currentLimitError.i.i = getelementptr inbounds i8, ptr %arrayidx3.i, i64 72 - br i1 %cmp.i.i, label %_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit, label %if.else.i.i + br i1 %cmp.i.i, label %_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit.jt0, label %if.else.i.i if.else.i.i: ; preds = %for.body31 %cmp4.i.i = fcmp oeq float %12, %13 %sub.i.i = fsub float %call7.i, %12 store float %sub.i.i, ptr %m_currentLimitError.i.i, align 8 - br i1 %cmp4.i.i, label %if.then45, label %if.then36 + br i1 %cmp4.i.i, label %_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit.jt3, label %_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit.jt4 -_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit: ; preds = %for.body31 - %m_currentLimit.i.i = getelementptr inbounds i8, ptr %arrayidx3.i, i64 84 - store i32 0, ptr %m_currentLimit.i.i, align 4 - store float 0.000000e+00, ptr %m_currentLimitError.i.i, align 8 - br label %if.end49 - -if.then36: ; preds = %if.else.i.i +_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit.jt4: ; preds = %if.else.i.i %sub14.i.i = fsub float %call7.i, %13 %m_currentLimitErrorHi.i.i = getelementptr inbounds i8, ptr %arrayidx3.i, i64 76 store float %sub14.i.i, ptr %m_currentLimitErrorHi.i.i, align 4 @@ -2309,7 +2303,7 @@ if.then36: ; preds = %if.else.i.i store i32 %add38, ptr %info, align 4 br label %if.end49 -if.then45: ; preds = %if.else.i.i +_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit.jt3: ; preds = %if.else.i.i %m_currentLimit8.i.i = getelementptr inbounds i8, ptr %arrayidx3.i, i64 84 store i32 3, ptr %m_currentLimit8.i.i, align 4 %15 = load i32, ptr %info, align 4 @@ -2317,7 +2311,13 @@ if.then45: ; preds = %if.else.i.i store i32 %add47, ptr %info, align 4 br label %if.end49 -if.end49: ; preds = %_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit, %if.then45, %if.then36 +_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit.jt0: ; preds = %for.body31 + %m_currentLimit.i.i = getelementptr inbounds i8, ptr %arrayidx3.i, i64 84 + store i32 0, ptr %m_currentLimit.i.i, align 4 + store float 0.000000e+00, ptr %m_currentLimitError.i.i, align 8 + br label %if.end49 + +if.end49: ; preds = %_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit.jt0, %_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit.jt3, %_ZN30btGeneric6DofSpring2Constraint21testAngularLimitMotorEi.exit.jt4 %m_enableMotor53 = getelementptr inbounds i8, ptr %arrayidx3.i, i64 28 %16 = load i8, ptr %m_enableMotor53, align 4 %tobool54 = trunc i8 %16 to i1 diff --git a/bench/clamav/optimized/phishcheck.c.ll b/bench/clamav/optimized/phishcheck.c.ll index 2a06cc30ed6..3bc1b1f659a 100644 --- a/bench/clamav/optimized/phishcheck.c.ll +++ b/bench/clamav/optimized/phishcheck.c.ll @@ -758,7 +758,7 @@ hash_match.exit.us.us.us.preheader.i.i: ; preds = %.lr.ph.us.us.i.i switch i8 %191, label %.thread.i.loopexit.i [ i8 87, label %192 i8 49, label %.thread.i.loopexit.i.loopexit - i8 50, label %.thread.i.loopexit.i.loopexit117 + i8 50, label %.thread.i.loopexit.i.loopexit119 ] 192: ; preds = %189 @@ -806,11 +806,11 @@ hash_match.exit.us.us.us.preheader.i.i: ; preds = %.lr.ph.us.us.i.i .thread.i.loopexit.i.loopexit: ; preds = %189 br label %.thread.i.loopexit.i -.thread.i.loopexit.i.loopexit117: ; preds = %189 +.thread.i.loopexit.i.loopexit119: ; preds = %189 br label %.thread.i.loopexit.i -.thread.i.loopexit.i: ; preds = %189, %.thread.i.loopexit.i.loopexit117, %.thread.i.loopexit.i.loopexit - %.sink.i.i = phi i32 [ 108, %.thread.i.loopexit.i.loopexit ], [ 109, %.thread.i.loopexit.i.loopexit117 ], [ 107, %189 ] +.thread.i.loopexit.i: ; preds = %189, %.thread.i.loopexit.i.loopexit119, %.thread.i.loopexit.i.loopexit + %.sink.i.i = phi i32 [ 108, %.thread.i.loopexit.i.loopexit ], [ 109, %.thread.i.loopexit.i.loopexit119 ], [ 107, %189 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 65, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) @@ -1051,16 +1051,18 @@ isSSL.exit.thread.i: ; preds = %isSSL.exit98.i, %is 285: ; preds = %281 %286 = and i32 %279, 1 %.not.i99.i = icmp eq i32 %286, 0 + br i1 %.not.i99.i, label %..i.i.si.unfold.true, label %.thread134.i + +..i.i.si.unfold.true: ; preds = %285 %287 = and i32 %279, 2 %.not4.i.i = icmp eq i32 %287, 0 - %..i.i = select i1 %.not4.i.i, i32 106, i32 102 - %spec.select.i = select i1 %.not.i99.i, i32 %..i.i, i32 101 + %spec.select = select i1 %.not4.i.i, i32 106, i32 102 br label %.thread134.i -.thread134.i: ; preds = %285, %isSSL.exit98.i, %276, %268, %.thread.i.loopexit.i - %.0149.i = phi ptr [ %232, %268 ], [ %232, %isSSL.exit98.i ], [ %232, %276 ], [ null, %.thread.i.loopexit.i ], [ %232, %285 ] - %.057148.i = phi ptr [ %228, %268 ], [ %228, %isSSL.exit98.i ], [ %228, %276 ], [ null, %.thread.i.loopexit.i ], [ %228, %285 ] - %.0120147.i = phi i32 [ 104, %268 ], [ 105, %isSSL.exit98.i ], [ 105, %276 ], [ %.sink.i.i, %.thread.i.loopexit.i ], [ %spec.select.i, %285 ] +.thread134.i: ; preds = %..i.i.si.unfold.true, %285, %isSSL.exit98.i, %276, %268, %.thread.i.loopexit.i + %.0149.i = phi ptr [ %232, %268 ], [ %232, %isSSL.exit98.i ], [ %232, %276 ], [ null, %.thread.i.loopexit.i ], [ %232, %285 ], [ %232, %..i.i.si.unfold.true ] + %.057148.i = phi ptr [ %228, %268 ], [ %228, %isSSL.exit98.i ], [ %228, %276 ], [ null, %.thread.i.loopexit.i ], [ %228, %285 ], [ %228, %..i.i.si.unfold.true ] + %.0120147.i = phi i32 [ 104, %268 ], [ 105, %isSSL.exit98.i ], [ 105, %276 ], [ %.sink.i.i, %.thread.i.loopexit.i ], [ 101, %285 ], [ %spec.select, %..i.i.si.unfold.true ] call void (ptr, ptr, ...) @cli_infomsg(ptr noundef %0, ptr noundef nonnull @.str.31) #18 %288 = load ptr, ptr %33, align 8 call void (ptr, ptr, ...) @cli_infomsg(ptr noundef %0, ptr noundef nonnull @.str.32, ptr noundef %288) #18 diff --git a/bench/cmake/optimized/alone_encoder.c.ll b/bench/cmake/optimized/alone_encoder.c.ll index d7a2a52c2a2..6ea6778a550 100644 --- a/bench/cmake/optimized/alone_encoder.c.ll +++ b/bench/cmake/optimized/alone_encoder.c.ll @@ -134,43 +134,39 @@ declare noalias ptr @lzma_alloc(i64 noundef, ptr noundef) local_unnamed_addr #1 define internal i32 @alone_encode(ptr noundef %0, ptr noundef %1, ptr noalias noundef %2, ptr noalias noundef %3, i64 noundef %4, ptr noalias noundef %5, ptr noalias noundef %6, i64 noundef %7, i32 noundef %8) #0 { %10 = load i64, ptr %6, align 8 %11 = icmp ult i64 %10, %7 - br i1 %11, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %9 - %12 = getelementptr inbounds i8, ptr %0, i64 72 - %13 = getelementptr inbounds i8, ptr %0, i64 88 - %14 = getelementptr inbounds i8, ptr %0, i64 80 - %.pre = load i32, ptr %12, align 8 - br label %15 - -15: ; preds = %.lr.ph, %21 - %16 = phi i32 [ %.pre, %.lr.ph ], [ 1, %21 ] - switch i32 %16, label %.loopexit [ - i32 0, label %17 - i32 1, label %24 + br i1 %11, label %12, label %.loopexit + +12: ; preds = %9 + %13 = getelementptr inbounds i8, ptr %0, i64 72 + %.pre = load i32, ptr %13, align 8 + switch i32 %.pre, label %.loopexit [ + i32 0, label %14 + i32 1, label %23 ] -17: ; preds = %15 - %18 = tail call i64 @lzma_bufcpy(ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef 13, ptr noundef %5, ptr noundef nonnull %6, i64 noundef %7) #5 - %19 = load i64, ptr %14, align 8 - %20 = icmp ult i64 %19, 13 - br i1 %20, label %.loopexit, label %21 - -21: ; preds = %17 - store i32 1, ptr %12, align 8 - %22 = load i64, ptr %6, align 8 - %23 = icmp ult i64 %22, %7 - br i1 %23, label %15, label %.loopexit, !llvm.loop !5 - -24: ; preds = %15 - %25 = getelementptr inbounds i8, ptr %0, i64 24 - %26 = load ptr, ptr %25, align 8 - %27 = load ptr, ptr %0, align 8 - %28 = tail call i32 %26(ptr noundef %27, ptr noundef %1, ptr noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, ptr noundef nonnull %6, i64 noundef %7, i32 noundef %8) #5 +14: ; preds = %12 + %15 = getelementptr inbounds i8, ptr %0, i64 80 + %16 = getelementptr inbounds i8, ptr %0, i64 88 + %17 = tail call i64 @lzma_bufcpy(ptr noundef nonnull %16, ptr noundef nonnull %15, i64 noundef 13, ptr noundef %5, ptr noundef nonnull %6, i64 noundef %7) #5 + %18 = load i64, ptr %15, align 8 + %19 = icmp ult i64 %18, 13 + br i1 %19, label %.loopexit, label %20 + +20: ; preds = %14 + store i32 1, ptr %13, align 8 + %21 = load i64, ptr %6, align 8 + %22 = icmp ult i64 %21, %7 + br i1 %22, label %23, label %.loopexit, !llvm.loop !5 + +23: ; preds = %20, %12 + %24 = getelementptr inbounds i8, ptr %0, i64 24 + %25 = load ptr, ptr %24, align 8 + %26 = load ptr, ptr %0, align 8 + %27 = tail call i32 %25(ptr noundef %26, ptr noundef %1, ptr noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, ptr noundef nonnull %6, i64 noundef %7, i32 noundef %8) #5 br label %.loopexit -.loopexit: ; preds = %17, %15, %21, %9, %24 - %.0 = phi i32 [ %28, %24 ], [ 0, %9 ], [ 0, %17 ], [ 11, %15 ], [ 0, %21 ] +.loopexit: ; preds = %14, %12, %20, %9, %23 + %.0 = phi i32 [ %27, %23 ], [ 0, %9 ], [ 0, %20 ], [ 11, %12 ], [ 0, %14 ] ret i32 %.0 } diff --git a/bench/cmake/optimized/cmCPackInnoSetupGenerator.cxx.ll b/bench/cmake/optimized/cmCPackInnoSetupGenerator.cxx.ll index db8a069c8ad..6eee79715bf 100644 --- a/bench/cmake/optimized/cmCPackInnoSetupGenerator.cxx.ll +++ b/bench/cmake/optimized/cmCPackInnoSetupGenerator.cxx.ll @@ -3859,11 +3859,11 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_b %269 = getelementptr inbounds i8, ptr %8, i64 88 br label %270 -270: ; preds = %.lr.ph711, %480 - %.sroa.0541.0710 = phi ptr [ null, %.lr.ph711 ], [ %.sroa.0541.1, %480 ] - %.sroa.7.0709 = phi ptr [ null, %.lr.ph711 ], [ %.sroa.7.1, %480 ] - %.sroa.13.0708 = phi ptr [ null, %.lr.ph711 ], [ %.sroa.13.1, %480 ] - %.sroa.0538.0707 = phi ptr [ %242, %.lr.ph711 ], [ %481, %480 ] +270: ; preds = %.lr.ph711, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308.jt7 + %.sroa.0541.0710 = phi ptr [ null, %.lr.ph711 ], [ %.sroa.0541.1785, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308.jt7 ] + %.sroa.7.0709 = phi ptr [ null, %.lr.ph711 ], [ %.sroa.7.1784, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308.jt7 ] + %.sroa.13.0708 = phi ptr [ null, %.lr.ph711 ], [ %.sroa.13.1783, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308.jt7 ] + %.sroa.0538.0707 = phi ptr [ %242, %.lr.ph711 ], [ %481, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308.jt7 ] store i32 0, ptr %244, align 8 store ptr null, ptr %245, align 8 store ptr %244, ptr %246, align 8 @@ -3874,7 +3874,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_b %273 = load i8, ptr %272, align 8 %274 = and i8 %273, 2 %.not172 = icmp eq i8 %274, 0 - br i1 %.not172, label %291, label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit + br i1 %.not172, label %291, label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt7 275: ; preds = %.noexc228, %._crit_edge701 %276 = landingpad { ptr, i32 } @@ -4352,7 +4352,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_b %395 = load i8, ptr %272, align 8 %396 = and i8 %395, 8 %.not186 = icmp eq i8 %396, 0 - br i1 %.not186, label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit, label %397 + br i1 %.not186, label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0, label %397 397: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287 %.not.i288 = icmp eq ptr %.sroa.7.0709, %.sroa.13.0708 @@ -4451,7 +4451,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit296: ; %.not579 = icmp eq ptr %426, null call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #20 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #20 - br i1 %.not579, label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit, label %434 + br i1 %.not579, label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt1, label %434 428: ; preds = %394 %429 = landingpad { ptr, i32 } @@ -4556,7 +4556,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit301: ; %453 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %420, ptr noundef nonnull align 8 dereferenceable(32) %51) #20 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #20 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #20 - br label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.sink.split + br label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0.sink.split 454: ; preds = %.noexc297, %434 %455 = landingpad { ptr, i32 } @@ -4602,7 +4602,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %463 %468 = getelementptr i8, ptr %467, i64 -4 %bcmp.i = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %468, ptr noundef nonnull dereferenceable(4) @.str.138, i64 4) %469 = icmp eq i32 %bcmp.i, 0 - br i1 %469, label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit, label %470 + br i1 %469, label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0, label %470 470: ; preds = %463, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) @@ -4621,36 +4621,51 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %463 474: ; preds = %470 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) %475 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %420, ptr noundef nonnull align 8 dereferenceable(32) %53) #20 - br label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.sink.split + br label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0.sink.split -_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.sink.split: ; preds = %452, %474 - %.sink = phi ptr [ %53, %474 ], [ %48, %452 ] - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink) #20 - br label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit - -_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit: ; preds = %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.sink.split, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287, %427, %270 - %.sroa.13.1 = phi ptr [ %.sroa.13.0708, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287 ], [ %.sroa.13.2, %427 ], [ %.sroa.13.0708, %270 ], [ %.sroa.13.2, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.13.2, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.sink.split ] - %.sroa.7.1 = phi ptr [ %.sroa.7.0709, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287 ], [ %.sroa.7.2, %427 ], [ %.sroa.7.0709, %270 ], [ %.sroa.7.2, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.7.2, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.sink.split ] - %.sroa.0541.1 = phi ptr [ %.sroa.0541.0710, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287 ], [ %.sroa.0541.6, %427 ], [ %.sroa.0541.0710, %270 ], [ %.sroa.0541.6, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.0541.6, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.sink.split ] - %.0111 = phi i32 [ 0, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287 ], [ 1, %427 ], [ 7, %270 ], [ 0, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ 0, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.sink.split ] +_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt7: ; preds = %270 %476 = load ptr, ptr %245, align 8 invoke void @_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef %476) - to label %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308 unwind label %477 + to label %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308.jt7 unwind label %.loopexit811 -477: ; preds = %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit - %478 = landingpad { ptr, i32 } +_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt1: ; preds = %427 + %477 = load ptr, ptr %245, align 8 + invoke void @_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef %477) + to label %.loopexit588 unwind label %.loopexit.split-lp812 + +_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0.sink.split: ; preds = %452, %474 + %.sink = phi ptr [ %53, %474 ], [ %48, %452 ] + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink) #20 + br label %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0 + +_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0: ; preds = %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0.sink.split, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287 + %.sroa.13.1.jt0 = phi ptr [ %.sroa.13.0708, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287 ], [ %.sroa.13.2, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.13.2, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0.sink.split ] + %.sroa.7.1.jt0 = phi ptr [ %.sroa.7.0709, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287 ], [ %.sroa.7.2, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.7.2, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0.sink.split ] + %.sroa.0541.1.jt0 = phi ptr [ %.sroa.0541.0710, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit287 ], [ %.sroa.0541.6, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.0541.6, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0.sink.split ] + %478 = load ptr, ptr %245, align 8 + invoke void @_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef %478) + to label %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308.jt7 unwind label %.loopexit811 + +.loopexit811: ; preds = %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt7 + %lpad.loopexit813 = landingpad { ptr, i32 } catch ptr null - %479 = extractvalue { ptr, i32 } %478, 0 - call void @__clang_call_terminate(ptr %479) #22 - unreachable + br label %479 -_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308: ; preds = %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit - switch i32 %.0111, label %.loopexit588 [ - i32 0, label %480 - i32 7, label %480 - ] +.loopexit.split-lp812: ; preds = %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt1 + %lpad.loopexit.split-lp = landingpad { ptr, i32 } + catch ptr null + br label %479 + +479: ; preds = %.loopexit.split-lp812, %.loopexit811 + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit813, %.loopexit811 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp812 ] + %480 = extractvalue { ptr, i32 } %lpad.phi, 0 + call void @__clang_call_terminate(ptr %480) #22 + unreachable -480: ; preds = %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308 +_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308.jt7: ; preds = %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt7 + %.sroa.0541.1785 = phi ptr [ %.sroa.0541.0710, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt7 ], [ %.sroa.0541.1.jt0, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0 ] + %.sroa.7.1784 = phi ptr [ %.sroa.7.0709, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt7 ], [ %.sroa.7.1.jt0, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0 ] + %.sroa.13.1783 = phi ptr [ %.sroa.13.0708, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt7 ], [ %.sroa.13.1.jt0, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt0 ] %481 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.0538.0707) #23 %.not573 = icmp eq ptr %481, %243 br i1 %.not573, label %._crit_edge712, label %270 @@ -4661,8 +4676,8 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaI call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #20 br label %879 -._crit_edge712: ; preds = %480 - %483 = icmp eq ptr %.sroa.0541.1, %.sroa.7.1 +._crit_edge712: ; preds = %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308.jt7 + %483 = icmp eq ptr %.sroa.0541.1785, %.sroa.7.1784 br i1 %483, label %._crit_edge712.thread, label %484 484: ; preds = %._crit_edge712 @@ -5139,10 +5154,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit360: ; br label %.lr.ph716 .lr.ph716: ; preds = %599, %.critedge - %.sink862 = phi ptr [ %75, %.critedge ], [ %73, %599 ] - %.sink861 = phi ptr [ %76, %.critedge ], [ %74, %599 ] - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink862) #20 - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %.sink861) #20 + %.sink865 = phi ptr [ %75, %.critedge ], [ %73, %599 ] + %.sink864 = phi ptr [ %76, %.critedge ], [ %74, %599 ] + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink865) #20 + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %.sink864) #20 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #20 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #20 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %77, i8 0, i64 24, i1 false) @@ -5165,7 +5180,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit360: ; br label %627 627: ; preds = %.lr.ph716, %696 - %.sroa.0492.0715 = phi ptr [ %.sroa.0541.1, %.lr.ph716 ], [ %697, %696 ] + %.sroa.0492.0715 = phi ptr [ %.sroa.0541.1785, %.lr.ph716 ], [ %697, %696 ] %628 = load ptr, ptr %.sroa.0492.0715, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #20 %629 = invoke noundef zeroext i1 @_ZN25cmCPackInnoSetupGenerator31BuildDownloadedComponentArchiveEP16cmCPackComponentRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS7_(ptr noundef nonnull align 8 dereferenceable(656) %0, ptr noundef %628, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr poison) @@ -5386,7 +5401,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_b call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #20 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #20 %697 = getelementptr inbounds i8, ptr %.sroa.0492.0715, i64 8 - %.not576 = icmp eq ptr %697, %.sroa.7.1 + %.not576 = icmp eq ptr %697, %.sroa.7.1784 br i1 %.not576, label %._crit_edge717, label %627 698: ; preds = %663 @@ -5811,7 +5826,7 @@ _ZN16cmCPackGenerator9SetOptionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcES br label %879 ._crit_edge712.thread: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit249, %797, %._crit_edge712 - %.sroa.0541.0.lcssa785 = phi ptr [ %.sroa.0541.1, %797 ], [ %.sroa.0541.1, %._crit_edge712 ], [ null, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit249 ] + %.sroa.0541.0.lcssa788 = phi ptr [ %.sroa.0541.1785, %797 ], [ %.sroa.0541.1785, %._crit_edge712 ], [ null, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit249 ] %800 = load ptr, ptr %0, align 8 %801 = getelementptr inbounds i8, ptr %800, i64 96 %802 = load ptr, ptr %801, align 8 @@ -6081,15 +6096,15 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex br label %.loopexit588.sink.split .loopexit588.sink.split: ; preds = %_ZN10cmCPackLog3LogEiPKciS1_.exit, %504, %559, %847, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit460, %.critedge215 - %.sink863 = phi ptr [ %56, %.critedge215 ], [ %56, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit460 ], [ %106, %847 ], [ %56, %559 ], [ %56, %504 ], [ %56, %_ZN10cmCPackLog3LogEiPKciS1_.exit ] - %.sroa.0541.4.ph = phi ptr [ %.sroa.0541.1, %.critedge215 ], [ %.sroa.0541.1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit460 ], [ %.sroa.0541.0.lcssa785, %847 ], [ %.sroa.0541.1, %559 ], [ %.sroa.0541.1, %504 ], [ %.sroa.0541.1, %_ZN10cmCPackLog3LogEiPKciS1_.exit ] + %.sink866 = phi ptr [ %56, %.critedge215 ], [ %56, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit460 ], [ %106, %847 ], [ %56, %559 ], [ %56, %504 ], [ %56, %_ZN10cmCPackLog3LogEiPKciS1_.exit ] + %.sroa.0541.4.ph = phi ptr [ %.sroa.0541.1785, %.critedge215 ], [ %.sroa.0541.1785, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit460 ], [ %.sroa.0541.0.lcssa788, %847 ], [ %.sroa.0541.1785, %559 ], [ %.sroa.0541.1785, %504 ], [ %.sroa.0541.1785, %_ZN10cmCPackLog3LogEiPKciS1_.exit ] %.2.ph = phi i1 [ false, %.critedge215 ], [ false, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit460 ], [ %.8, %847 ], [ false, %559 ], [ false, %504 ], [ false, %_ZN10cmCPackLog3LogEiPKciS1_.exit ] - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink863) #20 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink866) #20 br label %.loopexit588 -.loopexit588: ; preds = %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308, %.loopexit588.sink.split - %.sroa.0541.4 = phi ptr [ %.sroa.0541.4.ph, %.loopexit588.sink.split ], [ %.sroa.0541.1, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308 ] - %.2 = phi i1 [ %.2.ph, %.loopexit588.sink.split ], [ false, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev.exit308 ] +.loopexit588: ; preds = %.loopexit588.sink.split, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt1 + %.sroa.0541.4 = phi ptr [ %.sroa.0541.6, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt1 ], [ %.sroa.0541.4.ph, %.loopexit588.sink.split ] + %.2 = phi i1 [ false, %_Z11cmHasSuffixSt17basic_string_viewIcSt11char_traitsIcEES2_.exit.jt1 ], [ %.2.ph, %.loopexit588.sink.split ] %.not.i.i.i461 = icmp eq ptr %.sroa.0541.4, null br i1 %.not.i.i.i461, label %_ZNSt6vectorIP16cmCPackComponentSaIS1_EED2Ev.exit, label %868 @@ -6147,7 +6162,7 @@ _ZNSt6vectorIP23cmCPackInstallationTypeSaIS1_EED2Ev.exit: ; preds = %_ZNSt6vecto ret i1 %.2 879: ; preds = %.body418, %816, %799, %.body311, %482 - %.sroa.0541.5 = phi ptr [ %.sroa.0541.3, %482 ], [ %.sroa.0541.0.lcssa785, %.body418 ], [ %.sroa.0541.0.lcssa785, %816 ], [ %.sroa.0541.1, %799 ], [ %.sroa.0541.1, %.body311 ] + %.sroa.0541.5 = phi ptr [ %.sroa.0541.3, %482 ], [ %.sroa.0541.0.lcssa788, %.body418 ], [ %.sroa.0541.0.lcssa788, %816 ], [ %.sroa.0541.1785, %799 ], [ %.sroa.0541.1785, %.body311 ] %.pn191.pn.pn = phi { ptr, i32 } [ %.pn191.pn, %482 ], [ %.pn169.pn, %.body418 ], [ %817, %816 ], [ %.pn161.pn.pn.pn, %799 ], [ %.pn121, %.body311 ] %.not.i.i.i473 = icmp eq ptr %.sroa.0541.5, null br i1 %.not.i.i.i473, label %_ZNSt6vectorIP16cmCPackComponentSaIS1_EED2Ev.exit474, label %880 @@ -6157,9 +6172,9 @@ _ZNSt6vectorIP23cmCPackInstallationTypeSaIS1_EED2Ev.exit: ; preds = %_ZNSt6vecto br label %_ZNSt6vectorIP16cmCPackComponentSaIS1_EED2Ev.exit474 _ZNSt6vectorIP16cmCPackComponentSaIS1_EED2Ev.exit474: ; preds = %.body230, %.body235, %.body240, %287, %289, %879, %880, %185, %.body, %.body221, %195 - %.sink864 = phi ptr [ %12, %195 ], [ %12, %.body221 ], [ %12, %.body ], [ %12, %185 ], [ %20, %880 ], [ %20, %879 ], [ %20, %289 ], [ %20, %287 ], [ %20, %.body240 ], [ %20, %.body235 ], [ %20, %.body230 ] + %.sink867 = phi ptr [ %12, %195 ], [ %12, %.body221 ], [ %12, %.body ], [ %12, %185 ], [ %20, %880 ], [ %20, %879 ], [ %20, %289 ], [ %20, %287 ], [ %20, %.body240 ], [ %20, %.body235 ], [ %20, %.body230 ] %.pn200.pn = phi { ptr, i32 } [ %196, %195 ], [ %.pn198, %.body221 ], [ %.pn196, %.body ], [ %186, %185 ], [ %.pn191.pn.pn, %880 ], [ %.pn191.pn.pn, %879 ], [ %290, %289 ], [ %288, %287 ], [ %.pn119, %.body240 ], [ %.pn117, %.body235 ], [ %.pn, %.body230 ] - call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %.sink864) #20 + call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %.sink867) #20 call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #20 %.not.i.i.i475 = icmp eq ptr %.sroa.0557.0, null br i1 %.not.i.i.i475, label %_ZNSt6vectorIP23cmCPackInstallationTypeSaIS1_EED2Ev.exit476, label %881 diff --git a/bench/coreutils-rs/optimized/1487bf2zeluccyme.ll b/bench/coreutils-rs/optimized/1487bf2zeluccyme.ll index 061bd800a88..e787d84e590 100644 --- a/bench/coreutils-rs/optimized/1487bf2zeluccyme.ll +++ b/bench/coreutils-rs/optimized/1487bf2zeluccyme.ll @@ -10733,7 +10733,7 @@ define hidden noundef i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalia %60 = icmp eq ptr %.sroa.0.0, %13 br i1 %60, label %61, label %65 -default.unreachable328: ; preds = %345, %96 +default.unreachable328: ; preds = %96 unreachable 61: ; preds = %59 @@ -10787,7 +10787,7 @@ default.unreachable328: ; preds = %345, %96 br label %switch.lookup switch.lookup: ; preds = %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread, %89 - %.2 = phi i8 [ %spec.select, %89 ], [ %spec.select555, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread ] + %.2 = phi i8 [ %spec.select, %89 ], [ %spec.select769, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread ] ret i8 %.2 93: ; preds = %65 @@ -10930,8 +10930,7 @@ switch.lookup: ; preds = %_ZN7uu_sort15numeri 168: ; preds = %157 %169 = icmp slt i64 %158, %159 - %spec.select.i = select i1 %169, i8 -1, i8 1 - br label %.thread + br i1 %169, label %.thread.jt255, label %.thread.jt1 170: ; preds = %343, %165 %.sroa.0155.0 = phi ptr [ %.sroa.052.0, %165 ], [ %.sroa.0155.3, %343 ] @@ -11084,8 +11083,8 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17hceb624fbec26a58cE.exit129: ; p br i1 %253, label %254, label %255 254: ; preds = %_ZN4core4iter6traits8iterator8Iterator8try_fold17hceb624fbec26a58cE.exit129 - switch i32 %.0.i125, label %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h94fbea7f10b0bc0cE.llvm.10701424160139774282.exit" [ - i32 1114112, label %.thread + switch i32 %.0.i125, label %.thread.jt255 [ + i32 1114112, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit i32 48, label %.preheader ] @@ -11096,7 +11095,7 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17hceb624fbec26a58cE.exit129: ; p .preheader: ; preds = %254, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i132" %257 = phi ptr [ %295, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i132" ], [ %.sroa.0157.3, %254 ] %258 = icmp eq ptr %257, %167 - br i1 %258, label %.thread, label %259 + br i1 %258, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit, label %259 259: ; preds = %.preheader %260 = getelementptr inbounds i8, ptr %257, i64 1 @@ -11149,30 +11148,27 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17hceb624fbec26a58cE.exit129: ; p %293 = or disjoint i32 %290, %292 %294 = or disjoint i32 %293, %289 %.not.not.i = icmp eq i32 %294, 1114112 - br i1 %.not.not.i, label %.thread, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i132" + br i1 %.not.not.i, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i132" "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i132": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i134", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit15.i.i.i133", %273, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit13.i.i.i131" %295 = phi ptr [ %286, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i134" ], [ %260, %273 ], [ %276, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit15.i.i.i133" ], [ %266, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit13.i.i.i131" ] %296 = phi i32 [ %294, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i134" ], [ %274, %273 ], [ %283, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit15.i.i.i133" ], [ %271, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit13.i.i.i131" ] %297 = add nsw i32 %296, -58 %spec.select.i.i = icmp ult i32 %297, -9 - br i1 %spec.select.i.i, label %.preheader, label %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h94fbea7f10b0bc0cE.llvm.10701424160139774282.exit" - -"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h94fbea7f10b0bc0cE.llvm.10701424160139774282.exit": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i132", %254 - br label %.thread + br i1 %spec.select.i.i, label %.preheader, label %.thread.jt255 298: ; preds = %255 %299 = icmp eq i32 %.0.i118, 48 - br i1 %299, label %.preheader179, label %.thread + br i1 %299, label %.preheader179, label %.thread.jt1 300: ; preds = %255 %301 = icmp ult i32 %.0.i118, %.0.i125 - br i1 %301, label %.thread, label %343 + br i1 %301, label %.thread.jt255, label %343 .preheader179: ; preds = %298, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i138" %302 = phi ptr [ %340, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i138" ], [ %.sroa.0155.3, %298 ] %303 = icmp eq ptr %302, %166 - br i1 %303, label %.thread, label %304 + br i1 %303, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit, label %304 304: ; preds = %.preheader179 %305 = getelementptr inbounds i8, ptr %302, i64 1 @@ -11225,39 +11221,39 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17hceb624fbec26a58cE.exit129: ; p %338 = or disjoint i32 %335, %337 %339 = or disjoint i32 %338, %334 %.not.not.i143 = icmp eq i32 %339, 1114112 - br i1 %.not.not.i143, label %.thread, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i138" + br i1 %.not.not.i143, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i138" "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i138": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i142", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit15.i.i.i141", %318, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit13.i.i.i137" %340 = phi ptr [ %331, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i142" ], [ %305, %318 ], [ %321, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit15.i.i.i141" ], [ %311, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit13.i.i.i137" ] %341 = phi i32 [ %339, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i142" ], [ %319, %318 ], [ %328, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit15.i.i.i141" ], [ %316, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.exit13.i.i.i137" ] %342 = add nsw i32 %341, -58 %spec.select.i.i139 = icmp ult i32 %342, -9 - br i1 %spec.select.i.i139, label %.preheader179, label %.thread + br i1 %spec.select.i.i139, label %.preheader179, label %.thread.jt1 343: ; preds = %300 %.not178.not = icmp eq i32 %.0.i118, %.0.i125 - br i1 %.not178.not, label %170, label %.thread + br i1 %.not178.not, label %170, label %.thread.jt1 -.thread: ; preds = %300, %343, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i142", %.preheader179, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i138", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i134", %.preheader, %254, %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h94fbea7f10b0bc0cE.llvm.10701424160139774282.exit", %298, %168 - %.1.i = phi i8 [ %spec.select.i, %168 ], [ -1, %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h94fbea7f10b0bc0cE.llvm.10701424160139774282.exit" ], [ 0, %254 ], [ 1, %298 ], [ 0, %.preheader ], [ 0, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i134" ], [ 0, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i142" ], [ 0, %.preheader179 ], [ 1, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i138" ], [ -1, %300 ], [ 1, %343 ] +.thread.jt1: ; preds = %298, %343, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i138", %168 %344 = icmp eq i8 %154, 0 - br i1 %344, label %345, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit + br i1 %344, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread329 -345: ; preds = %.thread - switch i8 %.1.i, label %default.unreachable328 [ - i8 -1, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread.loopexit - i8 0, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit - i8 1, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread - ] +.thread.jt255: ; preds = %254, %300, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i132", %168 + %345 = icmp eq i8 %154, 0 + br i1 %345, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread329 346: ; preds = %145 tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %146, i64 noundef %50, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a110fc8cc4a39fd147b5a3360eb1a23d.203) #29 unreachable -_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit: ; preds = %345, %374, %367, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit, %.thread, %122, %351, %134, %120, %117 - %.085 = phi i8 [ %144, %134 ], [ %..i148, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit ], [ %121, %120 ], [ %.0.i117, %117 ], [ %355, %351 ], [ 0, %122 ], [ %.1.i, %.thread ], [ %.8.i.i, %374 ], [ %.05.i.i, %367 ], [ %.1.i, %345 ] - %.184 = phi i64 [ %.083, %134 ], [ %.083, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit ], [ %.083, %120 ], [ %.083, %117 ], [ %.083, %351 ], [ %.083, %122 ], [ %.083, %.thread ], [ %364, %374 ], [ %364, %367 ], [ %.083, %345 ] - %.182 = phi i64 [ %.081, %134 ], [ %.081, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit ], [ %.081, %120 ], [ %.081, %117 ], [ %354, %351 ], [ %.081, %122 ], [ %152, %.thread ], [ %.081, %374 ], [ %.081, %367 ], [ %152, %345 ] +_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread329: ; preds = %.thread.jt255, %.thread.jt1 + %.085.ph = phi i8 [ 1, %.thread.jt1 ], [ -1, %.thread.jt255 ] + br label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread + +_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i142", %.preheader179, %.preheader, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i134", %254, %374, %367, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit, %122, %351, %134, %120, %117 + %.085 = phi i8 [ %144, %134 ], [ %..i148, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit ], [ %121, %120 ], [ %.0.i117, %117 ], [ %355, %351 ], [ 0, %122 ], [ %.8.i.i, %374 ], [ %.05.i.i, %367 ], [ 0, %254 ], [ 0, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i134" ], [ 0, %.preheader ], [ 0, %.preheader179 ], [ 0, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i142" ] + %.184 = phi i64 [ %.083, %134 ], [ %.083, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit ], [ %.083, %120 ], [ %.083, %117 ], [ %.083, %351 ], [ %.083, %122 ], [ %364, %374 ], [ %364, %367 ], [ %.083, %254 ], [ %.083, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i134" ], [ %.083, %.preheader ], [ %.083, %.preheader179 ], [ %.083, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i142" ] + %.182 = phi i64 [ %.081, %134 ], [ %.081, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit ], [ %.081, %120 ], [ %.081, %117 ], [ %354, %351 ], [ %.081, %122 ], [ %.081, %374 ], [ %.081, %367 ], [ %152, %254 ], [ %152, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i134" ], [ %152, %.preheader ], [ %152, %.preheader179 ], [ %152, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i142" ] %.not = icmp eq i8 %.085, 0 br i1 %.not, label %59, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread @@ -11470,16 +11466,13 @@ _ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit: ; preds = %.lr.ph.i.i.i.i2 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) br i1 %419, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread, label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit -_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread.loopexit: ; preds = %345 - br label %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread - -_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread: ; preds = %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit, %345, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread.loopexit, %373, %163 - %.085172 = phi i8 [ %.3.i, %163 ], [ 1, %373 ], [ -1, %345 ], [ -1, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit ], [ %.085, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit ], [ 1, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread.loopexit ] +_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread: ; preds = %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit, %.thread.jt1, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread329, %.thread.jt255, %373, %163 + %.085172 = phi i8 [ %.3.i, %163 ], [ 1, %373 ], [ 1, %.thread.jt255 ], [ -1, %.thread.jt1 ], [ %.085.ph, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit.thread329 ], [ -1, %_ZN7uu_sort14random_shuffle17h9931a0a43ad5bcd0E.exit ], [ %.085, %_ZN7uu_sort15numeric_str_cmp15numeric_str_cmp17h1701ac4d36d8ec85E.exit ] %421 = getelementptr inbounds i8, ptr %.sroa.0.0, i64 52 %422 = load i8, ptr %421, align 4, !range !135, !noundef !4 %423 = trunc nuw i8 %422 to i1 - %switch.offset445 = sub nsw i8 0, %.085172 - %spec.select555 = select i1 %423, i8 %switch.offset445, i8 %.085172 + %switch.offset555 = sub nsw i8 0, %.085172 + %spec.select769 = select i1 %423, i8 %switch.offset555, i8 %.085172 br label %switch.lookup } diff --git a/bench/cvc5/optimized/nary_term_util.cpp.ll b/bench/cvc5/optimized/nary_term_util.cpp.ll index 54becb5b945..480870a4e5a 100644 --- a/bench/cvc5/optimized/nary_term_util.cpp.ll +++ b/bench/cvc5/optimized/nary_term_util.cpp.ll @@ -1027,9 +1027,9 @@ invoke.cont25: ; preds = %if.end br i1 %cmp.i27.not206, label %do.cond, label %invoke.cont32 invoke.cont32: ; preds = %invoke.cont25, %for.inc - %visit.sroa.0.5217 = phi ptr [ %visit.sroa.0.6, %for.inc ], [ %visit.sroa.0.1, %invoke.cont25 ] - %visit.sroa.8.1212 = phi ptr [ %visit.sroa.8.2, %for.inc ], [ %add.ptr.i.i13, %invoke.cont25 ] - %visit.sroa.20.1208 = phi ptr [ %visit.sroa.20.2, %for.inc ], [ %visit.sroa.20.0, %invoke.cont25 ] + %visit.sroa.0.5217 = phi ptr [ %visit.sroa.0.6258, %for.inc ], [ %visit.sroa.0.1, %invoke.cont25 ] + %visit.sroa.8.1212 = phi ptr [ %visit.sroa.8.2257, %for.inc ], [ %add.ptr.i.i13, %invoke.cont25 ] + %visit.sroa.20.1208 = phi ptr [ %visit.sroa.20.2256, %for.inc ], [ %visit.sroa.20.0, %invoke.cont25 ] %__begin4.sroa.0.0207 = phi ptr [ %incdec.ptr.i113, %for.inc ], [ %spec.select.i.i, %invoke.cont25 ] %44 = load ptr, ptr %__begin4.sroa.0.0207, align 8, !noalias !13 store ptr %44, ptr %ref.tmp30, align 8 @@ -1241,7 +1241,7 @@ invoke.cont53: ; preds = %lor.rhs.i, %if.then call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp9.i) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp10.i) store i32 %bf.cast.i156, ptr %second.i, align 4 - br label %if.end60 + br label %cleanup.jt5 lpad33: ; preds = %if.then13.i.i %73 = landingpad { ptr, i32 } @@ -1267,10 +1267,7 @@ invoke.cont56: ; preds = %invoke.cont43 %bf.clear.i92 = and i16 %bf.load.i91, 1023 %bf.cast.i93 = zext nneg i16 %bf.clear.i92 to i32 %cmp.not = icmp eq i32 %76, %bf.cast.i93 - br i1 %cmp.not, label %if.end60, label %cleanup - -if.end60: ; preds = %invoke.cont56, %invoke.cont53 - br label %cleanup + br i1 %cmp.not, label %cleanup.jt5, label %cleanup.jt1 if.end61: ; preds = %if.end3.i.i.i.i.i.i.i.i.i49, %lor.lhs.false.i.i.i.i.i.i.i.i.i52, %for.cond.i.i.i.i.i.i.i67, %if.end15.i.i.i.i.i.i.i36, %invoke.cont39 %78 = load ptr, ptr %ref.tmp30, align 8 @@ -1279,8 +1276,7 @@ if.end61: ; preds = %if.end3.i.i.i.i.i.i if.then.i.i95: ; preds = %if.end61 store ptr %78, ptr %visit.sroa.8.1212, align 8 - %incdec.ptr.i.i96 = getelementptr inbounds i8, ptr %visit.sroa.8.1212, i64 8 - br label %cleanup + br label %cleanup.jt0 if.else.i.i97: ; preds = %if.end61 %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %visit.sroa.8.1212 to i64 @@ -1330,7 +1326,6 @@ for.inc.i.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i.i, invoke.cont14.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i, %invoke.cont.i.i.i %__cur.0.lcssa.i.i.i.i.i.i.i.i = phi ptr [ %cond.i19.i.i.i, %invoke.cont.i.i.i ], [ %incdec.ptr1.i.i.i.i.i.i.i.i, %for.inc.i.i.i.i.i.i.i.i ] - %incdec.ptr.i.i.i = getelementptr i8, ptr %__cur.0.lcssa.i.i.i.i.i.i.i.i, i64 8 %tobool.not.i.i.i.i101 = icmp eq ptr %visit.sroa.0.5217, null br i1 %tobool.not.i.i.i.i101, label %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i, label %if.then.i29.i.i.i @@ -1340,46 +1335,92 @@ if.then.i29.i.i.i: ; preds = %invoke.cont14.i.i.i _ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i: ; preds = %if.then.i29.i.i.i, %invoke.cont14.i.i.i %add.ptr29.i.i.i = getelementptr inbounds %"class.cvc5::internal::NodeTemplate", ptr %cond.i19.i.i.i, i64 %cond.i.i.i.i - br label %cleanup + br label %cleanup.jt0 -cleanup: ; preds = %if.then.i.i95, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i, %invoke.cont56, %if.end60 - %visit.sroa.20.2 = phi ptr [ %visit.sroa.20.1208, %if.end60 ], [ %visit.sroa.20.1208, %invoke.cont56 ], [ %add.ptr29.i.i.i, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %visit.sroa.20.1208, %if.then.i.i95 ] - %visit.sroa.8.2 = phi ptr [ %visit.sroa.8.1212, %if.end60 ], [ %visit.sroa.8.1212, %invoke.cont56 ], [ %incdec.ptr.i.i.i, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %incdec.ptr.i.i96, %if.then.i.i95 ] - %visit.sroa.0.6 = phi ptr [ %visit.sroa.0.5217, %if.end60 ], [ %visit.sroa.0.5217, %invoke.cont56 ], [ %cond.i19.i.i.i, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %visit.sroa.0.5217, %if.then.i.i95 ] - %cleanup.dest.slot.0 = phi i32 [ 5, %if.end60 ], [ 1, %invoke.cont56 ], [ 0, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ 0, %if.then.i.i95 ] +cleanup.jt0: ; preds = %if.then.i.i95, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i + %visit.sroa.20.2.jt0 = phi ptr [ %add.ptr29.i.i.i, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %visit.sroa.20.1208, %if.then.i.i95 ] + %__cur.0.lcssa.i.i.i.i.i.i.i.i.pn = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i.i.i, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %visit.sroa.8.1212, %if.then.i.i95 ] + %visit.sroa.0.6.jt0 = phi ptr [ %cond.i19.i.i.i, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %visit.sroa.0.5217, %if.then.i.i95 ] + %visit.sroa.8.2.jt0 = getelementptr inbounds i8, ptr %__cur.0.lcssa.i.i.i.i.i.i.i.i.pn, i64 8 %81 = load ptr, ptr %ref.tmp30, align 8 - %bf.load.i.i104 = load i64, ptr %81, align 8 - %82 = and i64 %bf.load.i.i104, 1152920405095219200 - %cmp.not.i.i105 = icmp eq i64 %82, 1152920405095219200 - br i1 %cmp.not.i.i105, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit, label %if.then.i.i106 - -if.then.i.i106: ; preds = %cleanup - %bf.value.i.i107 = add i64 %bf.load.i.i104, 1152920405095219200 - %bf.shl.i.i108 = and i64 %bf.value.i.i107, 1152920405095219200 - %bf.clear7.i.i109 = and i64 %bf.load.i.i104, -1152920405095219201 - %bf.set.i.i110 = or disjoint i64 %bf.shl.i.i108, %bf.clear7.i.i109 - store i64 %bf.set.i.i110, ptr %81, align 8 - %cmp12.i.i111 = icmp eq i64 %bf.shl.i.i108, 0 - br i1 %cmp12.i.i111, label %if.then13.i.i112, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit - -if.then13.i.i112: ; preds = %if.then.i.i106 + %bf.load.i.i104.jt0 = load i64, ptr %81, align 8 + %82 = and i64 %bf.load.i.i104.jt0, 1152920405095219200 + %cmp.not.i.i105.jt0 = icmp eq i64 %82, 1152920405095219200 + br i1 %cmp.not.i.i105.jt0, label %for.inc, label %if.then.i.i106.jt0 + +cleanup.jt1: ; preds = %invoke.cont56 + %83 = load ptr, ptr %ref.tmp30, align 8 + %bf.load.i.i104.jt1 = load i64, ptr %83, align 8 + %84 = and i64 %bf.load.i.i104.jt1, 1152920405095219200 + %cmp.not.i.i105.jt1 = icmp eq i64 %84, 1152920405095219200 + br i1 %cmp.not.i.i105.jt1, label %cleanup70, label %if.then.i.i106.jt1 + +cleanup.jt5: ; preds = %invoke.cont53, %invoke.cont56 + %85 = load ptr, ptr %ref.tmp30, align 8 + %bf.load.i.i104.jt5 = load i64, ptr %85, align 8 + %86 = and i64 %bf.load.i.i104.jt5, 1152920405095219200 + %cmp.not.i.i105.jt5 = icmp eq i64 %86, 1152920405095219200 + br i1 %cmp.not.i.i105.jt5, label %for.inc, label %if.then.i.i106.jt5 + +if.then.i.i106.jt0: ; preds = %cleanup.jt0 + %bf.value.i.i107.jt0 = add i64 %bf.load.i.i104.jt0, 1152920405095219200 + %bf.shl.i.i108.jt0 = and i64 %bf.value.i.i107.jt0, 1152920405095219200 + %bf.clear7.i.i109.jt0 = and i64 %bf.load.i.i104.jt0, -1152920405095219201 + %bf.set.i.i110.jt0 = or disjoint i64 %bf.shl.i.i108.jt0, %bf.clear7.i.i109.jt0 + store i64 %bf.set.i.i110.jt0, ptr %81, align 8 + %cmp12.i.i111.jt0 = icmp eq i64 %bf.shl.i.i108.jt0, 0 + br i1 %cmp12.i.i111.jt0, label %if.then13.i.i112.jt0, label %for.inc + +if.then.i.i106.jt1: ; preds = %cleanup.jt1 + %bf.value.i.i107.jt1 = add i64 %bf.load.i.i104.jt1, 1152920405095219200 + %bf.shl.i.i108.jt1 = and i64 %bf.value.i.i107.jt1, 1152920405095219200 + %bf.clear7.i.i109.jt1 = and i64 %bf.load.i.i104.jt1, -1152920405095219201 + %bf.set.i.i110.jt1 = or disjoint i64 %bf.shl.i.i108.jt1, %bf.clear7.i.i109.jt1 + store i64 %bf.set.i.i110.jt1, ptr %83, align 8 + %cmp12.i.i111.jt1 = icmp eq i64 %bf.shl.i.i108.jt1, 0 + br i1 %cmp12.i.i111.jt1, label %if.then13.i.i112.jt1, label %cleanup70 + +if.then.i.i106.jt5: ; preds = %cleanup.jt5 + %bf.value.i.i107.jt5 = add i64 %bf.load.i.i104.jt5, 1152920405095219200 + %bf.shl.i.i108.jt5 = and i64 %bf.value.i.i107.jt5, 1152920405095219200 + %bf.clear7.i.i109.jt5 = and i64 %bf.load.i.i104.jt5, -1152920405095219201 + %bf.set.i.i110.jt5 = or disjoint i64 %bf.shl.i.i108.jt5, %bf.clear7.i.i109.jt5 + store i64 %bf.set.i.i110.jt5, ptr %85, align 8 + %cmp12.i.i111.jt5 = icmp eq i64 %bf.shl.i.i108.jt5, 0 + br i1 %cmp12.i.i111.jt5, label %if.then13.i.i112.jt5, label %for.inc + +if.then13.i.i112.jt0: ; preds = %if.then.i.i106.jt0 invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %81) - to label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit unwind label %terminate.lpad.i + to label %for.inc unwind label %terminate.lpad.i.loopexit -terminate.lpad.i: ; preds = %if.then13.i.i112 - %83 = landingpad { ptr, i32 } +if.then13.i.i112.jt1: ; preds = %if.then.i.i106.jt1 + invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %83) + to label %cleanup70 unwind label %terminate.lpad.i.loopexit.split-lp + +if.then13.i.i112.jt5: ; preds = %if.then.i.i106.jt5 + invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %85) + to label %for.inc unwind label %terminate.lpad.i.loopexit + +terminate.lpad.i.loopexit: ; preds = %if.then13.i.i112.jt5, %if.then13.i.i112.jt0 + %lpad.loopexit264 = landingpad { ptr, i32 } catch ptr null - %84 = extractvalue { ptr, i32 } %83, 0 - call void @__clang_call_terminate(ptr %84) #23 - unreachable + br label %terminate.lpad.i -_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit: ; preds = %cleanup, %if.then.i.i106, %if.then13.i.i112 - switch i32 %cleanup.dest.slot.0, label %cleanup70 [ - i32 0, label %for.inc - i32 5, label %for.inc - ] +terminate.lpad.i.loopexit.split-lp: ; preds = %if.then13.i.i112.jt1 + %lpad.loopexit.split-lp265 = landingpad { ptr, i32 } + catch ptr null + br label %terminate.lpad.i + +terminate.lpad.i: ; preds = %terminate.lpad.i.loopexit.split-lp, %terminate.lpad.i.loopexit + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit264, %terminate.lpad.i.loopexit ], [ %lpad.loopexit.split-lp265, %terminate.lpad.i.loopexit.split-lp ] + %87 = extractvalue { ptr, i32 } %lpad.phi, 0 + call void @__clang_call_terminate(ptr %87) #23 + unreachable -for.inc: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit +for.inc: ; preds = %cleanup.jt5, %if.then13.i.i112.jt5, %if.then.i.i106.jt5, %cleanup.jt0, %if.then13.i.i112.jt0, %if.then.i.i106.jt0 + %visit.sroa.0.6258 = phi ptr [ %visit.sroa.0.6.jt0, %if.then.i.i106.jt0 ], [ %visit.sroa.0.6.jt0, %if.then13.i.i112.jt0 ], [ %visit.sroa.0.6.jt0, %cleanup.jt0 ], [ %visit.sroa.0.5217, %if.then.i.i106.jt5 ], [ %visit.sroa.0.5217, %if.then13.i.i112.jt5 ], [ %visit.sroa.0.5217, %cleanup.jt5 ] + %visit.sroa.8.2257 = phi ptr [ %visit.sroa.8.2.jt0, %if.then.i.i106.jt0 ], [ %visit.sroa.8.2.jt0, %if.then13.i.i112.jt0 ], [ %visit.sroa.8.2.jt0, %cleanup.jt0 ], [ %visit.sroa.8.1212, %if.then.i.i106.jt5 ], [ %visit.sroa.8.1212, %if.then13.i.i112.jt5 ], [ %visit.sroa.8.1212, %cleanup.jt5 ] + %visit.sroa.20.2256 = phi ptr [ %visit.sroa.20.2.jt0, %if.then.i.i106.jt0 ], [ %visit.sroa.20.2.jt0, %if.then13.i.i112.jt0 ], [ %visit.sroa.20.2.jt0, %cleanup.jt0 ], [ %visit.sroa.20.1208, %if.then.i.i106.jt5 ], [ %visit.sroa.20.1208, %if.then13.i.i112.jt5 ], [ %visit.sroa.20.1208, %cleanup.jt5 ] %incdec.ptr.i113 = getelementptr inbounds i8, ptr %__begin4.sroa.0.0207, i64 8 %cmp.i27.not = icmp eq ptr %incdec.ptr.i113, %add.ptr.i.i26 br i1 %cmp.i27.not, label %do.cond, label %invoke.cont32 @@ -1400,15 +1441,15 @@ ehcleanup: ; preds = %lpad64.loopexit, %l br label %ehcleanup73 do.cond: ; preds = %for.cond.i.i.i.i, %for.body.i.i, %for.inc, %invoke.cont25, %if.end.i.i.i.i - %visit.sroa.20.3 = phi ptr [ %visit.sroa.20.0, %if.end.i.i.i.i ], [ %visit.sroa.20.0, %invoke.cont25 ], [ %visit.sroa.20.2, %for.inc ], [ %visit.sroa.20.0, %for.body.i.i ], [ %visit.sroa.20.0, %for.cond.i.i.i.i ] - %visit.sroa.8.3 = phi ptr [ %add.ptr.i.i13, %if.end.i.i.i.i ], [ %add.ptr.i.i13, %invoke.cont25 ], [ %visit.sroa.8.2, %for.inc ], [ %add.ptr.i.i13, %for.body.i.i ], [ %add.ptr.i.i13, %for.cond.i.i.i.i ] - %visit.sroa.0.7 = phi ptr [ %visit.sroa.0.1, %if.end.i.i.i.i ], [ %visit.sroa.0.1, %invoke.cont25 ], [ %visit.sroa.0.6, %for.inc ], [ %visit.sroa.0.1, %for.body.i.i ], [ %visit.sroa.0.1, %for.cond.i.i.i.i ] + %visit.sroa.20.3 = phi ptr [ %visit.sroa.20.0, %if.end.i.i.i.i ], [ %visit.sroa.20.0, %invoke.cont25 ], [ %visit.sroa.20.2256, %for.inc ], [ %visit.sroa.20.0, %for.body.i.i ], [ %visit.sroa.20.0, %for.cond.i.i.i.i ] + %visit.sroa.8.3 = phi ptr [ %add.ptr.i.i13, %if.end.i.i.i.i ], [ %add.ptr.i.i13, %invoke.cont25 ], [ %visit.sroa.8.2257, %for.inc ], [ %add.ptr.i.i13, %for.body.i.i ], [ %add.ptr.i.i13, %for.cond.i.i.i.i ] + %visit.sroa.0.7 = phi ptr [ %visit.sroa.0.1, %if.end.i.i.i.i ], [ %visit.sroa.0.1, %invoke.cont25 ], [ %visit.sroa.0.6258, %for.inc ], [ %visit.sroa.0.1, %for.body.i.i ], [ %visit.sroa.0.1, %for.cond.i.i.i.i ] %cmp.i.i115 = icmp eq ptr %visit.sroa.0.7, %visit.sroa.8.3 br i1 %cmp.i.i115, label %cleanup70, label %do.body, !llvm.loop !17 -cleanup70: ; preds = %do.cond, %invoke.cont19, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit - %visit.sroa.0.2 = phi ptr [ %visit.sroa.0.6, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ %visit.sroa.0.7, %do.cond ], [ %visit.sroa.0.1, %invoke.cont19 ] - %retval.1 = phi i1 [ false, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ true, %do.cond ], [ false, %invoke.cont19 ] +cleanup70: ; preds = %do.cond, %invoke.cont19, %if.then.i.i106.jt1, %if.then13.i.i112.jt1, %cleanup.jt1 + %visit.sroa.0.2 = phi ptr [ %visit.sroa.0.5217, %cleanup.jt1 ], [ %visit.sroa.0.5217, %if.then13.i.i112.jt1 ], [ %visit.sroa.0.5217, %if.then.i.i106.jt1 ], [ %visit.sroa.0.7, %do.cond ], [ %visit.sroa.0.1, %invoke.cont19 ] + %retval.1 = phi i1 [ false, %cleanup.jt1 ], [ false, %if.then13.i.i112.jt1 ], [ false, %if.then.i.i106.jt1 ], [ true, %do.cond ], [ false, %invoke.cont19 ] %tobool.not.i.i.i116 = icmp eq ptr %visit.sroa.0.2, null br i1 %tobool.not.i.i.i116, label %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit, label %if.then.i.i.i117 @@ -1417,29 +1458,29 @@ if.then.i.i.i117: ; preds = %cleanup70 br label %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit _ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit: ; preds = %cleanup70, %if.then.i.i.i117 - %85 = load ptr, ptr %_M_before_begin.i.i, align 8 - %tobool.not3.i.i.i.i = icmp eq ptr %85, null + %88 = load ptr, ptr %_M_before_begin.i.i, align 8 + %tobool.not3.i.i.i.i = icmp eq ptr %88, null br i1 %tobool.not3.i.i.i.i, label %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE5clearEv.exit.i.i, label %while.body.i.i.i.i119 while.body.i.i.i.i119: ; preds = %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit, %while.body.i.i.i.i119 - %__n.addr.04.i.i.i.i = phi ptr [ %86, %while.body.i.i.i.i119 ], [ %85, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit ] - %86 = load ptr, ptr %__n.addr.04.i.i.i.i, align 8 + %__n.addr.04.i.i.i.i = phi ptr [ %89, %while.body.i.i.i.i119 ], [ %88, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit ] + %89 = load ptr, ptr %__n.addr.04.i.i.i.i, align 8 call void @_ZdlPv(ptr noundef nonnull %__n.addr.04.i.i.i.i) #22 - %tobool.not.i.i.i.i120 = icmp eq ptr %86, null + %tobool.not.i.i.i.i120 = icmp eq ptr %89, null br i1 %tobool.not.i.i.i.i120, label %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE5clearEv.exit.i.i, label %while.body.i.i.i.i119, !llvm.loop !12 _ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE5clearEv.exit.i.i: ; preds = %while.body.i.i.i.i119, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit - %87 = load ptr, ptr %visited, align 8 - %88 = load i64, ptr %_M_bucket_count.i.i, align 8 - %mul.i.i.i = shl i64 %88, 3 - call void @llvm.memset.p0.i64(ptr align 8 %87, i8 0, i64 %mul.i.i.i, i1 false) + %90 = load ptr, ptr %visited, align 8 + %91 = load i64, ptr %_M_bucket_count.i.i, align 8 + %mul.i.i.i = shl i64 %91, 3 + call void @llvm.memset.p0.i64(ptr align 8 %90, i8 0, i64 %mul.i.i.i, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_before_begin.i.i, i8 0, i64 16, i1 false) - %89 = load ptr, ptr %visited, align 8 - %cmp.i.i.i.i.i122 = icmp eq ptr %89, %_M_single_bucket.i.i + %92 = load ptr, ptr %visited, align 8 + %cmp.i.i.i.i.i122 = icmp eq ptr %92, %_M_single_bucket.i.i br i1 %cmp.i.i.i.i.i122, label %_ZNSt13unordered_setIN4cvc58internal12NodeTemplateILb0EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EED2Ev.exit, label %if.end.i.i.i.i123 if.end.i.i.i.i123: ; preds = %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE5clearEv.exit.i.i - call void @_ZdlPv(ptr noundef %89) #22 + call void @_ZdlPv(ptr noundef %92) #22 br label %_ZNSt13unordered_setIN4cvc58internal12NodeTemplateILb0EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EED2Ev.exit _ZNSt13unordered_setIN4cvc58internal12NodeTemplateILb0EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EED2Ev.exit: ; preds = %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE5clearEv.exit.i.i, %if.end.i.i.i.i123 diff --git a/bench/cvc5/optimized/theory_model.cpp.ll b/bench/cvc5/optimized/theory_model.cpp.ll index 5dfd17ac1df..ecfac872d13 100644 --- a/bench/cvc5/optimized/theory_model.cpp.ll +++ b/bench/cvc5/optimized/theory_model.cpp.ll @@ -10726,7 +10726,7 @@ _ZN4cvc58internal12NodeTemplateILb1EEC2Ev.exit: ; preds = %_ZN4cvc58internal12 br label %for.cond71 for.cond71: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EEC2Ev.exit, %for.inc - %first.0 = phi i8 [ 1, %_ZN4cvc58internal12NodeTemplateILb1EEC2Ev.exit ], [ %first.1, %for.inc ] + %first.0 = phi i8 [ 1, %_ZN4cvc58internal12NodeTemplateILb1EEC2Ev.exit ], [ %first.1729, %for.inc ] %call74 = invoke noundef zeroext i1 @_ZNK4cvc58internal6theory2eq15EqClassIterator10isFinishedEv(ptr noundef nonnull align 8 dereferenceable(16) %eqc_i) to label %invoke.cont73 unwind label %lpad72 @@ -10783,7 +10783,7 @@ land.rhs: ; preds = %land.lhs.true, %_ZN to label %invoke.cont86 unwind label %lpad79 invoke.cont86: ; preds = %land.rhs - br i1 %call87, label %if.end111, label %cleanup226 + br i1 %call87, label %if.end111, label %cleanup226.jt7 lpad67: ; preds = %invoke.cont66 %29 = landingpad { ptr, i32 } @@ -10814,7 +10814,7 @@ if.then115: ; preds = %if.then112 to label %invoke.cont120 unwind label %lpad119 invoke.cont120: ; preds = %if.then115 - br i1 %call121, label %if.end225, label %cleanup226 + br i1 %call121, label %cleanup226.jt0, label %cleanup226.jt1 lpad119: ; preds = %if.then115 %33 = landingpad { ptr, i32 } @@ -10829,7 +10829,7 @@ if.then127: ; preds = %if.else %34 = load ptr, ptr %rep, align 8 %35 = load ptr, ptr %n, align 8 %cmp.not.i367 = icmp eq ptr %34, %35 - br i1 %cmp.not.i367, label %if.end225, label %if.then.i368 + br i1 %cmp.not.i367, label %cleanup226.jt0, label %if.then.i368 if.then.i368: ; preds = %if.then127 %bf.load.i.i369 = load i64, ptr %34, align 8 @@ -10866,17 +10866,17 @@ if.then.i5.i: ; preds = %_ZN4cvc58internal4e %bf.clear7.i8.i = and i64 %bf.load.i2.i, -1152920405095219201 %bf.set.i9.i = or disjoint i64 %bf.shl.i7.i, %bf.clear7.i8.i store i64 %bf.set.i9.i, ptr %37, align 8 - br label %if.end225 + br label %cleanup226.jt0 if.else.i.i380: ; preds = %_ZN4cvc58internal4expr9NodeValue3decEv.exit.i %cmp12.i3.i = icmp eq i32 %bf.cast.i.i378, 1048574 - br i1 %cmp12.i3.i, label %if.then13.i4.i, label %if.end225 + br i1 %cmp12.i3.i, label %if.then13.i4.i, label %cleanup226.jt0 if.then13.i4.i: ; preds = %if.else.i.i380 %bf.set23.i.i382 = or i64 %bf.load.i2.i, 1152920405095219200 store i64 %bf.set23.i.i382, ptr %37, align 8 invoke void @_ZN4cvc58internal4expr9NodeValue20markRefCountMaxedOutEv(ptr noundef nonnull align 8 dereferenceable(16) %37) - to label %if.end225 unwind label %lpad79 + to label %cleanup226.jt0 unwind label %lpad79 if.else130: ; preds = %if.else invoke void @_ZNK4cvc58internal12NodeTemplateILb1EE6eqNodeILb1EEES2_RKNS1_IXT_EEE(ptr nonnull sret(%"class.cvc5::internal::NodeTemplate") align 8 %eq, ptr noundef nonnull align 8 dereferenceable(8) %n, ptr noundef nonnull align 8 dereferenceable(8) %rep) @@ -10988,7 +10988,7 @@ terminate.lpad.i521: ; preds = %if.then13.i.i520 unreachable _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit522: ; preds = %cleanup, %if.then.i.i514, %if.then13.i.i520 - br i1 %tobool.i.i, label %cleanup226, label %if.end225 + br i1 %tobool.i.i, label %cleanup226.jt1, label %cleanup226.jt0 ehcleanup171: ; preds = %lpad156, %lpad160 %.pn10 = phi { ptr, i32 } [ %47, %lpad160 ], [ %46, %lpad156 ] @@ -11088,7 +11088,7 @@ terminate.lpad.i561: ; preds = %if.then13.i.i560 unreachable _ZN4cvc58internal8TypeNodeD2Ev.exit562: ; preds = %invoke.cont182, %if.then.i.i554, %if.then13.i.i560 - br i1 %call183, label %if.then185, label %if.end225 + br i1 %call183, label %if.then185, label %cleanup226.jt0 if.then185: ; preds = %_ZN4cvc58internal8TypeNodeD2Ev.exit562 %63 = load ptr, ptr %d_equalityEngine186, align 8 @@ -11100,7 +11100,7 @@ if.then185: ; preds = %_ZN4cvc58internal8T cond.true195: ; preds = %if.then185 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %agg.tmp.i) - br label %if.end225 + br label %cleanup226.jt0 lpad181: ; preds = %invoke.cont180 %65 = landingpad { ptr, i32 } @@ -11122,53 +11122,92 @@ if.else210: ; preds = %if.else174 to label %invoke.cont217 unwind label %lpad216 invoke.cont217: ; preds = %if.else210 - br i1 %call218, label %if.end225, label %cleanup226 + br i1 %call218, label %cleanup226.jt0, label %cleanup226.jt1 lpad216: ; preds = %if.else210 %69 = landingpad { ptr, i32 } cleanup br label %ehcleanup229 -if.end225: ; preds = %if.else.i.i380, %if.then.i5.i, %if.then127, %if.then13.i4.i, %cond.true195, %_ZN4cvc58internal8TypeNodeD2Ev.exit562, %invoke.cont217, %invoke.cont120, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit522 - %first.2 = phi i8 [ %first.0, %invoke.cont120 ], [ %first.0, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit522 ], [ %first.0, %invoke.cont217 ], [ 0, %cond.true195 ], [ 0, %_ZN4cvc58internal8TypeNodeD2Ev.exit562 ], [ 0, %if.then13.i4.i ], [ 0, %if.then127 ], [ 0, %if.then.i5.i ], [ 0, %if.else.i.i380 ] - br label %cleanup226 - -cleanup226: ; preds = %invoke.cont86, %invoke.cont217, %invoke.cont120, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit522, %if.end225 - %first.1 = phi i8 [ %first.2, %if.end225 ], [ %first.0, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit522 ], [ %first.0, %invoke.cont120 ], [ %first.0, %invoke.cont217 ], [ %first.0, %invoke.cont86 ] - %cleanup.dest.slot.0 = phi i32 [ 0, %if.end225 ], [ 1, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit522 ], [ 1, %invoke.cont120 ], [ 1, %invoke.cont217 ], [ 7, %invoke.cont86 ] +cleanup226.jt7: ; preds = %invoke.cont86 %70 = load ptr, ptr %n, align 8 - %bf.load.i.i643 = load i64, ptr %70, align 8 - %71 = and i64 %bf.load.i.i643, 1152920405095219200 - %cmp.not.i.i644 = icmp eq i64 %71, 1152920405095219200 - br i1 %cmp.not.i.i644, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit653, label %if.then.i.i645 - -if.then.i.i645: ; preds = %cleanup226 - %bf.value.i.i646 = add i64 %bf.load.i.i643, 1152920405095219200 - %bf.shl.i.i647 = and i64 %bf.value.i.i646, 1152920405095219200 - %bf.clear7.i.i648 = and i64 %bf.load.i.i643, -1152920405095219201 - %bf.set.i.i649 = or disjoint i64 %bf.shl.i.i647, %bf.clear7.i.i648 - store i64 %bf.set.i.i649, ptr %70, align 8 - %cmp12.i.i650 = icmp eq i64 %bf.shl.i.i647, 0 - br i1 %cmp12.i.i650, label %if.then13.i.i651, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit653 - -if.then13.i.i651: ; preds = %if.then.i.i645 + %bf.load.i.i643.jt7 = load i64, ptr %70, align 8 + %71 = and i64 %bf.load.i.i643.jt7, 1152920405095219200 + %cmp.not.i.i644.jt7 = icmp eq i64 %71, 1152920405095219200 + br i1 %cmp.not.i.i644.jt7, label %for.inc, label %if.then.i.i645.jt7 + +cleanup226.jt1: ; preds = %invoke.cont217, %invoke.cont120, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit522 + %72 = load ptr, ptr %n, align 8 + %bf.load.i.i643.jt1 = load i64, ptr %72, align 8 + %73 = and i64 %bf.load.i.i643.jt1, 1152920405095219200 + %cmp.not.i.i644.jt1 = icmp eq i64 %73, 1152920405095219200 + br i1 %cmp.not.i.i644.jt1, label %cleanup232, label %if.then.i.i645.jt1 + +cleanup226.jt0: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit522, %invoke.cont120, %invoke.cont217, %_ZN4cvc58internal8TypeNodeD2Ev.exit562, %cond.true195, %if.then13.i4.i, %if.then127, %if.then.i5.i, %if.else.i.i380 + %first.1.jt0 = phi i8 [ %first.0, %invoke.cont120 ], [ %first.0, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit522 ], [ %first.0, %invoke.cont217 ], [ 0, %cond.true195 ], [ 0, %_ZN4cvc58internal8TypeNodeD2Ev.exit562 ], [ 0, %if.then13.i4.i ], [ 0, %if.then127 ], [ 0, %if.then.i5.i ], [ 0, %if.else.i.i380 ] + %74 = load ptr, ptr %n, align 8 + %bf.load.i.i643.jt0 = load i64, ptr %74, align 8 + %75 = and i64 %bf.load.i.i643.jt0, 1152920405095219200 + %cmp.not.i.i644.jt0 = icmp eq i64 %75, 1152920405095219200 + br i1 %cmp.not.i.i644.jt0, label %for.inc, label %if.then.i.i645.jt0 + +if.then.i.i645.jt7: ; preds = %cleanup226.jt7 + %bf.value.i.i646.jt7 = add i64 %bf.load.i.i643.jt7, 1152920405095219200 + %bf.shl.i.i647.jt7 = and i64 %bf.value.i.i646.jt7, 1152920405095219200 + %bf.clear7.i.i648.jt7 = and i64 %bf.load.i.i643.jt7, -1152920405095219201 + %bf.set.i.i649.jt7 = or disjoint i64 %bf.shl.i.i647.jt7, %bf.clear7.i.i648.jt7 + store i64 %bf.set.i.i649.jt7, ptr %70, align 8 + %cmp12.i.i650.jt7 = icmp eq i64 %bf.shl.i.i647.jt7, 0 + br i1 %cmp12.i.i650.jt7, label %if.then13.i.i651.jt7, label %for.inc + +if.then.i.i645.jt1: ; preds = %cleanup226.jt1 + %bf.value.i.i646.jt1 = add i64 %bf.load.i.i643.jt1, 1152920405095219200 + %bf.shl.i.i647.jt1 = and i64 %bf.value.i.i646.jt1, 1152920405095219200 + %bf.clear7.i.i648.jt1 = and i64 %bf.load.i.i643.jt1, -1152920405095219201 + %bf.set.i.i649.jt1 = or disjoint i64 %bf.shl.i.i647.jt1, %bf.clear7.i.i648.jt1 + store i64 %bf.set.i.i649.jt1, ptr %72, align 8 + %cmp12.i.i650.jt1 = icmp eq i64 %bf.shl.i.i647.jt1, 0 + br i1 %cmp12.i.i650.jt1, label %if.then13.i.i651.jt1, label %cleanup232 + +if.then.i.i645.jt0: ; preds = %cleanup226.jt0 + %bf.value.i.i646.jt0 = add i64 %bf.load.i.i643.jt0, 1152920405095219200 + %bf.shl.i.i647.jt0 = and i64 %bf.value.i.i646.jt0, 1152920405095219200 + %bf.clear7.i.i648.jt0 = and i64 %bf.load.i.i643.jt0, -1152920405095219201 + %bf.set.i.i649.jt0 = or disjoint i64 %bf.shl.i.i647.jt0, %bf.clear7.i.i648.jt0 + store i64 %bf.set.i.i649.jt0, ptr %74, align 8 + %cmp12.i.i650.jt0 = icmp eq i64 %bf.shl.i.i647.jt0, 0 + br i1 %cmp12.i.i650.jt0, label %if.then13.i.i651.jt0, label %for.inc + +if.then13.i.i651.jt7: ; preds = %if.then.i.i645.jt7 invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %70) - to label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit653 unwind label %terminate.lpad.i652 + to label %for.inc unwind label %terminate.lpad.i652.loopexit -terminate.lpad.i652: ; preds = %if.then13.i.i651 - %72 = landingpad { ptr, i32 } +if.then13.i.i651.jt1: ; preds = %if.then.i.i645.jt1 + invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %72) + to label %cleanup232 unwind label %terminate.lpad.i652.loopexit.split-lp.loopexit + +if.then13.i.i651.jt0: ; preds = %if.then.i.i645.jt0 + invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %74) + to label %for.inc unwind label %terminate.lpad.i652.loopexit + +terminate.lpad.i652.loopexit: ; preds = %if.then13.i.i651.jt0, %if.then13.i.i651.jt7 + %lpad.loopexit = landingpad { ptr, i32 } catch ptr null - %73 = extractvalue { ptr, i32 } %72, 0 - call void @__clang_call_terminate(ptr %73) #23 - unreachable + br label %terminate.lpad.i652 -_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit653: ; preds = %cleanup226, %if.then.i.i645, %if.then13.i.i651 - switch i32 %cleanup.dest.slot.0, label %cleanup232 [ - i32 0, label %for.inc - i32 7, label %for.inc - ] +terminate.lpad.i652.loopexit.split-lp.loopexit: ; preds = %if.then13.i.i651.jt1 + %lpad.loopexit730 = landingpad { ptr, i32 } + catch ptr null + br label %terminate.lpad.i652 + +terminate.lpad.i652: ; preds = %terminate.lpad.i652.loopexit.split-lp.loopexit, %terminate.lpad.i652.loopexit + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %terminate.lpad.i652.loopexit ], [ %lpad.loopexit730, %terminate.lpad.i652.loopexit.split-lp.loopexit ] + %76 = extractvalue { ptr, i32 } %lpad.phi, 0 + call void @__clang_call_terminate(ptr %76) #23 + unreachable -for.inc: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit653, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit653 +for.inc: ; preds = %cleanup226.jt0, %if.then13.i.i651.jt0, %if.then.i.i645.jt0, %cleanup226.jt7, %if.then13.i.i651.jt7, %if.then.i.i645.jt7 + %first.1729 = phi i8 [ %first.0, %if.then.i.i645.jt7 ], [ %first.0, %if.then13.i.i651.jt7 ], [ %first.0, %cleanup226.jt7 ], [ %first.1.jt0, %if.then.i.i645.jt0 ], [ %first.1.jt0, %if.then13.i.i651.jt0 ], [ %first.1.jt0, %cleanup226.jt0 ] %call231 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4cvc58internal6theory2eq15EqClassIteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %eqc_i) to label %for.cond71 unwind label %lpad72, !llvm.loop !86 @@ -11177,12 +11216,11 @@ ehcleanup229: ; preds = %lpad216, %lpad189, call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %n) #21 br label %ehcleanup233 -cleanup232: ; preds = %invoke.cont73, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit653 - %cleanup.dest.slot.2 = phi i32 [ %cleanup.dest.slot.0, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit653 ], [ 0, %invoke.cont73 ] - %74 = load ptr, ptr %rep, align 8 - %bf.load.i.i654 = load i64, ptr %74, align 8 - %75 = and i64 %bf.load.i.i654, 1152920405095219200 - %cmp.not.i.i655 = icmp eq i64 %75, 1152920405095219200 +cleanup232: ; preds = %invoke.cont73, %cleanup226.jt1, %if.then13.i.i651.jt1, %if.then.i.i645.jt1 + %77 = load ptr, ptr %rep, align 8 + %bf.load.i.i654 = load i64, ptr %77, align 8 + %78 = and i64 %bf.load.i.i654, 1152920405095219200 + %cmp.not.i.i655 = icmp eq i64 %78, 1152920405095219200 br i1 %cmp.not.i.i655, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit664, label %if.then.i.i656 if.then.i.i656: ; preds = %cleanup232 @@ -11190,26 +11228,26 @@ if.then.i.i656: ; preds = %cleanup232 %bf.shl.i.i658 = and i64 %bf.value.i.i657, 1152920405095219200 %bf.clear7.i.i659 = and i64 %bf.load.i.i654, -1152920405095219201 %bf.set.i.i660 = or disjoint i64 %bf.shl.i.i658, %bf.clear7.i.i659 - store i64 %bf.set.i.i660, ptr %74, align 8 + store i64 %bf.set.i.i660, ptr %77, align 8 %cmp12.i.i661 = icmp eq i64 %bf.shl.i.i658, 0 br i1 %cmp12.i.i661, label %if.then13.i.i662, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit664 if.then13.i.i662: ; preds = %if.then.i.i656 - invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %74) + invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %77) to label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit664 unwind label %terminate.lpad.i663 terminate.lpad.i663: ; preds = %if.then13.i.i662 - %76 = landingpad { ptr, i32 } + %79 = landingpad { ptr, i32 } catch ptr null - %77 = extractvalue { ptr, i32 } %76, 0 - call void @__clang_call_terminate(ptr %77) #23 + %80 = extractvalue { ptr, i32 } %79, 0 + call void @__clang_call_terminate(ptr %80) #23 unreachable _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit664: ; preds = %cleanup232, %if.then.i.i656, %if.then13.i.i662 - %78 = load ptr, ptr %eqc, align 8 - %bf.load.i.i665 = load i64, ptr %78, align 8 - %79 = and i64 %bf.load.i.i665, 1152920405095219200 - %cmp.not.i.i666 = icmp eq i64 %79, 1152920405095219200 + %81 = load ptr, ptr %eqc, align 8 + %bf.load.i.i665 = load i64, ptr %81, align 8 + %82 = and i64 %bf.load.i.i665, 1152920405095219200 + %cmp.not.i.i666 = icmp eq i64 %82, 1152920405095219200 br i1 %cmp.not.i.i666, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit675, label %if.then.i.i667 if.then.i.i667: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit664 @@ -11217,24 +11255,23 @@ if.then.i.i667: ; preds = %_ZN4cvc58internal12 %bf.shl.i.i669 = and i64 %bf.value.i.i668, 1152920405095219200 %bf.clear7.i.i670 = and i64 %bf.load.i.i665, -1152920405095219201 %bf.set.i.i671 = or disjoint i64 %bf.shl.i.i669, %bf.clear7.i.i670 - store i64 %bf.set.i.i671, ptr %78, align 8 + store i64 %bf.set.i.i671, ptr %81, align 8 %cmp12.i.i672 = icmp eq i64 %bf.shl.i.i669, 0 br i1 %cmp12.i.i672, label %if.then13.i.i673, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit675 if.then13.i.i673: ; preds = %if.then.i.i667 - invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %78) + invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %81) to label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit675 unwind label %terminate.lpad.i674 terminate.lpad.i674: ; preds = %if.then13.i.i673 - %80 = landingpad { ptr, i32 } + %83 = landingpad { ptr, i32 } catch ptr null - %81 = extractvalue { ptr, i32 } %80, 0 - call void @__clang_call_terminate(ptr %81) #23 + %84 = extractvalue { ptr, i32 } %83, 0 + call void @__clang_call_terminate(ptr %84) #23 unreachable _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit675: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit664, %if.then.i.i667, %if.then13.i.i673 - %switch = icmp eq i32 %cleanup.dest.slot.2, 0 - br i1 %switch, label %for.inc238, label %return + br i1 %call74, label %for.inc238, label %return for.inc238: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit675 %call239 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN4cvc58internal6theory2eq17EqClassesIteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %eqcs_i) @@ -11252,7 +11289,7 @@ ehcleanup237: ; preds = %lpad, %lpad.i.i, %e resume { ptr, i32 } %.pn14.pn return: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit675, %for.inc238, %entry - %call.lcssa = phi i1 [ true, %entry ], [ %switch, %for.inc238 ], [ %switch, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit675 ] + %call.lcssa = phi i1 [ true, %entry ], [ %call74, %for.inc238 ], [ %call74, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit675 ] ret i1 %call.lcssa } diff --git a/bench/duckdb/optimized/ub_duckdb_optimizer.cpp.ll b/bench/duckdb/optimized/ub_duckdb_optimizer.cpp.ll index aa0ece695ce..77cec4a5333 100644 --- a/bench/duckdb/optimized/ub_duckdb_optimizer.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_optimizer.cpp.ll @@ -42407,7 +42407,7 @@ invoke.cont7: ; preds = %invoke.cont to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont7 - br i1 %call10, label %if.then, label %cleanup27 + br i1 %call10, label %if.then, label %cleanup27.jt0 if.then: ; preds = %invoke.cont9 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %rule_made_change) #29 @@ -42485,33 +42485,27 @@ _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i73: ; preds = %_ZNSt1 if.else: ; preds = %invoke.cont15 %17 = load i8, ptr %rule_made_change, align 1, !tbaa !199, !range !31, !noundef !32 %tobool20.not = icmp eq i8 %17, 0 - br i1 %tobool20.not, label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit81, label %cleanup.thread + br i1 %tobool20.not, label %cleanup27.jt3, label %cleanup.thread cleanup.thread: ; preds = %if.else store i8 1, ptr %changes_made, align 1, !tbaa !199 %18 = load i64, ptr %expr, align 8, !tbaa !28 store i64 %18, ptr %agg.result, align 8, !tbaa !28 store ptr null, ptr %expr, align 8, !tbaa !28 - br label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit81 + br label %cleanup27.jt1 cleanup: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i, %invoke.cont19 store ptr null, ptr %agg.tmp, align 8, !tbaa !28 %.pr.pre = load ptr, ptr %result, align 8, !tbaa !28 %cmp.not.i77 = icmp eq ptr %.pr.pre, null - br i1 %cmp.not.i77, label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit81, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i78 + br i1 %cmp.not.i77, label %cleanup27.jt1, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i78 _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i78: ; preds = %cleanup %vtable.i.i79 = load ptr, ptr %.pr.pre, align 8, !tbaa !18 %vfn.i.i80 = getelementptr inbounds i8, ptr %vtable.i.i79, i64 8 %19 = load ptr, ptr %vfn.i.i80, align 8 call void %19(ptr noundef nonnull align 8 dereferenceable(80) %.pr.pre) #29 - br label %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit81 - -_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit81: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i78, %cleanup, %cleanup.thread, %if.else - %cleanup.dest.slot.095 = phi i32 [ 1, %cleanup ], [ 1, %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i78 ], [ 3, %if.else ], [ 1, %cleanup.thread ] - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result) #29 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %rule_made_change) #29 - br label %cleanup27 + br label %cleanup27.jt1 ehcleanup: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i73, %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit71, %lpad14 %.pn = phi { ptr, i32 } [ %11, %lpad14 ], [ %12, %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit71 ], [ %12, %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i73 ] @@ -42519,36 +42513,52 @@ ehcleanup: ; preds = %_ZNKSt14default_del call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %rule_made_change) #29 br label %ehcleanup28 -cleanup27: ; preds = %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit81, %invoke.cont9 - %cleanup.dest.slot.1 = phi i32 [ %cleanup.dest.slot.095, %_ZNSt10unique_ptrIN6duckdb10ExpressionESt14default_deleteIS1_EED2Ev.exit81 ], [ 0, %invoke.cont9 ] +cleanup27.jt0: ; preds = %invoke.cont9 %20 = load ptr, ptr %bindings, align 8, !tbaa !747 - %tobool.not.i.i.i = icmp eq ptr %20, null - br i1 %tobool.not.i.i.i, label %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit, label %if.then.i.i.i + %tobool.not.i.i.i.jt0 = icmp eq ptr %20, null + br i1 %tobool.not.i.i.i.jt0, label %for.inc, label %for.inc.sink.split -if.then.i.i.i: ; preds = %cleanup27 - call void @_ZdlPv(ptr noundef nonnull %20) #31 - br label %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit +cleanup27.jt3: ; preds = %if.else + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result) #29 + call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %rule_made_change) #29 + %21 = load ptr, ptr %bindings, align 8, !tbaa !747 + %tobool.not.i.i.i.jt3 = icmp eq ptr %21, null + br i1 %tobool.not.i.i.i.jt3, label %for.inc, label %for.inc.sink.split -_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit: ; preds = %if.then.i.i.i, %cleanup27 +cleanup27.jt1: ; preds = %cleanup, %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i78, %cleanup.thread + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result) #29 + call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %rule_made_change) #29 + %22 = load ptr, ptr %bindings, align 8, !tbaa !747 + %tobool.not.i.i.i.jt1 = icmp eq ptr %22, null + br i1 %tobool.not.i.i.i.jt1, label %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit.jt1, label %if.then.i.i.i.jt1 + +if.then.i.i.i.jt1: ; preds = %cleanup27.jt1 + call void @_ZdlPv(ptr noundef nonnull %22) #31 + br label %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit.jt1 + +_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit.jt1: ; preds = %if.then.i.i.i.jt1, %cleanup27.jt1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %bindings) #29 - switch i32 %cleanup.dest.slot.1, label %return [ - i32 0, label %for.inc - i32 3, label %for.inc - ] + br label %return + +for.inc.sink.split: ; preds = %cleanup27.jt3, %cleanup27.jt0 + %.sink = phi ptr [ %20, %cleanup27.jt0 ], [ %21, %cleanup27.jt3 ] + call void @_ZdlPv(ptr noundef nonnull %.sink) #31 + br label %for.inc -for.inc: ; preds = %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit, %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit +for.inc: ; preds = %for.inc.sink.split, %cleanup27.jt3, %cleanup27.jt0 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %bindings) #29 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.0100, i64 8 %cmp.i.not = icmp eq ptr %incdec.ptr.i, %1 br i1 %cmp.i.not, label %for.end, label %for.body ehcleanup28: ; preds = %ehcleanup, %lpad %.pn.pn = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %10, %lpad ] - %21 = load ptr, ptr %bindings, align 8, !tbaa !747 - %tobool.not.i.i.i82 = icmp eq ptr %21, null + %23 = load ptr, ptr %bindings, align 8, !tbaa !747 + %tobool.not.i.i.i82 = icmp eq ptr %23, null br i1 %tobool.not.i.i.i82, label %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit84, label %if.then.i.i.i83 if.then.i.i.i83: ; preds = %ehcleanup28 - call void @_ZdlPv(ptr noundef nonnull %21) #31 + call void @_ZdlPv(ptr noundef nonnull %23) #31 br label %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit84 _ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit84: ; preds = %if.then.i.i.i83, %ehcleanup28 @@ -42560,8 +42570,8 @@ for.end: ; preds = %for.inc, %entry call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp) #29 %_M_manager.i.i = getelementptr inbounds i8, ptr %ref.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %ref.tmp, i64 24 - %22 = getelementptr inbounds i8, ptr %ref.tmp, i64 8 - store i64 0, ptr %22, align 8 + %24 = getelementptr inbounds i8, ptr %ref.tmp, i64 8 + store i64 0, ptr %24, align 8 %call.i.i5.i = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #32 store ptr %op, ptr %call.i.i5.i, align 16, !tbaa !28 %ref.tmp44.sroa.5.0.call.i.i5.i.sroa_idx = getelementptr inbounds i8, ptr %call.i.i5.i, i64 8 @@ -42575,55 +42585,55 @@ for.end: ; preds = %for.inc, %entry to label %invoke.cont46 unwind label %lpad45 invoke.cont46: ; preds = %for.end - %23 = load ptr, ptr %_M_manager.i.i, align 8, !tbaa !188 - %tobool.not.i = icmp eq ptr %23, null + %25 = load ptr, ptr %_M_manager.i.i, align 8, !tbaa !188 + %tobool.not.i = icmp eq ptr %25, null br i1 %tobool.not.i, label %_ZNSt14_Function_baseD2Ev.exit, label %if.then.i if.then.i: ; preds = %invoke.cont46 - %call.i = invoke noundef zeroext i1 %23(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, i32 noundef 3) + %call.i = invoke noundef zeroext i1 %25(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, i32 noundef 3) to label %_ZNSt14_Function_baseD2Ev.exit unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then.i - %24 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } catch ptr null - %25 = extractvalue { ptr, i32 } %24, 0 - call void @__clang_call_terminate(ptr %25) #33 + %27 = extractvalue { ptr, i32 } %26, 0 + call void @__clang_call_terminate(ptr %27) #33 unreachable _ZNSt14_Function_baseD2Ev.exit: ; preds = %if.then.i, %invoke.cont46 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp) #29 - %26 = load i64, ptr %expr, align 8, !tbaa !28 - store i64 %26, ptr %agg.result, align 8, !tbaa !28 + %28 = load i64, ptr %expr, align 8, !tbaa !28 + store i64 %28, ptr %agg.result, align 8, !tbaa !28 store ptr null, ptr %expr, align 8, !tbaa !28 br label %return lpad45: ; preds = %for.end - %27 = landingpad { ptr, i32 } + %29 = landingpad { ptr, i32 } cleanup - %28 = load ptr, ptr %_M_manager.i.i, align 8, !tbaa !188 - %tobool.not.i86 = icmp eq ptr %28, null + %30 = load ptr, ptr %_M_manager.i.i, align 8, !tbaa !188 + %tobool.not.i86 = icmp eq ptr %30, null br i1 %tobool.not.i86, label %_ZNSt14_Function_baseD2Ev.exit90, label %if.then.i87 if.then.i87: ; preds = %lpad45 - %call.i88 = invoke noundef zeroext i1 %28(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, i32 noundef 3) + %call.i88 = invoke noundef zeroext i1 %30(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, i32 noundef 3) to label %_ZNSt14_Function_baseD2Ev.exit90 unwind label %terminate.lpad.i89 terminate.lpad.i89: ; preds = %if.then.i87 - %29 = landingpad { ptr, i32 } + %31 = landingpad { ptr, i32 } catch ptr null - %30 = extractvalue { ptr, i32 } %29, 0 - call void @__clang_call_terminate(ptr %30) #33 + %32 = extractvalue { ptr, i32 } %31, 0 + call void @__clang_call_terminate(ptr %32) #33 unreachable _ZNSt14_Function_baseD2Ev.exit90: ; preds = %if.then.i87, %lpad45 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp) #29 br label %eh.resume -return: ; preds = %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit, %_ZNSt14_Function_baseD2Ev.exit +return: ; preds = %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit.jt1, %_ZNSt14_Function_baseD2Ev.exit ret void eh.resume: ; preds = %_ZNSt14_Function_baseD2Ev.exit90, %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit84 - %.pn64 = phi { ptr, i32 } [ %27, %_ZNSt14_Function_baseD2Ev.exit90 ], [ %.pn.pn, %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit84 ] + %.pn64 = phi { ptr, i32 } [ %29, %_ZNSt14_Function_baseD2Ev.exit90 ], [ %.pn.pn, %_ZNSt6vectorISt17reference_wrapperIN6duckdb10ExpressionEESaIS3_EED2Ev.exit84 ] resume { ptr, i32 } %.pn64 } diff --git a/bench/flatbuffers/optimized/idl_gen_fbs.cpp.ll b/bench/flatbuffers/optimized/idl_gen_fbs.cpp.ll index 99f41bfd505..bbd7de6d428 100644 --- a/bench/flatbuffers/optimized/idl_gen_fbs.cpp.ll +++ b/bench/flatbuffers/optimized/idl_gen_fbs.cpp.ll @@ -1214,7 +1214,7 @@ for.body224.lr.ph: ; preds = %for.end212 br label %for.body224 for.body224: ; preds = %for.body224.lr.ph, %for.inc393 - %last_namespace.2404 = phi ptr [ %last_namespace.0.lcssa, %for.body224.lr.ph ], [ %last_namespace.3, %for.inc393 ] + %last_namespace.2404 = phi ptr [ %last_namespace.0.lcssa, %for.body224.lr.ph ], [ %last_namespace.3431, %for.inc393 ] %it213.sroa.0.0403 = phi ptr [ %59, %for.body224.lr.ph ], [ %incdec.ptr.i288, %for.inc393 ] %62 = load ptr, ptr %it213.sroa.0.0403, align 8 %63 = load i32, ptr %proto_id_gap_action, align 8 @@ -1756,13 +1756,13 @@ if.end10.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i %incdec.ptr.i10.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i.i.i.i, i64 4 %135 = load i16, ptr %incdec.ptr.i10.i.i.i.i.i.i, align 2, !noalias !27 %cmp.i11.i.i.i.i.i.i = icmp eq i16 %135, %spec.select.i.i.i.i - br i1 %cmp.i11.i.i.i.i.i.i, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit452, label %if.end16.i.i.i.i.i.i + br i1 %cmp.i11.i.i.i.i.i.i, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit455, label %if.end16.i.i.i.i.i.i if.end16.i.i.i.i.i.i: ; preds = %if.end10.i.i.i.i.i.i %incdec.ptr.i12.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i.i.i.i, i64 6 %136 = load i16, ptr %incdec.ptr.i12.i.i.i.i.i.i, align 2, !noalias !27 %cmp.i13.i.i.i.i.i.i = icmp eq i16 %136, %spec.select.i.i.i.i - br i1 %cmp.i13.i.i.i.i.i.i, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit454, label %if.end22.i.i.i.i.i.i + br i1 %cmp.i13.i.i.i.i.i.i, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit457, label %if.end22.i.i.i.i.i.i if.end22.i.i.i.i.i.i: ; preds = %if.end16.i.i.i.i.i.i %incdec.ptr.i14.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i.i.i.i, i64 8 @@ -1815,16 +1815,16 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.e %incdec.ptr.i.i.i.i.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i.i.i.i, i64 2 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit452: ; preds = %if.end10.i.i.i.i.i.i +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit455: ; preds = %if.end10.i.i.i.i.i.i %incdec.ptr.i10.i.i.i.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i.i.i.i, i64 4 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit454: ; preds = %if.end16.i.i.i.i.i.i +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit457: ; preds = %if.end16.i.i.i.i.i.i %incdec.ptr.i12.i.i.i.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i.i.i.i, i64 6 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i: ; preds = %for.body.i.i.i.i.i.i, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit452, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit454, %sw.bb38.i.i.i.i.i.i, %sw.bb31.i.i.i.i.i.i, %sw.bb.i.i.i.i.i.i - %retval.sroa.0.0.in.sroa.speculated.i.i.i.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i.i.i.i, %sw.bb.i.i.i.i.i.i ], [ %__first.sroa.0.1.i.i.i.i.i.i, %sw.bb31.i.i.i.i.i.i ], [ %spec.select.i.i.i.i.i.i, %sw.bb38.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit ], [ %incdec.ptr.i10.i.i.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit452 ], [ %incdec.ptr.i12.i.i.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit454 ], [ %__first.sroa.0.051.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ] +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i: ; preds = %for.body.i.i.i.i.i.i, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit455, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit457, %sw.bb38.i.i.i.i.i.i, %sw.bb31.i.i.i.i.i.i, %sw.bb.i.i.i.i.i.i + %retval.sroa.0.0.in.sroa.speculated.i.i.i.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i.i.i.i, %sw.bb.i.i.i.i.i.i ], [ %__first.sroa.0.1.i.i.i.i.i.i, %sw.bb31.i.i.i.i.i.i ], [ %spec.select.i.i.i.i.i.i, %sw.bb38.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit ], [ %incdec.ptr.i10.i.i.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit455 ], [ %incdec.ptr.i12.i.i.i.i.i.i.le, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKtSt6vectorItSaItEEEEtET_S8_S8_RKT0_.exit.i.i.i.loopexit.split.loop.exit457 ], [ %__first.sroa.0.051.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ] %cmp.i10.not.i.i.i = icmp eq ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i.i.i.i, %131 br i1 %cmp.i10.not.i.i.i, label %for.inc.i71.i.i, label %if.then16.i.i @@ -2332,11 +2332,7 @@ invoke.cont228: ; preds = %if.then.i.i.i84.i, call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp69.i) %188 = load i8, ptr %successful77.i, align 8 %tobool229 = trunc i8 %188 to i1 - br i1 %tobool229, label %if.end231, label %if.then230 - -if.then230: ; preds = %invoke.cont228 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.result) #23 - br label %cleanup + br i1 %tobool229, label %if.end231, label %cleanup.jt1 if.end231: ; preds = %invoke.cont228 %189 = load i8, ptr %include_dependence_headers, align 2 @@ -2347,7 +2343,7 @@ land.lhs.true235: ; preds = %if.end231 %generated236 = getelementptr inbounds i8, ptr %62, i64 160 %190 = load i8, ptr %generated236, align 8 %tobool237 = trunc i8 %190 to i1 - br i1 %tobool237, label %cleanup, label %if.end239 + br i1 %tobool237, label %cleanup.jt19, label %if.end239 if.end239: ; preds = %land.lhs.true235, %if.end231 %defined_namespace240 = getelementptr inbounds i8, ptr %62, i64 168 @@ -2901,48 +2897,104 @@ for.inc387: ; preds = %if.then.i.i.i280, % for.end389: ; preds = %for.inc387, %invoke.cont252 %call391 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %schema, ptr noundef nonnull @.str.16) - to label %cleanup unwind label %lpad241.loopexit.split-lp.loopexit.split-lp + to label %cleanup.jt0 unwind label %lpad241.loopexit.split-lp.loopexit.split-lp -cleanup: ; preds = %for.end389, %land.lhs.true235, %if.then230 - %last_namespace.3 = phi ptr [ %last_namespace.2404, %land.lhs.true235 ], [ %last_namespace.5, %for.end389 ], [ %last_namespace.2404, %if.then230 ] - %cleanup.dest.slot.0 = phi i32 [ 19, %land.lhs.true235 ], [ 0, %for.end389 ], [ 1, %if.then230 ] +cleanup.jt1: ; preds = %invoke.cont228 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.result) #23 %240 = load ptr, ptr %_M_before_begin.i.i.i, align 8 - %tobool.not3.i.i.i.i.i = icmp eq ptr %240, null - br i1 %tobool.not3.i.i.i.i.i, label %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i, label %while.body.i.i.i.i.i282 - -while.body.i.i.i.i.i282: ; preds = %cleanup, %while.body.i.i.i.i.i282 - %__n.addr.04.i.i.i.i.i = phi ptr [ %241, %while.body.i.i.i.i.i282 ], [ %240, %cleanup ] - %241 = load ptr, ptr %__n.addr.04.i.i.i.i.i, align 8 + %tobool.not3.i.i.i.i.i.jt1 = icmp eq ptr %240, null + br i1 %tobool.not3.i.i.i.i.i.jt1, label %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt1, label %while.body.i.i.i.i.i282.preheader + +cleanup.jt0: ; preds = %for.end389 + %241 = load ptr, ptr %_M_before_begin.i.i.i, align 8 + %tobool.not3.i.i.i.i.i.jt0 = icmp eq ptr %241, null + br i1 %tobool.not3.i.i.i.i.i.jt0, label %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt0, label %while.body.i.i.i.i.i282.preheader + +cleanup.jt19: ; preds = %land.lhs.true235 + %242 = load ptr, ptr %_M_before_begin.i.i.i, align 8 + %tobool.not3.i.i.i.i.i.jt19 = icmp eq ptr %242, null + br i1 %tobool.not3.i.i.i.i.i.jt19, label %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt19, label %while.body.i.i.i.i.i282.preheader + +while.body.i.i.i.i.i282.preheader: ; preds = %cleanup.jt1, %cleanup.jt0, %cleanup.jt19 + %243 = phi ptr [ %240, %cleanup.jt1 ], [ %241, %cleanup.jt0 ], [ %242, %cleanup.jt19 ] + %cleanup.dest.slot.0432 = phi i32 [ 1, %cleanup.jt1 ], [ 0, %cleanup.jt0 ], [ 19, %cleanup.jt19 ] + %last_namespace.3430 = phi ptr [ %last_namespace.2404, %cleanup.jt1 ], [ %last_namespace.5, %cleanup.jt0 ], [ %last_namespace.2404, %cleanup.jt19 ] + br label %while.body.i.i.i.i.i282 + +while.body.i.i.i.i.i282: ; preds = %while.body.i.i.i.i.i282.preheader, %while.body.i.i.i.i.i282 + %__n.addr.04.i.i.i.i.i = phi ptr [ %244, %while.body.i.i.i.i.i282 ], [ %243, %while.body.i.i.i.i.i282.preheader ] + %244 = load ptr, ptr %__n.addr.04.i.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i283 = getelementptr inbounds i8, ptr %__n.addr.04.i.i.i.i.i, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i.i.i283) #23 call void @_ZdlPv(ptr noundef nonnull %__n.addr.04.i.i.i.i.i) #24 - %tobool.not.i.i.i.i.i284 = icmp eq ptr %241, null + %tobool.not.i.i.i.i.i284 = icmp eq ptr %244, null br i1 %tobool.not.i.i.i.i.i284, label %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i, label %while.body.i.i.i.i.i282, !llvm.loop !50 -_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i: ; preds = %while.body.i.i.i.i.i282, %cleanup - %242 = load ptr, ptr %proto_fbs_ids, align 8 - %243 = load i64, ptr %_M_bucket_count.i.i.i, align 8 - %mul.i.i.i.i = shl i64 %243, 3 - call void @llvm.memset.p0.i64(ptr align 8 %242, i8 0, i64 %mul.i.i.i.i, i1 false) +_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i: ; preds = %while.body.i.i.i.i.i282 + %245 = load ptr, ptr %proto_fbs_ids, align 8 + %246 = load i64, ptr %_M_bucket_count.i.i.i, align 8 + %mul.i.i.i.i = shl i64 %246, 3 + call void @llvm.memset.p0.i64(ptr align 8 %245, i8 0, i64 %mul.i.i.i.i, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_before_begin.i.i.i, i8 0, i64 16, i1 false) - %244 = load ptr, ptr %proto_fbs_ids, align 8 - %cmp.i.i.i.i.i.i286 = icmp eq ptr %244, %_M_single_bucket.i.i.i + %247 = load ptr, ptr %proto_fbs_ids, align 8 + %cmp.i.i.i.i.i.i286 = icmp eq ptr %247, %_M_single_bucket.i.i.i br i1 %cmp.i.i.i.i.i.i286, label %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit, label %if.end.i.i.i.i.i287 +_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt1: ; preds = %cleanup.jt1 + %248 = load ptr, ptr %proto_fbs_ids, align 8 + %249 = load i64, ptr %_M_bucket_count.i.i.i, align 8 + %mul.i.i.i.i.jt1 = shl i64 %249, 3 + call void @llvm.memset.p0.i64(ptr align 8 %248, i8 0, i64 %mul.i.i.i.i.jt1, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_before_begin.i.i.i, i8 0, i64 16, i1 false) + %250 = load ptr, ptr %proto_fbs_ids, align 8 + %cmp.i.i.i.i.i.i286.jt1 = icmp eq ptr %250, %_M_single_bucket.i.i.i + br i1 %cmp.i.i.i.i.i.i286.jt1, label %cleanup396, label %if.end.i.i.i.i.i287.jt1 + +_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt0: ; preds = %cleanup.jt0 + %251 = load ptr, ptr %proto_fbs_ids, align 8 + %252 = load i64, ptr %_M_bucket_count.i.i.i, align 8 + %mul.i.i.i.i.jt0 = shl i64 %252, 3 + call void @llvm.memset.p0.i64(ptr align 8 %251, i8 0, i64 %mul.i.i.i.i.jt0, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_before_begin.i.i.i, i8 0, i64 16, i1 false) + %253 = load ptr, ptr %proto_fbs_ids, align 8 + %cmp.i.i.i.i.i.i286.jt0 = icmp eq ptr %253, %_M_single_bucket.i.i.i + br i1 %cmp.i.i.i.i.i.i286.jt0, label %for.inc393, label %for.inc393.sink.split + +_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt19: ; preds = %cleanup.jt19 + %254 = load ptr, ptr %proto_fbs_ids, align 8 + %255 = load i64, ptr %_M_bucket_count.i.i.i, align 8 + %mul.i.i.i.i.jt19 = shl i64 %255, 3 + call void @llvm.memset.p0.i64(ptr align 8 %254, i8 0, i64 %mul.i.i.i.i.jt19, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_before_begin.i.i.i, i8 0, i64 16, i1 false) + %256 = load ptr, ptr %proto_fbs_ids, align 8 + %cmp.i.i.i.i.i.i286.jt19 = icmp eq ptr %256, %_M_single_bucket.i.i.i + br i1 %cmp.i.i.i.i.i.i286.jt19, label %for.inc393, label %for.inc393.sink.split + if.end.i.i.i.i.i287: ; preds = %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i - call void @_ZdlPv(ptr noundef %244) #24 + call void @_ZdlPv(ptr noundef %247) #24 br label %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit +if.end.i.i.i.i.i287.jt1: ; preds = %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt1 + call void @_ZdlPv(ptr noundef %250) #24 + br label %cleanup396 + _ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit: ; preds = %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i, %if.end.i.i.i.i.i287 - switch i32 %cleanup.dest.slot.0, label %cleanup396 [ + switch i32 %cleanup.dest.slot.0432, label %cleanup396 [ i32 0, label %for.inc393 i32 19, label %for.inc393 ] -for.inc393: ; preds = %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit, %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit +for.inc393.sink.split: ; preds = %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt19, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt0 + %.sink = phi ptr [ %253, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt0 ], [ %256, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt19 ] + %last_namespace.3431.ph = phi ptr [ %last_namespace.5, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt0 ], [ %last_namespace.2404, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt19 ] + call void @_ZdlPv(ptr noundef %.sink) #24 + br label %for.inc393 + +for.inc393: ; preds = %for.inc393.sink.split, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt19, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt0, %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit, %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit + %last_namespace.3431 = phi ptr [ %last_namespace.3430, %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit ], [ %last_namespace.3430, %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit ], [ %last_namespace.5, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt0 ], [ %last_namespace.2404, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt19 ], [ %last_namespace.3431.ph, %for.inc393.sink.split ] %incdec.ptr.i288 = getelementptr inbounds i8, ptr %it213.sroa.0.0403, i64 8 - %245 = load ptr, ptr %_M_finish.i136, align 8 - %cmp.i137.not = icmp eq ptr %incdec.ptr.i288, %245 + %257 = load ptr, ptr %_M_finish.i136, align 8 + %cmp.i137.not = icmp eq ptr %incdec.ptr.i288, %257 br i1 %cmp.i137.not, label %for.end395, label %for.body224, !llvm.loop !51 ehcleanup392: ; preds = %lpad241.loopexit, %lpad241.loopexit.split-lp.loopexit.split-lp, %lpad241.loopexit.split-lp.loopexit, %lpad3.i185, %ehcleanup385, %lpad301, %ehcleanup292, %ehcleanup255 @@ -2954,7 +3006,7 @@ for.end395: ; preds = %for.inc393, %for.en call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %schema) #23 br label %cleanup396 -cleanup396: ; preds = %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit, %for.end395 +cleanup396: ; preds = %_ZN11flatbuffers12_GLOBAL__N_118ProtobufToFbsIdMapD2Ev.exit, %if.end.i.i.i.i.i287.jt1, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_tESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.jt1, %for.end395 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %schema) #23 ret void diff --git a/bench/folly/optimized/AsyncServerSocket.cpp.ll b/bench/folly/optimized/AsyncServerSocket.cpp.ll index bc3e7b7cb2d..051340527eb 100644 --- a/bench/folly/optimized/AsyncServerSocket.cpp.ll +++ b/bench/folly/optimized/AsyncServerSocket.cpp.ll @@ -2374,7 +2374,7 @@ for.body: ; preds = %for.inc, %for.body. %n.0244 = phi i32 [ 0, %for.body.lr.ph ], [ %inc182, %for.inc ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %address) #46 invoke void @_ZN5folly9IPAddressC1Ev(ptr noundef nonnull align 4 dereferenceable(22) %address) - to label %invoke.cont2 unwind label %terminate.lpad + to label %invoke.cont2 unwind label %terminate.lpad.loopexit invoke.cont2: ; preds = %for.body store i16 0, ptr %port_.i, align 8, !tbaa !77 @@ -2392,12 +2392,12 @@ if.then: ; preds = %invoke.cont2 if.end: ; preds = %if.then, %invoke.cont2 %call6 = invoke i32 @accept4(i32 noundef %fd.coerce, ptr noundef nonnull %addrStorage, ptr noundef nonnull %addrLen, i32 noundef 2048) - to label %invoke.cont7 unwind label %terminate.lpad + to label %invoke.cont7 unwind label %terminate.lpad.loopexit invoke.cont7: ; preds = %if.end %3 = load i32, ptr %addrLen, align 4, !tbaa !20 invoke void @_ZN5folly13SocketAddress15setFromSockaddrEPK8sockaddrj(ptr noundef nonnull align 8 dereferenceable(27) %address, ptr noundef nonnull %addrStorage, i32 noundef %3) - to label %invoke.cont10 unwind label %terminate.lpad + to label %invoke.cont10 unwind label %terminate.lpad.loopexit invoke.cont10: ; preds = %invoke.cont7 %cmp.i.i.not = icmp eq i32 %call6, -1 @@ -2425,7 +2425,7 @@ if.then23: ; preds = %land.rhs20 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %len) #46 store i32 256, ptr %len, align 4, !tbaa !20 %call27 = invoke noundef i32 @_ZN5folly6netops10getsockoptENS_13NetworkSocketEiiPvPj(i32 %call6, i32 noundef 6, i32 noundef 28, ptr noundef nonnull %buffer, ptr noundef nonnull %len) - to label %invoke.cont26 unwind label %terminate.lpad + to label %invoke.cont26 unwind label %terminate.lpad.loopexit invoke.cont26: ; preds = %if.then23 %cmp28 = icmp eq i32 %call27, 0 @@ -2458,7 +2458,7 @@ if.then49.invoke: ; preds = %if.then45, %if.then %9 = phi i32 [ 41, %if.then35 ], [ 0, %if.then45 ] %10 = phi i32 [ 67, %if.then35 ], [ 1, %if.then45 ] %11 = invoke noundef i32 @_ZN5folly6netops10setsockoptENS_13NetworkSocketEiiPKvj(i32 %call6, i32 noundef %9, i32 noundef %10, ptr noundef nonnull %tosWord, i32 noundef 4) - to label %if.end56 unwind label %terminate.lpad + to label %if.end56 unwind label %terminate.lpad.loopexit if.end56: ; preds = %if.then49.invoke %cmp57.not = icmp eq i32 %11, 0 @@ -2467,27 +2467,27 @@ if.end56: ; preds = %if.then49.invoke if.then58: ; preds = %if.end56 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %ref.tmp59) #46 invoke void @_ZN6google10LogMessageC1EPKcii(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp59, ptr noundef nonnull @.str.22, i32 noundef 1009, i32 noundef 2) - to label %invoke.cont60 unwind label %terminate.lpad + to label %invoke.cont60 unwind label %terminate.lpad.loopexit invoke.cont60: ; preds = %if.then58 %call62 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6google10LogMessage6streamEv(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp59) - to label %invoke.cont61 unwind label %terminate.lpad + to label %invoke.cont61 unwind label %terminate.lpad.loopexit invoke.cont61: ; preds = %invoke.cont60 %call1.i201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %call62, ptr noundef nonnull @.str.87, i64 noundef 38) - to label %invoke.cont63 unwind label %terminate.lpad + to label %invoke.cont63 unwind label %terminate.lpad.loopexit invoke.cont63: ; preds = %invoke.cont61 %call1.i.i202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %call62, ptr noundef nonnull @.str.26, i64 noundef 21) - to label %call1.i.i.noexc unwind label %terminate.lpad + to label %call1.i.i.noexc unwind label %terminate.lpad.loopexit call1.i.i.noexc: ; preds = %invoke.cont63 %call1.i203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %call62, i32 noundef %call6) - to label %call1.i.noexc unwind label %terminate.lpad + to label %call1.i.noexc unwind label %terminate.lpad.loopexit call1.i.noexc: ; preds = %call1.i.i.noexc %call1.i5.i204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %call1.i203, ptr noundef nonnull @.str.27, i64 noundef 1) - to label %invoke.cont65 unwind label %terminate.lpad + to label %invoke.cont65 unwind label %terminate.lpad.loopexit invoke.cont65: ; preds = %call1.i.noexc call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp59) #46 @@ -2501,27 +2501,27 @@ if.end67: ; preds = %invoke.cont65, %if. if.else68: ; preds = %invoke.cont26 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %ref.tmp69) #46 invoke void @_ZN6google10LogMessageC1EPKcii(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp69, ptr noundef nonnull @.str.22, i32 noundef 1013, i32 noundef 2) - to label %invoke.cont70 unwind label %terminate.lpad + to label %invoke.cont70 unwind label %terminate.lpad.loopexit invoke.cont70: ; preds = %if.else68 %call72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6google10LogMessage6streamEv(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp69) - to label %invoke.cont71 unwind label %terminate.lpad + to label %invoke.cont71 unwind label %terminate.lpad.loopexit invoke.cont71: ; preds = %invoke.cont70 %call1.i207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %call72, ptr noundef nonnull @.str.88, i64 noundef 45) - to label %invoke.cont73 unwind label %terminate.lpad + to label %invoke.cont73 unwind label %terminate.lpad.loopexit invoke.cont73: ; preds = %invoke.cont71 %call1.i.i210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %call72, ptr noundef nonnull @.str.26, i64 noundef 21) - to label %call1.i.i.noexc209 unwind label %terminate.lpad + to label %call1.i.i.noexc209 unwind label %terminate.lpad.loopexit call1.i.i.noexc209: ; preds = %invoke.cont73 %call1.i212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %call72, i32 noundef %call6) - to label %call1.i.noexc211 unwind label %terminate.lpad + to label %call1.i.noexc211 unwind label %terminate.lpad.loopexit call1.i.noexc211: ; preds = %call1.i.i.noexc209 %call1.i5.i213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %call1.i212, ptr noundef nonnull @.str.27, i64 noundef 1) - to label %invoke.cont75 unwind label %terminate.lpad + to label %invoke.cont75 unwind label %terminate.lpad.loopexit invoke.cont75: ; preds = %call1.i.noexc211 call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp69) #46 @@ -2568,23 +2568,23 @@ if.then109: ; preds = %if.else103 %16 = load i64, ptr %numDroppedConnections_, align 8, !tbaa !183 %inc = add i64 %16, 1 store i64 %inc, ptr %numDroppedConnections_, align 8, !tbaa !183 - br i1 %cmp.i.i.not, label %cleanup, label %if.then113 + br i1 %cmp.i.i.not, label %cleanup.jt4, label %if.then113 if.then113: ; preds = %if.then109 %call117 = invoke noundef i32 @_ZN5folly10closeNoIntENS_13NetworkSocketE(i32 %call6) - to label %invoke.cont116 unwind label %terminate.lpad + to label %invoke.cont116 unwind label %terminate.lpad.loopexit invoke.cont116: ; preds = %if.then113 %17 = load ptr, ptr %connectionEventCallback_, align 8, !tbaa !144 %tobool119.not = icmp eq ptr %17, null - br i1 %tobool119.not, label %cleanup, label %if.then120 + br i1 %tobool119.not, label %cleanup.jt4, label %if.then120 if.then120: ; preds = %invoke.cont116 %vtable124 = load ptr, ptr %17, align 8, !tbaa !7 %vfn125 = getelementptr inbounds i8, ptr %vtable124, i64 32 %18 = load ptr, ptr %vfn125, align 8 call void %18(ptr noundef nonnull align 8 dereferenceable(8) %17, i32 %call6, ptr noundef nonnull align 8 dereferenceable(27) %address) #46 - br label %cleanup + br label %cleanup.jt4 if.end130: ; preds = %if.else103, %if.then101, %if.end78 br i1 %cmp.i.i.not, label %if.then134, label %if.end166 @@ -2593,7 +2593,7 @@ if.then134: ; preds = %if.end130 %call135 = tail call ptr @__errno_location() #50 %19 = load i32, ptr %call135, align 4, !tbaa !20 switch i32 %19, label %if.else153.invoke [ - i32 11, label %cleanup + i32 11, label %cleanup.jt1 i32 24, label %if.then143 i32 23, label %if.then143 ] @@ -2601,21 +2601,21 @@ if.then134: ; preds = %if.end130 if.then143: ; preds = %if.then134, %if.then134 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %ref.tmp144) #46 invoke void @_ZN6google10LogMessageC1EPKcii(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp144, ptr noundef nonnull @.str.22, i32 noundef 1051, i32 noundef 2) - to label %invoke.cont145 unwind label %terminate.lpad + to label %invoke.cont145 unwind label %terminate.lpad.loopexit.split-lp invoke.cont145: ; preds = %if.then143 %call147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6google10LogMessage6streamEv(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp144) - to label %invoke.cont146 unwind label %terminate.lpad + to label %invoke.cont146 unwind label %terminate.lpad.loopexit.split-lp invoke.cont146: ; preds = %invoke.cont145 %call1.i220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %call147, ptr noundef nonnull @.str.89, i64 noundef 70) - to label %invoke.cont148 unwind label %terminate.lpad + to label %invoke.cont148 unwind label %terminate.lpad.loopexit.split-lp invoke.cont148: ; preds = %invoke.cont146 call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp144) #46 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %ref.tmp144) #46 invoke void @_ZN5folly17AsyncServerSocket12enterBackoffEv(ptr noundef nonnull align 8 dereferenceable(296) %this) - to label %invoke.cont150 unwind label %terminate.lpad + to label %invoke.cont150 unwind label %terminate.lpad.loopexit.split-lp invoke.cont150: ; preds = %invoke.cont148 %20 = load i32, ptr %call135, align 4, !tbaa !20 @@ -2624,12 +2624,12 @@ invoke.cont150: ; preds = %invoke.cont148 if.else153.invoke: ; preds = %invoke.cont150, %if.then134 %21 = phi i32 [ %20, %invoke.cont150 ], [ %19, %if.then134 ] invoke void @_ZN5folly17AsyncServerSocket13dispatchErrorEPKci(ptr noundef nonnull align 8 dereferenceable(296) %this, ptr noundef nonnull @.str.90, i32 noundef %21) - to label %if.end157 unwind label %terminate.lpad + to label %if.end157 unwind label %terminate.lpad.loopexit.split-lp if.end157: ; preds = %if.else153.invoke %22 = load ptr, ptr %connectionEventCallback_, align 8, !tbaa !144 %tobool159.not = icmp eq ptr %22, null - br i1 %tobool159.not, label %cleanup, label %if.then160 + br i1 %tobool159.not, label %cleanup.jt1, label %if.then160 if.then160: ; preds = %if.end157 %23 = load i32, ptr %call135, align 4, !tbaa !20 @@ -2637,61 +2637,91 @@ if.then160: ; preds = %if.end157 %vfn164 = getelementptr inbounds i8, ptr %vtable163, i64 24 %24 = load ptr, ptr %vfn164, align 8 call void %24(ptr noundef nonnull align 8 dereferenceable(8) %22, i32 noundef %23) #46 - br label %cleanup + br label %cleanup.jt1 if.end166: ; preds = %if.end130 invoke void @_ZN5folly17AsyncServerSocket14dispatchSocketENS_13NetworkSocketEONS_13SocketAddressE(ptr noundef nonnull align 8 dereferenceable(296) %this, i32 %call6, ptr noundef nonnull align 8 dereferenceable(27) %address) - to label %invoke.cont169 unwind label %terminate.lpad + to label %invoke.cont169 unwind label %terminate.lpad.loopexit invoke.cont169: ; preds = %if.end166 %25 = load i8, ptr %accepting_, align 8, !tbaa !120, !range !10, !noundef !80 %tobool170.not = icmp eq i8 %25, 0 - br i1 %tobool170.not, label %cleanup, label %lor.lhs.false171 + br i1 %tobool170.not, label %cleanup.jt2, label %lor.lhs.false171 lor.lhs.false171: ; preds = %invoke.cont169 %26 = load ptr, ptr %callbacks_, align 8, !tbaa !17 %27 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !17 %cmp.i.i222 = icmp eq ptr %26, %27 - %spec.select = select i1 %cmp.i.i222, i32 2, i32 0 - br label %cleanup + br i1 %cmp.i.i222, label %cleanup.jt2, label %cleanup.jt0 -cleanup: ; preds = %lor.lhs.false171, %invoke.cont169, %if.then160, %if.end157, %if.then134, %if.then120, %invoke.cont116, %if.then109 - %cleanup.dest.slot.0 = phi i32 [ 4, %invoke.cont116 ], [ 4, %if.then120 ], [ 4, %if.then109 ], [ 1, %if.then134 ], [ 1, %if.then160 ], [ 1, %if.end157 ], [ 2, %invoke.cont169 ], [ %spec.select, %lor.lhs.false171 ] +cleanup.jt0: ; preds = %lor.lhs.false171 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %addrLen) #46 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %addrStorage) #46 %28 = load i8, ptr %external_.i, align 2, !tbaa !79, !range !10, !noundef !80 - %tobool.not.i = icmp eq i8 %28, 0 - br i1 %tobool.not.i, label %_ZN5folly13SocketAddressD2Ev.exit, label %if.then.i - -if.then.i: ; preds = %cleanup - %29 = load ptr, ptr %address, align 8, !tbaa !81 - %isnull.i.i = icmp eq ptr %29, null - br i1 %isnull.i.i, label %_ZN5folly13SocketAddressD2Ev.exit, label %delete.notnull.i.i + %tobool.not.i.jt0 = icmp eq i8 %28, 0 + %29 = load ptr, ptr %address, align 8 + %isnull.i.i.jt0 = icmp eq ptr %29, null + %or.cond = select i1 %tobool.not.i.jt0, i1 true, i1 %isnull.i.i.jt0 + br i1 %or.cond, label %for.inc, label %for.inc.sink.split -delete.notnull.i.i: ; preds = %if.then.i - call void @_ZdlPv(ptr noundef nonnull %29) #48 - br label %_ZN5folly13SocketAddressD2Ev.exit - -_ZN5folly13SocketAddressD2Ev.exit: ; preds = %delete.notnull.i.i, %if.then.i, %cleanup +cleanup.jt2: ; preds = %lor.lhs.false171, %invoke.cont169 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %addrLen) #46 + call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %addrStorage) #46 + %30 = load i8, ptr %external_.i, align 2, !tbaa !79, !range !10, !noundef !80 + %tobool.not.i.jt2 = icmp eq i8 %30, 0 + %31 = load ptr, ptr %address, align 8 + %isnull.i.i.jt2 = icmp eq ptr %31, null + %or.cond6 = select i1 %tobool.not.i.jt2, i1 true, i1 %isnull.i.i.jt2 + br i1 %or.cond6, label %if.then.i224.loopexit.sink.split, label %if.then.i224.loopexit.sink.split.sink.split + +cleanup.jt1: ; preds = %if.end157, %if.then160, %if.then134 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %addrLen) #46 + call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %addrStorage) #46 + %32 = load i8, ptr %external_.i, align 2, !tbaa !79, !range !10, !noundef !80 + %tobool.not.i.jt1 = icmp eq i8 %32, 0 + %33 = load ptr, ptr %address, align 8 + %isnull.i.i.jt1 = icmp eq ptr %33, null + %or.cond7 = select i1 %tobool.not.i.jt1, i1 true, i1 %isnull.i.i.jt1 + br i1 %or.cond7, label %if.then.i224.loopexit.sink.split, label %if.then.i224.loopexit.sink.split.sink.split + +cleanup.jt4: ; preds = %if.then109, %if.then120, %invoke.cont116 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %addrLen) #46 + call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %addrStorage) #46 + %34 = load i8, ptr %external_.i, align 2, !tbaa !79, !range !10, !noundef !80 + %tobool.not.i.jt4 = icmp eq i8 %34, 0 + %35 = load ptr, ptr %address, align 8 + %isnull.i.i.jt4 = icmp eq ptr %35, null + %or.cond8 = select i1 %tobool.not.i.jt4, i1 true, i1 %isnull.i.i.jt4 + br i1 %or.cond8, label %for.inc, label %for.inc.sink.split + +for.inc.sink.split: ; preds = %cleanup.jt4, %cleanup.jt0 + %.sink = phi ptr [ %29, %cleanup.jt0 ], [ %35, %cleanup.jt4 ] + call void @_ZdlPv(ptr noundef nonnull %.sink) #48 + br label %for.inc + +for.inc: ; preds = %for.inc.sink.split, %cleanup.jt4, %cleanup.jt0 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %address) #46 - switch i32 %cleanup.dest.slot.0, label %if.then.i224.loopexit [ - i32 0, label %for.inc - i32 4, label %for.inc - ] - -for.inc: ; preds = %_ZN5folly13SocketAddressD2Ev.exit, %_ZN5folly13SocketAddressD2Ev.exit %inc182 = add nuw i32 %n.0244, 1 - %30 = load i32, ptr %maxAcceptAtOnce_, align 4, !tbaa !176 - %cmp = icmp ult i32 %inc182, %30 + %36 = load i32, ptr %maxAcceptAtOnce_, align 4, !tbaa !176 + %cmp = icmp ult i32 %inc182, %36 br i1 %cmp, label %for.body, label %if.then.i224.loopexit, !llvm.loop !184 -if.then.i224.loopexit: ; preds = %for.inc, %_ZN5folly13SocketAddressD2Ev.exit +if.then.i224.loopexit.sink.split.sink.split: ; preds = %cleanup.jt1, %cleanup.jt2 + %.sink5 = phi ptr [ %31, %cleanup.jt2 ], [ %33, %cleanup.jt1 ] + call void @_ZdlPv(ptr noundef nonnull %.sink5) #48 + br label %if.then.i224.loopexit.sink.split + +if.then.i224.loopexit.sink.split: ; preds = %if.then.i224.loopexit.sink.split.sink.split, %cleanup.jt1, %cleanup.jt2 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %address) #46 + br label %if.then.i224.loopexit + +if.then.i224.loopexit: ; preds = %for.inc, %if.then.i224.loopexit.sink.split %.pre = load i32, ptr %guardCount_.i, align 8, !tbaa !19 - %31 = add i32 %.pre, -1 + %37 = add i32 %.pre, -1 br label %if.then.i224 if.then.i224: ; preds = %if.then.i224.loopexit, %entry - %dec.i = phi i32 [ %31, %if.then.i224.loopexit ], [ %1, %entry ] + %dec.i = phi i32 [ %37, %if.then.i224.loopexit ], [ %1, %entry ] store i32 %dec.i, ptr %guardCount_.i, align 8, !tbaa !19 %cmp5.i = icmp eq i32 %dec.i, 0 br i1 %cmp5.i, label %if.then6.i, label %_ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit @@ -2699,25 +2729,34 @@ if.then.i224: ; preds = %if.then.i224.loopex if.then6.i: ; preds = %if.then.i224 %vtable.i = load ptr, ptr %this, align 8, !tbaa !7 %vfn.i = getelementptr inbounds i8, ptr %vtable.i, i64 16 - %32 = load ptr, ptr %vfn.i, align 8 - invoke void %32(ptr noundef nonnull align 8 dereferenceable(12) %this, i1 noundef zeroext true) + %38 = load ptr, ptr %vfn.i, align 8 + invoke void %38(ptr noundef nonnull align 8 dereferenceable(12) %this, i1 noundef zeroext true) to label %_ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then6.i - %33 = landingpad { ptr, i32 } + %39 = landingpad { ptr, i32 } catch ptr null - %34 = extractvalue { ptr, i32 } %33, 0 - call void @__clang_call_terminate(ptr %34) #45 + %40 = extractvalue { ptr, i32 } %39, 0 + call void @__clang_call_terminate(ptr %40) #45 unreachable _ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit: ; preds = %if.then6.i, %if.then.i224 ret void -terminate.lpad: ; preds = %if.end166, %if.else153.invoke, %invoke.cont148, %invoke.cont146, %invoke.cont145, %if.then143, %if.then113, %call1.i.noexc211, %call1.i.i.noexc209, %invoke.cont73, %invoke.cont71, %invoke.cont70, %if.else68, %call1.i.noexc, %call1.i.i.noexc, %invoke.cont63, %invoke.cont61, %invoke.cont60, %if.then58, %if.then49.invoke, %if.then23, %invoke.cont7, %if.end, %for.body - %35 = landingpad { ptr, i32 } +terminate.lpad.loopexit: ; preds = %for.body, %if.end, %invoke.cont7, %if.then23, %if.then49.invoke, %if.then58, %invoke.cont60, %invoke.cont61, %invoke.cont63, %call1.i.i.noexc, %call1.i.noexc, %if.else68, %invoke.cont70, %invoke.cont71, %invoke.cont73, %call1.i.i.noexc209, %call1.i.noexc211, %if.then113, %if.end166 + %lpad.loopexit = landingpad { ptr, i32 } catch ptr null - %36 = extractvalue { ptr, i32 } %35, 0 - call void @__clang_call_terminate(ptr %36) #45 + br label %terminate.lpad + +terminate.lpad.loopexit.split-lp: ; preds = %if.then143, %invoke.cont145, %invoke.cont146, %invoke.cont148, %if.else153.invoke + %lpad.loopexit.split-lp = landingpad { ptr, i32 } + catch ptr null + br label %terminate.lpad + +terminate.lpad: ; preds = %terminate.lpad.loopexit.split-lp, %terminate.lpad.loopexit + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %terminate.lpad.loopexit ], [ %lpad.loopexit.split-lp, %terminate.lpad.loopexit.split-lp ] + %41 = extractvalue { ptr, i32 } %lpad.phi, 0 + call void @__clang_call_terminate(ptr %41) #45 unreachable } diff --git a/bench/git/optimized/revision.ll b/bench/git/optimized/revision.ll index 00d44658db0..423389663bb 100644 --- a/bench/git/optimized/revision.ll +++ b/bench/git/optimized/revision.ll @@ -9851,7 +9851,7 @@ while.body.lr.ph.i: ; preds = %while.body.lr.ph.i. br label %while.body.i while.body.i: ; preds = %sw.bb1.i, %while.body.lr.ph.i - %21 = phi ptr [ %.pr13.i, %while.body.lr.ph.i ], [ %38, %sw.bb1.i ] + %21 = phi ptr [ %.pr13.i, %while.body.lr.ph.i ], [ %40, %sw.bb1.i ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %queue.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %queue.i, ptr noundef nonnull align 8 dereferenceable(40) @__const.rewrite_one.queue, i64 40, i1 false) %.pre.i.i = load ptr, ptr %21, align 8 @@ -9867,19 +9867,19 @@ for.cond.i.i: ; preds = %if.end22.i.i, %whil if.then.i.i: ; preds = %for.cond.i.i %call.i.i = call fastcc i32 @process_parents(ptr noundef nonnull %revs, ptr noundef %22, ptr noundef null, ptr noundef nonnull %queue.i) %cmp.i.i = icmp slt i32 %call.i.i, 0 - br i1 %cmp.i.i, label %rewrite_one_1.exit.i, label %if.end2.i.i + br i1 %cmp.i.i, label %rewrite_one_1.exit.i.jt2, label %if.end2.i.i if.end2.i.i: ; preds = %if.then.i.i, %for.cond.i.i %bf.load3.i.i = load i32, ptr %22, align 8 %24 = and i32 %bf.load3.i.i, 96 %or.cond.not.i.i = icmp eq i32 %24, 64 - br i1 %or.cond.not.i.i, label %if.end14.i.i, label %rewrite_one_1.exit.i + br i1 %or.cond.not.i.i, label %if.end14.i.i, label %rewrite_one_1.exit.i.jt0 if.end14.i.i: ; preds = %if.end2.i.i %parents.i.i = getelementptr inbounds i8, ptr %22, i64 48 %25 = load ptr, ptr %parents.i.i, align 8 %tobool15.not.i.i = icmp eq ptr %25, null - br i1 %tobool15.not.i.i, label %rewrite_one_1.exit.i, label %if.end.i.i.i15 + br i1 %tobool15.not.i.i, label %rewrite_one_1.exit.i.jt1, label %if.end.i.i.i15 if.end.i.i.i15: ; preds = %if.end14.i.i %bf.load.i.i.i = load i64, ptr %prune, align 8 @@ -9910,7 +9910,7 @@ while.body.i.i.i: ; preds = %lor.lhs.false.i.i.i if.then9.i.i.i: ; preds = %while.body.i.i.i %tobool10.not.i.i.i = icmp eq ptr %relevant.010.i.i.i, null - br i1 %tobool10.not.i.i.i, label %if.end13.i.i.i, label %rewrite_one_1.exit.i + br i1 %tobool10.not.i.i.i, label %if.end13.i.i.i, label %rewrite_one_1.exit.i.jt0 if.end13.i.i.i: ; preds = %if.then9.i.i.i, %while.body.i.i.i %relevant.1.i.i.i = phi ptr [ %relevant.010.i.i.i, %while.body.i.i.i ], [ %29, %if.then9.i.i.i ] @@ -9920,32 +9920,45 @@ if.end13.i.i.i: ; preds = %if.then9.i.i.i, %wh one_relevant_parent.exit.i.i: ; preds = %if.end13.i.i.i, %if.then3.i.i.i %retval.0.i.i.i = phi ptr [ %28, %if.then3.i.i.i ], [ %relevant.1.i.i.i, %if.end13.i.i.i ] %tobool20.not.i.i = icmp eq ptr %retval.0.i.i.i, null - br i1 %tobool20.not.i.i, label %rewrite_one_1.exit.i, label %if.end22.i.i + br i1 %tobool20.not.i.i, label %rewrite_one_1.exit.i.jt0, label %if.end22.i.i if.end22.i.i: ; preds = %one_relevant_parent.exit.i.i store ptr %retval.0.i.i.i, ptr %21, align 8 br label %for.cond.i.i -rewrite_one_1.exit.i: ; preds = %one_relevant_parent.exit.i.i, %if.end14.i.i, %if.end2.i.i, %if.then.i.i, %if.then9.i.i.i - %retval.0.i.i = phi i32 [ 0, %if.then9.i.i.i ], [ 0, %one_relevant_parent.exit.i.i ], [ 1, %if.end14.i.i ], [ 0, %if.end2.i.i ], [ 2, %if.then.i.i ] +rewrite_one_1.exit.i.jt1: ; preds = %if.end14.i.i %32 = load i32, ptr %nr.i.i, align 4 - %tobool.not8.i.i = icmp eq i32 %32, 0 - br i1 %tobool.not8.i.i, label %rewrite_one.exit, label %while.body.i.i + %tobool.not8.i.i.jt1 = icmp eq i32 %32, 0 + br i1 %tobool.not8.i.i.jt1, label %rewrite_one.exit.jt1, label %while.body.i.i.preheader -while.body.i.i: ; preds = %rewrite_one_1.exit.i, %if.end.i.i - %list.addr.09.i.i = phi ptr [ %list.addr.1.i.i, %if.end.i.i ], [ %revs, %rewrite_one_1.exit.i ] +rewrite_one_1.exit.i.jt2: ; preds = %if.then.i.i + %33 = load i32, ptr %nr.i.i, align 4 + %tobool.not8.i.i.jt2 = icmp eq i32 %33, 0 + br i1 %tobool.not8.i.i.jt2, label %rewrite_one.exit.jt2, label %while.body.i.i.preheader + +rewrite_one_1.exit.i.jt0: ; preds = %if.end2.i.i, %one_relevant_parent.exit.i.i, %if.then9.i.i.i + %34 = load i32, ptr %nr.i.i, align 4 + %tobool.not8.i.i.jt0 = icmp eq i32 %34, 0 + br i1 %tobool.not8.i.i.jt0, label %rewrite_one.exit.jt0, label %while.body.i.i.preheader + +while.body.i.i.preheader: ; preds = %rewrite_one_1.exit.i.jt1, %rewrite_one_1.exit.i.jt2, %rewrite_one_1.exit.i.jt0 + %retval.0.i.i28 = phi i32 [ 1, %rewrite_one_1.exit.i.jt1 ], [ 2, %rewrite_one_1.exit.i.jt2 ], [ 0, %rewrite_one_1.exit.i.jt0 ] + br label %while.body.i.i + +while.body.i.i: ; preds = %while.body.i.i.preheader, %if.end.i.i + %list.addr.09.i.i = phi ptr [ %list.addr.1.i.i, %if.end.i.i ], [ %revs, %while.body.i.i.preheader ] %call.i2.i = call ptr @prio_queue_peek(ptr noundef nonnull %queue.i) #25 - %33 = load ptr, ptr %list.addr.09.i.i, align 8 - %tobool1.not.i.i = icmp eq ptr %33, null + %35 = load ptr, ptr %list.addr.09.i.i, align 8 + %tobool1.not.i.i = icmp eq ptr %35, null br i1 %tobool1.not.i.i, label %if.else.i.i, label %land.lhs.true.i.i land.lhs.true.i.i: ; preds = %while.body.i.i - %34 = load ptr, ptr %33, align 8 - %date.i.i = getelementptr inbounds i8, ptr %34, i64 40 - %35 = load i64, ptr %date.i.i, align 8 + %36 = load ptr, ptr %35, align 8 + %date.i.i = getelementptr inbounds i8, ptr %36, i64 40 + %37 = load i64, ptr %date.i.i, align 8 %date3.i.i = getelementptr inbounds i8, ptr %call.i2.i, i64 40 - %36 = load i64, ptr %date3.i.i, align 8 - %cmp.not.i.i = icmp ult i64 %35, %36 + %38 = load i64, ptr %date3.i.i, align 8 + %cmp.not.i.i = icmp ult i64 %37, %38 br i1 %cmp.not.i.i, label %if.else.i.i, label %if.end.i.i if.else.i.i: ; preds = %land.lhs.true.i.i, %while.body.i.i @@ -9954,28 +9967,43 @@ if.else.i.i: ; preds = %land.lhs.true.i.i, br label %if.end.i.i if.end.i.i: ; preds = %if.else.i.i, %land.lhs.true.i.i - %.pn.i.i = phi ptr [ %call4.i.i, %if.else.i.i ], [ %33, %land.lhs.true.i.i ] + %.pn.i.i = phi ptr [ %call4.i.i, %if.else.i.i ], [ %35, %land.lhs.true.i.i ] %list.addr.1.i.i = getelementptr inbounds i8, ptr %.pn.i.i, i64 8 - %37 = load i32, ptr %nr.i.i, align 4 - %tobool.not.i3.i = icmp eq i32 %37, 0 + %39 = load i32, ptr %nr.i.i, align 4 + %tobool.not.i3.i = icmp eq i32 %39, 0 br i1 %tobool.not.i3.i, label %rewrite_one.exit, label %while.body.i.i, !llvm.loop !81 -rewrite_one.exit: ; preds = %if.end.i.i, %rewrite_one_1.exit.i +rewrite_one.exit: ; preds = %if.end.i.i call void @clear_prio_queue(ptr noundef nonnull %queue.i) #25 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %queue.i) - switch i32 %retval.0.i.i, label %sw.epilog.i [ + switch i32 %retval.0.i.i28, label %sw.epilog.i [ i32 2, label %return i32 1, label %sw.bb1.i ] -sw.bb1.i: ; preds = %rewrite_one.exit +rewrite_one.exit.jt1: ; preds = %rewrite_one_1.exit.i.jt1 + call void @clear_prio_queue(ptr noundef nonnull %queue.i) #25 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %queue.i) + br label %sw.bb1.i + +rewrite_one.exit.jt2: ; preds = %rewrite_one_1.exit.i.jt2 + call void @clear_prio_queue(ptr noundef nonnull %queue.i) #25 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %queue.i) + br label %return + +rewrite_one.exit.jt0: ; preds = %rewrite_one_1.exit.i.jt0 + call void @clear_prio_queue(ptr noundef nonnull %queue.i) #25 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %queue.i) + br label %sw.epilog.i + +sw.bb1.i: ; preds = %rewrite_one.exit.jt1, %rewrite_one.exit %next.i = getelementptr inbounds i8, ptr %21, i64 8 - %38 = load ptr, ptr %next.i, align 8 - store ptr %38, ptr %pp.0.ph12.i, align 8 - %tobool.not.i14 = icmp eq ptr %38, null + %40 = load ptr, ptr %next.i, align 8 + store ptr %40, ptr %pp.0.ph12.i, align 8 + %tobool.not.i14 = icmp eq ptr %40, null br i1 %tobool.not.i14, label %rewrite_parents.exit, label %while.body.i, !llvm.loop !76 -sw.epilog.i: ; preds = %rewrite_one.exit +sw.epilog.i: ; preds = %rewrite_one.exit, %rewrite_one.exit.jt0 %next3.i = getelementptr inbounds i8, ptr %21, i64 8 %.pr.i = load ptr, ptr %next3.i, align 8 %tobool.not9.i = icmp eq ptr %.pr.i, null @@ -9985,8 +10013,8 @@ rewrite_parents.exit: ; preds = %sw.epilog.i, %sw.bb %call4.i = call fastcc i32 @remove_duplicate_parents(ptr noundef %revs, ptr noundef %commit) br label %return -return: ; preds = %rewrite_one.exit, %entry, %land.lhs.true, %want_ancestry.exit, %rewrite_parents.exit - %retval.0 = phi i32 [ %call, %rewrite_parents.exit ], [ 1, %want_ancestry.exit ], [ 1, %land.lhs.true ], [ 0, %entry ], [ %retval.0.i.i, %rewrite_one.exit ] +return: ; preds = %rewrite_one.exit, %rewrite_one.exit.jt2, %entry, %land.lhs.true, %want_ancestry.exit, %rewrite_parents.exit + %retval.0 = phi i32 [ %call, %rewrite_parents.exit ], [ 1, %want_ancestry.exit ], [ 1, %land.lhs.true ], [ 0, %entry ], [ 2, %rewrite_one.exit.jt2 ], [ %retval.0.i.i28, %rewrite_one.exit ] ret i32 %retval.0 } diff --git a/bench/gromacs/optimized/gmx_densmap.cpp.ll b/bench/gromacs/optimized/gmx_densmap.cpp.ll index 428f713d269..563d02890f6 100644 --- a/bench/gromacs/optimized/gmx_densmap.cpp.ll +++ b/bench/gromacs/optimized/gmx_densmap.cpp.ll @@ -352,14 +352,15 @@ define noundef i32 @_Z11gmx_densmapiPPc(i32 noundef %0, ptr noundef %1) local_un 91: ; preds = %88 %92 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %84, ptr noundef nonnull dereferenceable(5) @.str.35) #19 %93 = icmp eq i32 %92, 0 - %.315 = select i1 %93, i32 -2, i32 0 - %.str.73..str.36 = select i1 %93, ptr @.str.73, ptr @.str.36 + br i1 %93, label %94, label %.315.si.unfold.false + +.315.si.unfold.false: ; preds = %91 br label %94 -94: ; preds = %91, %88 - %95 = phi i1 [ false, %88 ], [ %93, %91 ] - %.0269 = phi i32 [ -3, %88 ], [ %.315, %91 ] - %.0268 = phi ptr [ @.str.72, %88 ], [ %.str.73..str.36, %91 ] +94: ; preds = %91, %.315.si.unfold.false, %88 + %95 = phi i1 [ false, %88 ], [ true, %91 ], [ false, %.315.si.unfold.false ] + %.0269 = phi i32 [ -3, %88 ], [ -2, %91 ], [ 0, %.315.si.unfold.false ] + %.0268 = phi ptr [ @.str.72, %88 ], [ @.str.73, %91 ], [ @.str.36, %.315.si.unfold.false ] %96 = invoke noundef zeroext i1 @_Z8ftp2bSetiiPK8t_filenm(i32 noundef 25, i32 noundef 5, ptr noundef nonnull %21) to label %97 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp diff --git a/bench/grpc/optimized/tcp_server_utils_posix_ifaddrs.cc.ll b/bench/grpc/optimized/tcp_server_utils_posix_ifaddrs.cc.ll index 6027409ef18..1e22a0f1aa3 100644 --- a/bench/grpc/optimized/tcp_server_utils_posix_ifaddrs.cc.ll +++ b/bench/grpc/optimized/tcp_server_utils_posix_ifaddrs.cc.ll @@ -699,7 +699,7 @@ lpad29: ; preds = %if.then.i49 br label %ehcleanup182 for.body: ; preds = %for.cond.preheader, %for.inc - %ifa_it.0281 = phi ptr [ %60, %for.cond.preheader ], [ %151, %for.inc ] + %ifa_it.0281 = phi ptr [ %60, %for.cond.preheader ], [ %153, %for.inc ] %fd_index.0280 = phi i32 [ 0, %for.cond.preheader ], [ %fd_index.1, %for.inc ] %sp.0279 = phi ptr [ null, %for.cond.preheader ], [ %sp.2, %for.inc ] store ptr null, ptr %new_sp, align 8 @@ -848,7 +848,7 @@ invoke.cont74: ; preds = %if.end73 if.then78: ; preds = %invoke.cont74 invoke void @_ZNK4absl12lts_202308026Status8ToStringB5cxx11ENS0_18StatusToStringModeE(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp80, ptr noundef nonnull align 8 dereferenceable(8) %addr_str, i32 noundef 1) - to label %invoke.cont83 unwind label %lpad75.loopexit + to label %invoke.cont83 unwind label %lpad75.loopexit.loopexit.split-lp invoke.cont83: ; preds = %if.then78 %call84 = call { i64, ptr } @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp80) #18 @@ -894,18 +894,19 @@ invoke.contthread-pre-split.i102: ; preds = %_ZSt8_DestroyIN4abs invoke.cont.i104: ; preds = %invoke.contthread-pre-split.i102, %invoke.cont90 %92 = phi ptr [ %.pr.i103, %invoke.contthread-pre-split.i102 ], [ %87, %invoke.cont90 ] %tobool.not.i.i.i105 = icmp eq ptr %92, null - br i1 %tobool.not.i.i.i105, label %_ZNSt6vectorIN4absl12lts_202308026StatusESaIS2_EED2Ev.exit107, label %if.then.i.i.i106 + br i1 %tobool.not.i.i.i105, label %cleanup.jt1, label %if.then.i.i.i106 if.then.i.i.i106: ; preds = %invoke.cont.i104 call void @_ZdlPv(ptr noundef nonnull %92) #22 - br label %_ZNSt6vectorIN4absl12lts_202308026StatusESaIS2_EED2Ev.exit107 + br label %cleanup.jt1 -_ZNSt6vectorIN4absl12lts_202308026StatusESaIS2_EED2Ev.exit107: ; preds = %invoke.cont.i104, %if.then.i.i.i106 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp80) #18 - br label %cleanup +lpad75.loopexit.loopexit: ; preds = %for.end.i, %invoke.cont97, %if.end106, %invoke.cont102, %invoke.cont94 + %lpad.loopexit328 = landingpad { ptr, i32 } + cleanup + br label %ehcleanup164 -lpad75.loopexit: ; preds = %if.then78, %invoke.cont94, %invoke.cont102, %if.end106, %invoke.cont125, %invoke.cont97, %for.end.i - %lpad.loopexit246 = landingpad { ptr, i32 } +lpad75.loopexit.loopexit.split-lp: ; preds = %invoke.cont125, %if.then78 + %lpad.loopexit.split-lp329 = landingpad { ptr, i32 } cleanup br label %ehcleanup164 @@ -926,11 +927,11 @@ invoke.cont94: ; preds = %invoke.cont74 %94 = load i32, ptr %ifa_flags, align 8 %call96 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %61) #18 invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.1, i32 noundef 140, i32 noundef 0, ptr noundef nonnull @.str.6, ptr noundef nonnull %spec.select, i32 noundef %94, ptr noundef %call96) - to label %invoke.cont97 unwind label %lpad75.loopexit + to label %invoke.cont97 unwind label %lpad75.loopexit.loopexit invoke.cont97: ; preds = %invoke.cont94 invoke void @gpr_mu_lock(ptr noundef nonnull %mu.i) - to label %.noexc114 unwind label %lpad75.loopexit + to label %.noexc114 unwind label %lpad75.loopexit.loopexit .noexc114: ; preds = %invoke.cont97 %l.09.i = load ptr, ptr %head.i, align 8 @@ -964,7 +965,7 @@ for.inc.i: ; preds = %if.end.i113, %for.b for.end.i: ; preds = %for.inc.i, %if.end.i113, %.noexc114 %l.0.lcssa.i = phi i1 [ true, %.noexc114 ], [ true, %for.inc.i ], [ false, %if.end.i113 ] invoke void @gpr_mu_unlock(ptr noundef nonnull %mu.i) - to label %invoke.cont98 unwind label %lpad75.loopexit + to label %invoke.cont98 unwind label %lpad75.loopexit.loopexit invoke.cont98: ; preds = %for.end.i br i1 %l.0.lcssa.i, label %if.end106, label %if.then101 @@ -984,11 +985,11 @@ if.then.i.i117: ; preds = %if.then101 invoke.cont102: ; preds = %if.then101 %call104 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %61) #18 invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.1, i32 noundef 146, i32 noundef 0, ptr noundef nonnull @.str.7, ptr noundef %call104, ptr noundef nonnull %spec.select) - to label %cleanup unwind label %lpad75.loopexit + to label %cleanup.jt4 unwind label %lpad75.loopexit.loopexit if.end106: ; preds = %invoke.cont98 invoke void @_Z24grpc_tcp_server_add_addrP15grpc_tcp_serverPK21grpc_resolved_addressjjP19grpc_dualstack_modePP17grpc_tcp_listener(ptr nonnull sret(%"class.absl::lts_20230802::Status") align 8 %ref.tmp107, ptr noundef %s, ptr noundef nonnull %addr, i32 noundef %port_index, i32 noundef %fd_index.0280, ptr noundef nonnull %dsmode, ptr noundef nonnull %new_sp) - to label %invoke.cont108 unwind label %lpad75.loopexit + to label %invoke.cont108 unwind label %lpad75.loopexit.loopexit invoke.cont108: ; preds = %if.end106 %98 = load i64, ptr %err, align 8 @@ -1101,7 +1102,7 @@ invoke.cont125: ; preds = %invoke.cont123 %112 = extractvalue { i64, ptr } %call.i, 1 store ptr %112, ptr %63, align 8 invoke void @_ZN4absl12lts_202308026StrCatB5cxx11ERKNS0_8AlphaNumES3_(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp121, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp122, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp124) - to label %invoke.cont128 unwind label %lpad75.loopexit + to label %invoke.cont128 unwind label %lpad75.loopexit.loopexit.split-lp invoke.cont128: ; preds = %invoke.cont125 %call129 = call { i64, ptr } @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp121) #18 @@ -1260,11 +1261,11 @@ _ZN4absl12lts_202308026StatusD2Ev.exit206: ; preds = %_ZN4absl12lts_20230 %138 = load i64, ptr %root_err, align 8 %and.i.i.i207 = and i64 %138, 1 %cmp.i.i.i208 = icmp eq i64 %and.i.i.i207, 0 - br i1 %cmp.i.i.i208, label %cleanup, label %if.then.i.i209 + br i1 %cmp.i.i.i208, label %cleanup.jt2, label %if.then.i.i209 if.then.i.i209: ; preds = %_ZN4absl12lts_202308026StatusD2Ev.exit206 invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %138) - to label %cleanup unwind label %terminate.lpad.i210 + to label %cleanup.jt2 unwind label %terminate.lpad.i210 terminate.lpad.i210: ; preds = %if.then.i.i209 %139 = landingpad { ptr, i32 } @@ -1331,72 +1332,124 @@ invoke.cont158: ; preds = %if.then157 do.end: ; preds = %do.body %inc = add i32 %fd_index.0280, 1 %cmp160.not = icmp eq ptr %sp.0279, null - br i1 %cmp160.not, label %cleanup, label %if.then161 + br i1 %cmp160.not, label %cleanup.jt0, label %if.then161 if.then161: ; preds = %do.end %is_sibling = getelementptr inbounds i8, ptr %146, i64 248 store i32 1, ptr %is_sibling, align 8 %sibling = getelementptr inbounds i8, ptr %sp.0279, i64 240 store ptr %146, ptr %sibling, align 8 - br label %cleanup + br label %cleanup.jt0 -cleanup: ; preds = %do.end, %if.then161, %if.then.i.i209, %_ZN4absl12lts_202308026StatusD2Ev.exit206, %invoke.cont102, %_ZNSt6vectorIN4absl12lts_202308026StatusESaIS2_EED2Ev.exit107 - %cleanup.dest.slot.0 = phi i32 [ 1, %_ZNSt6vectorIN4absl12lts_202308026StatusESaIS2_EED2Ev.exit107 ], [ 4, %invoke.cont102 ], [ 2, %_ZN4absl12lts_202308026StatusD2Ev.exit206 ], [ 2, %if.then.i.i209 ], [ 0, %if.then161 ], [ 0, %do.end ] - %sp.3 = phi ptr [ %sp.0279, %_ZNSt6vectorIN4absl12lts_202308026StatusESaIS2_EED2Ev.exit107 ], [ %sp.0279, %invoke.cont102 ], [ %sp.0279, %_ZN4absl12lts_202308026StatusD2Ev.exit206 ], [ %sp.0279, %if.then.i.i209 ], [ %146, %if.then161 ], [ %146, %do.end ] - %fd_index.2 = phi i32 [ %fd_index.0280, %_ZNSt6vectorIN4absl12lts_202308026StatusESaIS2_EED2Ev.exit107 ], [ %fd_index.0280, %invoke.cont102 ], [ %fd_index.0280, %_ZN4absl12lts_202308026StatusD2Ev.exit206 ], [ %fd_index.0280, %if.then.i.i209 ], [ %inc, %if.then161 ], [ %inc, %do.end ] +cleanup.jt0: ; preds = %do.end, %if.then161 %148 = load i64, ptr %addr_str, align 8 - %cmp.i.i.i.i213 = icmp eq i64 %148, 0 - br i1 %cmp.i.i.i.i213, label %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i, label %if.else.i.i + %cmp.i.i.i.i213.jt0 = icmp eq i64 %148, 0 + br i1 %cmp.i.i.i.i213.jt0, label %for.inc.sink.split, label %if.else.i.i.jt0 -_ZN4absl12lts_202308026StatusD2Ev.exit.i.i: ; preds = %cleanup +cleanup.jt2: ; preds = %if.then.i.i209, %_ZN4absl12lts_202308026StatusD2Ev.exit206 + %149 = load i64, ptr %addr_str, align 8 + %cmp.i.i.i.i213.jt2 = icmp eq i64 %149, 0 + br i1 %cmp.i.i.i.i213.jt2, label %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.jt2, label %if.else.i.i.jt2 + +cleanup.jt4: ; preds = %invoke.cont102 + %150 = load i64, ptr %addr_str, align 8 + %cmp.i.i.i.i213.jt4 = icmp eq i64 %150, 0 + br i1 %cmp.i.i.i.i213.jt4, label %for.inc.sink.split, label %if.else.i.i.jt4 + +cleanup.jt1: ; preds = %if.then.i.i.i106, %invoke.cont.i104 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp80) #18 + %151 = load i64, ptr %addr_str, align 8 + %cmp.i.i.i.i213.jt1 = icmp eq i64 %151, 0 + br i1 %cmp.i.i.i.i213.jt1, label %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.jt1, label %if.else.i.i.jt1 + +_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.jt2: ; preds = %cleanup.jt2 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #18 - br label %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit + br label %for.end + +_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.jt1: ; preds = %cleanup.jt1 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #18 + br label %cleanup181 -if.else.i.i: ; preds = %cleanup - %and.i.i.i1.i.i = and i64 %148, 1 - %cmp.i.i.i2.i.i = icmp eq i64 %and.i.i.i1.i.i, 0 - br i1 %cmp.i.i.i2.i.i, label %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit, label %if.then.i.i3.i.i +if.else.i.i.jt0: ; preds = %cleanup.jt0 + %and.i.i.i1.i.i.jt0 = and i64 %148, 1 + %cmp.i.i.i2.i.i.jt0 = icmp eq i64 %and.i.i.i1.i.i.jt0, 0 + br i1 %cmp.i.i.i2.i.i.jt0, label %for.inc, label %if.then.i.i3.i.i.jt0 -if.then.i.i3.i.i: ; preds = %if.else.i.i +if.else.i.i.jt2: ; preds = %cleanup.jt2 + %and.i.i.i1.i.i.jt2 = and i64 %149, 1 + %cmp.i.i.i2.i.i.jt2 = icmp eq i64 %and.i.i.i1.i.i.jt2, 0 + br i1 %cmp.i.i.i2.i.i.jt2, label %for.end, label %if.then.i.i3.i.i.jt2 + +if.else.i.i.jt4: ; preds = %cleanup.jt4 + %and.i.i.i1.i.i.jt4 = and i64 %150, 1 + %cmp.i.i.i2.i.i.jt4 = icmp eq i64 %and.i.i.i1.i.i.jt4, 0 + br i1 %cmp.i.i.i2.i.i.jt4, label %for.inc, label %if.then.i.i3.i.i.jt4 + +if.else.i.i.jt1: ; preds = %cleanup.jt1 + %and.i.i.i1.i.i.jt1 = and i64 %151, 1 + %cmp.i.i.i2.i.i.jt1 = icmp eq i64 %and.i.i.i1.i.i.jt1, 0 + br i1 %cmp.i.i.i2.i.i.jt1, label %cleanup181, label %if.then.i.i3.i.i.jt1 + +if.then.i.i3.i.i.jt0: ; preds = %if.else.i.i.jt0 invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %148) - to label %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit unwind label %terminate.lpad.i4.i.i + to label %for.inc unwind label %terminate.lpad.i4.i.i.loopexit + +if.then.i.i3.i.i.jt2: ; preds = %if.else.i.i.jt2 + invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %149) + to label %for.end unwind label %terminate.lpad.i4.i.i.loopexit.split-lp + +if.then.i.i3.i.i.jt4: ; preds = %if.else.i.i.jt4 + invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %150) + to label %for.inc unwind label %terminate.lpad.i4.i.i.loopexit + +if.then.i.i3.i.i.jt1: ; preds = %if.else.i.i.jt1 + invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %151) + to label %cleanup181 unwind label %terminate.lpad.i4.i.i.loopexit.split-lp -terminate.lpad.i4.i.i: ; preds = %if.then.i.i3.i.i - %149 = landingpad { ptr, i32 } +terminate.lpad.i4.i.i.loopexit: ; preds = %if.then.i.i3.i.i.jt4, %if.then.i.i3.i.i.jt0 + %lpad.loopexit330 = landingpad { ptr, i32 } catch ptr null - %150 = extractvalue { ptr, i32 } %149, 0 - call void @__clang_call_terminate(ptr %150) #21 + br label %terminate.lpad.i4.i.i + +terminate.lpad.i4.i.i.loopexit.split-lp: ; preds = %if.then.i.i3.i.i.jt1, %if.then.i.i3.i.i.jt2 + %lpad.loopexit.split-lp331 = landingpad { ptr, i32 } + catch ptr null + br label %terminate.lpad.i4.i.i + +terminate.lpad.i4.i.i: ; preds = %terminate.lpad.i4.i.i.loopexit.split-lp, %terminate.lpad.i4.i.i.loopexit + %lpad.phi332 = phi { ptr, i32 } [ %lpad.loopexit330, %terminate.lpad.i4.i.i.loopexit ], [ %lpad.loopexit.split-lp331, %terminate.lpad.i4.i.i.loopexit.split-lp ] + %152 = extractvalue { ptr, i32 } %lpad.phi332, 0 + call void @__clang_call_terminate(ptr %152) #21 unreachable -_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; preds = %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i, %if.else.i.i, %if.then.i.i3.i.i - switch i32 %cleanup.dest.slot.0, label %cleanup181 [ - i32 0, label %for.inc - i32 4, label %for.inc - i32 2, label %for.end - ] +for.inc.sink.split: ; preds = %cleanup.jt4, %cleanup.jt0 + %sp.2.ph = phi ptr [ %146, %cleanup.jt0 ], [ %sp.0279, %cleanup.jt4 ] + %fd_index.1.ph = phi i32 [ %inc, %cleanup.jt0 ], [ %fd_index.0280, %cleanup.jt4 ] + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #18 + br label %for.inc -for.inc: ; preds = %if.else38, %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit, %for.body, %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit - %sp.2 = phi ptr [ %sp.0279, %for.body ], [ %sp.3, %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit ], [ %sp.3, %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit ], [ %sp.0279, %if.else38 ] - %fd_index.1 = phi i32 [ %fd_index.0280, %for.body ], [ %fd_index.2, %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit ], [ %fd_index.2, %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit ], [ %fd_index.0280, %if.else38 ] - %151 = load ptr, ptr %ifa_it.0281, align 8 - %cmp33.not = icmp eq ptr %151, null +for.inc: ; preds = %for.inc.sink.split, %if.else.i.i.jt4, %if.then.i.i3.i.i.jt4, %if.else.i.i.jt0, %if.then.i.i3.i.i.jt0, %if.else38, %for.body + %sp.2 = phi ptr [ %sp.0279, %for.body ], [ %sp.0279, %if.else38 ], [ %146, %if.then.i.i3.i.i.jt0 ], [ %146, %if.else.i.i.jt0 ], [ %sp.0279, %if.then.i.i3.i.i.jt4 ], [ %sp.0279, %if.else.i.i.jt4 ], [ %sp.2.ph, %for.inc.sink.split ] + %fd_index.1 = phi i32 [ %fd_index.0280, %for.body ], [ %fd_index.0280, %if.else38 ], [ %inc, %if.then.i.i3.i.i.jt0 ], [ %inc, %if.else.i.i.jt0 ], [ %fd_index.0280, %if.then.i.i3.i.i.jt4 ], [ %fd_index.0280, %if.else.i.i.jt4 ], [ %fd_index.1.ph, %for.inc.sink.split ] + %153 = load ptr, ptr %ifa_it.0281, align 8 + %cmp33.not = icmp eq ptr %153, null br i1 %cmp33.not, label %for.end, label %for.body, !llvm.loop !30 -ehcleanup164: ; preds = %lpad75.loopexit, %lpad75.loopexit.split-lp, %lpad.i152, %ehcleanup151, %lpad134, %ehcleanup118, %lpad89 - %.pn27 = phi { ptr, i32 } [ %.pn23, %ehcleanup151 ], [ %143, %lpad134 ], [ %.pn21, %ehcleanup118 ], [ %93, %lpad89 ], [ %110, %lpad.i152 ], [ %lpad.loopexit246, %lpad75.loopexit ], [ %lpad.loopexit.split-lp247, %lpad75.loopexit.split-lp ] +ehcleanup164: ; preds = %lpad75.loopexit.loopexit, %lpad75.loopexit.loopexit.split-lp, %lpad75.loopexit.split-lp, %lpad.i152, %ehcleanup151, %lpad134, %ehcleanup118, %lpad89 + %.pn27 = phi { ptr, i32 } [ %.pn23, %ehcleanup151 ], [ %143, %lpad134 ], [ %.pn21, %ehcleanup118 ], [ %93, %lpad89 ], [ %110, %lpad.i152 ], [ %lpad.loopexit.split-lp247, %lpad75.loopexit.split-lp ], [ %lpad.loopexit328, %lpad75.loopexit.loopexit ], [ %lpad.loopexit.split-lp329, %lpad75.loopexit.loopexit.split-lp ] call void @_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %addr_str) #18 br label %ehcleanup182 -for.end: ; preds = %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit, %for.inc, %if.then.i.i.i88, %invoke.cont.i86 - %sp.1 = phi ptr [ %sp.0279, %invoke.cont.i86 ], [ %sp.0279, %if.then.i.i.i88 ], [ %sp.2, %for.inc ], [ %sp.3, %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit ] - %152 = load ptr, ptr %ifa, align 8 - call void @freeifaddrs(ptr noundef %152) #18 - %153 = load i64, ptr %err, align 8 - %cmp.i214 = icmp eq i64 %153, 0 +for.end: ; preds = %for.inc, %if.then.i.i3.i.i.jt2, %if.else.i.i.jt2, %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.jt2, %if.then.i.i.i88, %invoke.cont.i86 + %sp.1 = phi ptr [ %sp.0279, %invoke.cont.i86 ], [ %sp.0279, %if.then.i.i.i88 ], [ %sp.0279, %if.then.i.i3.i.i.jt2 ], [ %sp.0279, %if.else.i.i.jt2 ], [ %sp.0279, %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.jt2 ], [ %sp.2, %for.inc ] + %154 = load ptr, ptr %ifa, align 8 + call void @freeifaddrs(ptr noundef %154) #18 + %155 = load i64, ptr %err, align 8 + %cmp.i214 = icmp eq i64 %155, 0 br i1 %cmp.i214, label %if.else168, label %if.then167 if.then167: ; preds = %for.end - store i64 %153, ptr %agg.result, align 8 + store i64 %155, ptr %agg.result, align 8 store i64 54, ptr %err, align 8 br label %cleanup181 @@ -1410,33 +1463,33 @@ if.then170: ; preds = %if.else168 to label %invoke.cont176 unwind label %lpad175 invoke.cont176: ; preds = %if.then170 - %154 = load ptr, ptr %agg.tmp174, align 8 + %156 = load ptr, ptr %agg.tmp174, align 8 %_M_finish.i217 = getelementptr inbounds i8, ptr %agg.tmp174, i64 8 - %155 = load ptr, ptr %_M_finish.i217, align 8 - %cmp.not3.i.i.i.i218 = icmp eq ptr %154, %155 + %157 = load ptr, ptr %_M_finish.i217, align 8 + %cmp.not3.i.i.i.i218 = icmp eq ptr %156, %157 br i1 %cmp.not3.i.i.i.i218, label %invoke.cont.i230, label %for.body.i.i.i.i219 for.body.i.i.i.i219: ; preds = %invoke.cont176, %_ZSt8_DestroyIN4absl12lts_202308026StatusEEvPT_.exit.i.i.i.i225 - %__first.addr.04.i.i.i.i220 = phi ptr [ %incdec.ptr.i.i.i.i226, %_ZSt8_DestroyIN4absl12lts_202308026StatusEEvPT_.exit.i.i.i.i225 ], [ %154, %invoke.cont176 ] - %156 = load i64, ptr %__first.addr.04.i.i.i.i220, align 8 - %and.i.i.i.i.i.i.i.i221 = and i64 %156, 1 + %__first.addr.04.i.i.i.i220 = phi ptr [ %incdec.ptr.i.i.i.i226, %_ZSt8_DestroyIN4absl12lts_202308026StatusEEvPT_.exit.i.i.i.i225 ], [ %156, %invoke.cont176 ] + %158 = load i64, ptr %__first.addr.04.i.i.i.i220, align 8 + %and.i.i.i.i.i.i.i.i221 = and i64 %158, 1 %cmp.i.i.i.i.i.i.i.i222 = icmp eq i64 %and.i.i.i.i.i.i.i.i221, 0 br i1 %cmp.i.i.i.i.i.i.i.i222, label %_ZSt8_DestroyIN4absl12lts_202308026StatusEEvPT_.exit.i.i.i.i225, label %if.then.i.i.i.i.i.i.i223 if.then.i.i.i.i.i.i.i223: ; preds = %for.body.i.i.i.i219 - invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %156) + invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %158) to label %_ZSt8_DestroyIN4absl12lts_202308026StatusEEvPT_.exit.i.i.i.i225 unwind label %terminate.lpad.i.i.i.i.i.i224 terminate.lpad.i.i.i.i.i.i224: ; preds = %if.then.i.i.i.i.i.i.i223 - %157 = landingpad { ptr, i32 } + %159 = landingpad { ptr, i32 } catch ptr null - %158 = extractvalue { ptr, i32 } %157, 0 - call void @__clang_call_terminate(ptr %158) #21 + %160 = extractvalue { ptr, i32 } %159, 0 + call void @__clang_call_terminate(ptr %160) #21 unreachable _ZSt8_DestroyIN4absl12lts_202308026StatusEEvPT_.exit.i.i.i.i225: ; preds = %if.then.i.i.i.i.i.i.i223, %for.body.i.i.i.i219 %incdec.ptr.i.i.i.i226 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i220, i64 8 - %cmp.not.i.i.i.i227 = icmp eq ptr %incdec.ptr.i.i.i.i226, %155 + %cmp.not.i.i.i.i227 = icmp eq ptr %incdec.ptr.i.i.i.i226, %157 br i1 %cmp.not.i.i.i.i227, label %invoke.contthread-pre-split.i228, label %for.body.i.i.i.i219, !llvm.loop !18 invoke.contthread-pre-split.i228: ; preds = %_ZSt8_DestroyIN4absl12lts_202308026StatusEEvPT_.exit.i.i.i.i225 @@ -1444,49 +1497,49 @@ invoke.contthread-pre-split.i228: ; preds = %_ZSt8_DestroyIN4abs br label %invoke.cont.i230 invoke.cont.i230: ; preds = %invoke.contthread-pre-split.i228, %invoke.cont176 - %159 = phi ptr [ %.pr.i229, %invoke.contthread-pre-split.i228 ], [ %154, %invoke.cont176 ] - %tobool.not.i.i.i231 = icmp eq ptr %159, null + %161 = phi ptr [ %.pr.i229, %invoke.contthread-pre-split.i228 ], [ %156, %invoke.cont176 ] + %tobool.not.i.i.i231 = icmp eq ptr %161, null br i1 %tobool.not.i.i.i231, label %cleanup181, label %if.then.i.i.i232 if.then.i.i.i232: ; preds = %invoke.cont.i230 - call void @_ZdlPv(ptr noundef nonnull %159) #22 + call void @_ZdlPv(ptr noundef nonnull %161) #22 br label %cleanup181 lpad175: ; preds = %if.then170 - %160 = landingpad { ptr, i32 } + %162 = landingpad { ptr, i32 } cleanup call void @_ZNSt6vectorIN4absl12lts_202308026StatusESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %agg.tmp174) #18 br label %ehcleanup182 if.else178: ; preds = %if.else168 %port179 = getelementptr inbounds i8, ptr %sp.1, i64 156 - %161 = load i32, ptr %port179, align 4 - store i32 %161, ptr %out_port, align 4 + %163 = load i32, ptr %port179, align 4 + store i32 %163, ptr %out_port, align 4 store i64 0, ptr %agg.result, align 8, !alias.scope !31 br label %cleanup181 -cleanup181: ; preds = %_ZN4absl12lts_202308028StatusOrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit, %if.then.i.i.i232, %invoke.cont.i230, %if.then.i.i.i47, %invoke.cont.i, %if.else178, %if.then167, %_ZN4absl12lts_202308026StatusD2Ev.exit56, %if.then8 - %162 = load i64, ptr %err, align 8 - %and.i.i.i234 = and i64 %162, 1 +cleanup181: ; preds = %if.then.i.i3.i.i.jt1, %if.else.i.i.jt1, %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.jt1, %if.then.i.i.i232, %invoke.cont.i230, %if.then.i.i.i47, %invoke.cont.i, %if.else178, %if.then167, %_ZN4absl12lts_202308026StatusD2Ev.exit56, %if.then8 + %164 = load i64, ptr %err, align 8 + %and.i.i.i234 = and i64 %164, 1 %cmp.i.i.i235 = icmp eq i64 %and.i.i.i234, 0 br i1 %cmp.i.i.i235, label %_ZN4absl12lts_202308026StatusD2Ev.exit239, label %if.then.i.i236 if.then.i.i236: ; preds = %cleanup181 - invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %162) + invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %164) to label %_ZN4absl12lts_202308026StatusD2Ev.exit239 unwind label %terminate.lpad.i237 terminate.lpad.i237: ; preds = %if.then.i.i236 - %163 = landingpad { ptr, i32 } + %165 = landingpad { ptr, i32 } catch ptr null - %164 = extractvalue { ptr, i32 } %163, 0 - call void @__clang_call_terminate(ptr %164) #21 + %166 = extractvalue { ptr, i32 } %165, 0 + call void @__clang_call_terminate(ptr %166) #21 unreachable _ZN4absl12lts_202308026StatusD2Ev.exit239: ; preds = %cleanup181, %if.then.i.i236 ret void ehcleanup182: ; preds = %lpad.loopexit, %lpad.loopexit.split-lp, %ehcleanup57.i, %lpad175, %ehcleanup164, %ehcleanup72, %lpad29, %lpad14, %ehcleanup - %.pn29 = phi { ptr, i32 } [ %59, %lpad14 ], [ %66, %lpad29 ], [ %160, %lpad175 ], [ %.pn27, %ehcleanup164 ], [ %.pn19, %ehcleanup72 ], [ %.pn, %ehcleanup ], [ %.pn5.i, %ehcleanup57.i ], [ %lpad.loopexit244, %lpad.loopexit ], [ %lpad.loopexit.split-lp245, %lpad.loopexit.split-lp ] + %.pn29 = phi { ptr, i32 } [ %59, %lpad14 ], [ %66, %lpad29 ], [ %162, %lpad175 ], [ %.pn27, %ehcleanup164 ], [ %.pn19, %ehcleanup72 ], [ %.pn, %ehcleanup ], [ %.pn5.i, %ehcleanup57.i ], [ %lpad.loopexit244, %lpad.loopexit ], [ %lpad.loopexit.split-lp245, %lpad.loopexit.split-lp ] call void @_ZN4absl12lts_202308026StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %err) #18 resume { ptr, i32 } %.pn29 } diff --git a/bench/hermes/optimized/ConvertUTF.cpp.ll b/bench/hermes/optimized/ConvertUTF.cpp.ll index ac94517e13a..f8d68ac5912 100644 --- a/bench/hermes/optimized/ConvertUTF.cpp.ll +++ b/bench/hermes/optimized/ConvertUTF.cpp.ll @@ -286,73 +286,76 @@ if.end30.us: ; preds = %if.then4.us, %while %ch.0.us = phi i32 [ %add11.us, %if.then9.us ], [ %conv.us, %while.body.us ], [ %conv.us, %if.then4.us ] %source.2.us = phi ptr [ %incdec.ptr12.us, %if.then9.us ], [ %incdec.ptr.us, %while.body.us ], [ %incdec.ptr.us, %if.then4.us ] %cmp31.us = icmp ult i32 %ch.0.us, 128 - br i1 %cmp31.us, label %if.end46.us, label %if.else33.us + br i1 %cmp31.us, label %if.end46.us.jt1, label %if.else33.us if.else33.us: ; preds = %if.end30.us %cmp34.us = icmp ult i32 %ch.0.us, 2048 - br i1 %cmp34.us, label %if.end46.us, label %if.else36.us + br i1 %cmp34.us, label %if.end46.us.jt2, label %if.else36.us if.else36.us: ; preds = %if.else33.us %cmp37.us = icmp ult i32 %ch.0.us, 65536 - %spec.select.us = select i1 %cmp37.us, i16 3, i16 4 - br label %if.end46.us - -if.end46.us: ; preds = %if.else36.us, %if.else33.us, %if.end30.us - %bytesToWrite.0.us = phi i16 [ 1, %if.end30.us ], [ 2, %if.else33.us ], [ %spec.select.us, %if.else36.us ] - %idx.ext.us = zext nneg i16 %bytesToWrite.0.us to i64 - %add.ptr.us = getelementptr inbounds i8, ptr %target.050.us, i64 %idx.ext.us - %cmp48.us = icmp ugt ptr %add.ptr.us, %targetEnd - br i1 %cmp48.us, label %while.end, label %if.end53.us - -if.end53.us: ; preds = %if.end46.us - switch i16 %bytesToWrite.0.us, label %default.unreachable196 [ - i16 4, label %sw.bb.us - i16 3, label %sw.bb57.us - i16 2, label %sw.bb63.us - i16 1, label %sw.bb69.us - ] + br i1 %cmp37.us, label %if.end46.us.jt3, label %if.end46.us.jt4 + +if.end46.us.jt4: ; preds = %if.else36.us + %add.ptr.us.jt4 = getelementptr inbounds i8, ptr %target.050.us, i64 4 + %cmp48.us.jt4 = icmp ugt ptr %add.ptr.us.jt4, %targetEnd + br i1 %cmp48.us.jt4, label %while.end, label %sw.bb.us + +if.end46.us.jt3: ; preds = %if.else36.us + %add.ptr.us.jt3 = getelementptr inbounds i8, ptr %target.050.us, i64 3 + %cmp48.us.jt3 = icmp ugt ptr %add.ptr.us.jt3, %targetEnd + br i1 %cmp48.us.jt3, label %while.end, label %sw.bb57.us + +if.end46.us.jt2: ; preds = %if.else33.us + %add.ptr.us.jt2 = getelementptr inbounds i8, ptr %target.050.us, i64 2 + %cmp48.us.jt2 = icmp ugt ptr %add.ptr.us.jt2, %targetEnd + br i1 %cmp48.us.jt2, label %while.end, label %sw.bb63.us -sw.bb.us: ; preds = %if.end53.us +if.end46.us.jt1: ; preds = %if.end30.us + %add.ptr.us.jt1 = getelementptr inbounds i8, ptr %target.050.us, i64 1 + %cmp48.us.jt1 = icmp ugt ptr %add.ptr.us.jt1, %targetEnd + br i1 %cmp48.us.jt1, label %while.end, label %sw.bb69.us + +sw.bb.us: ; preds = %if.end46.us.jt4 %6 = trunc i32 %ch.0.us to i8 %7 = and i8 %6, 63 %conv55.us = or disjoint i8 %7, -128 - %incdec.ptr56.us = getelementptr inbounds i8, ptr %add.ptr.us, i64 -1 + %incdec.ptr56.us = getelementptr inbounds i8, ptr %target.050.us, i64 3 store i8 %conv55.us, ptr %incdec.ptr56.us, align 1 %shr.us = lshr i32 %ch.0.us, 6 br label %sw.bb57.us -sw.bb57.us: ; preds = %sw.bb.us, %if.end53.us - %ch.2.us = phi i32 [ %ch.0.us, %if.end53.us ], [ %shr.us, %sw.bb.us ] - %target.3.us = phi ptr [ %add.ptr.us, %if.end53.us ], [ %incdec.ptr56.us, %sw.bb.us ] +sw.bb57.us: ; preds = %if.end46.us.jt3, %sw.bb.us + %idx.ext.us197 = phi i64 [ 4, %sw.bb.us ], [ 3, %if.end46.us.jt3 ] + %ch.2.us = phi i32 [ %shr.us, %sw.bb.us ], [ %ch.0.us, %if.end46.us.jt3 ] %8 = trunc i32 %ch.2.us to i8 %9 = and i8 %8, 63 %conv60.us = or disjoint i8 %9, -128 - %incdec.ptr61.us = getelementptr inbounds i8, ptr %target.3.us, i64 -1 + %incdec.ptr61.us = getelementptr inbounds i8, ptr %target.050.us, i64 2 store i8 %conv60.us, ptr %incdec.ptr61.us, align 1 %shr62.us = lshr i32 %ch.2.us, 6 br label %sw.bb63.us -sw.bb63.us: ; preds = %sw.bb57.us, %if.end53.us - %ch.3.us = phi i32 [ %ch.0.us, %if.end53.us ], [ %shr62.us, %sw.bb57.us ] - %target.4.us = phi ptr [ %add.ptr.us, %if.end53.us ], [ %incdec.ptr61.us, %sw.bb57.us ] +sw.bb63.us: ; preds = %if.end46.us.jt2, %sw.bb57.us + %idx.ext.us198 = phi i64 [ %idx.ext.us197, %sw.bb57.us ], [ 2, %if.end46.us.jt2 ] + %ch.3.us = phi i32 [ %shr62.us, %sw.bb57.us ], [ %ch.0.us, %if.end46.us.jt2 ] %10 = trunc i32 %ch.3.us to i8 %11 = and i8 %10, 63 %conv66.us = or disjoint i8 %11, -128 - %incdec.ptr67.us = getelementptr inbounds i8, ptr %target.4.us, i64 -1 + %incdec.ptr67.us = getelementptr inbounds i8, ptr %target.050.us, i64 1 store i8 %conv66.us, ptr %incdec.ptr67.us, align 1 %shr68.us = lshr i32 %ch.3.us, 6 br label %sw.bb69.us -sw.bb69.us: ; preds = %sw.bb63.us, %if.end53.us - %ch.4.us = phi i32 [ %ch.0.us, %if.end53.us ], [ %shr68.us, %sw.bb63.us ] - %target.5.us = phi ptr [ %add.ptr.us, %if.end53.us ], [ %incdec.ptr67.us, %sw.bb63.us ] - %arrayidx.us = getelementptr inbounds [7 x i8], ptr @_ZN4llvhL13firstByteMarkE, i64 0, i64 %idx.ext.us +sw.bb69.us: ; preds = %if.end46.us.jt1, %sw.bb63.us + %idx.ext.us199 = phi i64 [ %idx.ext.us198, %sw.bb63.us ], [ 1, %if.end46.us.jt1 ] + %ch.4.us = phi i32 [ %shr68.us, %sw.bb63.us ], [ %ch.0.us, %if.end46.us.jt1 ] + %arrayidx.us = getelementptr inbounds [7 x i8], ptr @_ZN4llvhL13firstByteMarkE, i64 0, i64 %idx.ext.us199 %12 = load i8, ptr %arrayidx.us, align 1 %13 = trunc i32 %ch.4.us to i8 %conv72.us = or i8 %12, %13 - %incdec.ptr73.us = getelementptr inbounds i8, ptr %target.5.us, i64 -1 - store i8 %conv72.us, ptr %incdec.ptr73.us, align 1 - %add.ptr76.us = getelementptr inbounds i8, ptr %incdec.ptr73.us, i64 %idx.ext.us + store i8 %conv72.us, ptr %target.050.us, align 1 + %add.ptr76.us = getelementptr inbounds i8, ptr %target.050.us, i64 %idx.ext.us199 %cmp.us = icmp ult ptr %source.2.us, %sourceEnd br i1 %cmp.us, label %while.body.us, label %while.end, !llvm.loop !7 @@ -460,13 +463,13 @@ sw.bb69.us126: ; preds = %sw.bb63.us120, %if. %cmp.us133 = icmp ult ptr %source.2.us97, %sourceEnd br i1 %cmp.us133, label %while.body.us77, label %while.end, !llvm.loop !7 -default.unreachable196: ; preds = %if.end53.us, %if.end53.us109 +default.unreachable196: ; preds = %if.end53.us109 unreachable -while.end: ; preds = %sw.bb69.us, %if.then.us, %if.end46.us, %sw.bb69.us126, %if.then4.us86, %if.then.us84, %while.body.us77, %if.end46.us104, %entry - %target.0.lcssa = phi ptr [ %1, %entry ], [ %target.050.us79, %if.end46.us104 ], [ %target.050.us79, %while.body.us77 ], [ %target.050.us79, %if.then.us84 ], [ %target.050.us79, %if.then4.us86 ], [ %add.ptr76.us132, %sw.bb69.us126 ], [ %target.050.us, %if.end46.us ], [ %target.050.us, %if.then.us ], [ %add.ptr76.us, %sw.bb69.us ] - %source.0.lcssa = phi ptr [ %0, %entry ], [ %source.051.us78, %if.end46.us104 ], [ %source.051.us78, %while.body.us77 ], [ %source.051.us78, %if.then.us84 ], [ %source.051.us78, %if.then4.us86 ], [ %source.2.us97, %sw.bb69.us126 ], [ %source.051.us, %if.end46.us ], [ %source.051.us, %if.then.us ], [ %source.2.us, %sw.bb69.us ] - %result.0 = phi i32 [ 0, %entry ], [ 2, %if.end46.us104 ], [ 3, %while.body.us77 ], [ 1, %if.then.us84 ], [ 3, %if.then4.us86 ], [ 0, %sw.bb69.us126 ], [ 2, %if.end46.us ], [ 1, %if.then.us ], [ 0, %sw.bb69.us ] +while.end: ; preds = %sw.bb69.us, %if.then.us, %if.end46.us.jt1, %if.end46.us.jt2, %if.end46.us.jt3, %if.end46.us.jt4, %sw.bb69.us126, %if.then4.us86, %if.then.us84, %while.body.us77, %if.end46.us104, %entry + %target.0.lcssa = phi ptr [ %1, %entry ], [ %target.050.us79, %if.end46.us104 ], [ %target.050.us79, %while.body.us77 ], [ %target.050.us79, %if.then.us84 ], [ %target.050.us79, %if.then4.us86 ], [ %add.ptr76.us132, %sw.bb69.us126 ], [ %target.050.us, %if.end46.us.jt4 ], [ %target.050.us, %if.end46.us.jt3 ], [ %target.050.us, %if.end46.us.jt2 ], [ %target.050.us, %if.end46.us.jt1 ], [ %target.050.us, %if.then.us ], [ %add.ptr76.us, %sw.bb69.us ] + %source.0.lcssa = phi ptr [ %0, %entry ], [ %source.051.us78, %if.end46.us104 ], [ %source.051.us78, %while.body.us77 ], [ %source.051.us78, %if.then.us84 ], [ %source.051.us78, %if.then4.us86 ], [ %source.2.us97, %sw.bb69.us126 ], [ %source.051.us, %if.end46.us.jt4 ], [ %source.051.us, %if.end46.us.jt3 ], [ %source.051.us, %if.end46.us.jt2 ], [ %source.051.us, %if.end46.us.jt1 ], [ %source.051.us, %if.then.us ], [ %source.2.us, %sw.bb69.us ] + %result.0 = phi i32 [ 0, %entry ], [ 2, %if.end46.us104 ], [ 3, %while.body.us77 ], [ 1, %if.then.us84 ], [ 3, %if.then4.us86 ], [ 0, %sw.bb69.us126 ], [ 2, %if.end46.us.jt4 ], [ 2, %if.end46.us.jt3 ], [ 2, %if.end46.us.jt2 ], [ 2, %if.end46.us.jt1 ], [ 1, %if.then.us ], [ 0, %sw.bb69.us ] store ptr %source.0.lcssa, ptr %sourceStart, align 8 store ptr %target.0.lcssa, ptr %targetStart, align 8 ret i32 %result.0 @@ -485,87 +488,91 @@ while.body.lr.ph: ; preds = %entry br i1 %cmp1, label %while.body, label %while.body.us while.body.us: ; preds = %while.body.lr.ph, %sw.bb44.us - %result.038.us = phi i32 [ %result.2.us, %sw.bb44.us ], [ 0, %while.body.lr.ph ] + %result.038.us = phi i32 [ %result.2.us60, %sw.bb44.us ], [ 0, %while.body.lr.ph ] %source.037.us = phi ptr [ %incdec.ptr.us, %sw.bb44.us ], [ %0, %while.body.lr.ph ] %target.036.us = phi ptr [ %add.ptr51.us, %sw.bb44.us ], [ %1, %while.body.lr.ph ] %incdec.ptr.us = getelementptr inbounds i8, ptr %source.037.us, i64 4 %2 = load i32, ptr %source.037.us, align 4 %cmp7.us = icmp ult i32 %2, 128 - br i1 %cmp7.us, label %if.end21.us, label %if.else.us + br i1 %cmp7.us, label %if.end21.us.jt1, label %if.else.us if.else.us: ; preds = %while.body.us %cmp9.us = icmp ult i32 %2, 2048 - br i1 %cmp9.us, label %if.end21.us, label %if.else11.us + br i1 %cmp9.us, label %if.end21.us.jt2, label %if.else11.us if.else11.us: ; preds = %if.else.us %cmp12.us = icmp ult i32 %2, 65536 - br i1 %cmp12.us, label %if.end21.us, label %if.else14.us + br i1 %cmp12.us, label %if.end21.us.jt3, label %if.else14.us if.else14.us: ; preds = %if.else11.us %cmp15.us = icmp ult i32 %2, 1114112 - %..us = select i1 %cmp15.us, i32 %2, i32 65533 - %.32.us = select i1 %cmp15.us, i16 4, i16 3 - %result.0..us = select i1 %cmp15.us, i32 %result.038.us, i32 3 - br label %if.end21.us - -if.end21.us: ; preds = %if.else14.us, %if.else11.us, %if.else.us, %while.body.us - %ch.0.us = phi i32 [ %2, %while.body.us ], [ %2, %if.else.us ], [ %2, %if.else11.us ], [ %..us, %if.else14.us ] - %bytesToWrite.0.us = phi i16 [ 1, %while.body.us ], [ 2, %if.else.us ], [ 3, %if.else11.us ], [ %.32.us, %if.else14.us ] - %result.2.us = phi i32 [ %result.038.us, %while.body.us ], [ %result.038.us, %if.else.us ], [ %result.038.us, %if.else11.us ], [ %result.0..us, %if.else14.us ] - %idx.ext.us = zext nneg i16 %bytesToWrite.0.us to i64 - %add.ptr.us = getelementptr inbounds i8, ptr %target.036.us, i64 %idx.ext.us - %cmp22.us = icmp ugt ptr %add.ptr.us, %targetEnd - br i1 %cmp22.us, label %while.end, label %if.end28.us - -if.end28.us: ; preds = %if.end21.us - switch i16 %bytesToWrite.0.us, label %default.unreachable57 [ - i16 4, label %sw.bb.us - i16 3, label %sw.bb32.us - i16 2, label %sw.bb38.us - i16 1, label %sw.bb44.us - ] - -sw.bb.us: ; preds = %if.end28.us - %3 = trunc i32 %ch.0.us to i8 + br i1 %cmp15.us, label %if.end21.us.jt4, label %if.end21.us.jt3 + +if.end21.us.jt4: ; preds = %if.else14.us + %add.ptr.us.jt4 = getelementptr inbounds i8, ptr %target.036.us, i64 4 + %cmp22.us.jt4 = icmp ugt ptr %add.ptr.us.jt4, %targetEnd + br i1 %cmp22.us.jt4, label %while.end, label %sw.bb.us + +if.end21.us.jt3: ; preds = %if.else14.us, %if.else11.us + %ch.0.us.jt3 = phi i32 [ %2, %if.else11.us ], [ 65533, %if.else14.us ] + %result.2.us.jt3 = phi i32 [ %result.038.us, %if.else11.us ], [ 3, %if.else14.us ] + %add.ptr.us.jt3 = getelementptr inbounds i8, ptr %target.036.us, i64 3 + %cmp22.us.jt3 = icmp ugt ptr %add.ptr.us.jt3, %targetEnd + br i1 %cmp22.us.jt3, label %while.end, label %sw.bb32.us + +if.end21.us.jt2: ; preds = %if.else.us + %add.ptr.us.jt2 = getelementptr inbounds i8, ptr %target.036.us, i64 2 + %cmp22.us.jt2 = icmp ugt ptr %add.ptr.us.jt2, %targetEnd + br i1 %cmp22.us.jt2, label %while.end, label %sw.bb38.us + +if.end21.us.jt1: ; preds = %while.body.us + %add.ptr.us.jt1 = getelementptr inbounds i8, ptr %target.036.us, i64 1 + %cmp22.us.jt1 = icmp ugt ptr %add.ptr.us.jt1, %targetEnd + br i1 %cmp22.us.jt1, label %while.end, label %sw.bb44.us + +sw.bb.us: ; preds = %if.end21.us.jt4 + %3 = trunc i32 %2 to i8 %4 = and i8 %3, 63 %conv30.us = or disjoint i8 %4, -128 - %incdec.ptr31.us = getelementptr inbounds i8, ptr %add.ptr.us, i64 -1 + %incdec.ptr31.us = getelementptr inbounds i8, ptr %target.036.us, i64 3 store i8 %conv30.us, ptr %incdec.ptr31.us, align 1 - %shr.us = lshr i32 %ch.0.us, 6 + %shr.us = lshr i32 %2, 6 br label %sw.bb32.us -sw.bb32.us: ; preds = %sw.bb.us, %if.end28.us - %target.3.us = phi ptr [ %add.ptr.us, %if.end28.us ], [ %incdec.ptr31.us, %sw.bb.us ] - %ch.1.us = phi i32 [ %ch.0.us, %if.end28.us ], [ %shr.us, %sw.bb.us ] +sw.bb32.us: ; preds = %if.end21.us.jt3, %sw.bb.us + %idx.ext.us61 = phi i64 [ 4, %sw.bb.us ], [ 3, %if.end21.us.jt3 ] + %result.2.us58 = phi i32 [ %result.038.us, %sw.bb.us ], [ %result.2.us.jt3, %if.end21.us.jt3 ] + %ch.1.us = phi i32 [ %shr.us, %sw.bb.us ], [ %ch.0.us.jt3, %if.end21.us.jt3 ] %5 = trunc i32 %ch.1.us to i8 %6 = and i8 %5, 63 %conv35.us = or disjoint i8 %6, -128 - %incdec.ptr36.us = getelementptr inbounds i8, ptr %target.3.us, i64 -1 + %incdec.ptr36.us = getelementptr inbounds i8, ptr %target.036.us, i64 2 store i8 %conv35.us, ptr %incdec.ptr36.us, align 1 %shr37.us = lshr i32 %ch.1.us, 6 br label %sw.bb38.us -sw.bb38.us: ; preds = %sw.bb32.us, %if.end28.us - %target.4.us = phi ptr [ %add.ptr.us, %if.end28.us ], [ %incdec.ptr36.us, %sw.bb32.us ] - %ch.2.us = phi i32 [ %ch.0.us, %if.end28.us ], [ %shr37.us, %sw.bb32.us ] +sw.bb38.us: ; preds = %if.end21.us.jt2, %sw.bb32.us + %idx.ext.us62 = phi i64 [ %idx.ext.us61, %sw.bb32.us ], [ 2, %if.end21.us.jt2 ] + %result.2.us59 = phi i32 [ %result.2.us58, %sw.bb32.us ], [ %result.038.us, %if.end21.us.jt2 ] + %ch.2.us = phi i32 [ %shr37.us, %sw.bb32.us ], [ %2, %if.end21.us.jt2 ] %7 = trunc i32 %ch.2.us to i8 %8 = and i8 %7, 63 %conv41.us = or disjoint i8 %8, -128 - %incdec.ptr42.us = getelementptr inbounds i8, ptr %target.4.us, i64 -1 + %incdec.ptr42.us = getelementptr inbounds i8, ptr %target.036.us, i64 1 store i8 %conv41.us, ptr %incdec.ptr42.us, align 1 %shr43.us = lshr i32 %ch.2.us, 6 br label %sw.bb44.us -sw.bb44.us: ; preds = %sw.bb38.us, %if.end28.us - %target.5.us = phi ptr [ %add.ptr.us, %if.end28.us ], [ %incdec.ptr42.us, %sw.bb38.us ] - %ch.3.us = phi i32 [ %ch.0.us, %if.end28.us ], [ %shr43.us, %sw.bb38.us ] - %arrayidx.us = getelementptr inbounds [7 x i8], ptr @_ZN4llvhL13firstByteMarkE, i64 0, i64 %idx.ext.us +sw.bb44.us: ; preds = %if.end21.us.jt1, %sw.bb38.us + %idx.ext.us63 = phi i64 [ %idx.ext.us62, %sw.bb38.us ], [ 1, %if.end21.us.jt1 ] + %result.2.us60 = phi i32 [ %result.2.us59, %sw.bb38.us ], [ %result.038.us, %if.end21.us.jt1 ] + %ch.3.us = phi i32 [ %shr43.us, %sw.bb38.us ], [ %2, %if.end21.us.jt1 ] + %arrayidx.us = getelementptr inbounds [7 x i8], ptr @_ZN4llvhL13firstByteMarkE, i64 0, i64 %idx.ext.us63 %9 = load i8, ptr %arrayidx.us, align 1 %10 = trunc i32 %ch.3.us to i8 %conv47.us = or i8 %9, %10 - %incdec.ptr48.us = getelementptr inbounds i8, ptr %target.5.us, i64 -1 - store i8 %conv47.us, ptr %incdec.ptr48.us, align 1 - %add.ptr51.us = getelementptr inbounds i8, ptr %incdec.ptr48.us, i64 %idx.ext.us + store i8 %conv47.us, ptr %target.036.us, align 1 + %add.ptr51.us = getelementptr inbounds i8, ptr %target.036.us, i64 %idx.ext.us63 %cmp.us = icmp ult ptr %incdec.ptr.us, %sourceEnd br i1 %cmp.us, label %while.body.us, label %while.end, !llvm.loop !8 @@ -659,13 +666,13 @@ sw.bb44: ; preds = %sw.bb38, %if.end28 %cmp = icmp ult ptr %incdec.ptr, %sourceEnd br i1 %cmp, label %while.body, label %while.end, !llvm.loop !8 -default.unreachable57: ; preds = %if.end28.us, %if.end28 +default.unreachable57: ; preds = %if.end28 unreachable -while.end: ; preds = %sw.bb44.us, %if.end21.us, %sw.bb44, %while.body, %if.end21, %entry - %target.0.lcssa = phi ptr [ %1, %entry ], [ %target.036, %if.end21 ], [ %target.036, %while.body ], [ %add.ptr51, %sw.bb44 ], [ %target.036.us, %if.end21.us ], [ %add.ptr51.us, %sw.bb44.us ] - %source.0.lcssa = phi ptr [ %0, %entry ], [ %source.037, %if.end21 ], [ %source.037, %while.body ], [ %incdec.ptr, %sw.bb44 ], [ %source.037.us, %if.end21.us ], [ %incdec.ptr.us, %sw.bb44.us ] - %result.1 = phi i32 [ 0, %entry ], [ 2, %if.end21 ], [ 3, %while.body ], [ %result.2, %sw.bb44 ], [ 2, %if.end21.us ], [ %result.2.us, %sw.bb44.us ] +while.end: ; preds = %sw.bb44.us, %if.end21.us.jt1, %if.end21.us.jt2, %if.end21.us.jt3, %if.end21.us.jt4, %sw.bb44, %while.body, %if.end21, %entry + %target.0.lcssa = phi ptr [ %1, %entry ], [ %target.036, %if.end21 ], [ %target.036, %while.body ], [ %add.ptr51, %sw.bb44 ], [ %target.036.us, %if.end21.us.jt4 ], [ %target.036.us, %if.end21.us.jt3 ], [ %target.036.us, %if.end21.us.jt2 ], [ %target.036.us, %if.end21.us.jt1 ], [ %add.ptr51.us, %sw.bb44.us ] + %source.0.lcssa = phi ptr [ %0, %entry ], [ %source.037, %if.end21 ], [ %source.037, %while.body ], [ %incdec.ptr, %sw.bb44 ], [ %source.037.us, %if.end21.us.jt4 ], [ %source.037.us, %if.end21.us.jt3 ], [ %source.037.us, %if.end21.us.jt2 ], [ %source.037.us, %if.end21.us.jt1 ], [ %incdec.ptr.us, %sw.bb44.us ] + %result.1 = phi i32 [ 0, %entry ], [ 2, %if.end21 ], [ 3, %while.body ], [ %result.2, %sw.bb44 ], [ 2, %if.end21.us.jt4 ], [ 2, %if.end21.us.jt3 ], [ 2, %if.end21.us.jt2 ], [ 2, %if.end21.us.jt1 ], [ %result.2.us60, %sw.bb44.us ] store ptr %source.0.lcssa, ptr %sourceStart, align 8 store ptr %target.0.lcssa, ptr %targetStart, align 8 ret i32 %result.1 diff --git a/bench/hwloc/optimized/lstopo-lstopo.ll b/bench/hwloc/optimized/lstopo-lstopo.ll index be892c48aaf..bf0db1eca65 100644 --- a/bench/hwloc/optimized/lstopo-lstopo.ll +++ b/bench/hwloc/optimized/lstopo-lstopo.ll @@ -3127,10 +3127,7 @@ sub_0916: ; preds = %908 %947 = call ptr @getenv(ptr noundef nonnull @.str.252) #26 %948 = icmp eq ptr %947, null %or.cond27 = or i1 %946, %948 - %not.or.cond27 = xor i1 %or.cond27, true - %output_console.output_x11 = select i1 %or.cond27, ptr @output_console, ptr @output_x11 - %.794 = select i1 %or.cond27, i32 2, i32 1 - br label %.thread854 + br i1 %or.cond27, label %.thread854, label %.794.si.unfold.false 949: ; preds = %.thread841 %950 = call ptr @getenv(ptr noundef nonnull @.str.252) #26 @@ -3180,14 +3177,17 @@ sub_0916: ; preds = %908 %967 = call i64 @fwrite(ptr nonnull @.str.254, i64 26, i64 1, ptr %966) #32 br label %.loopexit959 -.thread854: ; preds = %.thread841, %928, %.tail915, %.tail915.thread, %949, %945, %964, %963, %962, %961, %960, %959, %958, %957, %956, %955, %954 - %.3848857 = phi ptr [ %.3, %964 ], [ %.3, %963 ], [ %.3, %962 ], [ %.3, %961 ], [ %.3, %960 ], [ %.3, %959 ], [ %.3, %958 ], [ %.3, %957 ], [ %.3, %956 ], [ %.3, %955 ], [ %.3, %954 ], [ %.3852, %945 ], [ %.3, %949 ], [ @.str, %.tail915.thread ], [ @.str, %.tail915 ], [ %.3852, %928 ], [ %.3, %.thread841 ] - %.not636 = phi i1 [ true, %964 ], [ true, %963 ], [ true, %962 ], [ true, %961 ], [ true, %960 ], [ true, %959 ], [ true, %958 ], [ true, %957 ], [ true, %956 ], [ true, %955 ], [ true, %954 ], [ %not.or.cond27, %945 ], [ true, %949 ], [ false, %.tail915.thread ], [ false, %.tail915 ], [ false, %928 ], [ false, %.thread841 ] - %.0574 = phi ptr [ @output_shmem, %964 ], [ @output_xml, %963 ], [ @output_nativesvg, %962 ], [ @output_cairosvg, %961 ], [ @output_ps, %960 ], [ @output_pdf, %959 ], [ @output_png, %958 ], [ @output_fig, %957 ], [ @output_tikz, %956 ], [ @output_ascii, %955 ], [ @output_synthetic, %954 ], [ %output_console.output_x11, %945 ], [ @output_x11, %949 ], [ @output_console, %.tail915.thread ], [ @output_console, %.tail915 ], [ @output_console, %928 ], [ @output_console, %.thread841 ] - %968 = phi i1 [ false, %964 ], [ true, %963 ], [ false, %962 ], [ false, %961 ], [ false, %960 ], [ false, %959 ], [ false, %958 ], [ false, %957 ], [ false, %956 ], [ false, %955 ], [ false, %954 ], [ false, %945 ], [ false, %949 ], [ false, %.tail915.thread ], [ false, %.tail915 ], [ false, %928 ], [ false, %.thread841 ] - %969 = phi i1 [ false, %964 ], [ false, %963 ], [ false, %962 ], [ false, %961 ], [ false, %960 ], [ false, %959 ], [ false, %958 ], [ false, %957 ], [ false, %956 ], [ false, %955 ], [ false, %954 ], [ %not.or.cond27, %945 ], [ true, %949 ], [ false, %.tail915.thread ], [ false, %.tail915 ], [ false, %928 ], [ false, %.thread841 ] - %970 = phi i1 [ true, %964 ], [ true, %963 ], [ true, %962 ], [ true, %961 ], [ true, %960 ], [ true, %959 ], [ true, %958 ], [ true, %957 ], [ true, %956 ], [ true, %955 ], [ true, %954 ], [ %or.cond27, %945 ], [ false, %949 ], [ true, %.tail915.thread ], [ true, %.tail915 ], [ true, %928 ], [ true, %.thread841 ] - %.4565 = phi i32 [ %.2563, %964 ], [ %.2563, %963 ], [ %.2563, %962 ], [ 11, %961 ], [ %.2563, %960 ], [ %.2563, %959 ], [ %.2563, %958 ], [ %.2563, %957 ], [ %.2563, %956 ], [ %.2563, %955 ], [ %.2563, %954 ], [ %.794, %945 ], [ 1, %949 ], [ 2, %.tail915.thread ], [ 2, %.tail915 ], [ 2, %928 ], [ %.2563, %.thread841 ] +.794.si.unfold.false: ; preds = %945 + br label %.thread854 + +.thread854: ; preds = %945, %.794.si.unfold.false, %.thread841, %928, %.tail915, %.tail915.thread, %949, %964, %963, %962, %961, %960, %959, %958, %957, %956, %955, %954 + %.3848857 = phi ptr [ %.3, %964 ], [ %.3, %963 ], [ %.3, %962 ], [ %.3, %961 ], [ %.3, %960 ], [ %.3, %959 ], [ %.3, %958 ], [ %.3, %957 ], [ %.3, %956 ], [ %.3, %955 ], [ %.3, %954 ], [ %.3852, %945 ], [ %.3, %949 ], [ @.str, %.tail915.thread ], [ @.str, %.tail915 ], [ %.3852, %928 ], [ %.3, %.thread841 ], [ %.3852, %.794.si.unfold.false ] + %.not636 = phi i1 [ true, %964 ], [ true, %963 ], [ true, %962 ], [ true, %961 ], [ true, %960 ], [ true, %959 ], [ true, %958 ], [ true, %957 ], [ true, %956 ], [ true, %955 ], [ true, %954 ], [ false, %945 ], [ true, %949 ], [ false, %.tail915.thread ], [ false, %.tail915 ], [ false, %928 ], [ false, %.thread841 ], [ true, %.794.si.unfold.false ] + %.0574 = phi ptr [ @output_shmem, %964 ], [ @output_xml, %963 ], [ @output_nativesvg, %962 ], [ @output_cairosvg, %961 ], [ @output_ps, %960 ], [ @output_pdf, %959 ], [ @output_png, %958 ], [ @output_fig, %957 ], [ @output_tikz, %956 ], [ @output_ascii, %955 ], [ @output_synthetic, %954 ], [ @output_console, %945 ], [ @output_x11, %949 ], [ @output_console, %.tail915.thread ], [ @output_console, %.tail915 ], [ @output_console, %928 ], [ @output_console, %.thread841 ], [ @output_x11, %.794.si.unfold.false ] + %968 = phi i1 [ false, %964 ], [ true, %963 ], [ false, %962 ], [ false, %961 ], [ false, %960 ], [ false, %959 ], [ false, %958 ], [ false, %957 ], [ false, %956 ], [ false, %955 ], [ false, %954 ], [ false, %945 ], [ false, %949 ], [ false, %.tail915.thread ], [ false, %.tail915 ], [ false, %928 ], [ false, %.thread841 ], [ false, %.794.si.unfold.false ] + %969 = phi i1 [ false, %964 ], [ false, %963 ], [ false, %962 ], [ false, %961 ], [ false, %960 ], [ false, %959 ], [ false, %958 ], [ false, %957 ], [ false, %956 ], [ false, %955 ], [ false, %954 ], [ false, %945 ], [ true, %949 ], [ false, %.tail915.thread ], [ false, %.tail915 ], [ false, %928 ], [ false, %.thread841 ], [ true, %.794.si.unfold.false ] + %970 = phi i1 [ true, %964 ], [ true, %963 ], [ true, %962 ], [ true, %961 ], [ true, %960 ], [ true, %959 ], [ true, %958 ], [ true, %957 ], [ true, %956 ], [ true, %955 ], [ true, %954 ], [ true, %945 ], [ false, %949 ], [ true, %.tail915.thread ], [ true, %.tail915 ], [ true, %928 ], [ true, %.thread841 ], [ false, %.794.si.unfold.false ] + %.4565 = phi i32 [ %.2563, %964 ], [ %.2563, %963 ], [ %.2563, %962 ], [ 11, %961 ], [ %.2563, %960 ], [ %.2563, %959 ], [ %.2563, %958 ], [ %.2563, %957 ], [ %.2563, %956 ], [ %.2563, %955 ], [ %.2563, %954 ], [ 2, %945 ], [ 1, %949 ], [ 2, %.tail915.thread ], [ 2, %.tail915 ], [ 2, %928 ], [ %.2563, %.thread841 ], [ 1, %.794.si.unfold.false ] %971 = load i32, ptr %38, align 8 %972 = icmp sgt i32 %971, 1 br i1 %972, label %973, label %979 diff --git a/bench/hyperscan/optimized/ng_literal_analysis.cpp.ll b/bench/hyperscan/optimized/ng_literal_analysis.cpp.ll index c01eab201d4..e4f67fb6a3b 100644 --- a/bench/hyperscan/optimized/ng_literal_analysis.cpp.ll +++ b/bench/hyperscan/optimized/ng_literal_analysis.cpp.ll @@ -5379,9 +5379,9 @@ if.then.i.i.i.i: ; preds = %_ZNK3ue29case_itern _ZN3ue29case_iterD2Ev.exit: ; preds = %_ZNK3ue29case_iterneERKS0_.exit, %if.then.i.i.i.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s_orig.i) #22 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp17) #22 - br i1 %lnot.i.i, label %for.body23, label %cleanup + br i1 %lnot.i.i, label %for.body23, label %cleanup.jt4 -lpad14: ; preds = %for.end, %invoke.cont39, %dont_explode, %invoke.cont11 +lpad14: ; preds = %_ZN3ue29case_iterD2Ev.exit37.jt4, %invoke.cont39, %_ZN3ue29case_iterD2Ev.exit37.jt7, %invoke.cont11 %11 = landingpad { ptr, i32 } cleanup br label %ehcleanup42 @@ -5424,83 +5424,99 @@ invoke.cont27: ; preds = %if.else.i.invoke.co %sub.ptr.rhs.cast.i = ptrtoint ptr %17 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %cmp = icmp ugt i64 %sub.ptr.sub.i, 512 - br i1 %cmp, label %cleanup, label %for.inc + br i1 %cmp, label %cleanup.jt7, label %for.inc for.inc: ; preds = %invoke.cont27 %call33 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3ue29case_iterppEv(ptr noundef nonnull align 8 dereferenceable(104) %cit) to label %for.cond16 unwind label %lpad18, !llvm.loop !185 -cleanup: ; preds = %invoke.cont27, %_ZN3ue29case_iterD2Ev.exit - %cleanup.dest.slot.0 = phi i32 [ 4, %_ZN3ue29case_iterD2Ev.exit ], [ 7, %invoke.cont27 ] +cleanup.jt7: ; preds = %invoke.cont27 %18 = load ptr, ptr %nocase.i23, align 8 - %tobool.not.i.i.i.i24 = icmp eq ptr %18, null - br i1 %tobool.not.i.i.i.i24, label %_ZN3ue29case_iterD2Ev.exit37, label %if.then.i.i.i.i25 - -if.then.i.i.i.i25: ; preds = %cleanup - %19 = load ptr, ptr %_M_end_of_storage.i.i.i.i.i26, align 8 - %sub.ptr.lhs.cast.i.i.i.i27 = ptrtoint ptr %19 to i64 - %sub.ptr.rhs.cast.i.i.i.i28 = ptrtoint ptr %18 to i64 - %sub.ptr.sub.i.i.i.i29 = sub i64 %sub.ptr.lhs.cast.i.i.i.i27, %sub.ptr.rhs.cast.i.i.i.i28 - %sub.ptr.div.i.i.i.i30 = ashr exact i64 %sub.ptr.sub.i.i.i.i29, 3 - %idx.neg.i.i.i.i31 = sub nsw i64 0, %sub.ptr.div.i.i.i.i30 - %add.ptr.i.i.i.i32 = getelementptr inbounds i64, ptr %19, i64 %idx.neg.i.i.i.i31 - call void @_ZdlPv(ptr noundef %add.ptr.i.i.i.i32) #26 + %tobool.not.i.i.i.i24.jt7 = icmp eq ptr %18, null + br i1 %tobool.not.i.i.i.i24.jt7, label %_ZN3ue29case_iterD2Ev.exit37.jt7, label %if.then.i.i.i.i25.jt7 + +cleanup.jt4: ; preds = %_ZN3ue29case_iterD2Ev.exit + %19 = load ptr, ptr %nocase.i23, align 8 + %tobool.not.i.i.i.i24.jt4 = icmp eq ptr %19, null + br i1 %tobool.not.i.i.i.i24.jt4, label %_ZN3ue29case_iterD2Ev.exit37.jt4, label %if.then.i.i.i.i25.jt4 + +if.then.i.i.i.i25.jt7: ; preds = %cleanup.jt7 + %20 = load ptr, ptr %_M_end_of_storage.i.i.i.i.i26, align 8 + %sub.ptr.lhs.cast.i.i.i.i27.jt7 = ptrtoint ptr %20 to i64 + %sub.ptr.rhs.cast.i.i.i.i28.jt7 = ptrtoint ptr %18 to i64 + %sub.ptr.sub.i.i.i.i29.jt7 = sub i64 %sub.ptr.lhs.cast.i.i.i.i27.jt7, %sub.ptr.rhs.cast.i.i.i.i28.jt7 + %sub.ptr.div.i.i.i.i30.jt7 = ashr exact i64 %sub.ptr.sub.i.i.i.i29.jt7, 3 + %idx.neg.i.i.i.i31.jt7 = sub nsw i64 0, %sub.ptr.div.i.i.i.i30.jt7 + %add.ptr.i.i.i.i32.jt7 = getelementptr inbounds i64, ptr %20, i64 %idx.neg.i.i.i.i31.jt7 + call void @_ZdlPv(ptr noundef %add.ptr.i.i.i.i32.jt7) #26 store ptr null, ptr %nocase.i23, align 8 store i32 0, ptr %ref.tmp.sroa.2.0.this.sroa_idx.i.i.i.i.i33, align 8 store ptr null, ptr %ref.tmp.sroa.31.0.this.sroa_idx.i.i.i.i.i34, align 8 store i32 0, ptr %ref.tmp.sroa.4.0.this.sroa_idx.i.i.i.i.i35, align 8 store ptr null, ptr %_M_end_of_storage.i.i.i.i.i26, align 8 - br label %_ZN3ue29case_iterD2Ev.exit37 + br label %_ZN3ue29case_iterD2Ev.exit37.jt7 + +if.then.i.i.i.i25.jt4: ; preds = %cleanup.jt4 + %21 = load ptr, ptr %_M_end_of_storage.i.i.i.i.i26, align 8 + %sub.ptr.lhs.cast.i.i.i.i27.jt4 = ptrtoint ptr %21 to i64 + %sub.ptr.rhs.cast.i.i.i.i28.jt4 = ptrtoint ptr %19 to i64 + %sub.ptr.sub.i.i.i.i29.jt4 = sub i64 %sub.ptr.lhs.cast.i.i.i.i27.jt4, %sub.ptr.rhs.cast.i.i.i.i28.jt4 + %sub.ptr.div.i.i.i.i30.jt4 = ashr exact i64 %sub.ptr.sub.i.i.i.i29.jt4, 3 + %idx.neg.i.i.i.i31.jt4 = sub nsw i64 0, %sub.ptr.div.i.i.i.i30.jt4 + %add.ptr.i.i.i.i32.jt4 = getelementptr inbounds i64, ptr %21, i64 %idx.neg.i.i.i.i31.jt4 + call void @_ZdlPv(ptr noundef %add.ptr.i.i.i.i32.jt4) #26 + store ptr null, ptr %nocase.i23, align 8 + store i32 0, ptr %ref.tmp.sroa.2.0.this.sroa_idx.i.i.i.i.i33, align 8 + store ptr null, ptr %ref.tmp.sroa.31.0.this.sroa_idx.i.i.i.i.i34, align 8 + store i32 0, ptr %ref.tmp.sroa.4.0.this.sroa_idx.i.i.i.i.i35, align 8 + store ptr null, ptr %_M_end_of_storage.i.i.i.i.i26, align 8 + br label %_ZN3ue29case_iterD2Ev.exit37.jt4 -_ZN3ue29case_iterD2Ev.exit37: ; preds = %cleanup, %if.then.i.i.i.i25 +_ZN3ue29case_iterD2Ev.exit37.jt7: ; preds = %if.then.i.i.i.i25.jt7, %cleanup.jt7 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s_orig.i36) #22 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %cit) #22 - switch i32 %cleanup.dest.slot.0, label %cleanup41 [ - i32 4, label %for.end - i32 7, label %dont_explode - ] + invoke void @_ZN3ue211make_nocaseEPNS_11ue2_literalE(ptr noundef nonnull %s) + to label %invoke.cont39 unwind label %lpad14 -for.end: ; preds = %_ZN3ue29case_iterD2Ev.exit37 - %20 = load ptr, ptr %_M_finish.i38, align 8 - %21 = load ptr, ptr %exploded, align 8 - %22 = load ptr, ptr %_M_finish.i, align 8 - %23 = load ptr, ptr %replacements, align 8 - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %20 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %23 to i64 +_ZN3ue29case_iterD2Ev.exit37.jt4: ; preds = %if.then.i.i.i.i25.jt4, %cleanup.jt4 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s_orig.i36) #22 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %cit) #22 + %22 = load ptr, ptr %_M_finish.i38, align 8 + %23 = load ptr, ptr %exploded, align 8 + %24 = load ptr, ptr %_M_finish.i, align 8 + %25 = load ptr, ptr %replacements, align 8 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %22 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %25 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i - %add.ptr.i.i.i39 = getelementptr inbounds i8, ptr %23, i64 %sub.ptr.sub.i.i.i - invoke void @_ZNSt6vectorIN3ue211ue2_literalESaIS1_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEvNS6_IPS1_S3_EET_SC_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %replacements, ptr %add.ptr.i.i.i39, ptr %21, ptr %22) + %add.ptr.i.i.i39 = getelementptr inbounds i8, ptr %25, i64 %sub.ptr.sub.i.i.i + invoke void @_ZNSt6vectorIN3ue211ue2_literalESaIS1_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEvNS6_IPS1_S3_EET_SC_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %replacements, ptr %add.ptr.i.i.i39, ptr %23, ptr %24) to label %cleanup41 unwind label %lpad14 -dont_explode: ; preds = %_ZN3ue29case_iterD2Ev.exit37 - invoke void @_ZN3ue211make_nocaseEPNS_11ue2_literalE(ptr noundef nonnull %s) - to label %invoke.cont39 unwind label %lpad14 - -invoke.cont39: ; preds = %dont_explode +invoke.cont39: ; preds = %_ZN3ue29case_iterD2Ev.exit37.jt7 invoke void @_ZNSt6vectorIN3ue211ue2_literalESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %replacements, ptr noundef nonnull align 8 dereferenceable(64) %s) to label %cleanup41 unwind label %lpad14 -cleanup41: ; preds = %for.end, %invoke.cont39, %_ZN3ue29case_iterD2Ev.exit37 - %24 = load ptr, ptr %exploded, align 8 - %25 = load ptr, ptr %_M_finish.i, align 8 - %cmp.not3.i.i.i.i = icmp eq ptr %24, %25 +cleanup41: ; preds = %_ZN3ue29case_iterD2Ev.exit37.jt4, %invoke.cont39 + %26 = load ptr, ptr %exploded, align 8 + %27 = load ptr, ptr %_M_finish.i, align 8 + %cmp.not3.i.i.i.i = icmp eq ptr %26, %27 br i1 %cmp.not3.i.i.i.i, label %invoke.cont.i, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %cleanup41, %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i - %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i ], [ %24, %cleanup41 ] + %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i ], [ %26, %cleanup41 ] %nocase.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 32 - %26 = load ptr, ptr %nocase.i.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %26, null + %28 = load ptr, ptr %nocase.i.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %28, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %26) #26 + call void @_ZdlPv(ptr noundef nonnull %28) #26 br label %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i _ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %__first.addr.04.i.i.i.i) #22 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 64 - %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %25 + %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %27 br i1 %cmp.not.i.i.i.i, label %invoke.contthread-pre-split.i, label %for.body.i.i.i.i, !llvm.loop !186 invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i @@ -5508,21 +5524,21 @@ invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN3ue2 br label %invoke.cont.i invoke.cont.i: ; preds = %invoke.contthread-pre-split.i, %cleanup41 - %27 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %24, %cleanup41 ] - %tobool.not.i.i.i = icmp eq ptr %27, null + %29 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %26, %cleanup41 ] + %tobool.not.i.i.i = icmp eq ptr %29, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIN3ue211ue2_literalESaIS1_EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont.i - call void @_ZdlPv(ptr noundef nonnull %27) #26 + call void @_ZdlPv(ptr noundef nonnull %29) #26 br label %_ZNSt6vectorIN3ue211ue2_literalESaIS1_EED2Ev.exit _ZNSt6vectorIN3ue211ue2_literalESaIS1_EED2Ev.exit: ; preds = %invoke.cont.i, %if.then.i.i.i - %28 = load ptr, ptr %nocase.i, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %28, null + %30 = load ptr, ptr %nocase.i, align 8 + %tobool.not.i.i.i.i.i = icmp eq ptr %30, null br i1 %tobool.not.i.i.i.i.i, label %_ZN3ue211ue2_literalD2Ev.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIN3ue211ue2_literalESaIS1_EED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %28) #26 + call void @_ZdlPv(ptr noundef nonnull %30) #26 br label %_ZN3ue211ue2_literalD2Ev.exit _ZN3ue211ue2_literalD2Ev.exit: ; preds = %_ZNSt6vectorIN3ue211ue2_literalESaIS1_EED2Ev.exit, %if.then.i.i.i.i.i @@ -5545,10 +5561,10 @@ for.end46.loopexit: ; preds = %for.cond.backedge br label %for.end46 for.end46: ; preds = %for.end46.loopexit, %entry - %29 = phi ptr [ %.pre73, %for.end46.loopexit ], [ null, %entry ] - %30 = phi ptr [ %.pre72, %for.end46.loopexit ], [ null, %entry ] + %31 = phi ptr [ %.pre73, %for.end46.loopexit ], [ null, %entry ] + %32 = phi ptr [ %.pre72, %for.end46.loopexit ], [ null, %entry ] %_M_finish.i.i43 = getelementptr inbounds i8, ptr %replacements, i64 8 - invoke void @_ZNSt3setIN3ue211ue2_literalESt4lessIS1_ESaIS1_EE6insertIN9__gnu_cxx17__normal_iteratorIPKS1_St6vectorIS1_S4_EEEEEvT_SE_(ptr noundef nonnull align 8 dereferenceable(48) %lits, ptr %30, ptr %29) + invoke void @_ZNSt3setIN3ue211ue2_literalESt4lessIS1_ESaIS1_EE6insertIN9__gnu_cxx17__normal_iteratorIPKS1_St6vectorIS1_S4_EEEEEvT_SE_(ptr noundef nonnull align 8 dereferenceable(48) %lits, ptr %32, ptr %31) to label %invoke.cont47 unwind label %lpad.loopexit.split-lp invoke.cont47: ; preds = %for.end46 @@ -5556,26 +5572,26 @@ invoke.cont47: ; preds = %for.end46 to label %invoke.cont48 unwind label %lpad.loopexit.split-lp invoke.cont48: ; preds = %invoke.cont47 - %31 = load ptr, ptr %replacements, align 8 - %32 = load ptr, ptr %_M_finish.i.i43, align 8 - %cmp.not3.i.i.i.i46 = icmp eq ptr %31, %32 + %33 = load ptr, ptr %replacements, align 8 + %34 = load ptr, ptr %_M_finish.i.i43, align 8 + %cmp.not3.i.i.i.i46 = icmp eq ptr %33, %34 br i1 %cmp.not3.i.i.i.i46, label %invoke.cont.i57, label %for.body.i.i.i.i47 for.body.i.i.i.i47: ; preds = %invoke.cont48, %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i52 - %__first.addr.04.i.i.i.i48 = phi ptr [ %incdec.ptr.i.i.i.i53, %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i52 ], [ %31, %invoke.cont48 ] + %__first.addr.04.i.i.i.i48 = phi ptr [ %incdec.ptr.i.i.i.i53, %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i52 ], [ %33, %invoke.cont48 ] %nocase.i.i.i.i.i.i49 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i48, i64 32 - %33 = load ptr, ptr %nocase.i.i.i.i.i.i49, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i50 = icmp eq ptr %33, null + %35 = load ptr, ptr %nocase.i.i.i.i.i.i49, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i50 = icmp eq ptr %35, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i50, label %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i52, label %if.then.i.i.i.i.i.i.i.i.i.i51 if.then.i.i.i.i.i.i.i.i.i.i51: ; preds = %for.body.i.i.i.i47 - call void @_ZdlPv(ptr noundef nonnull %33) #26 + call void @_ZdlPv(ptr noundef nonnull %35) #26 br label %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i52 _ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i52: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i51, %for.body.i.i.i.i47 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %__first.addr.04.i.i.i.i48) #22 %incdec.ptr.i.i.i.i53 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i48, i64 64 - %cmp.not.i.i.i.i54 = icmp eq ptr %incdec.ptr.i.i.i.i53, %32 + %cmp.not.i.i.i.i54 = icmp eq ptr %incdec.ptr.i.i.i.i53, %34 br i1 %cmp.not.i.i.i.i54, label %invoke.contthread-pre-split.i55, label %for.body.i.i.i.i47, !llvm.loop !186 invoke.contthread-pre-split.i55: ; preds = %_ZSt8_DestroyIN3ue211ue2_literalEEvPT_.exit.i.i.i.i52 @@ -5583,12 +5599,12 @@ invoke.contthread-pre-split.i55: ; preds = %_ZSt8_DestroyIN3ue2 br label %invoke.cont.i57 invoke.cont.i57: ; preds = %invoke.contthread-pre-split.i55, %invoke.cont48 - %34 = phi ptr [ %.pr.i56, %invoke.contthread-pre-split.i55 ], [ %31, %invoke.cont48 ] - %tobool.not.i.i.i58 = icmp eq ptr %34, null + %36 = phi ptr [ %.pr.i56, %invoke.contthread-pre-split.i55 ], [ %33, %invoke.cont48 ] + %tobool.not.i.i.i58 = icmp eq ptr %36, null br i1 %tobool.not.i.i.i58, label %_ZNSt6vectorIN3ue211ue2_literalESaIS1_EED2Ev.exit60, label %if.then.i.i.i59 if.then.i.i.i59: ; preds = %invoke.cont.i57 - call void @_ZdlPv(ptr noundef nonnull %34) #26 + call void @_ZdlPv(ptr noundef nonnull %36) #26 br label %_ZNSt6vectorIN3ue211ue2_literalESaIS1_EED2Ev.exit60 _ZNSt6vectorIN3ue211ue2_literalESaIS1_EED2Ev.exit60: ; preds = %invoke.cont.i57, %if.then.i.i.i59 diff --git a/bench/icu/optimized/caniter.ll b/bench/icu/optimized/caniter.ll index 43f1005cf10..493c1b8d7da 100644 --- a/bench/icu/optimized/caniter.ll +++ b/bench/icu/optimized/caniter.ll @@ -1740,7 +1740,7 @@ invoke.cont54: ; preds = %invoke.cont52 invoke.cont56: ; preds = %invoke.cont54 %cmp58 = icmp eq ptr %call57, null - br i1 %cmp58, label %cleanup94, label %if.end60, !llvm.loop !16 + br i1 %cmp58, label %cleanup94.jt7, label %if.end60, !llvm.loop !16 lpad46: ; preds = %if.then5.i.i, %if.end.i.i, %while.cond %14 = landingpad { ptr, i32 } @@ -1768,7 +1768,7 @@ invoke.cont63: ; preds = %invoke.cont61 while.cond67.preheader: ; preds = %invoke.cont63 %cmp68.not80 = icmp eq ptr %call.i5354, null - br i1 %cmp68.not80, label %cleanup92, label %while.body69 + br i1 %cmp68.not80, label %cleanup94.jt0, label %while.body69 while.body69: ; preds = %while.cond67.preheader, %cleanup %ne.081 = phi ptr [ %call.i6566, %cleanup ], [ %call.i5354, %while.cond67.preheader ] @@ -1780,17 +1780,12 @@ while.body69: ; preds = %while.cond67.prehea invoke.cont70: ; preds = %while.body69 %call71 = call noundef ptr @_ZN6icu_757UMemorynwEm(i64 noundef 64) #10 %new.isnull72 = icmp eq ptr %call71, null - br i1 %new.isnull72, label %cleanup.thread, label %new.notnull73 + br i1 %new.isnull72, label %cleanup94.jt1, label %new.notnull73 new.notnull73: ; preds = %invoke.cont70 invoke void @_ZN6icu_7513UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %call71, ptr noundef nonnull align 8 dereferenceable(64) %prefix) to label %if.end84 unwind label %lpad76 -cleanup.thread: ; preds = %invoke.cont70 - store i32 7, ptr %status, align 4 - call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %item) #10 - br label %cleanup92 - lpad62.loopexit: ; preds = %while.body69 %lpad.loopexit = landingpad { ptr, i32 } cleanup @@ -1845,7 +1840,7 @@ invoke.cont88: ; preds = %new.cont.i61 cleanup: ; preds = %invoke.cont88 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %item) #10 %cmp68.not = icmp eq ptr %call.i6566, null - br i1 %cmp68.not, label %cleanup92, label %while.body69, !llvm.loop !17 + br i1 %cmp68.not, label %cleanup94.jt0, label %while.body69, !llvm.loop !17 lpad85: ; preds = %invoke.cont88, %new.cont.i61, %if.end84 %25 = landingpad { ptr, i32 } @@ -1857,36 +1852,52 @@ ehcleanup: ; preds = %lpad85, %lpad.i60, call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %item) #10 br label %ehcleanup93 -cleanup92: ; preds = %cleanup, %while.cond67.preheader, %cleanup.thread - %cleanup.dest.slot.2 = phi i32 [ 1, %cleanup.thread ], [ 0, %while.cond67.preheader ], [ 0, %cleanup ] +cleanup94.jt7: ; preds = %invoke.cont56 + %26 = load ptr, ptr %remainder, align 8 + %cmp.not.i.jt7 = icmp eq ptr %26, null + br i1 %cmp.not.i.jt7, label %while.cond.backedge, label %if.then.i.jt0.invoke + +cleanup94.jt0: ; preds = %cleanup, %while.cond67.preheader call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %prefix) #10 - br label %cleanup94 + %27 = load ptr, ptr %remainder, align 8 + %cmp.not.i.jt0 = icmp eq ptr %27, null + br i1 %cmp.not.i.jt0, label %while.cond.backedge, label %if.then.i.jt0.invoke -cleanup94: ; preds = %invoke.cont56, %cleanup92 - %cleanup.dest.slot.0 = phi i32 [ %cleanup.dest.slot.2, %cleanup92 ], [ 7, %invoke.cont56 ] - %26 = load ptr, ptr %remainder, align 8 - %cmp.not.i = icmp eq ptr %26, null - br i1 %cmp.not.i, label %_ZN6icu_759HashtableD2Ev.exit, label %if.then.i +cleanup94.jt1: ; preds = %invoke.cont70 + store i32 7, ptr %status, align 4 + call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %item) #10 + call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %prefix) #10 + %28 = load ptr, ptr %remainder, align 8 + %cmp.not.i.jt1 = icmp eq ptr %28, null + br i1 %cmp.not.i.jt1, label %cleanup99, label %if.then.i.jt1 -if.then.i: ; preds = %cleanup94 - invoke void @uhash_close_75(ptr noundef nonnull %26) - to label %_ZN6icu_759HashtableD2Ev.exit unwind label %terminate.lpad.i +if.then.i.jt0.invoke: ; preds = %cleanup94.jt0, %cleanup94.jt7 + %29 = phi ptr [ %26, %cleanup94.jt7 ], [ %27, %cleanup94.jt0 ] + invoke void @uhash_close_75(ptr noundef nonnull %29) + to label %while.cond.backedge unwind label %terminate.lpad.i.loopexit -terminate.lpad.i: ; preds = %if.then.i - %27 = landingpad { ptr, i32 } +while.cond.backedge: ; preds = %if.then.i.jt0.invoke, %cleanup94.jt0, %cleanup94.jt7 + br label %while.cond, !llvm.loop !16 + +if.then.i.jt1: ; preds = %cleanup94.jt1 + invoke void @uhash_close_75(ptr noundef nonnull %28) + to label %cleanup99 unwind label %terminate.lpad.i.loopexit.split-lp + +terminate.lpad.i.loopexit: ; preds = %if.then.i.jt0.invoke + %lpad.loopexit89 = landingpad { ptr, i32 } catch ptr null - %28 = extractvalue { ptr, i32 } %27, 0 - call void @__clang_call_terminate(ptr %28) #12 - unreachable + br label %terminate.lpad.i -_ZN6icu_759HashtableD2Ev.exit: ; preds = %cleanup94, %if.then.i - switch i32 %cleanup.dest.slot.0, label %cleanup99 [ - i32 0, label %while.cond.backedge - i32 7, label %while.cond.backedge - ] +terminate.lpad.i.loopexit.split-lp: ; preds = %if.then.i.jt1 + %lpad.loopexit.split-lp90 = landingpad { ptr, i32 } + catch ptr null + br label %terminate.lpad.i -while.cond.backedge: ; preds = %_ZN6icu_759HashtableD2Ev.exit, %_ZN6icu_759HashtableD2Ev.exit - br label %while.cond, !llvm.loop !16 +terminate.lpad.i: ; preds = %terminate.lpad.i.loopexit.split-lp, %terminate.lpad.i.loopexit + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit89, %terminate.lpad.i.loopexit ], [ %lpad.loopexit.split-lp90, %terminate.lpad.i.loopexit.split-lp ] + %30 = extractvalue { ptr, i32 } %lpad.phi, 0 + call void @__clang_call_terminate(ptr %30) #12 + unreachable ehcleanup93: ; preds = %lpad62.loopexit, %lpad62.loopexit.split-lp, %ehcleanup %.pn.pn = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %lpad.loopexit, %lpad62.loopexit ], [ %lpad.loopexit.split-lp, %lpad62.loopexit.split-lp ] @@ -1898,7 +1909,7 @@ ehcleanup97: ; preds = %ehcleanup93, %lpad5 call void @_ZN6icu_759HashtableD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %remainder) #10 br label %ehcleanup102 -cleanup99: ; preds = %_ZN6icu_759HashtableD2Ev.exit +cleanup99: ; preds = %cleanup94.jt1, %if.then.i.jt1 call void @_ZN6icu_7518UnicodeSetIteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %iter) #10 br label %cleanup110 @@ -1915,8 +1926,8 @@ ehcleanup102: ; preds = %ehcleanup97, %lpad4 br label %ehcleanup111 for.end: ; preds = %for.inc, %for.cond.preheader - %29 = load i32, ptr %status, align 4 - %cmp.i68 = icmp slt i32 %29, 1 + %31 = load i32, ptr %status, align 4 + %cmp.i68 = icmp slt i32 %31, 1 %fillinResult. = select i1 %cmp.i68, ptr %fillinResult, ptr null br label %cleanup110 diff --git a/bench/icu/optimized/region.ll b/bench/icu/optimized/region.ll index 263ecc7fc1f..cff85e28f78 100644 --- a/bench/icu/optimized/region.ll +++ b/bench/icu/optimized/region.ll @@ -2815,7 +2815,7 @@ invoke.cont983: ; preds = %while.body977 store ptr %call982, ptr %mapping978, align 8 %243 = load i32, ptr %status, align 4 %cmp.i712 = icmp slt i32 %243, 1 - br i1 %cmp.i712, label %if.end989, label %cleanup1109 + br i1 %cmp.i712, label %if.end989, label %cleanup1109.jt1 lpad984: ; preds = %if.end1000, %if.end989 %244 = landingpad { ptr, i32 } @@ -2829,12 +2829,12 @@ if.end989: ; preds = %invoke.cont983 invoke.cont992: ; preds = %if.end989 %call994 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %call993, ptr noundef nonnull dereferenceable(19) @.str.14) #20 %cmp995 = icmp eq i32 %call994, 0 - br i1 %cmp995, label %cleanup1109, label %lor.lhs.false996, !llvm.loop !47 + br i1 %cmp995, label %cleanup1109.jt35, label %lor.lhs.false996, !llvm.loop !47 lor.lhs.false996: ; preds = %invoke.cont992 %call997 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %call993, ptr noundef nonnull dereferenceable(11) @.str.15) #20 %cmp998 = icmp eq i32 %call997, 0 - br i1 %cmp998, label %cleanup1109, label %if.end1000, !llvm.loop !47 + br i1 %cmp998, label %cleanup1109.jt35, label %if.end1000, !llvm.loop !47 if.end1000: ; preds = %lor.lhs.false996 invoke void @_ZN6icu_7513UnicodeStringC1EPKciNS0_10EInvariantE(ptr noundef nonnull align 8 dereferenceable(64) %parentStr, ptr noundef %call993, i32 noundef -1, i32 noundef 0) @@ -2859,7 +2859,7 @@ for.cond1007.us: ; preds = %for.cond1007.prehea invoke.cont1010.us: ; preds = %for.cond1007.us %cmp1012.us = icmp slt i32 %j.0.us, %call1011.us - br i1 %cmp1012.us, label %for.body1013.us, label %cleanup1107 + br i1 %cmp1012.us, label %for.body1013.us, label %cleanup1109.jt0 for.body1013.us: ; preds = %invoke.cont1010.us call void @llvm.experimental.noalias.scope.decl(metadata !48) @@ -2930,7 +2930,7 @@ for.cond1007: ; preds = %for.cond1007.prehea invoke.cont1010: ; preds = %for.cond1007 %cmp1012 = icmp slt i32 %j.0, %call1011 - br i1 %cmp1012, label %for.body1013, label %cleanup1107 + br i1 %cmp1012, label %for.body1013, label %cleanup1109.jt0 for.body1013: ; preds = %invoke.cont1010 call void @llvm.experimental.noalias.scope.decl(metadata !48) @@ -3021,7 +3021,7 @@ _ZN6icu_7512LocalPointerINS_7UVectorEED2Ev.exit741: ; preds = %new.notnull1033, store ptr %call1031, ptr %containedRegions1027, align 8 %259 = load i32, ptr %status, align 4 %cmp.i735 = icmp slt i32 %259, 1 - br i1 %cmp.i735, label %if.end1057, label %cleanup1107.critedge + br i1 %cmp.i735, label %if.end1057, label %cleanup1109thread-pre-split.jt1 lpad1002.loopexit.split: ; preds = %for.cond1007 %lpad.loopexit1074 = landingpad { ptr, i32 } @@ -3052,11 +3052,11 @@ if.end1057: ; preds = %_ZN6icu_7512LocalPo new.cont1069: ; preds = %if.end1057 %262 = load i32, ptr %status, align 4 %cmp.i.i744 = icmp sgt i32 %262, 0 - br i1 %cmp.i.i744, label %cleanup1107.critedge, label %if.then.i746 + br i1 %cmp.i.i744, label %cleanup1109thread-pre-split.jt1, label %if.then.i746 if.then.i746: ; preds = %new.cont1069 store i32 7, ptr %status, align 4 - br label %cleanup1107.critedge + br label %cleanup1109thread-pre-split.jt1 invoke.cont1070: ; preds = %if.end1057 store ptr getelementptr inbounds (i8, ptr @_ZTVN6icu_7513UnicodeStringE, i64 16), ptr %call1058, align 8 @@ -3093,7 +3093,7 @@ lpad1071.thread: ; preds = %invoke.cont1080 invoke.cont1085: ; preds = %invoke.cont1080 %268 = load i32, ptr %status, align 4 %cmp.i755 = icmp slt i32 %268, 1 - br i1 %cmp.i755, label %if.end1090, label %cleanup1107.critedge + br i1 %cmp.i755, label %if.end1090, label %cleanup1109thread-pre-split.jt1 if.end1090: ; preds = %invoke.cont1085 %269 = load i32, ptr %fType1091, align 4 @@ -3110,7 +3110,7 @@ delete.notnull.i763: ; preds = %invoke.cont1070 %vfn.i765 = getelementptr inbounds i8, ptr %vtable.i764, i64 8 %270 = load ptr, ptr %vfn.i765, align 8 call void %270(ptr noundef nonnull align 8 dereferenceable(64) %call1058) #17 - br label %cleanup1107.critedge + br label %cleanup1109thread-pre-split.jt1 cleanup1100: ; preds = %if.end1090, %if.then1093, %invoke.cont1021 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %child1014) #17 @@ -3122,41 +3122,54 @@ ehcleanup1103: ; preds = %lpad1018.split, %lp call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %child1014) #17 br label %ehcleanup1108 -cleanup1107.critedge: ; preds = %invoke.cont1085, %_ZN6icu_7512LocalPointerINS_7UVectorEED2Ev.exit741, %if.then.i746, %new.cont1069, %delete.notnull.i763 +cleanup1109thread-pre-split.jt1: ; preds = %invoke.cont1085, %_ZN6icu_7512LocalPointerINS_7UVectorEED2Ev.exit741, %if.then.i746, %new.cont1069, %delete.notnull.i763 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %child1014) #17 - br label %cleanup1107 + call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %parentStr) #17 + %.pr.pre.jt1 = load ptr, ptr %mapping978, align 8 + br label %cleanup1109.jt1 -cleanup1107: ; preds = %invoke.cont1010, %invoke.cont1010.us, %cleanup1107.critedge - %cleanup.dest.slot.10 = phi i32 [ 1, %cleanup1107.critedge ], [ 0, %invoke.cont1010.us ], [ 0, %invoke.cont1010 ] +cleanup1109.jt0: ; preds = %invoke.cont1010, %invoke.cont1010.us call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %parentStr) #17 - %.pr.pre = load ptr, ptr %mapping978, align 8 - br label %cleanup1109 + %.pr.pre.jt0 = load ptr, ptr %mapping978, align 8 + %cmp.not.i767.jt0 = icmp eq ptr %.pr.pre.jt0, null + br i1 %cmp.not.i767.jt0, label %while.cond971.backedge, label %if.then.i768.jt35.invoke + +cleanup1109.jt1: ; preds = %invoke.cont983, %cleanup1109thread-pre-split.jt1 + %271 = phi ptr [ %.pr.pre.jt1, %cleanup1109thread-pre-split.jt1 ], [ %call982, %invoke.cont983 ] + %cmp.not.i767.jt1 = icmp eq ptr %271, null + br i1 %cmp.not.i767.jt1, label %cleanup1185, label %if.then.i768.jt1 -cleanup1109: ; preds = %invoke.cont992, %lor.lhs.false996, %cleanup1107, %invoke.cont983 - %271 = phi ptr [ %call982, %invoke.cont983 ], [ %call982, %invoke.cont992 ], [ %call982, %lor.lhs.false996 ], [ %.pr.pre, %cleanup1107 ] - %cleanup.dest.slot.6 = phi i32 [ 1, %invoke.cont983 ], [ 35, %invoke.cont992 ], [ 35, %lor.lhs.false996 ], [ %cleanup.dest.slot.10, %cleanup1107 ] - %cmp.not.i767 = icmp eq ptr %271, null - br i1 %cmp.not.i767, label %_ZN6icu_7527LocalUResourceBundlePointerD2Ev.exit770, label %if.then.i768 +cleanup1109.jt35: ; preds = %invoke.cont992, %lor.lhs.false996 + %cmp.not.i767.jt35 = icmp eq ptr %call982, null + br i1 %cmp.not.i767.jt35, label %while.cond971.backedge, label %if.then.i768.jt35.invoke -if.then.i768: ; preds = %cleanup1109 +if.then.i768.jt1: ; preds = %cleanup1109.jt1 invoke void @ures_close_75(ptr noundef nonnull %271) - to label %_ZN6icu_7527LocalUResourceBundlePointerD2Ev.exit770 unwind label %terminate.lpad.i769 + to label %cleanup1185 unwind label %terminate.lpad.i769.loopexit.split-lp + +if.then.i768.jt35.invoke: ; preds = %cleanup1109.jt35, %cleanup1109.jt0 + %272 = phi ptr [ %.pr.pre.jt0, %cleanup1109.jt0 ], [ %call982, %cleanup1109.jt35 ] + invoke void @ures_close_75(ptr noundef nonnull %272) + to label %while.cond971.backedge unwind label %terminate.lpad.i769.loopexit -terminate.lpad.i769: ; preds = %if.then.i768 - %272 = landingpad { ptr, i32 } +while.cond971.backedge: ; preds = %if.then.i768.jt35.invoke, %cleanup1109.jt35, %cleanup1109.jt0 + br label %while.cond971, !llvm.loop !47 + +terminate.lpad.i769.loopexit: ; preds = %if.then.i768.jt35.invoke + %lpad.loopexit1273 = landingpad { ptr, i32 } catch ptr null - %273 = extractvalue { ptr, i32 } %272, 0 - call void @__clang_call_terminate(ptr %273) #19 - unreachable + br label %terminate.lpad.i769 -_ZN6icu_7527LocalUResourceBundlePointerD2Ev.exit770: ; preds = %cleanup1109, %if.then.i768 - switch i32 %cleanup.dest.slot.6, label %cleanup1185 [ - i32 0, label %while.cond971.backedge - i32 35, label %while.cond971.backedge - ] +terminate.lpad.i769.loopexit.split-lp: ; preds = %if.then.i768.jt1 + %lpad.loopexit.split-lp1274 = landingpad { ptr, i32 } + catch ptr null + br label %terminate.lpad.i769 -while.cond971.backedge: ; preds = %_ZN6icu_7527LocalUResourceBundlePointerD2Ev.exit770, %_ZN6icu_7527LocalUResourceBundlePointerD2Ev.exit770 - br label %while.cond971, !llvm.loop !47 +terminate.lpad.i769: ; preds = %terminate.lpad.i769.loopexit.split-lp, %terminate.lpad.i769.loopexit + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit1273, %terminate.lpad.i769.loopexit ], [ %lpad.loopexit.split-lp1274, %terminate.lpad.i769.loopexit.split-lp ] + %273 = extractvalue { ptr, i32 } %lpad.phi, 0 + call void @__clang_call_terminate(ptr %273) #19 + unreachable ehcleanup1108: ; preds = %lpad1002.loopexit.split-lp, %lpad1002.loopexit.split.us, %lpad1002.loopexit.split, %ehcleanup.i719, %ehcleanup1103 %.pn204.pn = phi { ptr, i32 } [ %.pn204, %ehcleanup1103 ], [ %.pn.i720, %ehcleanup.i719 ], [ %lpad.loopexit.split-lp1075, %lpad1002.loopexit.split-lp ], [ %lpad.loopexit1074, %lpad1002.loopexit.split ], [ %lpad.loopexit1074.us, %lpad1002.loopexit.split.us ] @@ -3283,7 +3296,7 @@ delete.notnull.i799: ; preds = %invoke.cont1161 call void %288(ptr noundef nonnull align 8 dereferenceable(64) %call1148) #17 br label %cleanup1185 -cleanup1185: ; preds = %_ZN6icu_7527LocalUResourceBundlePointerD2Ev.exit770, %if.then.i784, %new.cont1160, %delete.notnull.i799, %while.end1178 +cleanup1185: ; preds = %if.then.i784, %new.cont1160, %if.then.i768.jt1, %cleanup1109.jt1, %delete.notnull.i799, %while.end1178 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %OUTLYING_OCEANIA_REGION_ID_STRING) #17 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %UNKNOWN_REGION_ID_STRING) #17 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %WORLD_ID_STRING) #17 diff --git a/bench/libquic/optimized/prtime.cc.ll b/bench/libquic/optimized/prtime.cc.ll index 5f88f7050f6..c357c9e78c7 100644 --- a/bench/libquic/optimized/prtime.cc.ll +++ b/bench/libquic/optimized/prtime.cc.ll @@ -1292,14 +1292,10 @@ land.lhs.true663: ; preds = %sw.bb661 land.lhs.true671: ; preds = %land.lhs.true663, %land.lhs.true663 %arrayidx672 = getelementptr inbounds i8, ptr %rest.0601, i64 2 %59 = load i8, ptr %arrayidx672, align 1 - %60 = add i8 %59, -65 - %or.cond = icmp ult i8 %60, 26 - br i1 %or.cond, label %sw.epilog, label %land.lhs.true679 - -land.lhs.true679: ; preds = %land.lhs.true671 - %61 = add i8 %59, -97 - %or.cond507 = icmp ult i8 %61, 26 - %spec.select537 = select i1 %or.cond507, i32 0, i32 30 + %60 = and i8 %59, -33 + %61 = add i8 %60, -65 + %or.cond667 = icmp ult i8 %61, 26 + %spec.select670 = select i1 %or.cond667, i32 0, i32 30 br label %sw.epilog sw.bb689: ; preds = %if.end4, %if.end4 @@ -1962,18 +1958,18 @@ cond.true1363: ; preds = %if.then1361 %sub1366 = add nsw i32 %conv1365, -48 br label %sw.epilog -sw.epilog: ; preds = %land.lhs.true642, %land.lhs.true542, %land.lhs.true181, %land.lhs.true102, %land.lhs.true1160, %while.end, %land.lhs.true623, %land.lhs.true523, %land.lhs.true301, %land.lhs.true143, %land.lhs.true162, %land.lhs.true83, %if.else1347, %land.lhs.true679, %sw.bb621, %sw.bb521, %if.else299, %sw.bb141, %sw.bb81, %cond.true1363, %if.then1361, %if.else1247, %if.then1328, %cond.true1295, %if.then1293, %cond.true1254, %if.then1252, %if.else1234, %if.end1211, %if.else1169, %if.end1076, %if.end1061, %if.then977, %if.then999, %if.else981, %if.else948, %if.end943, %land.lhs.true983, %land.lhs.true991, %land.lhs.true699, %land.lhs.true691, %land.lhs.true671, %land.lhs.true663, %land.lhs.true650, %land.lhs.true631, %land.lhs.true631, %land.lhs.true609, %land.lhs.true601, %land.lhs.true590, %land.lhs.true590, %land.lhs.true571, %land.lhs.true571, %land.lhs.true550, %land.lhs.true531, %land.lhs.true531, %land.lhs.true511, %land.lhs.true503, %land.lhs.true490, %land.lhs.true482, %land.lhs.true471, %land.lhs.true471, %land.lhs.true446, %land.lhs.true438, %land.lhs.true427, %land.lhs.true427, %land.lhs.true408, %land.lhs.true408, %land.lhs.true389, %land.lhs.true389, %land.lhs.true370, %land.lhs.true370, %land.lhs.true351, %land.lhs.true351, %land.lhs.true328, %land.lhs.true320, %land.lhs.true309, %land.lhs.true309, %land.lhs.true290, %land.lhs.true290, %land.lhs.true271, %land.lhs.true271, %land.lhs.true251, %land.lhs.true243, %land.lhs.true230, %land.lhs.true222, %land.lhs.true211, %land.lhs.true211, %land.lhs.true189, %land.lhs.true170, %land.lhs.true170, %land.lhs.true151, %land.lhs.true151, %land.lhs.true131, %land.lhs.true123, %land.lhs.true110, %land.lhs.true91, %land.lhs.true91, %land.lhs.true71, %land.lhs.true63, %land.lhs.true49, %land.lhs.true41, %land.lhs.true30, %land.lhs.true30, %land.lhs.true12, %land.lhs.true12, %if.then1345, %if.else1341, %if.end1216, %if.then1193, %if.then1127, %if.end1098, %if.end1068, %if.then1042, %if.then1018, %if.else881, %while.end834, %if.end798, %if.then793, %sw.bb689, %if.then707, %sw.bb661, %if.then658, %if.else599, %if.then617, %if.then558, %sw.bb501, %if.then519, %if.then498, %if.else480, %if.then454, %if.else436, %if.then336, %sw.bb241, %if.then259, %if.then238, %if.else220, %if.then197, %sw.bb121, %if.then139, %if.then118, %sw.bb61, %if.then79, %if.else39, %if.then57, %if.end1199, %if.end777, %if.then716, %if.then711, %if.end4 - %month.1 = phi i32 [ %month.0584, %if.end4 ], [ %month.0584, %if.then793 ], [ %month.0584, %if.end798 ], [ %month.0584, %while.end834 ], [ %month.0584, %if.else881 ], [ %month.0584, %if.then1018 ], [ 0, %if.then1042 ], [ 0, %if.end1068 ], [ 0, %if.end1098 ], [ 0, %if.then1127 ], [ 0, %if.then1193 ], [ %sub1210, %if.end1199 ], [ %month.2, %if.end1216 ], [ %month.0584, %if.then1345 ], [ %month.0584, %if.else1341 ], [ %month.0584, %if.then711 ], [ %month.0584, %if.then716 ], [ %month.0584, %if.end777 ], [ %month.0584, %if.then707 ], [ %month.0584, %sw.bb689 ], [ %month.0584, %sw.bb661 ], [ %month.0584, %if.then658 ], [ %month.0584, %if.then617 ], [ %month.0584, %if.else599 ], [ %month.0584, %if.then558 ], [ 17, %if.then519 ], [ %month.0584, %sw.bb501 ], [ %month.0584, %if.then498 ], [ %month.0584, %if.else480 ], [ %month.0584, %if.then454 ], [ %month.0584, %if.else436 ], [ 13, %if.then336 ], [ %month.0584, %if.then259 ], [ %month.0584, %sw.bb241 ], [ %month.0584, %if.then238 ], [ %month.0584, %if.else220 ], [ %month.0584, %if.then197 ], [ 19, %if.then139 ], [ %month.0584, %sw.bb121 ], [ %month.0584, %if.then118 ], [ %month.0584, %if.then79 ], [ %month.0584, %sw.bb61 ], [ 15, %if.then57 ], [ %month.0584, %if.else39 ], [ 11, %land.lhs.true12 ], [ 11, %land.lhs.true12 ], [ %month.0584, %land.lhs.true30 ], [ %month.0584, %land.lhs.true30 ], [ 0, %land.lhs.true41 ], [ 0, %land.lhs.true49 ], [ %month.0584, %land.lhs.true63 ], [ %month.0584, %land.lhs.true71 ], [ %month.0584, %land.lhs.true91 ], [ %month.0584, %land.lhs.true91 ], [ %month.0584, %land.lhs.true102 ], [ %month.0584, %land.lhs.true110 ], [ 0, %land.lhs.true123 ], [ 0, %land.lhs.true131 ], [ %month.0584, %land.lhs.true151 ], [ %month.0584, %land.lhs.true151 ], [ %month.0584, %land.lhs.true170 ], [ %month.0584, %land.lhs.true170 ], [ %month.0584, %land.lhs.true181 ], [ %month.0584, %land.lhs.true189 ], [ 9, %land.lhs.true211 ], [ 9, %land.lhs.true211 ], [ %month.0584, %land.lhs.true222 ], [ %month.0584, %land.lhs.true230 ], [ %month.0584, %land.lhs.true243 ], [ %month.0584, %land.lhs.true251 ], [ 8, %land.lhs.true271 ], [ 8, %land.lhs.true271 ], [ %month.0584, %land.lhs.true290 ], [ %month.0584, %land.lhs.true290 ], [ 14, %land.lhs.true309 ], [ 14, %land.lhs.true309 ], [ 0, %land.lhs.true320 ], [ 0, %land.lhs.true328 ], [ 10, %land.lhs.true351 ], [ 10, %land.lhs.true351 ], [ 12, %land.lhs.true370 ], [ 12, %land.lhs.true370 ], [ %month.0584, %land.lhs.true389 ], [ %month.0584, %land.lhs.true389 ], [ %month.0584, %land.lhs.true408 ], [ %month.0584, %land.lhs.true408 ], [ %month.0584, %land.lhs.true427 ], [ %month.0584, %land.lhs.true427 ], [ %month.0584, %land.lhs.true438 ], [ %month.0584, %land.lhs.true446 ], [ 18, %land.lhs.true471 ], [ 18, %land.lhs.true471 ], [ %month.0584, %land.lhs.true482 ], [ %month.0584, %land.lhs.true490 ], [ 0, %land.lhs.true503 ], [ 0, %land.lhs.true511 ], [ %month.0584, %land.lhs.true531 ], [ %month.0584, %land.lhs.true531 ], [ %month.0584, %land.lhs.true542 ], [ %month.0584, %land.lhs.true550 ], [ %month.0584, %land.lhs.true571 ], [ %month.0584, %land.lhs.true571 ], [ 16, %land.lhs.true590 ], [ 16, %land.lhs.true590 ], [ %month.0584, %land.lhs.true601 ], [ %month.0584, %land.lhs.true609 ], [ %month.0584, %land.lhs.true631 ], [ %month.0584, %land.lhs.true631 ], [ %month.0584, %land.lhs.true642 ], [ %month.0584, %land.lhs.true650 ], [ %month.0584, %land.lhs.true663 ], [ %month.0584, %land.lhs.true671 ], [ %month.0584, %land.lhs.true691 ], [ %month.0584, %land.lhs.true699 ], [ %month.0584, %land.lhs.true991 ], [ %month.0584, %land.lhs.true983 ], [ %month.0584, %if.end943 ], [ %month.0584, %if.else948 ], [ %month.0584, %if.else981 ], [ %month.0584, %if.then999 ], [ %month.0584, %if.then977 ], [ 0, %if.end1061 ], [ 0, %if.end1076 ], [ 0, %if.else1169 ], [ 0, %if.end1211 ], [ %month.0584, %if.else1234 ], [ %month.0584, %if.then1252 ], [ %month.0584, %cond.true1254 ], [ %month.0584, %if.then1293 ], [ %month.0584, %cond.true1295 ], [ %month.0584, %if.then1328 ], [ %month.0584, %if.else1247 ], [ %month.0584, %if.then1361 ], [ %month.0584, %cond.true1363 ], [ %month.0584, %sw.bb81 ], [ %month.0584, %sw.bb141 ], [ %month.0584, %if.else299 ], [ %month.0584, %sw.bb521 ], [ %month.0584, %sw.bb621 ], [ %month.0584, %land.lhs.true679 ], [ %month.0584, %if.else1347 ], [ %month.0584, %land.lhs.true83 ], [ %month.0584, %land.lhs.true162 ], [ %month.0584, %land.lhs.true143 ], [ 0, %land.lhs.true301 ], [ %month.0584, %land.lhs.true523 ], [ %month.0584, %land.lhs.true623 ], [ %month.0584, %while.end ], [ 0, %land.lhs.true1160 ] - %zone.1 = phi i32 [ %zone.0586, %if.end4 ], [ %zone.0586, %if.then793 ], [ %zone.0586, %if.end798 ], [ %zone.0586, %while.end834 ], [ %zone.0586, %if.else881 ], [ %zone.0586, %if.then1018 ], [ %zone.0586, %if.then1042 ], [ %zone.0586, %if.end1068 ], [ %zone.0586, %if.end1098 ], [ %zone.0586, %if.then1127 ], [ %zone.0586, %if.then1193 ], [ %zone.0586, %if.end1199 ], [ %zone.0586, %if.end1216 ], [ %zone.0586, %if.then1345 ], [ %zone.0586, %if.else1341 ], [ %zone.0586, %if.then711 ], [ %zone.0586, %if.then716 ], [ 30, %if.end777 ], [ %zone.0586, %if.then707 ], [ %zone.0586, %sw.bb689 ], [ %zone.0586, %sw.bb661 ], [ %zone.0586, %if.then658 ], [ %zone.0586, %if.then617 ], [ %zone.0586, %if.else599 ], [ 20, %if.then558 ], [ %zone.0586, %if.then519 ], [ %zone.0586, %sw.bb501 ], [ 29, %if.then498 ], [ %zone.0586, %if.else480 ], [ 22, %if.then454 ], [ %zone.0586, %if.else436 ], [ %zone.0586, %if.then336 ], [ 30, %if.then259 ], [ %zone.0586, %sw.bb241 ], [ %zone.0586, %if.then238 ], [ %zone.0586, %if.else220 ], [ 26, %if.then197 ], [ %zone.0586, %if.then139 ], [ %zone.0586, %sw.bb121 ], [ 24, %if.then118 ], [ 31, %if.then79 ], [ %zone.0586, %sw.bb61 ], [ %zone.0586, %if.then57 ], [ %zone.0586, %if.else39 ], [ %zone.0586, %land.lhs.true12 ], [ %zone.0586, %land.lhs.true12 ], [ 28, %land.lhs.true30 ], [ 28, %land.lhs.true30 ], [ %zone.0586, %land.lhs.true41 ], [ %zone.0586, %land.lhs.true49 ], [ 0, %land.lhs.true63 ], [ 0, %land.lhs.true71 ], [ 25, %land.lhs.true91 ], [ 25, %land.lhs.true91 ], [ 0, %land.lhs.true102 ], [ 0, %land.lhs.true110 ], [ %zone.0586, %land.lhs.true123 ], [ %zone.0586, %land.lhs.true131 ], [ 27, %land.lhs.true151 ], [ 27, %land.lhs.true151 ], [ 33, %land.lhs.true170 ], [ 33, %land.lhs.true170 ], [ 0, %land.lhs.true181 ], [ 0, %land.lhs.true189 ], [ %zone.0586, %land.lhs.true211 ], [ %zone.0586, %land.lhs.true211 ], [ %zone.0586, %land.lhs.true222 ], [ %zone.0586, %land.lhs.true230 ], [ 0, %land.lhs.true243 ], [ 0, %land.lhs.true251 ], [ %zone.0586, %land.lhs.true271 ], [ %zone.0586, %land.lhs.true271 ], [ 34, %land.lhs.true290 ], [ 34, %land.lhs.true290 ], [ %zone.0586, %land.lhs.true309 ], [ %zone.0586, %land.lhs.true309 ], [ %zone.0586, %land.lhs.true320 ], [ %zone.0586, %land.lhs.true328 ], [ %zone.0586, %land.lhs.true351 ], [ %zone.0586, %land.lhs.true351 ], [ %zone.0586, %land.lhs.true370 ], [ %zone.0586, %land.lhs.true370 ], [ 23, %land.lhs.true389 ], [ 23, %land.lhs.true389 ], [ 32, %land.lhs.true408 ], [ 32, %land.lhs.true408 ], [ %zone.0586, %land.lhs.true427 ], [ %zone.0586, %land.lhs.true427 ], [ 0, %land.lhs.true438 ], [ 0, %land.lhs.true446 ], [ %zone.0586, %land.lhs.true471 ], [ %zone.0586, %land.lhs.true471 ], [ 0, %land.lhs.true482 ], [ 0, %land.lhs.true490 ], [ %zone.0586, %land.lhs.true503 ], [ %zone.0586, %land.lhs.true511 ], [ 21, %land.lhs.true531 ], [ 21, %land.lhs.true531 ], [ 0, %land.lhs.true542 ], [ 0, %land.lhs.true550 ], [ %zone.0586, %land.lhs.true571 ], [ %zone.0586, %land.lhs.true571 ], [ %zone.0586, %land.lhs.true590 ], [ %zone.0586, %land.lhs.true590 ], [ %zone.0586, %land.lhs.true601 ], [ %zone.0586, %land.lhs.true609 ], [ %zone.0586, %land.lhs.true631 ], [ %zone.0586, %land.lhs.true631 ], [ %zone.0586, %land.lhs.true642 ], [ %zone.0586, %land.lhs.true650 ], [ 0, %land.lhs.true663 ], [ 0, %land.lhs.true671 ], [ %zone.0586, %land.lhs.true691 ], [ %zone.0586, %land.lhs.true699 ], [ %zone.0586, %land.lhs.true991 ], [ %zone.0586, %land.lhs.true983 ], [ 30, %if.end943 ], [ %zone.0586, %if.else948 ], [ %zone.0586, %if.else981 ], [ %zone.0586, %if.then999 ], [ %zone.0586, %if.then977 ], [ %zone.0586, %if.end1061 ], [ %zone.0586, %if.end1076 ], [ %zone.0586, %if.else1169 ], [ %zone.0586, %if.end1211 ], [ %zone.0586, %if.else1234 ], [ %zone.0586, %if.then1252 ], [ %zone.0586, %cond.true1254 ], [ %zone.0586, %if.then1293 ], [ %zone.0586, %cond.true1295 ], [ %zone.0586, %if.then1328 ], [ %zone.0586, %if.else1247 ], [ %zone.0586, %if.then1361 ], [ %zone.0586, %cond.true1363 ], [ %zone.0586, %sw.bb81 ], [ %zone.0586, %sw.bb141 ], [ %zone.0586, %if.else299 ], [ %zone.0586, %sw.bb521 ], [ %zone.0586, %sw.bb621 ], [ %spec.select537, %land.lhs.true679 ], [ %zone.0586, %if.else1347 ], [ 0, %land.lhs.true83 ], [ 0, %land.lhs.true162 ], [ 0, %land.lhs.true143 ], [ %zone.0586, %land.lhs.true301 ], [ 0, %land.lhs.true523 ], [ %zone.0586, %land.lhs.true623 ], [ %zone.0586, %while.end ], [ %zone.0586, %land.lhs.true1160 ] - %zone_offset.1 = phi i32 [ %zone_offset.0587, %if.end4 ], [ %zone_offset.0587, %if.then793 ], [ %zone_offset.0587, %if.end798 ], [ %zone_offset.0587, %while.end834 ], [ %zone_offset.0587, %if.else881 ], [ %zone_offset.0587, %if.then1018 ], [ %zone_offset.0587, %if.then1042 ], [ %zone_offset.0587, %if.end1068 ], [ %zone_offset.0587, %if.end1098 ], [ %zone_offset.0587, %if.then1127 ], [ %zone_offset.0587, %if.then1193 ], [ %zone_offset.0587, %if.end1199 ], [ %zone_offset.0587, %if.end1216 ], [ %zone_offset.0587, %if.then1345 ], [ %zone_offset.0587, %if.else1341 ], [ %zone_offset.0587, %if.then711 ], [ -1, %if.then716 ], [ %mul778, %if.end777 ], [ %zone_offset.0587, %if.then707 ], [ %zone_offset.0587, %sw.bb689 ], [ %zone_offset.0587, %sw.bb661 ], [ %zone_offset.0587, %if.then658 ], [ %zone_offset.0587, %if.then617 ], [ %zone_offset.0587, %if.else599 ], [ %zone_offset.0587, %if.then558 ], [ %zone_offset.0587, %if.then519 ], [ %zone_offset.0587, %sw.bb501 ], [ %zone_offset.0587, %if.then498 ], [ %zone_offset.0587, %if.else480 ], [ %zone_offset.0587, %if.then454 ], [ %zone_offset.0587, %if.else436 ], [ %zone_offset.0587, %if.then336 ], [ %zone_offset.0587, %if.then259 ], [ %zone_offset.0587, %sw.bb241 ], [ %zone_offset.0587, %if.then238 ], [ %zone_offset.0587, %if.else220 ], [ %zone_offset.0587, %if.then197 ], [ %zone_offset.0587, %if.then139 ], [ %zone_offset.0587, %sw.bb121 ], [ %zone_offset.0587, %if.then118 ], [ %zone_offset.0587, %if.then79 ], [ %zone_offset.0587, %sw.bb61 ], [ %zone_offset.0587, %if.then57 ], [ %zone_offset.0587, %if.else39 ], [ %zone_offset.0587, %land.lhs.true12 ], [ %zone_offset.0587, %land.lhs.true12 ], [ %zone_offset.0587, %land.lhs.true30 ], [ %zone_offset.0587, %land.lhs.true30 ], [ %zone_offset.0587, %land.lhs.true41 ], [ %zone_offset.0587, %land.lhs.true49 ], [ %zone_offset.0587, %land.lhs.true63 ], [ %zone_offset.0587, %land.lhs.true71 ], [ %zone_offset.0587, %land.lhs.true91 ], [ %zone_offset.0587, %land.lhs.true91 ], [ %zone_offset.0587, %land.lhs.true102 ], [ %zone_offset.0587, %land.lhs.true110 ], [ %zone_offset.0587, %land.lhs.true123 ], [ %zone_offset.0587, %land.lhs.true131 ], [ %zone_offset.0587, %land.lhs.true151 ], [ %zone_offset.0587, %land.lhs.true151 ], [ %zone_offset.0587, %land.lhs.true170 ], [ %zone_offset.0587, %land.lhs.true170 ], [ %zone_offset.0587, %land.lhs.true181 ], [ %zone_offset.0587, %land.lhs.true189 ], [ %zone_offset.0587, %land.lhs.true211 ], [ %zone_offset.0587, %land.lhs.true211 ], [ %zone_offset.0587, %land.lhs.true222 ], [ %zone_offset.0587, %land.lhs.true230 ], [ %zone_offset.0587, %land.lhs.true243 ], [ %zone_offset.0587, %land.lhs.true251 ], [ %zone_offset.0587, %land.lhs.true271 ], [ %zone_offset.0587, %land.lhs.true271 ], [ %zone_offset.0587, %land.lhs.true290 ], [ %zone_offset.0587, %land.lhs.true290 ], [ %zone_offset.0587, %land.lhs.true309 ], [ %zone_offset.0587, %land.lhs.true309 ], [ %zone_offset.0587, %land.lhs.true320 ], [ %zone_offset.0587, %land.lhs.true328 ], [ %zone_offset.0587, %land.lhs.true351 ], [ %zone_offset.0587, %land.lhs.true351 ], [ %zone_offset.0587, %land.lhs.true370 ], [ %zone_offset.0587, %land.lhs.true370 ], [ %zone_offset.0587, %land.lhs.true389 ], [ %zone_offset.0587, %land.lhs.true389 ], [ %zone_offset.0587, %land.lhs.true408 ], [ %zone_offset.0587, %land.lhs.true408 ], [ %zone_offset.0587, %land.lhs.true427 ], [ %zone_offset.0587, %land.lhs.true427 ], [ %zone_offset.0587, %land.lhs.true438 ], [ %zone_offset.0587, %land.lhs.true446 ], [ %zone_offset.0587, %land.lhs.true471 ], [ %zone_offset.0587, %land.lhs.true471 ], [ %zone_offset.0587, %land.lhs.true482 ], [ %zone_offset.0587, %land.lhs.true490 ], [ %zone_offset.0587, %land.lhs.true503 ], [ %zone_offset.0587, %land.lhs.true511 ], [ %zone_offset.0587, %land.lhs.true531 ], [ %zone_offset.0587, %land.lhs.true531 ], [ %zone_offset.0587, %land.lhs.true542 ], [ %zone_offset.0587, %land.lhs.true550 ], [ %zone_offset.0587, %land.lhs.true571 ], [ %zone_offset.0587, %land.lhs.true571 ], [ %zone_offset.0587, %land.lhs.true590 ], [ %zone_offset.0587, %land.lhs.true590 ], [ %zone_offset.0587, %land.lhs.true601 ], [ %zone_offset.0587, %land.lhs.true609 ], [ %zone_offset.0587, %land.lhs.true631 ], [ %zone_offset.0587, %land.lhs.true631 ], [ %zone_offset.0587, %land.lhs.true642 ], [ %zone_offset.0587, %land.lhs.true650 ], [ %zone_offset.0587, %land.lhs.true663 ], [ %zone_offset.0587, %land.lhs.true671 ], [ %zone_offset.0587, %land.lhs.true691 ], [ %zone_offset.0587, %land.lhs.true699 ], [ %zone_offset.0587, %land.lhs.true991 ], [ %zone_offset.0587, %land.lhs.true983 ], [ %zone_offset.0587, %if.end943 ], [ %zone_offset.0587, %if.else948 ], [ %zone_offset.0587, %if.else981 ], [ %zone_offset.0587, %if.then999 ], [ %zone_offset.0587, %if.then977 ], [ %zone_offset.0587, %if.end1061 ], [ %zone_offset.0587, %if.end1076 ], [ %zone_offset.0587, %if.else1169 ], [ %zone_offset.0587, %if.end1211 ], [ %zone_offset.0587, %if.else1234 ], [ %zone_offset.0587, %if.then1252 ], [ %zone_offset.0587, %cond.true1254 ], [ %zone_offset.0587, %if.then1293 ], [ %zone_offset.0587, %cond.true1295 ], [ %zone_offset.0587, %if.then1328 ], [ %zone_offset.0587, %if.else1247 ], [ %zone_offset.0587, %if.then1361 ], [ %zone_offset.0587, %cond.true1363 ], [ %zone_offset.0587, %sw.bb81 ], [ %zone_offset.0587, %sw.bb141 ], [ %zone_offset.0587, %if.else299 ], [ %zone_offset.0587, %sw.bb521 ], [ %zone_offset.0587, %sw.bb621 ], [ %zone_offset.0587, %land.lhs.true679 ], [ %zone_offset.0587, %if.else1347 ], [ %zone_offset.0587, %land.lhs.true83 ], [ %zone_offset.0587, %land.lhs.true162 ], [ %zone_offset.0587, %land.lhs.true143 ], [ %zone_offset.0587, %land.lhs.true301 ], [ %zone_offset.0587, %land.lhs.true523 ], [ %zone_offset.0587, %land.lhs.true623 ], [ -1, %while.end ], [ %zone_offset.0587, %land.lhs.true1160 ] - %date.1 = phi i32 [ %date.0589, %if.end4 ], [ %date.0589, %if.then793 ], [ %date.0589, %if.end798 ], [ %date.0589, %while.end834 ], [ %date.0589, %if.else881 ], [ %date.0589, %if.then1018 ], [ %date.0589, %if.then1042 ], [ %date.0589, %if.end1068 ], [ %date.0589, %if.end1098 ], [ %date.0589, %if.then1127 ], [ %date.0589, %if.then1193 ], [ %n3.1, %if.end1199 ], [ %n1.0.n2.0, %if.end1216 ], [ %date.0589, %if.then1345 ], [ %date.0589, %if.else1341 ], [ %date.0589, %if.then711 ], [ %date.0589, %if.then716 ], [ %date.0589, %if.end777 ], [ %date.0589, %if.then707 ], [ %date.0589, %sw.bb689 ], [ %date.0589, %sw.bb661 ], [ %date.0589, %if.then658 ], [ %date.0589, %if.then617 ], [ %date.0589, %if.else599 ], [ %date.0589, %if.then558 ], [ %date.0589, %if.then519 ], [ %date.0589, %sw.bb501 ], [ %date.0589, %if.then498 ], [ %date.0589, %if.else480 ], [ %date.0589, %if.then454 ], [ %date.0589, %if.else436 ], [ %date.0589, %if.then336 ], [ %date.0589, %if.then259 ], [ %date.0589, %sw.bb241 ], [ %date.0589, %if.then238 ], [ %date.0589, %if.else220 ], [ %date.0589, %if.then197 ], [ %date.0589, %if.then139 ], [ %date.0589, %sw.bb121 ], [ %date.0589, %if.then118 ], [ %date.0589, %if.then79 ], [ %date.0589, %sw.bb61 ], [ %date.0589, %if.then57 ], [ %date.0589, %if.else39 ], [ %date.0589, %land.lhs.true12 ], [ %date.0589, %land.lhs.true12 ], [ %date.0589, %land.lhs.true30 ], [ %date.0589, %land.lhs.true30 ], [ %date.0589, %land.lhs.true41 ], [ %date.0589, %land.lhs.true49 ], [ %date.0589, %land.lhs.true63 ], [ %date.0589, %land.lhs.true71 ], [ %date.0589, %land.lhs.true91 ], [ %date.0589, %land.lhs.true91 ], [ %date.0589, %land.lhs.true102 ], [ %date.0589, %land.lhs.true110 ], [ %date.0589, %land.lhs.true123 ], [ %date.0589, %land.lhs.true131 ], [ %date.0589, %land.lhs.true151 ], [ %date.0589, %land.lhs.true151 ], [ %date.0589, %land.lhs.true170 ], [ %date.0589, %land.lhs.true170 ], [ %date.0589, %land.lhs.true181 ], [ %date.0589, %land.lhs.true189 ], [ %date.0589, %land.lhs.true211 ], [ %date.0589, %land.lhs.true211 ], [ %date.0589, %land.lhs.true222 ], [ %date.0589, %land.lhs.true230 ], [ %date.0589, %land.lhs.true243 ], [ %date.0589, %land.lhs.true251 ], [ %date.0589, %land.lhs.true271 ], [ %date.0589, %land.lhs.true271 ], [ %date.0589, %land.lhs.true290 ], [ %date.0589, %land.lhs.true290 ], [ %date.0589, %land.lhs.true309 ], [ %date.0589, %land.lhs.true309 ], [ %date.0589, %land.lhs.true320 ], [ %date.0589, %land.lhs.true328 ], [ %date.0589, %land.lhs.true351 ], [ %date.0589, %land.lhs.true351 ], [ %date.0589, %land.lhs.true370 ], [ %date.0589, %land.lhs.true370 ], [ %date.0589, %land.lhs.true389 ], [ %date.0589, %land.lhs.true389 ], [ %date.0589, %land.lhs.true408 ], [ %date.0589, %land.lhs.true408 ], [ %date.0589, %land.lhs.true427 ], [ %date.0589, %land.lhs.true427 ], [ %date.0589, %land.lhs.true438 ], [ %date.0589, %land.lhs.true446 ], [ %date.0589, %land.lhs.true471 ], [ %date.0589, %land.lhs.true471 ], [ %date.0589, %land.lhs.true482 ], [ %date.0589, %land.lhs.true490 ], [ %date.0589, %land.lhs.true503 ], [ %date.0589, %land.lhs.true511 ], [ %date.0589, %land.lhs.true531 ], [ %date.0589, %land.lhs.true531 ], [ %date.0589, %land.lhs.true542 ], [ %date.0589, %land.lhs.true550 ], [ %date.0589, %land.lhs.true571 ], [ %date.0589, %land.lhs.true571 ], [ %date.0589, %land.lhs.true590 ], [ %date.0589, %land.lhs.true590 ], [ %date.0589, %land.lhs.true601 ], [ %date.0589, %land.lhs.true609 ], [ %date.0589, %land.lhs.true631 ], [ %date.0589, %land.lhs.true631 ], [ %date.0589, %land.lhs.true642 ], [ %date.0589, %land.lhs.true650 ], [ %date.0589, %land.lhs.true663 ], [ %date.0589, %land.lhs.true671 ], [ %date.0589, %land.lhs.true691 ], [ %date.0589, %land.lhs.true699 ], [ %date.0589, %land.lhs.true991 ], [ %date.0589, %land.lhs.true983 ], [ %date.0589, %if.end943 ], [ %date.0589, %if.else948 ], [ %date.0589, %if.else981 ], [ %date.0589, %if.then999 ], [ %date.0589, %if.then977 ], [ %date.0589, %if.end1061 ], [ %date.0589, %if.end1076 ], [ %date.0589, %if.else1169 ], [ %date.0589, %if.end1211 ], [ %date.0589, %if.else1234 ], [ %date.0589, %if.then1252 ], [ %date.0589, %cond.true1254 ], [ %date.0589, %if.then1293 ], [ %date.0589, %cond.true1295 ], [ %add1336, %if.then1328 ], [ %date.0589, %if.else1247 ], [ %date.0589, %if.then1361 ], [ %sub1366, %cond.true1363 ], [ %date.0589, %sw.bb81 ], [ %date.0589, %sw.bb141 ], [ %date.0589, %if.else299 ], [ %date.0589, %sw.bb521 ], [ %date.0589, %sw.bb621 ], [ %date.0589, %land.lhs.true679 ], [ %date.0589, %if.else1347 ], [ %date.0589, %land.lhs.true83 ], [ %date.0589, %land.lhs.true162 ], [ %date.0589, %land.lhs.true143 ], [ %date.0589, %land.lhs.true301 ], [ %date.0589, %land.lhs.true523 ], [ %date.0589, %land.lhs.true623 ], [ %date.0589, %while.end ], [ %date.0589, %land.lhs.true1160 ] - %year.1 = phi i32 [ %year.0591, %if.end4 ], [ %year.0591, %if.then793 ], [ %year.0591, %if.end798 ], [ %year.0591, %while.end834 ], [ %year.0591, %if.else881 ], [ %year.0591, %if.then1018 ], [ %year.0591, %if.then1042 ], [ %year.0591, %if.end1068 ], [ %year.0591, %if.end1098 ], [ %year.0591, %if.then1127 ], [ %year.0591, %if.then1193 ], [ %year.2, %if.end1199 ], [ %n3.2, %if.end1216 ], [ %add1346, %if.then1345 ], [ %year.0591, %if.else1341 ], [ %year.0591, %if.then711 ], [ %year.0591, %if.then716 ], [ %year.0591, %if.end777 ], [ %year.0591, %if.then707 ], [ %year.0591, %sw.bb689 ], [ %year.0591, %sw.bb661 ], [ %year.0591, %if.then658 ], [ %year.0591, %if.then617 ], [ %year.0591, %if.else599 ], [ %year.0591, %if.then558 ], [ %year.0591, %if.then519 ], [ %year.0591, %sw.bb501 ], [ %year.0591, %if.then498 ], [ %year.0591, %if.else480 ], [ %year.0591, %if.then454 ], [ %year.0591, %if.else436 ], [ %year.0591, %if.then336 ], [ %year.0591, %if.then259 ], [ %year.0591, %sw.bb241 ], [ %year.0591, %if.then238 ], [ %year.0591, %if.else220 ], [ %year.0591, %if.then197 ], [ %year.0591, %if.then139 ], [ %year.0591, %sw.bb121 ], [ %year.0591, %if.then118 ], [ %year.0591, %if.then79 ], [ %year.0591, %sw.bb61 ], [ %year.0591, %if.then57 ], [ %year.0591, %if.else39 ], [ %year.0591, %land.lhs.true12 ], [ %year.0591, %land.lhs.true12 ], [ %year.0591, %land.lhs.true30 ], [ %year.0591, %land.lhs.true30 ], [ %year.0591, %land.lhs.true41 ], [ %year.0591, %land.lhs.true49 ], [ %year.0591, %land.lhs.true63 ], [ %year.0591, %land.lhs.true71 ], [ %year.0591, %land.lhs.true91 ], [ %year.0591, %land.lhs.true91 ], [ %year.0591, %land.lhs.true102 ], [ %year.0591, %land.lhs.true110 ], [ %year.0591, %land.lhs.true123 ], [ %year.0591, %land.lhs.true131 ], [ %year.0591, %land.lhs.true151 ], [ %year.0591, %land.lhs.true151 ], [ %year.0591, %land.lhs.true170 ], [ %year.0591, %land.lhs.true170 ], [ %year.0591, %land.lhs.true181 ], [ %year.0591, %land.lhs.true189 ], [ %year.0591, %land.lhs.true211 ], [ %year.0591, %land.lhs.true211 ], [ %year.0591, %land.lhs.true222 ], [ %year.0591, %land.lhs.true230 ], [ %year.0591, %land.lhs.true243 ], [ %year.0591, %land.lhs.true251 ], [ %year.0591, %land.lhs.true271 ], [ %year.0591, %land.lhs.true271 ], [ %year.0591, %land.lhs.true290 ], [ %year.0591, %land.lhs.true290 ], [ %year.0591, %land.lhs.true309 ], [ %year.0591, %land.lhs.true309 ], [ %year.0591, %land.lhs.true320 ], [ %year.0591, %land.lhs.true328 ], [ %year.0591, %land.lhs.true351 ], [ %year.0591, %land.lhs.true351 ], [ %year.0591, %land.lhs.true370 ], [ %year.0591, %land.lhs.true370 ], [ %year.0591, %land.lhs.true389 ], [ %year.0591, %land.lhs.true389 ], [ %year.0591, %land.lhs.true408 ], [ %year.0591, %land.lhs.true408 ], [ %year.0591, %land.lhs.true427 ], [ %year.0591, %land.lhs.true427 ], [ %year.0591, %land.lhs.true438 ], [ %year.0591, %land.lhs.true446 ], [ %year.0591, %land.lhs.true471 ], [ %year.0591, %land.lhs.true471 ], [ %year.0591, %land.lhs.true482 ], [ %year.0591, %land.lhs.true490 ], [ %year.0591, %land.lhs.true503 ], [ %year.0591, %land.lhs.true511 ], [ %year.0591, %land.lhs.true531 ], [ %year.0591, %land.lhs.true531 ], [ %year.0591, %land.lhs.true542 ], [ %year.0591, %land.lhs.true550 ], [ %year.0591, %land.lhs.true571 ], [ %year.0591, %land.lhs.true571 ], [ %year.0591, %land.lhs.true590 ], [ %year.0591, %land.lhs.true590 ], [ %year.0591, %land.lhs.true601 ], [ %year.0591, %land.lhs.true609 ], [ %year.0591, %land.lhs.true631 ], [ %year.0591, %land.lhs.true631 ], [ %year.0591, %land.lhs.true642 ], [ %year.0591, %land.lhs.true650 ], [ %year.0591, %land.lhs.true663 ], [ %year.0591, %land.lhs.true671 ], [ %year.0591, %land.lhs.true691 ], [ %year.0591, %land.lhs.true699 ], [ %year.0591, %land.lhs.true991 ], [ %year.0591, %land.lhs.true983 ], [ %year.0591, %if.end943 ], [ %year.0591, %if.else948 ], [ %year.0591, %if.else981 ], [ %year.0591, %if.then999 ], [ %year.0591, %if.then977 ], [ %year.0591, %if.end1061 ], [ %year.0591, %if.end1076 ], [ %year.0591, %if.else1169 ], [ %year.0591, %if.end1211 ], [ %year.0591, %if.else1234 ], [ %year.0591, %if.then1252 ], [ %add1282, %cond.true1254 ], [ %year.0591, %if.then1293 ], [ %add1317, %cond.true1295 ], [ %year.0591, %if.then1328 ], [ %year.0591, %if.else1247 ], [ %year.0591, %if.then1361 ], [ %year.0591, %cond.true1363 ], [ %year.0591, %sw.bb81 ], [ %year.0591, %sw.bb141 ], [ %year.0591, %if.else299 ], [ %year.0591, %sw.bb521 ], [ %year.0591, %sw.bb621 ], [ %year.0591, %land.lhs.true679 ], [ %spec.select538, %if.else1347 ], [ %year.0591, %land.lhs.true83 ], [ %year.0591, %land.lhs.true162 ], [ %year.0591, %land.lhs.true143 ], [ %year.0591, %land.lhs.true301 ], [ %year.0591, %land.lhs.true523 ], [ %year.0591, %land.lhs.true623 ], [ %year.0591, %while.end ], [ %year.0591, %land.lhs.true1160 ] - %hour.1 = phi i32 [ %hour.0593, %if.end4 ], [ %hour.0593, %if.then793 ], [ %hour.0593, %if.end798 ], [ %hour.0593, %while.end834 ], [ %hour.0593, %if.else881 ], [ %hour.0593, %if.then1018 ], [ %hour.0593, %if.then1042 ], [ %hour.0593, %if.end1068 ], [ %hour.0593, %if.end1098 ], [ %hour.0593, %if.then1127 ], [ %hour.0593, %if.then1193 ], [ %hour.0593, %if.end1199 ], [ %hour.0593, %if.end1216 ], [ %hour.0593, %if.then1345 ], [ %hour.0593, %if.else1341 ], [ %hour.0593, %if.then711 ], [ %hour.0593, %if.then716 ], [ %hour.0593, %if.end777 ], [ %hour.0593, %if.then707 ], [ %hour.0593, %sw.bb689 ], [ %hour.0593, %sw.bb661 ], [ %hour.0593, %if.then658 ], [ %hour.0593, %if.then617 ], [ %hour.0593, %if.else599 ], [ %hour.0593, %if.then558 ], [ %hour.0593, %if.then519 ], [ %hour.0593, %sw.bb501 ], [ %hour.0593, %if.then498 ], [ %hour.0593, %if.else480 ], [ %hour.0593, %if.then454 ], [ %hour.0593, %if.else436 ], [ %hour.0593, %if.then336 ], [ %hour.0593, %if.then259 ], [ %hour.0593, %sw.bb241 ], [ %hour.0593, %if.then238 ], [ %hour.0593, %if.else220 ], [ %hour.0593, %if.then197 ], [ %hour.0593, %if.then139 ], [ %hour.0593, %sw.bb121 ], [ %hour.0593, %if.then118 ], [ %hour.0593, %if.then79 ], [ %hour.0593, %sw.bb61 ], [ %hour.0593, %if.then57 ], [ %hour.0593, %if.else39 ], [ %hour.0593, %land.lhs.true12 ], [ %hour.0593, %land.lhs.true12 ], [ %hour.0593, %land.lhs.true30 ], [ %hour.0593, %land.lhs.true30 ], [ %hour.0593, %land.lhs.true41 ], [ %hour.0593, %land.lhs.true49 ], [ %hour.0593, %land.lhs.true63 ], [ %hour.0593, %land.lhs.true71 ], [ %hour.0593, %land.lhs.true91 ], [ %hour.0593, %land.lhs.true91 ], [ %hour.0593, %land.lhs.true102 ], [ %hour.0593, %land.lhs.true110 ], [ %hour.0593, %land.lhs.true123 ], [ %hour.0593, %land.lhs.true131 ], [ %hour.0593, %land.lhs.true151 ], [ %hour.0593, %land.lhs.true151 ], [ %hour.0593, %land.lhs.true170 ], [ %hour.0593, %land.lhs.true170 ], [ %hour.0593, %land.lhs.true181 ], [ %hour.0593, %land.lhs.true189 ], [ %hour.0593, %land.lhs.true211 ], [ %hour.0593, %land.lhs.true211 ], [ %hour.0593, %land.lhs.true222 ], [ %hour.0593, %land.lhs.true230 ], [ %hour.0593, %land.lhs.true243 ], [ %hour.0593, %land.lhs.true251 ], [ %hour.0593, %land.lhs.true271 ], [ %hour.0593, %land.lhs.true271 ], [ %hour.0593, %land.lhs.true290 ], [ %hour.0593, %land.lhs.true290 ], [ %hour.0593, %land.lhs.true309 ], [ %hour.0593, %land.lhs.true309 ], [ %hour.0593, %land.lhs.true320 ], [ %hour.0593, %land.lhs.true328 ], [ %hour.0593, %land.lhs.true351 ], [ %hour.0593, %land.lhs.true351 ], [ %hour.0593, %land.lhs.true370 ], [ %hour.0593, %land.lhs.true370 ], [ %hour.0593, %land.lhs.true389 ], [ %hour.0593, %land.lhs.true389 ], [ %hour.0593, %land.lhs.true408 ], [ %hour.0593, %land.lhs.true408 ], [ %hour.0593, %land.lhs.true427 ], [ %hour.0593, %land.lhs.true427 ], [ %hour.0593, %land.lhs.true438 ], [ %hour.0593, %land.lhs.true446 ], [ %hour.0593, %land.lhs.true471 ], [ %hour.0593, %land.lhs.true471 ], [ %hour.0593, %land.lhs.true482 ], [ %hour.0593, %land.lhs.true490 ], [ %hour.0593, %land.lhs.true503 ], [ %hour.0593, %land.lhs.true511 ], [ %hour.0593, %land.lhs.true531 ], [ %hour.0593, %land.lhs.true531 ], [ %hour.0593, %land.lhs.true542 ], [ %hour.0593, %land.lhs.true550 ], [ %hour.0593, %land.lhs.true571 ], [ %hour.0593, %land.lhs.true571 ], [ %hour.0593, %land.lhs.true590 ], [ %hour.0593, %land.lhs.true590 ], [ %hour.0593, %land.lhs.true601 ], [ %hour.0593, %land.lhs.true609 ], [ %hour.0593, %land.lhs.true631 ], [ %hour.0593, %land.lhs.true631 ], [ %hour.0593, %land.lhs.true642 ], [ %hour.0593, %land.lhs.true650 ], [ %hour.0593, %land.lhs.true663 ], [ %hour.0593, %land.lhs.true671 ], [ %hour.0593, %land.lhs.true691 ], [ %hour.0593, %land.lhs.true699 ], [ 12, %land.lhs.true991 ], [ 12, %land.lhs.true983 ], [ %tmp_hour.0, %if.end943 ], [ %tmp_hour.0, %if.else948 ], [ %tmp_hour.0, %if.else981 ], [ 0, %if.then999 ], [ %cond980, %if.then977 ], [ %hour.0593, %if.end1061 ], [ %hour.0593, %if.end1076 ], [ %hour.0593, %if.else1169 ], [ %hour.0593, %if.end1211 ], [ %hour.0593, %if.else1234 ], [ %hour.0593, %if.then1252 ], [ %hour.0593, %cond.true1254 ], [ %hour.0593, %if.then1293 ], [ %hour.0593, %cond.true1295 ], [ %hour.0593, %if.then1328 ], [ %hour.0593, %if.else1247 ], [ %hour.0593, %if.then1361 ], [ %hour.0593, %cond.true1363 ], [ %hour.0593, %sw.bb81 ], [ %hour.0593, %sw.bb141 ], [ %hour.0593, %if.else299 ], [ %hour.0593, %sw.bb521 ], [ %hour.0593, %sw.bb621 ], [ %hour.0593, %land.lhs.true679 ], [ %hour.0593, %if.else1347 ], [ %hour.0593, %land.lhs.true83 ], [ %hour.0593, %land.lhs.true162 ], [ %hour.0593, %land.lhs.true143 ], [ %hour.0593, %land.lhs.true301 ], [ %hour.0593, %land.lhs.true523 ], [ %hour.0593, %land.lhs.true623 ], [ %hour.0593, %while.end ], [ %hour.0593, %land.lhs.true1160 ] - %min.1 = phi i32 [ %min.0595, %if.end4 ], [ %min.0595, %if.then793 ], [ %min.0595, %if.end798 ], [ %min.0595, %while.end834 ], [ %min.0595, %if.else881 ], [ %min.0595, %if.then1018 ], [ %min.0595, %if.then1042 ], [ %min.0595, %if.end1068 ], [ %min.0595, %if.end1098 ], [ %min.0595, %if.then1127 ], [ %min.0595, %if.then1193 ], [ %min.0595, %if.end1199 ], [ %min.0595, %if.end1216 ], [ %min.0595, %if.then1345 ], [ %min.0595, %if.else1341 ], [ %min.0595, %if.then711 ], [ %min.0595, %if.then716 ], [ %min.0595, %if.end777 ], [ %min.0595, %if.then707 ], [ %min.0595, %sw.bb689 ], [ %min.0595, %sw.bb661 ], [ %min.0595, %if.then658 ], [ %min.0595, %if.then617 ], [ %min.0595, %if.else599 ], [ %min.0595, %if.then558 ], [ %min.0595, %if.then519 ], [ %min.0595, %sw.bb501 ], [ %min.0595, %if.then498 ], [ %min.0595, %if.else480 ], [ %min.0595, %if.then454 ], [ %min.0595, %if.else436 ], [ %min.0595, %if.then336 ], [ %min.0595, %if.then259 ], [ %min.0595, %sw.bb241 ], [ %min.0595, %if.then238 ], [ %min.0595, %if.else220 ], [ %min.0595, %if.then197 ], [ %min.0595, %if.then139 ], [ %min.0595, %sw.bb121 ], [ %min.0595, %if.then118 ], [ %min.0595, %if.then79 ], [ %min.0595, %sw.bb61 ], [ %min.0595, %if.then57 ], [ %min.0595, %if.else39 ], [ %min.0595, %land.lhs.true12 ], [ %min.0595, %land.lhs.true12 ], [ %min.0595, %land.lhs.true30 ], [ %min.0595, %land.lhs.true30 ], [ %min.0595, %land.lhs.true41 ], [ %min.0595, %land.lhs.true49 ], [ %min.0595, %land.lhs.true63 ], [ %min.0595, %land.lhs.true71 ], [ %min.0595, %land.lhs.true91 ], [ %min.0595, %land.lhs.true91 ], [ %min.0595, %land.lhs.true102 ], [ %min.0595, %land.lhs.true110 ], [ %min.0595, %land.lhs.true123 ], [ %min.0595, %land.lhs.true131 ], [ %min.0595, %land.lhs.true151 ], [ %min.0595, %land.lhs.true151 ], [ %min.0595, %land.lhs.true170 ], [ %min.0595, %land.lhs.true170 ], [ %min.0595, %land.lhs.true181 ], [ %min.0595, %land.lhs.true189 ], [ %min.0595, %land.lhs.true211 ], [ %min.0595, %land.lhs.true211 ], [ %min.0595, %land.lhs.true222 ], [ %min.0595, %land.lhs.true230 ], [ %min.0595, %land.lhs.true243 ], [ %min.0595, %land.lhs.true251 ], [ %min.0595, %land.lhs.true271 ], [ %min.0595, %land.lhs.true271 ], [ %min.0595, %land.lhs.true290 ], [ %min.0595, %land.lhs.true290 ], [ %min.0595, %land.lhs.true309 ], [ %min.0595, %land.lhs.true309 ], [ %min.0595, %land.lhs.true320 ], [ %min.0595, %land.lhs.true328 ], [ %min.0595, %land.lhs.true351 ], [ %min.0595, %land.lhs.true351 ], [ %min.0595, %land.lhs.true370 ], [ %min.0595, %land.lhs.true370 ], [ %min.0595, %land.lhs.true389 ], [ %min.0595, %land.lhs.true389 ], [ %min.0595, %land.lhs.true408 ], [ %min.0595, %land.lhs.true408 ], [ %min.0595, %land.lhs.true427 ], [ %min.0595, %land.lhs.true427 ], [ %min.0595, %land.lhs.true438 ], [ %min.0595, %land.lhs.true446 ], [ %min.0595, %land.lhs.true471 ], [ %min.0595, %land.lhs.true471 ], [ %min.0595, %land.lhs.true482 ], [ %min.0595, %land.lhs.true490 ], [ %min.0595, %land.lhs.true503 ], [ %min.0595, %land.lhs.true511 ], [ %min.0595, %land.lhs.true531 ], [ %min.0595, %land.lhs.true531 ], [ %min.0595, %land.lhs.true542 ], [ %min.0595, %land.lhs.true550 ], [ %min.0595, %land.lhs.true571 ], [ %min.0595, %land.lhs.true571 ], [ %min.0595, %land.lhs.true590 ], [ %min.0595, %land.lhs.true590 ], [ %min.0595, %land.lhs.true601 ], [ %min.0595, %land.lhs.true609 ], [ %min.0595, %land.lhs.true631 ], [ %min.0595, %land.lhs.true631 ], [ %min.0595, %land.lhs.true642 ], [ %min.0595, %land.lhs.true650 ], [ %min.0595, %land.lhs.true663 ], [ %min.0595, %land.lhs.true671 ], [ %min.0595, %land.lhs.true691 ], [ %min.0595, %land.lhs.true699 ], [ %tmp_min.0, %land.lhs.true991 ], [ %tmp_min.0, %land.lhs.true983 ], [ %tmp_min.0, %if.end943 ], [ %tmp_min.0, %if.else948 ], [ %tmp_min.0, %if.else981 ], [ %tmp_min.0, %if.then999 ], [ %tmp_min.0, %if.then977 ], [ %min.0595, %if.end1061 ], [ %min.0595, %if.end1076 ], [ %min.0595, %if.else1169 ], [ %min.0595, %if.end1211 ], [ %min.0595, %if.else1234 ], [ %min.0595, %if.then1252 ], [ %min.0595, %cond.true1254 ], [ %min.0595, %if.then1293 ], [ %min.0595, %cond.true1295 ], [ %min.0595, %if.then1328 ], [ %min.0595, %if.else1247 ], [ %min.0595, %if.then1361 ], [ %min.0595, %cond.true1363 ], [ %min.0595, %sw.bb81 ], [ %min.0595, %sw.bb141 ], [ %min.0595, %if.else299 ], [ %min.0595, %sw.bb521 ], [ %min.0595, %sw.bb621 ], [ %min.0595, %land.lhs.true679 ], [ %min.0595, %if.else1347 ], [ %min.0595, %land.lhs.true83 ], [ %min.0595, %land.lhs.true162 ], [ %min.0595, %land.lhs.true143 ], [ %min.0595, %land.lhs.true301 ], [ %min.0595, %land.lhs.true523 ], [ %min.0595, %land.lhs.true623 ], [ %min.0595, %while.end ], [ %min.0595, %land.lhs.true1160 ] - %sec.1 = phi i32 [ %sec.0597, %if.end4 ], [ %sec.0597, %if.then793 ], [ %sec.0597, %if.end798 ], [ %sec.0597, %while.end834 ], [ %sec.0597, %if.else881 ], [ %sec.0597, %if.then1018 ], [ %sec.0597, %if.then1042 ], [ %sec.0597, %if.end1068 ], [ %sec.0597, %if.end1098 ], [ %sec.0597, %if.then1127 ], [ %sec.0597, %if.then1193 ], [ %sec.0597, %if.end1199 ], [ %sec.0597, %if.end1216 ], [ %sec.0597, %if.then1345 ], [ %sec.0597, %if.else1341 ], [ %sec.0597, %if.then711 ], [ %sec.0597, %if.then716 ], [ %sec.0597, %if.end777 ], [ %sec.0597, %if.then707 ], [ %sec.0597, %sw.bb689 ], [ %sec.0597, %sw.bb661 ], [ %sec.0597, %if.then658 ], [ %sec.0597, %if.then617 ], [ %sec.0597, %if.else599 ], [ %sec.0597, %if.then558 ], [ %sec.0597, %if.then519 ], [ %sec.0597, %sw.bb501 ], [ %sec.0597, %if.then498 ], [ %sec.0597, %if.else480 ], [ %sec.0597, %if.then454 ], [ %sec.0597, %if.else436 ], [ %sec.0597, %if.then336 ], [ %sec.0597, %if.then259 ], [ %sec.0597, %sw.bb241 ], [ %sec.0597, %if.then238 ], [ %sec.0597, %if.else220 ], [ %sec.0597, %if.then197 ], [ %sec.0597, %if.then139 ], [ %sec.0597, %sw.bb121 ], [ %sec.0597, %if.then118 ], [ %sec.0597, %if.then79 ], [ %sec.0597, %sw.bb61 ], [ %sec.0597, %if.then57 ], [ %sec.0597, %if.else39 ], [ %sec.0597, %land.lhs.true12 ], [ %sec.0597, %land.lhs.true12 ], [ %sec.0597, %land.lhs.true30 ], [ %sec.0597, %land.lhs.true30 ], [ %sec.0597, %land.lhs.true41 ], [ %sec.0597, %land.lhs.true49 ], [ %sec.0597, %land.lhs.true63 ], [ %sec.0597, %land.lhs.true71 ], [ %sec.0597, %land.lhs.true91 ], [ %sec.0597, %land.lhs.true91 ], [ %sec.0597, %land.lhs.true102 ], [ %sec.0597, %land.lhs.true110 ], [ %sec.0597, %land.lhs.true123 ], [ %sec.0597, %land.lhs.true131 ], [ %sec.0597, %land.lhs.true151 ], [ %sec.0597, %land.lhs.true151 ], [ %sec.0597, %land.lhs.true170 ], [ %sec.0597, %land.lhs.true170 ], [ %sec.0597, %land.lhs.true181 ], [ %sec.0597, %land.lhs.true189 ], [ %sec.0597, %land.lhs.true211 ], [ %sec.0597, %land.lhs.true211 ], [ %sec.0597, %land.lhs.true222 ], [ %sec.0597, %land.lhs.true230 ], [ %sec.0597, %land.lhs.true243 ], [ %sec.0597, %land.lhs.true251 ], [ %sec.0597, %land.lhs.true271 ], [ %sec.0597, %land.lhs.true271 ], [ %sec.0597, %land.lhs.true290 ], [ %sec.0597, %land.lhs.true290 ], [ %sec.0597, %land.lhs.true309 ], [ %sec.0597, %land.lhs.true309 ], [ %sec.0597, %land.lhs.true320 ], [ %sec.0597, %land.lhs.true328 ], [ %sec.0597, %land.lhs.true351 ], [ %sec.0597, %land.lhs.true351 ], [ %sec.0597, %land.lhs.true370 ], [ %sec.0597, %land.lhs.true370 ], [ %sec.0597, %land.lhs.true389 ], [ %sec.0597, %land.lhs.true389 ], [ %sec.0597, %land.lhs.true408 ], [ %sec.0597, %land.lhs.true408 ], [ %sec.0597, %land.lhs.true427 ], [ %sec.0597, %land.lhs.true427 ], [ %sec.0597, %land.lhs.true438 ], [ %sec.0597, %land.lhs.true446 ], [ %sec.0597, %land.lhs.true471 ], [ %sec.0597, %land.lhs.true471 ], [ %sec.0597, %land.lhs.true482 ], [ %sec.0597, %land.lhs.true490 ], [ %sec.0597, %land.lhs.true503 ], [ %sec.0597, %land.lhs.true511 ], [ %sec.0597, %land.lhs.true531 ], [ %sec.0597, %land.lhs.true531 ], [ %sec.0597, %land.lhs.true542 ], [ %sec.0597, %land.lhs.true550 ], [ %sec.0597, %land.lhs.true571 ], [ %sec.0597, %land.lhs.true571 ], [ %sec.0597, %land.lhs.true590 ], [ %sec.0597, %land.lhs.true590 ], [ %sec.0597, %land.lhs.true601 ], [ %sec.0597, %land.lhs.true609 ], [ %sec.0597, %land.lhs.true631 ], [ %sec.0597, %land.lhs.true631 ], [ %sec.0597, %land.lhs.true642 ], [ %sec.0597, %land.lhs.true650 ], [ %sec.0597, %land.lhs.true663 ], [ %sec.0597, %land.lhs.true671 ], [ %sec.0597, %land.lhs.true691 ], [ %sec.0597, %land.lhs.true699 ], [ %tmp_sec.0, %land.lhs.true991 ], [ %tmp_sec.0, %land.lhs.true983 ], [ %tmp_sec.0, %if.end943 ], [ %tmp_sec.0, %if.else948 ], [ %tmp_sec.0, %if.else981 ], [ %tmp_sec.0, %if.then999 ], [ %tmp_sec.0, %if.then977 ], [ %sec.0597, %if.end1061 ], [ %sec.0597, %if.end1076 ], [ %sec.0597, %if.else1169 ], [ %sec.0597, %if.end1211 ], [ %sec.0597, %if.else1234 ], [ %sec.0597, %if.then1252 ], [ %sec.0597, %cond.true1254 ], [ %sec.0597, %if.then1293 ], [ %sec.0597, %cond.true1295 ], [ %sec.0597, %if.then1328 ], [ %sec.0597, %if.else1247 ], [ %sec.0597, %if.then1361 ], [ %sec.0597, %cond.true1363 ], [ %sec.0597, %sw.bb81 ], [ %sec.0597, %sw.bb141 ], [ %sec.0597, %if.else299 ], [ %sec.0597, %sw.bb521 ], [ %sec.0597, %sw.bb621 ], [ %sec.0597, %land.lhs.true679 ], [ %sec.0597, %if.else1347 ], [ %sec.0597, %land.lhs.true83 ], [ %sec.0597, %land.lhs.true162 ], [ %sec.0597, %land.lhs.true143 ], [ %sec.0597, %land.lhs.true301 ], [ %sec.0597, %land.lhs.true523 ], [ %sec.0597, %land.lhs.true623 ], [ %sec.0597, %while.end ], [ %sec.0597, %land.lhs.true1160 ] - %usec.1 = phi i32 [ %usec.0599, %if.end4 ], [ %usec.0599, %if.then793 ], [ %usec.0599, %if.end798 ], [ %usec.0599, %while.end834 ], [ %usec.0599, %if.else881 ], [ %usec.0599, %if.then1018 ], [ %usec.0599, %if.then1042 ], [ %usec.0599, %if.end1068 ], [ %usec.0599, %if.end1098 ], [ %usec.0599, %if.then1127 ], [ %usec.0599, %if.then1193 ], [ %usec.0599, %if.end1199 ], [ %usec.0599, %if.end1216 ], [ %usec.0599, %if.then1345 ], [ %usec.0599, %if.else1341 ], [ %usec.0599, %if.then711 ], [ %usec.0599, %if.then716 ], [ %usec.0599, %if.end777 ], [ %usec.0599, %if.then707 ], [ %usec.0599, %sw.bb689 ], [ %usec.0599, %sw.bb661 ], [ %usec.0599, %if.then658 ], [ %usec.0599, %if.then617 ], [ %usec.0599, %if.else599 ], [ %usec.0599, %if.then558 ], [ %usec.0599, %if.then519 ], [ %usec.0599, %sw.bb501 ], [ %usec.0599, %if.then498 ], [ %usec.0599, %if.else480 ], [ %usec.0599, %if.then454 ], [ %usec.0599, %if.else436 ], [ %usec.0599, %if.then336 ], [ %usec.0599, %if.then259 ], [ %usec.0599, %sw.bb241 ], [ %usec.0599, %if.then238 ], [ %usec.0599, %if.else220 ], [ %usec.0599, %if.then197 ], [ %usec.0599, %if.then139 ], [ %usec.0599, %sw.bb121 ], [ %usec.0599, %if.then118 ], [ %usec.0599, %if.then79 ], [ %usec.0599, %sw.bb61 ], [ %usec.0599, %if.then57 ], [ %usec.0599, %if.else39 ], [ %usec.0599, %land.lhs.true12 ], [ %usec.0599, %land.lhs.true12 ], [ %usec.0599, %land.lhs.true30 ], [ %usec.0599, %land.lhs.true30 ], [ %usec.0599, %land.lhs.true41 ], [ %usec.0599, %land.lhs.true49 ], [ %usec.0599, %land.lhs.true63 ], [ %usec.0599, %land.lhs.true71 ], [ %usec.0599, %land.lhs.true91 ], [ %usec.0599, %land.lhs.true91 ], [ %usec.0599, %land.lhs.true102 ], [ %usec.0599, %land.lhs.true110 ], [ %usec.0599, %land.lhs.true123 ], [ %usec.0599, %land.lhs.true131 ], [ %usec.0599, %land.lhs.true151 ], [ %usec.0599, %land.lhs.true151 ], [ %usec.0599, %land.lhs.true170 ], [ %usec.0599, %land.lhs.true170 ], [ %usec.0599, %land.lhs.true181 ], [ %usec.0599, %land.lhs.true189 ], [ %usec.0599, %land.lhs.true211 ], [ %usec.0599, %land.lhs.true211 ], [ %usec.0599, %land.lhs.true222 ], [ %usec.0599, %land.lhs.true230 ], [ %usec.0599, %land.lhs.true243 ], [ %usec.0599, %land.lhs.true251 ], [ %usec.0599, %land.lhs.true271 ], [ %usec.0599, %land.lhs.true271 ], [ %usec.0599, %land.lhs.true290 ], [ %usec.0599, %land.lhs.true290 ], [ %usec.0599, %land.lhs.true309 ], [ %usec.0599, %land.lhs.true309 ], [ %usec.0599, %land.lhs.true320 ], [ %usec.0599, %land.lhs.true328 ], [ %usec.0599, %land.lhs.true351 ], [ %usec.0599, %land.lhs.true351 ], [ %usec.0599, %land.lhs.true370 ], [ %usec.0599, %land.lhs.true370 ], [ %usec.0599, %land.lhs.true389 ], [ %usec.0599, %land.lhs.true389 ], [ %usec.0599, %land.lhs.true408 ], [ %usec.0599, %land.lhs.true408 ], [ %usec.0599, %land.lhs.true427 ], [ %usec.0599, %land.lhs.true427 ], [ %usec.0599, %land.lhs.true438 ], [ %usec.0599, %land.lhs.true446 ], [ %usec.0599, %land.lhs.true471 ], [ %usec.0599, %land.lhs.true471 ], [ %usec.0599, %land.lhs.true482 ], [ %usec.0599, %land.lhs.true490 ], [ %usec.0599, %land.lhs.true503 ], [ %usec.0599, %land.lhs.true511 ], [ %usec.0599, %land.lhs.true531 ], [ %usec.0599, %land.lhs.true531 ], [ %usec.0599, %land.lhs.true542 ], [ %usec.0599, %land.lhs.true550 ], [ %usec.0599, %land.lhs.true571 ], [ %usec.0599, %land.lhs.true571 ], [ %usec.0599, %land.lhs.true590 ], [ %usec.0599, %land.lhs.true590 ], [ %usec.0599, %land.lhs.true601 ], [ %usec.0599, %land.lhs.true609 ], [ %usec.0599, %land.lhs.true631 ], [ %usec.0599, %land.lhs.true631 ], [ %usec.0599, %land.lhs.true642 ], [ %usec.0599, %land.lhs.true650 ], [ %usec.0599, %land.lhs.true663 ], [ %usec.0599, %land.lhs.true671 ], [ %usec.0599, %land.lhs.true691 ], [ %usec.0599, %land.lhs.true699 ], [ %tmp_usec.0, %land.lhs.true991 ], [ %tmp_usec.0, %land.lhs.true983 ], [ %tmp_usec.0, %if.end943 ], [ %tmp_usec.0, %if.else948 ], [ %tmp_usec.0, %if.else981 ], [ %tmp_usec.0, %if.then999 ], [ %tmp_usec.0, %if.then977 ], [ %usec.0599, %if.end1061 ], [ %usec.0599, %if.end1076 ], [ %usec.0599, %if.else1169 ], [ %usec.0599, %if.end1211 ], [ %usec.0599, %if.else1234 ], [ %usec.0599, %if.then1252 ], [ %usec.0599, %cond.true1254 ], [ %usec.0599, %if.then1293 ], [ %usec.0599, %cond.true1295 ], [ %usec.0599, %if.then1328 ], [ %usec.0599, %if.else1247 ], [ %usec.0599, %if.then1361 ], [ %usec.0599, %cond.true1363 ], [ %usec.0599, %sw.bb81 ], [ %usec.0599, %sw.bb141 ], [ %usec.0599, %if.else299 ], [ %usec.0599, %sw.bb521 ], [ %usec.0599, %sw.bb621 ], [ %usec.0599, %land.lhs.true679 ], [ %usec.0599, %if.else1347 ], [ %usec.0599, %land.lhs.true83 ], [ %usec.0599, %land.lhs.true162 ], [ %usec.0599, %land.lhs.true143 ], [ %usec.0599, %land.lhs.true301 ], [ %usec.0599, %land.lhs.true523 ], [ %usec.0599, %land.lhs.true623 ], [ %usec.0599, %while.end ], [ %usec.0599, %land.lhs.true1160 ] - %rest.1 = phi ptr [ %rest.0601, %if.end4 ], [ %rest.0601, %if.then793 ], [ %rest.0601, %if.end798 ], [ %incdec.ptr789, %while.end834 ], [ %spec.select, %if.else881 ], [ %rest.0601, %if.then1018 ], [ %rest.0601, %if.then1042 ], [ %rest.0601, %if.end1068 ], [ %rest.0601, %if.end1098 ], [ %rest.0601, %if.then1127 ], [ %rest.0601, %if.then1193 ], [ %s1019.3, %if.end1199 ], [ %s1019.3, %if.end1216 ], [ %rest.0601, %if.then1345 ], [ %rest.0601, %if.else1341 ], [ %incdec.ptr, %if.then711 ], [ %incdec.ptr717, %if.then716 ], [ %incdec.ptr721.ptr, %if.end777 ], [ %rest.0601, %if.then707 ], [ %rest.0601, %sw.bb689 ], [ %rest.0601, %sw.bb661 ], [ %rest.0601, %if.then658 ], [ %rest.0601, %if.then617 ], [ %rest.0601, %if.else599 ], [ %rest.0601, %if.then558 ], [ %rest.0601, %if.then519 ], [ %rest.0601, %sw.bb501 ], [ %rest.0601, %if.then498 ], [ %rest.0601, %if.else480 ], [ %rest.0601, %if.then454 ], [ %rest.0601, %if.else436 ], [ %rest.0601, %if.then336 ], [ %rest.0601, %if.then259 ], [ %rest.0601, %sw.bb241 ], [ %rest.0601, %if.then238 ], [ %rest.0601, %if.else220 ], [ %rest.0601, %if.then197 ], [ %rest.0601, %if.then139 ], [ %rest.0601, %sw.bb121 ], [ %rest.0601, %if.then118 ], [ %rest.0601, %if.then79 ], [ %rest.0601, %sw.bb61 ], [ %rest.0601, %if.then57 ], [ %rest.0601, %if.else39 ], [ %rest.0601, %land.lhs.true12 ], [ %rest.0601, %land.lhs.true12 ], [ %rest.0601, %land.lhs.true30 ], [ %rest.0601, %land.lhs.true30 ], [ %rest.0601, %land.lhs.true41 ], [ %rest.0601, %land.lhs.true49 ], [ %rest.0601, %land.lhs.true63 ], [ %rest.0601, %land.lhs.true71 ], [ %rest.0601, %land.lhs.true91 ], [ %rest.0601, %land.lhs.true91 ], [ %rest.0601, %land.lhs.true102 ], [ %rest.0601, %land.lhs.true110 ], [ %rest.0601, %land.lhs.true123 ], [ %rest.0601, %land.lhs.true131 ], [ %rest.0601, %land.lhs.true151 ], [ %rest.0601, %land.lhs.true151 ], [ %rest.0601, %land.lhs.true170 ], [ %rest.0601, %land.lhs.true170 ], [ %rest.0601, %land.lhs.true181 ], [ %rest.0601, %land.lhs.true189 ], [ %rest.0601, %land.lhs.true211 ], [ %rest.0601, %land.lhs.true211 ], [ %rest.0601, %land.lhs.true222 ], [ %rest.0601, %land.lhs.true230 ], [ %rest.0601, %land.lhs.true243 ], [ %rest.0601, %land.lhs.true251 ], [ %rest.0601, %land.lhs.true271 ], [ %rest.0601, %land.lhs.true271 ], [ %rest.0601, %land.lhs.true290 ], [ %rest.0601, %land.lhs.true290 ], [ %rest.0601, %land.lhs.true309 ], [ %rest.0601, %land.lhs.true309 ], [ %rest.0601, %land.lhs.true320 ], [ %rest.0601, %land.lhs.true328 ], [ %rest.0601, %land.lhs.true351 ], [ %rest.0601, %land.lhs.true351 ], [ %rest.0601, %land.lhs.true370 ], [ %rest.0601, %land.lhs.true370 ], [ %rest.0601, %land.lhs.true389 ], [ %rest.0601, %land.lhs.true389 ], [ %rest.0601, %land.lhs.true408 ], [ %rest.0601, %land.lhs.true408 ], [ %rest.0601, %land.lhs.true427 ], [ %rest.0601, %land.lhs.true427 ], [ %rest.0601, %land.lhs.true438 ], [ %rest.0601, %land.lhs.true446 ], [ %rest.0601, %land.lhs.true471 ], [ %rest.0601, %land.lhs.true471 ], [ %rest.0601, %land.lhs.true482 ], [ %rest.0601, %land.lhs.true490 ], [ %rest.0601, %land.lhs.true503 ], [ %rest.0601, %land.lhs.true511 ], [ %rest.0601, %land.lhs.true531 ], [ %rest.0601, %land.lhs.true531 ], [ %rest.0601, %land.lhs.true542 ], [ %rest.0601, %land.lhs.true550 ], [ %rest.0601, %land.lhs.true571 ], [ %rest.0601, %land.lhs.true571 ], [ %rest.0601, %land.lhs.true590 ], [ %rest.0601, %land.lhs.true590 ], [ %rest.0601, %land.lhs.true601 ], [ %rest.0601, %land.lhs.true609 ], [ %rest.0601, %land.lhs.true631 ], [ %rest.0601, %land.lhs.true631 ], [ %rest.0601, %land.lhs.true642 ], [ %rest.0601, %land.lhs.true650 ], [ %rest.0601, %land.lhs.true663 ], [ %rest.0601, %land.lhs.true671 ], [ %rest.0601, %land.lhs.true691 ], [ %rest.0601, %land.lhs.true699 ], [ %end780.3, %land.lhs.true991 ], [ %end780.3, %land.lhs.true983 ], [ %end780.3, %if.end943 ], [ %end780.3, %if.else948 ], [ %end780.3, %if.else981 ], [ %end780.3, %if.then999 ], [ %end780.3, %if.then977 ], [ %rest.0601, %if.end1061 ], [ %rest.0601, %if.end1076 ], [ %rest.0601, %if.else1169 ], [ %s1019.3, %if.end1211 ], [ %rest.0601, %if.else1234 ], [ %rest.0601, %if.then1252 ], [ %rest.0601, %cond.true1254 ], [ %rest.0601, %if.then1293 ], [ %rest.0601, %cond.true1295 ], [ %rest.0601, %if.then1328 ], [ %rest.0601, %if.else1247 ], [ %rest.0601, %if.then1361 ], [ %rest.0601, %cond.true1363 ], [ %rest.0601, %sw.bb81 ], [ %rest.0601, %sw.bb141 ], [ %rest.0601, %if.else299 ], [ %rest.0601, %sw.bb521 ], [ %rest.0601, %sw.bb621 ], [ %rest.0601, %land.lhs.true679 ], [ %rest.0601, %if.else1347 ], [ %rest.0601, %land.lhs.true83 ], [ %rest.0601, %land.lhs.true162 ], [ %rest.0601, %land.lhs.true143 ], [ %rest.0601, %land.lhs.true301 ], [ %rest.0601, %land.lhs.true523 ], [ %rest.0601, %land.lhs.true623 ], [ %incdec.ptr721.ptr, %while.end ], [ %rest.0601, %land.lhs.true1160 ] - %dotw.1 = phi i32 [ %dotw.0604, %if.end4 ], [ %dotw.0604, %if.then793 ], [ %dotw.0604, %if.end798 ], [ %dotw.0604, %while.end834 ], [ %dotw.0604, %if.else881 ], [ %dotw.0604, %if.then1018 ], [ %dotw.0604, %if.then1042 ], [ %dotw.0604, %if.end1068 ], [ %dotw.0604, %if.end1098 ], [ %dotw.0604, %if.then1127 ], [ %dotw.0604, %if.then1193 ], [ %dotw.0604, %if.end1199 ], [ %dotw.0604, %if.end1216 ], [ %dotw.0604, %if.then1345 ], [ %dotw.0604, %if.else1341 ], [ %dotw.0604, %if.then711 ], [ %dotw.0604, %if.then716 ], [ %dotw.0604, %if.end777 ], [ 4, %if.then707 ], [ %dotw.0604, %sw.bb689 ], [ %dotw.0604, %sw.bb661 ], [ 3, %if.then658 ], [ 1, %if.then617 ], [ %dotw.0604, %if.else599 ], [ %dotw.0604, %if.then558 ], [ %dotw.0604, %if.then519 ], [ %dotw.0604, %sw.bb501 ], [ %dotw.0604, %if.then498 ], [ %dotw.0604, %if.else480 ], [ %dotw.0604, %if.then454 ], [ %dotw.0604, %if.else436 ], [ %dotw.0604, %if.then336 ], [ %dotw.0604, %if.then259 ], [ %dotw.0604, %sw.bb241 ], [ 6, %if.then238 ], [ %dotw.0604, %if.else220 ], [ %dotw.0604, %if.then197 ], [ %dotw.0604, %if.then139 ], [ %dotw.0604, %sw.bb121 ], [ %dotw.0604, %if.then118 ], [ %dotw.0604, %if.then79 ], [ %dotw.0604, %sw.bb61 ], [ %dotw.0604, %if.then57 ], [ %dotw.0604, %if.else39 ], [ %dotw.0604, %land.lhs.true12 ], [ %dotw.0604, %land.lhs.true12 ], [ %dotw.0604, %land.lhs.true30 ], [ %dotw.0604, %land.lhs.true30 ], [ %dotw.0604, %land.lhs.true41 ], [ %dotw.0604, %land.lhs.true49 ], [ %dotw.0604, %land.lhs.true63 ], [ %dotw.0604, %land.lhs.true71 ], [ %dotw.0604, %land.lhs.true91 ], [ %dotw.0604, %land.lhs.true91 ], [ %dotw.0604, %land.lhs.true102 ], [ %dotw.0604, %land.lhs.true110 ], [ %dotw.0604, %land.lhs.true123 ], [ %dotw.0604, %land.lhs.true131 ], [ %dotw.0604, %land.lhs.true151 ], [ %dotw.0604, %land.lhs.true151 ], [ %dotw.0604, %land.lhs.true170 ], [ %dotw.0604, %land.lhs.true170 ], [ %dotw.0604, %land.lhs.true181 ], [ %dotw.0604, %land.lhs.true189 ], [ %dotw.0604, %land.lhs.true211 ], [ %dotw.0604, %land.lhs.true211 ], [ 0, %land.lhs.true222 ], [ 0, %land.lhs.true230 ], [ %dotw.0604, %land.lhs.true243 ], [ %dotw.0604, %land.lhs.true251 ], [ %dotw.0604, %land.lhs.true271 ], [ %dotw.0604, %land.lhs.true271 ], [ %dotw.0604, %land.lhs.true290 ], [ %dotw.0604, %land.lhs.true290 ], [ %dotw.0604, %land.lhs.true309 ], [ %dotw.0604, %land.lhs.true309 ], [ %dotw.0604, %land.lhs.true320 ], [ %dotw.0604, %land.lhs.true328 ], [ %dotw.0604, %land.lhs.true351 ], [ %dotw.0604, %land.lhs.true351 ], [ %dotw.0604, %land.lhs.true370 ], [ %dotw.0604, %land.lhs.true370 ], [ %dotw.0604, %land.lhs.true389 ], [ %dotw.0604, %land.lhs.true389 ], [ %dotw.0604, %land.lhs.true408 ], [ %dotw.0604, %land.lhs.true408 ], [ 2, %land.lhs.true427 ], [ 2, %land.lhs.true427 ], [ %dotw.0604, %land.lhs.true438 ], [ %dotw.0604, %land.lhs.true446 ], [ %dotw.0604, %land.lhs.true471 ], [ %dotw.0604, %land.lhs.true471 ], [ %dotw.0604, %land.lhs.true482 ], [ %dotw.0604, %land.lhs.true490 ], [ %dotw.0604, %land.lhs.true503 ], [ %dotw.0604, %land.lhs.true511 ], [ %dotw.0604, %land.lhs.true531 ], [ %dotw.0604, %land.lhs.true531 ], [ %dotw.0604, %land.lhs.true542 ], [ %dotw.0604, %land.lhs.true550 ], [ 7, %land.lhs.true571 ], [ 7, %land.lhs.true571 ], [ %dotw.0604, %land.lhs.true590 ], [ %dotw.0604, %land.lhs.true590 ], [ 0, %land.lhs.true601 ], [ 0, %land.lhs.true609 ], [ 5, %land.lhs.true631 ], [ 5, %land.lhs.true631 ], [ 0, %land.lhs.true642 ], [ 0, %land.lhs.true650 ], [ %dotw.0604, %land.lhs.true663 ], [ %dotw.0604, %land.lhs.true671 ], [ 0, %land.lhs.true691 ], [ 0, %land.lhs.true699 ], [ %dotw.0604, %land.lhs.true991 ], [ %dotw.0604, %land.lhs.true983 ], [ %dotw.0604, %if.end943 ], [ %dotw.0604, %if.else948 ], [ %dotw.0604, %if.else981 ], [ %dotw.0604, %if.then999 ], [ %dotw.0604, %if.then977 ], [ %dotw.0604, %if.end1061 ], [ %dotw.0604, %if.end1076 ], [ %dotw.0604, %if.else1169 ], [ %dotw.0604, %if.end1211 ], [ %dotw.0604, %if.else1234 ], [ %dotw.0604, %if.then1252 ], [ %dotw.0604, %cond.true1254 ], [ %dotw.0604, %if.then1293 ], [ %dotw.0604, %cond.true1295 ], [ %dotw.0604, %if.then1328 ], [ %dotw.0604, %if.else1247 ], [ %dotw.0604, %if.then1361 ], [ %dotw.0604, %cond.true1363 ], [ %dotw.0604, %sw.bb81 ], [ %dotw.0604, %sw.bb141 ], [ %dotw.0604, %if.else299 ], [ %dotw.0604, %sw.bb521 ], [ %dotw.0604, %sw.bb621 ], [ %dotw.0604, %land.lhs.true679 ], [ %dotw.0604, %if.else1347 ], [ %dotw.0604, %land.lhs.true83 ], [ %dotw.0604, %land.lhs.true162 ], [ %dotw.0604, %land.lhs.true143 ], [ %dotw.0604, %land.lhs.true301 ], [ %dotw.0604, %land.lhs.true523 ], [ 0, %land.lhs.true623 ], [ %dotw.0604, %while.end ], [ %dotw.0604, %land.lhs.true1160 ] +sw.epilog: ; preds = %land.lhs.true671, %land.lhs.true642, %land.lhs.true542, %land.lhs.true181, %land.lhs.true102, %land.lhs.true1160, %while.end, %land.lhs.true623, %land.lhs.true523, %land.lhs.true301, %land.lhs.true143, %land.lhs.true162, %land.lhs.true83, %if.else1347, %sw.bb621, %sw.bb521, %if.else299, %sw.bb141, %sw.bb81, %cond.true1363, %if.then1361, %if.else1247, %if.then1328, %cond.true1295, %if.then1293, %cond.true1254, %if.then1252, %if.else1234, %if.end1211, %if.else1169, %if.end1076, %if.end1061, %if.then977, %if.then999, %if.else981, %if.else948, %if.end943, %land.lhs.true983, %land.lhs.true991, %land.lhs.true699, %land.lhs.true691, %land.lhs.true663, %land.lhs.true650, %land.lhs.true631, %land.lhs.true631, %land.lhs.true609, %land.lhs.true601, %land.lhs.true590, %land.lhs.true590, %land.lhs.true571, %land.lhs.true571, %land.lhs.true550, %land.lhs.true531, %land.lhs.true531, %land.lhs.true511, %land.lhs.true503, %land.lhs.true490, %land.lhs.true482, %land.lhs.true471, %land.lhs.true471, %land.lhs.true446, %land.lhs.true438, %land.lhs.true427, %land.lhs.true427, %land.lhs.true408, %land.lhs.true408, %land.lhs.true389, %land.lhs.true389, %land.lhs.true370, %land.lhs.true370, %land.lhs.true351, %land.lhs.true351, %land.lhs.true328, %land.lhs.true320, %land.lhs.true309, %land.lhs.true309, %land.lhs.true290, %land.lhs.true290, %land.lhs.true271, %land.lhs.true271, %land.lhs.true251, %land.lhs.true243, %land.lhs.true230, %land.lhs.true222, %land.lhs.true211, %land.lhs.true211, %land.lhs.true189, %land.lhs.true170, %land.lhs.true170, %land.lhs.true151, %land.lhs.true151, %land.lhs.true131, %land.lhs.true123, %land.lhs.true110, %land.lhs.true91, %land.lhs.true91, %land.lhs.true71, %land.lhs.true63, %land.lhs.true49, %land.lhs.true41, %land.lhs.true30, %land.lhs.true30, %land.lhs.true12, %land.lhs.true12, %if.then1345, %if.else1341, %if.end1216, %if.then1193, %if.then1127, %if.end1098, %if.end1068, %if.then1042, %if.then1018, %if.else881, %while.end834, %if.end798, %if.then793, %sw.bb689, %if.then707, %sw.bb661, %if.then658, %if.else599, %if.then617, %if.then558, %sw.bb501, %if.then519, %if.then498, %if.else480, %if.then454, %if.else436, %if.then336, %sw.bb241, %if.then259, %if.then238, %if.else220, %if.then197, %sw.bb121, %if.then139, %if.then118, %sw.bb61, %if.then79, %if.else39, %if.then57, %if.end1199, %if.end777, %if.then716, %if.then711, %if.end4 + %month.1 = phi i32 [ %month.0584, %if.end4 ], [ %month.0584, %if.then793 ], [ %month.0584, %if.end798 ], [ %month.0584, %while.end834 ], [ %month.0584, %if.else881 ], [ %month.0584, %if.then1018 ], [ 0, %if.then1042 ], [ 0, %if.end1068 ], [ 0, %if.end1098 ], [ 0, %if.then1127 ], [ 0, %if.then1193 ], [ %sub1210, %if.end1199 ], [ %month.2, %if.end1216 ], [ %month.0584, %if.then1345 ], [ %month.0584, %if.else1341 ], [ %month.0584, %if.then711 ], [ %month.0584, %if.then716 ], [ %month.0584, %if.end777 ], [ %month.0584, %if.then707 ], [ %month.0584, %sw.bb689 ], [ %month.0584, %sw.bb661 ], [ %month.0584, %if.then658 ], [ %month.0584, %if.then617 ], [ %month.0584, %if.else599 ], [ %month.0584, %if.then558 ], [ 17, %if.then519 ], [ %month.0584, %sw.bb501 ], [ %month.0584, %if.then498 ], [ %month.0584, %if.else480 ], [ %month.0584, %if.then454 ], [ %month.0584, %if.else436 ], [ 13, %if.then336 ], [ %month.0584, %if.then259 ], [ %month.0584, %sw.bb241 ], [ %month.0584, %if.then238 ], [ %month.0584, %if.else220 ], [ %month.0584, %if.then197 ], [ 19, %if.then139 ], [ %month.0584, %sw.bb121 ], [ %month.0584, %if.then118 ], [ %month.0584, %if.then79 ], [ %month.0584, %sw.bb61 ], [ 15, %if.then57 ], [ %month.0584, %if.else39 ], [ 11, %land.lhs.true12 ], [ 11, %land.lhs.true12 ], [ %month.0584, %land.lhs.true30 ], [ %month.0584, %land.lhs.true30 ], [ 0, %land.lhs.true41 ], [ 0, %land.lhs.true49 ], [ %month.0584, %land.lhs.true63 ], [ %month.0584, %land.lhs.true71 ], [ %month.0584, %land.lhs.true91 ], [ %month.0584, %land.lhs.true91 ], [ %month.0584, %land.lhs.true102 ], [ %month.0584, %land.lhs.true110 ], [ 0, %land.lhs.true123 ], [ 0, %land.lhs.true131 ], [ %month.0584, %land.lhs.true151 ], [ %month.0584, %land.lhs.true151 ], [ %month.0584, %land.lhs.true170 ], [ %month.0584, %land.lhs.true170 ], [ %month.0584, %land.lhs.true181 ], [ %month.0584, %land.lhs.true189 ], [ 9, %land.lhs.true211 ], [ 9, %land.lhs.true211 ], [ %month.0584, %land.lhs.true222 ], [ %month.0584, %land.lhs.true230 ], [ %month.0584, %land.lhs.true243 ], [ %month.0584, %land.lhs.true251 ], [ 8, %land.lhs.true271 ], [ 8, %land.lhs.true271 ], [ %month.0584, %land.lhs.true290 ], [ %month.0584, %land.lhs.true290 ], [ 14, %land.lhs.true309 ], [ 14, %land.lhs.true309 ], [ 0, %land.lhs.true320 ], [ 0, %land.lhs.true328 ], [ 10, %land.lhs.true351 ], [ 10, %land.lhs.true351 ], [ 12, %land.lhs.true370 ], [ 12, %land.lhs.true370 ], [ %month.0584, %land.lhs.true389 ], [ %month.0584, %land.lhs.true389 ], [ %month.0584, %land.lhs.true408 ], [ %month.0584, %land.lhs.true408 ], [ %month.0584, %land.lhs.true427 ], [ %month.0584, %land.lhs.true427 ], [ %month.0584, %land.lhs.true438 ], [ %month.0584, %land.lhs.true446 ], [ 18, %land.lhs.true471 ], [ 18, %land.lhs.true471 ], [ %month.0584, %land.lhs.true482 ], [ %month.0584, %land.lhs.true490 ], [ 0, %land.lhs.true503 ], [ 0, %land.lhs.true511 ], [ %month.0584, %land.lhs.true531 ], [ %month.0584, %land.lhs.true531 ], [ %month.0584, %land.lhs.true542 ], [ %month.0584, %land.lhs.true550 ], [ %month.0584, %land.lhs.true571 ], [ %month.0584, %land.lhs.true571 ], [ 16, %land.lhs.true590 ], [ 16, %land.lhs.true590 ], [ %month.0584, %land.lhs.true601 ], [ %month.0584, %land.lhs.true609 ], [ %month.0584, %land.lhs.true631 ], [ %month.0584, %land.lhs.true631 ], [ %month.0584, %land.lhs.true642 ], [ %month.0584, %land.lhs.true650 ], [ %month.0584, %land.lhs.true663 ], [ %month.0584, %land.lhs.true691 ], [ %month.0584, %land.lhs.true699 ], [ %month.0584, %land.lhs.true991 ], [ %month.0584, %land.lhs.true983 ], [ %month.0584, %if.end943 ], [ %month.0584, %if.else948 ], [ %month.0584, %if.else981 ], [ %month.0584, %if.then999 ], [ %month.0584, %if.then977 ], [ 0, %if.end1061 ], [ 0, %if.end1076 ], [ 0, %if.else1169 ], [ 0, %if.end1211 ], [ %month.0584, %if.else1234 ], [ %month.0584, %if.then1252 ], [ %month.0584, %cond.true1254 ], [ %month.0584, %if.then1293 ], [ %month.0584, %cond.true1295 ], [ %month.0584, %if.then1328 ], [ %month.0584, %if.else1247 ], [ %month.0584, %if.then1361 ], [ %month.0584, %cond.true1363 ], [ %month.0584, %sw.bb81 ], [ %month.0584, %sw.bb141 ], [ %month.0584, %if.else299 ], [ %month.0584, %sw.bb521 ], [ %month.0584, %sw.bb621 ], [ %month.0584, %if.else1347 ], [ %month.0584, %land.lhs.true83 ], [ %month.0584, %land.lhs.true162 ], [ %month.0584, %land.lhs.true143 ], [ 0, %land.lhs.true301 ], [ %month.0584, %land.lhs.true523 ], [ %month.0584, %land.lhs.true623 ], [ %month.0584, %while.end ], [ 0, %land.lhs.true1160 ], [ %month.0584, %land.lhs.true671 ] + %zone.1 = phi i32 [ %zone.0586, %if.end4 ], [ %zone.0586, %if.then793 ], [ %zone.0586, %if.end798 ], [ %zone.0586, %while.end834 ], [ %zone.0586, %if.else881 ], [ %zone.0586, %if.then1018 ], [ %zone.0586, %if.then1042 ], [ %zone.0586, %if.end1068 ], [ %zone.0586, %if.end1098 ], [ %zone.0586, %if.then1127 ], [ %zone.0586, %if.then1193 ], [ %zone.0586, %if.end1199 ], [ %zone.0586, %if.end1216 ], [ %zone.0586, %if.then1345 ], [ %zone.0586, %if.else1341 ], [ %zone.0586, %if.then711 ], [ %zone.0586, %if.then716 ], [ 30, %if.end777 ], [ %zone.0586, %if.then707 ], [ %zone.0586, %sw.bb689 ], [ %zone.0586, %sw.bb661 ], [ %zone.0586, %if.then658 ], [ %zone.0586, %if.then617 ], [ %zone.0586, %if.else599 ], [ 20, %if.then558 ], [ %zone.0586, %if.then519 ], [ %zone.0586, %sw.bb501 ], [ 29, %if.then498 ], [ %zone.0586, %if.else480 ], [ 22, %if.then454 ], [ %zone.0586, %if.else436 ], [ %zone.0586, %if.then336 ], [ 30, %if.then259 ], [ %zone.0586, %sw.bb241 ], [ %zone.0586, %if.then238 ], [ %zone.0586, %if.else220 ], [ 26, %if.then197 ], [ %zone.0586, %if.then139 ], [ %zone.0586, %sw.bb121 ], [ 24, %if.then118 ], [ 31, %if.then79 ], [ %zone.0586, %sw.bb61 ], [ %zone.0586, %if.then57 ], [ %zone.0586, %if.else39 ], [ %zone.0586, %land.lhs.true12 ], [ %zone.0586, %land.lhs.true12 ], [ 28, %land.lhs.true30 ], [ 28, %land.lhs.true30 ], [ %zone.0586, %land.lhs.true41 ], [ %zone.0586, %land.lhs.true49 ], [ 0, %land.lhs.true63 ], [ 0, %land.lhs.true71 ], [ 25, %land.lhs.true91 ], [ 25, %land.lhs.true91 ], [ 0, %land.lhs.true102 ], [ 0, %land.lhs.true110 ], [ %zone.0586, %land.lhs.true123 ], [ %zone.0586, %land.lhs.true131 ], [ 27, %land.lhs.true151 ], [ 27, %land.lhs.true151 ], [ 33, %land.lhs.true170 ], [ 33, %land.lhs.true170 ], [ 0, %land.lhs.true181 ], [ 0, %land.lhs.true189 ], [ %zone.0586, %land.lhs.true211 ], [ %zone.0586, %land.lhs.true211 ], [ %zone.0586, %land.lhs.true222 ], [ %zone.0586, %land.lhs.true230 ], [ 0, %land.lhs.true243 ], [ 0, %land.lhs.true251 ], [ %zone.0586, %land.lhs.true271 ], [ %zone.0586, %land.lhs.true271 ], [ 34, %land.lhs.true290 ], [ 34, %land.lhs.true290 ], [ %zone.0586, %land.lhs.true309 ], [ %zone.0586, %land.lhs.true309 ], [ %zone.0586, %land.lhs.true320 ], [ %zone.0586, %land.lhs.true328 ], [ %zone.0586, %land.lhs.true351 ], [ %zone.0586, %land.lhs.true351 ], [ %zone.0586, %land.lhs.true370 ], [ %zone.0586, %land.lhs.true370 ], [ 23, %land.lhs.true389 ], [ 23, %land.lhs.true389 ], [ 32, %land.lhs.true408 ], [ 32, %land.lhs.true408 ], [ %zone.0586, %land.lhs.true427 ], [ %zone.0586, %land.lhs.true427 ], [ 0, %land.lhs.true438 ], [ 0, %land.lhs.true446 ], [ %zone.0586, %land.lhs.true471 ], [ %zone.0586, %land.lhs.true471 ], [ 0, %land.lhs.true482 ], [ 0, %land.lhs.true490 ], [ %zone.0586, %land.lhs.true503 ], [ %zone.0586, %land.lhs.true511 ], [ 21, %land.lhs.true531 ], [ 21, %land.lhs.true531 ], [ 0, %land.lhs.true542 ], [ 0, %land.lhs.true550 ], [ %zone.0586, %land.lhs.true571 ], [ %zone.0586, %land.lhs.true571 ], [ %zone.0586, %land.lhs.true590 ], [ %zone.0586, %land.lhs.true590 ], [ %zone.0586, %land.lhs.true601 ], [ %zone.0586, %land.lhs.true609 ], [ %zone.0586, %land.lhs.true631 ], [ %zone.0586, %land.lhs.true631 ], [ %zone.0586, %land.lhs.true642 ], [ %zone.0586, %land.lhs.true650 ], [ 0, %land.lhs.true663 ], [ %zone.0586, %land.lhs.true691 ], [ %zone.0586, %land.lhs.true699 ], [ %zone.0586, %land.lhs.true991 ], [ %zone.0586, %land.lhs.true983 ], [ 30, %if.end943 ], [ %zone.0586, %if.else948 ], [ %zone.0586, %if.else981 ], [ %zone.0586, %if.then999 ], [ %zone.0586, %if.then977 ], [ %zone.0586, %if.end1061 ], [ %zone.0586, %if.end1076 ], [ %zone.0586, %if.else1169 ], [ %zone.0586, %if.end1211 ], [ %zone.0586, %if.else1234 ], [ %zone.0586, %if.then1252 ], [ %zone.0586, %cond.true1254 ], [ %zone.0586, %if.then1293 ], [ %zone.0586, %cond.true1295 ], [ %zone.0586, %if.then1328 ], [ %zone.0586, %if.else1247 ], [ %zone.0586, %if.then1361 ], [ %zone.0586, %cond.true1363 ], [ %zone.0586, %sw.bb81 ], [ %zone.0586, %sw.bb141 ], [ %zone.0586, %if.else299 ], [ %zone.0586, %sw.bb521 ], [ %zone.0586, %sw.bb621 ], [ %zone.0586, %if.else1347 ], [ 0, %land.lhs.true83 ], [ 0, %land.lhs.true162 ], [ 0, %land.lhs.true143 ], [ %zone.0586, %land.lhs.true301 ], [ 0, %land.lhs.true523 ], [ %zone.0586, %land.lhs.true623 ], [ %zone.0586, %while.end ], [ %zone.0586, %land.lhs.true1160 ], [ %spec.select670, %land.lhs.true671 ] + %zone_offset.1 = phi i32 [ %zone_offset.0587, %if.end4 ], [ %zone_offset.0587, %if.then793 ], [ %zone_offset.0587, %if.end798 ], [ %zone_offset.0587, %while.end834 ], [ %zone_offset.0587, %if.else881 ], [ %zone_offset.0587, %if.then1018 ], [ %zone_offset.0587, %if.then1042 ], [ %zone_offset.0587, %if.end1068 ], [ %zone_offset.0587, %if.end1098 ], [ %zone_offset.0587, %if.then1127 ], [ %zone_offset.0587, %if.then1193 ], [ %zone_offset.0587, %if.end1199 ], [ %zone_offset.0587, %if.end1216 ], [ %zone_offset.0587, %if.then1345 ], [ %zone_offset.0587, %if.else1341 ], [ %zone_offset.0587, %if.then711 ], [ -1, %if.then716 ], [ %mul778, %if.end777 ], [ %zone_offset.0587, %if.then707 ], [ %zone_offset.0587, %sw.bb689 ], [ %zone_offset.0587, %sw.bb661 ], [ %zone_offset.0587, %if.then658 ], [ %zone_offset.0587, %if.then617 ], [ %zone_offset.0587, %if.else599 ], [ %zone_offset.0587, %if.then558 ], [ %zone_offset.0587, %if.then519 ], [ %zone_offset.0587, %sw.bb501 ], [ %zone_offset.0587, %if.then498 ], [ %zone_offset.0587, %if.else480 ], [ %zone_offset.0587, %if.then454 ], [ %zone_offset.0587, %if.else436 ], [ %zone_offset.0587, %if.then336 ], [ %zone_offset.0587, %if.then259 ], [ %zone_offset.0587, %sw.bb241 ], [ %zone_offset.0587, %if.then238 ], [ %zone_offset.0587, %if.else220 ], [ %zone_offset.0587, %if.then197 ], [ %zone_offset.0587, %if.then139 ], [ %zone_offset.0587, %sw.bb121 ], [ %zone_offset.0587, %if.then118 ], [ %zone_offset.0587, %if.then79 ], [ %zone_offset.0587, %sw.bb61 ], [ %zone_offset.0587, %if.then57 ], [ %zone_offset.0587, %if.else39 ], [ %zone_offset.0587, %land.lhs.true12 ], [ %zone_offset.0587, %land.lhs.true12 ], [ %zone_offset.0587, %land.lhs.true30 ], [ %zone_offset.0587, %land.lhs.true30 ], [ %zone_offset.0587, %land.lhs.true41 ], [ %zone_offset.0587, %land.lhs.true49 ], [ %zone_offset.0587, %land.lhs.true63 ], [ %zone_offset.0587, %land.lhs.true71 ], [ %zone_offset.0587, %land.lhs.true91 ], [ %zone_offset.0587, %land.lhs.true91 ], [ %zone_offset.0587, %land.lhs.true102 ], [ %zone_offset.0587, %land.lhs.true110 ], [ %zone_offset.0587, %land.lhs.true123 ], [ %zone_offset.0587, %land.lhs.true131 ], [ %zone_offset.0587, %land.lhs.true151 ], [ %zone_offset.0587, %land.lhs.true151 ], [ %zone_offset.0587, %land.lhs.true170 ], [ %zone_offset.0587, %land.lhs.true170 ], [ %zone_offset.0587, %land.lhs.true181 ], [ %zone_offset.0587, %land.lhs.true189 ], [ %zone_offset.0587, %land.lhs.true211 ], [ %zone_offset.0587, %land.lhs.true211 ], [ %zone_offset.0587, %land.lhs.true222 ], [ %zone_offset.0587, %land.lhs.true230 ], [ %zone_offset.0587, %land.lhs.true243 ], [ %zone_offset.0587, %land.lhs.true251 ], [ %zone_offset.0587, %land.lhs.true271 ], [ %zone_offset.0587, %land.lhs.true271 ], [ %zone_offset.0587, %land.lhs.true290 ], [ %zone_offset.0587, %land.lhs.true290 ], [ %zone_offset.0587, %land.lhs.true309 ], [ %zone_offset.0587, %land.lhs.true309 ], [ %zone_offset.0587, %land.lhs.true320 ], [ %zone_offset.0587, %land.lhs.true328 ], [ %zone_offset.0587, %land.lhs.true351 ], [ %zone_offset.0587, %land.lhs.true351 ], [ %zone_offset.0587, %land.lhs.true370 ], [ %zone_offset.0587, %land.lhs.true370 ], [ %zone_offset.0587, %land.lhs.true389 ], [ %zone_offset.0587, %land.lhs.true389 ], [ %zone_offset.0587, %land.lhs.true408 ], [ %zone_offset.0587, %land.lhs.true408 ], [ %zone_offset.0587, %land.lhs.true427 ], [ %zone_offset.0587, %land.lhs.true427 ], [ %zone_offset.0587, %land.lhs.true438 ], [ %zone_offset.0587, %land.lhs.true446 ], [ %zone_offset.0587, %land.lhs.true471 ], [ %zone_offset.0587, %land.lhs.true471 ], [ %zone_offset.0587, %land.lhs.true482 ], [ %zone_offset.0587, %land.lhs.true490 ], [ %zone_offset.0587, %land.lhs.true503 ], [ %zone_offset.0587, %land.lhs.true511 ], [ %zone_offset.0587, %land.lhs.true531 ], [ %zone_offset.0587, %land.lhs.true531 ], [ %zone_offset.0587, %land.lhs.true542 ], [ %zone_offset.0587, %land.lhs.true550 ], [ %zone_offset.0587, %land.lhs.true571 ], [ %zone_offset.0587, %land.lhs.true571 ], [ %zone_offset.0587, %land.lhs.true590 ], [ %zone_offset.0587, %land.lhs.true590 ], [ %zone_offset.0587, %land.lhs.true601 ], [ %zone_offset.0587, %land.lhs.true609 ], [ %zone_offset.0587, %land.lhs.true631 ], [ %zone_offset.0587, %land.lhs.true631 ], [ %zone_offset.0587, %land.lhs.true642 ], [ %zone_offset.0587, %land.lhs.true650 ], [ %zone_offset.0587, %land.lhs.true663 ], [ %zone_offset.0587, %land.lhs.true691 ], [ %zone_offset.0587, %land.lhs.true699 ], [ %zone_offset.0587, %land.lhs.true991 ], [ %zone_offset.0587, %land.lhs.true983 ], [ %zone_offset.0587, %if.end943 ], [ %zone_offset.0587, %if.else948 ], [ %zone_offset.0587, %if.else981 ], [ %zone_offset.0587, %if.then999 ], [ %zone_offset.0587, %if.then977 ], [ %zone_offset.0587, %if.end1061 ], [ %zone_offset.0587, %if.end1076 ], [ %zone_offset.0587, %if.else1169 ], [ %zone_offset.0587, %if.end1211 ], [ %zone_offset.0587, %if.else1234 ], [ %zone_offset.0587, %if.then1252 ], [ %zone_offset.0587, %cond.true1254 ], [ %zone_offset.0587, %if.then1293 ], [ %zone_offset.0587, %cond.true1295 ], [ %zone_offset.0587, %if.then1328 ], [ %zone_offset.0587, %if.else1247 ], [ %zone_offset.0587, %if.then1361 ], [ %zone_offset.0587, %cond.true1363 ], [ %zone_offset.0587, %sw.bb81 ], [ %zone_offset.0587, %sw.bb141 ], [ %zone_offset.0587, %if.else299 ], [ %zone_offset.0587, %sw.bb521 ], [ %zone_offset.0587, %sw.bb621 ], [ %zone_offset.0587, %if.else1347 ], [ %zone_offset.0587, %land.lhs.true83 ], [ %zone_offset.0587, %land.lhs.true162 ], [ %zone_offset.0587, %land.lhs.true143 ], [ %zone_offset.0587, %land.lhs.true301 ], [ %zone_offset.0587, %land.lhs.true523 ], [ %zone_offset.0587, %land.lhs.true623 ], [ -1, %while.end ], [ %zone_offset.0587, %land.lhs.true1160 ], [ %zone_offset.0587, %land.lhs.true671 ] + %date.1 = phi i32 [ %date.0589, %if.end4 ], [ %date.0589, %if.then793 ], [ %date.0589, %if.end798 ], [ %date.0589, %while.end834 ], [ %date.0589, %if.else881 ], [ %date.0589, %if.then1018 ], [ %date.0589, %if.then1042 ], [ %date.0589, %if.end1068 ], [ %date.0589, %if.end1098 ], [ %date.0589, %if.then1127 ], [ %date.0589, %if.then1193 ], [ %n3.1, %if.end1199 ], [ %n1.0.n2.0, %if.end1216 ], [ %date.0589, %if.then1345 ], [ %date.0589, %if.else1341 ], [ %date.0589, %if.then711 ], [ %date.0589, %if.then716 ], [ %date.0589, %if.end777 ], [ %date.0589, %if.then707 ], [ %date.0589, %sw.bb689 ], [ %date.0589, %sw.bb661 ], [ %date.0589, %if.then658 ], [ %date.0589, %if.then617 ], [ %date.0589, %if.else599 ], [ %date.0589, %if.then558 ], [ %date.0589, %if.then519 ], [ %date.0589, %sw.bb501 ], [ %date.0589, %if.then498 ], [ %date.0589, %if.else480 ], [ %date.0589, %if.then454 ], [ %date.0589, %if.else436 ], [ %date.0589, %if.then336 ], [ %date.0589, %if.then259 ], [ %date.0589, %sw.bb241 ], [ %date.0589, %if.then238 ], [ %date.0589, %if.else220 ], [ %date.0589, %if.then197 ], [ %date.0589, %if.then139 ], [ %date.0589, %sw.bb121 ], [ %date.0589, %if.then118 ], [ %date.0589, %if.then79 ], [ %date.0589, %sw.bb61 ], [ %date.0589, %if.then57 ], [ %date.0589, %if.else39 ], [ %date.0589, %land.lhs.true12 ], [ %date.0589, %land.lhs.true12 ], [ %date.0589, %land.lhs.true30 ], [ %date.0589, %land.lhs.true30 ], [ %date.0589, %land.lhs.true41 ], [ %date.0589, %land.lhs.true49 ], [ %date.0589, %land.lhs.true63 ], [ %date.0589, %land.lhs.true71 ], [ %date.0589, %land.lhs.true91 ], [ %date.0589, %land.lhs.true91 ], [ %date.0589, %land.lhs.true102 ], [ %date.0589, %land.lhs.true110 ], [ %date.0589, %land.lhs.true123 ], [ %date.0589, %land.lhs.true131 ], [ %date.0589, %land.lhs.true151 ], [ %date.0589, %land.lhs.true151 ], [ %date.0589, %land.lhs.true170 ], [ %date.0589, %land.lhs.true170 ], [ %date.0589, %land.lhs.true181 ], [ %date.0589, %land.lhs.true189 ], [ %date.0589, %land.lhs.true211 ], [ %date.0589, %land.lhs.true211 ], [ %date.0589, %land.lhs.true222 ], [ %date.0589, %land.lhs.true230 ], [ %date.0589, %land.lhs.true243 ], [ %date.0589, %land.lhs.true251 ], [ %date.0589, %land.lhs.true271 ], [ %date.0589, %land.lhs.true271 ], [ %date.0589, %land.lhs.true290 ], [ %date.0589, %land.lhs.true290 ], [ %date.0589, %land.lhs.true309 ], [ %date.0589, %land.lhs.true309 ], [ %date.0589, %land.lhs.true320 ], [ %date.0589, %land.lhs.true328 ], [ %date.0589, %land.lhs.true351 ], [ %date.0589, %land.lhs.true351 ], [ %date.0589, %land.lhs.true370 ], [ %date.0589, %land.lhs.true370 ], [ %date.0589, %land.lhs.true389 ], [ %date.0589, %land.lhs.true389 ], [ %date.0589, %land.lhs.true408 ], [ %date.0589, %land.lhs.true408 ], [ %date.0589, %land.lhs.true427 ], [ %date.0589, %land.lhs.true427 ], [ %date.0589, %land.lhs.true438 ], [ %date.0589, %land.lhs.true446 ], [ %date.0589, %land.lhs.true471 ], [ %date.0589, %land.lhs.true471 ], [ %date.0589, %land.lhs.true482 ], [ %date.0589, %land.lhs.true490 ], [ %date.0589, %land.lhs.true503 ], [ %date.0589, %land.lhs.true511 ], [ %date.0589, %land.lhs.true531 ], [ %date.0589, %land.lhs.true531 ], [ %date.0589, %land.lhs.true542 ], [ %date.0589, %land.lhs.true550 ], [ %date.0589, %land.lhs.true571 ], [ %date.0589, %land.lhs.true571 ], [ %date.0589, %land.lhs.true590 ], [ %date.0589, %land.lhs.true590 ], [ %date.0589, %land.lhs.true601 ], [ %date.0589, %land.lhs.true609 ], [ %date.0589, %land.lhs.true631 ], [ %date.0589, %land.lhs.true631 ], [ %date.0589, %land.lhs.true642 ], [ %date.0589, %land.lhs.true650 ], [ %date.0589, %land.lhs.true663 ], [ %date.0589, %land.lhs.true691 ], [ %date.0589, %land.lhs.true699 ], [ %date.0589, %land.lhs.true991 ], [ %date.0589, %land.lhs.true983 ], [ %date.0589, %if.end943 ], [ %date.0589, %if.else948 ], [ %date.0589, %if.else981 ], [ %date.0589, %if.then999 ], [ %date.0589, %if.then977 ], [ %date.0589, %if.end1061 ], [ %date.0589, %if.end1076 ], [ %date.0589, %if.else1169 ], [ %date.0589, %if.end1211 ], [ %date.0589, %if.else1234 ], [ %date.0589, %if.then1252 ], [ %date.0589, %cond.true1254 ], [ %date.0589, %if.then1293 ], [ %date.0589, %cond.true1295 ], [ %add1336, %if.then1328 ], [ %date.0589, %if.else1247 ], [ %date.0589, %if.then1361 ], [ %sub1366, %cond.true1363 ], [ %date.0589, %sw.bb81 ], [ %date.0589, %sw.bb141 ], [ %date.0589, %if.else299 ], [ %date.0589, %sw.bb521 ], [ %date.0589, %sw.bb621 ], [ %date.0589, %if.else1347 ], [ %date.0589, %land.lhs.true83 ], [ %date.0589, %land.lhs.true162 ], [ %date.0589, %land.lhs.true143 ], [ %date.0589, %land.lhs.true301 ], [ %date.0589, %land.lhs.true523 ], [ %date.0589, %land.lhs.true623 ], [ %date.0589, %while.end ], [ %date.0589, %land.lhs.true1160 ], [ %date.0589, %land.lhs.true671 ] + %year.1 = phi i32 [ %year.0591, %if.end4 ], [ %year.0591, %if.then793 ], [ %year.0591, %if.end798 ], [ %year.0591, %while.end834 ], [ %year.0591, %if.else881 ], [ %year.0591, %if.then1018 ], [ %year.0591, %if.then1042 ], [ %year.0591, %if.end1068 ], [ %year.0591, %if.end1098 ], [ %year.0591, %if.then1127 ], [ %year.0591, %if.then1193 ], [ %year.2, %if.end1199 ], [ %n3.2, %if.end1216 ], [ %add1346, %if.then1345 ], [ %year.0591, %if.else1341 ], [ %year.0591, %if.then711 ], [ %year.0591, %if.then716 ], [ %year.0591, %if.end777 ], [ %year.0591, %if.then707 ], [ %year.0591, %sw.bb689 ], [ %year.0591, %sw.bb661 ], [ %year.0591, %if.then658 ], [ %year.0591, %if.then617 ], [ %year.0591, %if.else599 ], [ %year.0591, %if.then558 ], [ %year.0591, %if.then519 ], [ %year.0591, %sw.bb501 ], [ %year.0591, %if.then498 ], [ %year.0591, %if.else480 ], [ %year.0591, %if.then454 ], [ %year.0591, %if.else436 ], [ %year.0591, %if.then336 ], [ %year.0591, %if.then259 ], [ %year.0591, %sw.bb241 ], [ %year.0591, %if.then238 ], [ %year.0591, %if.else220 ], [ %year.0591, %if.then197 ], [ %year.0591, %if.then139 ], [ %year.0591, %sw.bb121 ], [ %year.0591, %if.then118 ], [ %year.0591, %if.then79 ], [ %year.0591, %sw.bb61 ], [ %year.0591, %if.then57 ], [ %year.0591, %if.else39 ], [ %year.0591, %land.lhs.true12 ], [ %year.0591, %land.lhs.true12 ], [ %year.0591, %land.lhs.true30 ], [ %year.0591, %land.lhs.true30 ], [ %year.0591, %land.lhs.true41 ], [ %year.0591, %land.lhs.true49 ], [ %year.0591, %land.lhs.true63 ], [ %year.0591, %land.lhs.true71 ], [ %year.0591, %land.lhs.true91 ], [ %year.0591, %land.lhs.true91 ], [ %year.0591, %land.lhs.true102 ], [ %year.0591, %land.lhs.true110 ], [ %year.0591, %land.lhs.true123 ], [ %year.0591, %land.lhs.true131 ], [ %year.0591, %land.lhs.true151 ], [ %year.0591, %land.lhs.true151 ], [ %year.0591, %land.lhs.true170 ], [ %year.0591, %land.lhs.true170 ], [ %year.0591, %land.lhs.true181 ], [ %year.0591, %land.lhs.true189 ], [ %year.0591, %land.lhs.true211 ], [ %year.0591, %land.lhs.true211 ], [ %year.0591, %land.lhs.true222 ], [ %year.0591, %land.lhs.true230 ], [ %year.0591, %land.lhs.true243 ], [ %year.0591, %land.lhs.true251 ], [ %year.0591, %land.lhs.true271 ], [ %year.0591, %land.lhs.true271 ], [ %year.0591, %land.lhs.true290 ], [ %year.0591, %land.lhs.true290 ], [ %year.0591, %land.lhs.true309 ], [ %year.0591, %land.lhs.true309 ], [ %year.0591, %land.lhs.true320 ], [ %year.0591, %land.lhs.true328 ], [ %year.0591, %land.lhs.true351 ], [ %year.0591, %land.lhs.true351 ], [ %year.0591, %land.lhs.true370 ], [ %year.0591, %land.lhs.true370 ], [ %year.0591, %land.lhs.true389 ], [ %year.0591, %land.lhs.true389 ], [ %year.0591, %land.lhs.true408 ], [ %year.0591, %land.lhs.true408 ], [ %year.0591, %land.lhs.true427 ], [ %year.0591, %land.lhs.true427 ], [ %year.0591, %land.lhs.true438 ], [ %year.0591, %land.lhs.true446 ], [ %year.0591, %land.lhs.true471 ], [ %year.0591, %land.lhs.true471 ], [ %year.0591, %land.lhs.true482 ], [ %year.0591, %land.lhs.true490 ], [ %year.0591, %land.lhs.true503 ], [ %year.0591, %land.lhs.true511 ], [ %year.0591, %land.lhs.true531 ], [ %year.0591, %land.lhs.true531 ], [ %year.0591, %land.lhs.true542 ], [ %year.0591, %land.lhs.true550 ], [ %year.0591, %land.lhs.true571 ], [ %year.0591, %land.lhs.true571 ], [ %year.0591, %land.lhs.true590 ], [ %year.0591, %land.lhs.true590 ], [ %year.0591, %land.lhs.true601 ], [ %year.0591, %land.lhs.true609 ], [ %year.0591, %land.lhs.true631 ], [ %year.0591, %land.lhs.true631 ], [ %year.0591, %land.lhs.true642 ], [ %year.0591, %land.lhs.true650 ], [ %year.0591, %land.lhs.true663 ], [ %year.0591, %land.lhs.true691 ], [ %year.0591, %land.lhs.true699 ], [ %year.0591, %land.lhs.true991 ], [ %year.0591, %land.lhs.true983 ], [ %year.0591, %if.end943 ], [ %year.0591, %if.else948 ], [ %year.0591, %if.else981 ], [ %year.0591, %if.then999 ], [ %year.0591, %if.then977 ], [ %year.0591, %if.end1061 ], [ %year.0591, %if.end1076 ], [ %year.0591, %if.else1169 ], [ %year.0591, %if.end1211 ], [ %year.0591, %if.else1234 ], [ %year.0591, %if.then1252 ], [ %add1282, %cond.true1254 ], [ %year.0591, %if.then1293 ], [ %add1317, %cond.true1295 ], [ %year.0591, %if.then1328 ], [ %year.0591, %if.else1247 ], [ %year.0591, %if.then1361 ], [ %year.0591, %cond.true1363 ], [ %year.0591, %sw.bb81 ], [ %year.0591, %sw.bb141 ], [ %year.0591, %if.else299 ], [ %year.0591, %sw.bb521 ], [ %year.0591, %sw.bb621 ], [ %spec.select538, %if.else1347 ], [ %year.0591, %land.lhs.true83 ], [ %year.0591, %land.lhs.true162 ], [ %year.0591, %land.lhs.true143 ], [ %year.0591, %land.lhs.true301 ], [ %year.0591, %land.lhs.true523 ], [ %year.0591, %land.lhs.true623 ], [ %year.0591, %while.end ], [ %year.0591, %land.lhs.true1160 ], [ %year.0591, %land.lhs.true671 ] + %hour.1 = phi i32 [ %hour.0593, %if.end4 ], [ %hour.0593, %if.then793 ], [ %hour.0593, %if.end798 ], [ %hour.0593, %while.end834 ], [ %hour.0593, %if.else881 ], [ %hour.0593, %if.then1018 ], [ %hour.0593, %if.then1042 ], [ %hour.0593, %if.end1068 ], [ %hour.0593, %if.end1098 ], [ %hour.0593, %if.then1127 ], [ %hour.0593, %if.then1193 ], [ %hour.0593, %if.end1199 ], [ %hour.0593, %if.end1216 ], [ %hour.0593, %if.then1345 ], [ %hour.0593, %if.else1341 ], [ %hour.0593, %if.then711 ], [ %hour.0593, %if.then716 ], [ %hour.0593, %if.end777 ], [ %hour.0593, %if.then707 ], [ %hour.0593, %sw.bb689 ], [ %hour.0593, %sw.bb661 ], [ %hour.0593, %if.then658 ], [ %hour.0593, %if.then617 ], [ %hour.0593, %if.else599 ], [ %hour.0593, %if.then558 ], [ %hour.0593, %if.then519 ], [ %hour.0593, %sw.bb501 ], [ %hour.0593, %if.then498 ], [ %hour.0593, %if.else480 ], [ %hour.0593, %if.then454 ], [ %hour.0593, %if.else436 ], [ %hour.0593, %if.then336 ], [ %hour.0593, %if.then259 ], [ %hour.0593, %sw.bb241 ], [ %hour.0593, %if.then238 ], [ %hour.0593, %if.else220 ], [ %hour.0593, %if.then197 ], [ %hour.0593, %if.then139 ], [ %hour.0593, %sw.bb121 ], [ %hour.0593, %if.then118 ], [ %hour.0593, %if.then79 ], [ %hour.0593, %sw.bb61 ], [ %hour.0593, %if.then57 ], [ %hour.0593, %if.else39 ], [ %hour.0593, %land.lhs.true12 ], [ %hour.0593, %land.lhs.true12 ], [ %hour.0593, %land.lhs.true30 ], [ %hour.0593, %land.lhs.true30 ], [ %hour.0593, %land.lhs.true41 ], [ %hour.0593, %land.lhs.true49 ], [ %hour.0593, %land.lhs.true63 ], [ %hour.0593, %land.lhs.true71 ], [ %hour.0593, %land.lhs.true91 ], [ %hour.0593, %land.lhs.true91 ], [ %hour.0593, %land.lhs.true102 ], [ %hour.0593, %land.lhs.true110 ], [ %hour.0593, %land.lhs.true123 ], [ %hour.0593, %land.lhs.true131 ], [ %hour.0593, %land.lhs.true151 ], [ %hour.0593, %land.lhs.true151 ], [ %hour.0593, %land.lhs.true170 ], [ %hour.0593, %land.lhs.true170 ], [ %hour.0593, %land.lhs.true181 ], [ %hour.0593, %land.lhs.true189 ], [ %hour.0593, %land.lhs.true211 ], [ %hour.0593, %land.lhs.true211 ], [ %hour.0593, %land.lhs.true222 ], [ %hour.0593, %land.lhs.true230 ], [ %hour.0593, %land.lhs.true243 ], [ %hour.0593, %land.lhs.true251 ], [ %hour.0593, %land.lhs.true271 ], [ %hour.0593, %land.lhs.true271 ], [ %hour.0593, %land.lhs.true290 ], [ %hour.0593, %land.lhs.true290 ], [ %hour.0593, %land.lhs.true309 ], [ %hour.0593, %land.lhs.true309 ], [ %hour.0593, %land.lhs.true320 ], [ %hour.0593, %land.lhs.true328 ], [ %hour.0593, %land.lhs.true351 ], [ %hour.0593, %land.lhs.true351 ], [ %hour.0593, %land.lhs.true370 ], [ %hour.0593, %land.lhs.true370 ], [ %hour.0593, %land.lhs.true389 ], [ %hour.0593, %land.lhs.true389 ], [ %hour.0593, %land.lhs.true408 ], [ %hour.0593, %land.lhs.true408 ], [ %hour.0593, %land.lhs.true427 ], [ %hour.0593, %land.lhs.true427 ], [ %hour.0593, %land.lhs.true438 ], [ %hour.0593, %land.lhs.true446 ], [ %hour.0593, %land.lhs.true471 ], [ %hour.0593, %land.lhs.true471 ], [ %hour.0593, %land.lhs.true482 ], [ %hour.0593, %land.lhs.true490 ], [ %hour.0593, %land.lhs.true503 ], [ %hour.0593, %land.lhs.true511 ], [ %hour.0593, %land.lhs.true531 ], [ %hour.0593, %land.lhs.true531 ], [ %hour.0593, %land.lhs.true542 ], [ %hour.0593, %land.lhs.true550 ], [ %hour.0593, %land.lhs.true571 ], [ %hour.0593, %land.lhs.true571 ], [ %hour.0593, %land.lhs.true590 ], [ %hour.0593, %land.lhs.true590 ], [ %hour.0593, %land.lhs.true601 ], [ %hour.0593, %land.lhs.true609 ], [ %hour.0593, %land.lhs.true631 ], [ %hour.0593, %land.lhs.true631 ], [ %hour.0593, %land.lhs.true642 ], [ %hour.0593, %land.lhs.true650 ], [ %hour.0593, %land.lhs.true663 ], [ %hour.0593, %land.lhs.true691 ], [ %hour.0593, %land.lhs.true699 ], [ 12, %land.lhs.true991 ], [ 12, %land.lhs.true983 ], [ %tmp_hour.0, %if.end943 ], [ %tmp_hour.0, %if.else948 ], [ %tmp_hour.0, %if.else981 ], [ 0, %if.then999 ], [ %cond980, %if.then977 ], [ %hour.0593, %if.end1061 ], [ %hour.0593, %if.end1076 ], [ %hour.0593, %if.else1169 ], [ %hour.0593, %if.end1211 ], [ %hour.0593, %if.else1234 ], [ %hour.0593, %if.then1252 ], [ %hour.0593, %cond.true1254 ], [ %hour.0593, %if.then1293 ], [ %hour.0593, %cond.true1295 ], [ %hour.0593, %if.then1328 ], [ %hour.0593, %if.else1247 ], [ %hour.0593, %if.then1361 ], [ %hour.0593, %cond.true1363 ], [ %hour.0593, %sw.bb81 ], [ %hour.0593, %sw.bb141 ], [ %hour.0593, %if.else299 ], [ %hour.0593, %sw.bb521 ], [ %hour.0593, %sw.bb621 ], [ %hour.0593, %if.else1347 ], [ %hour.0593, %land.lhs.true83 ], [ %hour.0593, %land.lhs.true162 ], [ %hour.0593, %land.lhs.true143 ], [ %hour.0593, %land.lhs.true301 ], [ %hour.0593, %land.lhs.true523 ], [ %hour.0593, %land.lhs.true623 ], [ %hour.0593, %while.end ], [ %hour.0593, %land.lhs.true1160 ], [ %hour.0593, %land.lhs.true671 ] + %min.1 = phi i32 [ %min.0595, %if.end4 ], [ %min.0595, %if.then793 ], [ %min.0595, %if.end798 ], [ %min.0595, %while.end834 ], [ %min.0595, %if.else881 ], [ %min.0595, %if.then1018 ], [ %min.0595, %if.then1042 ], [ %min.0595, %if.end1068 ], [ %min.0595, %if.end1098 ], [ %min.0595, %if.then1127 ], [ %min.0595, %if.then1193 ], [ %min.0595, %if.end1199 ], [ %min.0595, %if.end1216 ], [ %min.0595, %if.then1345 ], [ %min.0595, %if.else1341 ], [ %min.0595, %if.then711 ], [ %min.0595, %if.then716 ], [ %min.0595, %if.end777 ], [ %min.0595, %if.then707 ], [ %min.0595, %sw.bb689 ], [ %min.0595, %sw.bb661 ], [ %min.0595, %if.then658 ], [ %min.0595, %if.then617 ], [ %min.0595, %if.else599 ], [ %min.0595, %if.then558 ], [ %min.0595, %if.then519 ], [ %min.0595, %sw.bb501 ], [ %min.0595, %if.then498 ], [ %min.0595, %if.else480 ], [ %min.0595, %if.then454 ], [ %min.0595, %if.else436 ], [ %min.0595, %if.then336 ], [ %min.0595, %if.then259 ], [ %min.0595, %sw.bb241 ], [ %min.0595, %if.then238 ], [ %min.0595, %if.else220 ], [ %min.0595, %if.then197 ], [ %min.0595, %if.then139 ], [ %min.0595, %sw.bb121 ], [ %min.0595, %if.then118 ], [ %min.0595, %if.then79 ], [ %min.0595, %sw.bb61 ], [ %min.0595, %if.then57 ], [ %min.0595, %if.else39 ], [ %min.0595, %land.lhs.true12 ], [ %min.0595, %land.lhs.true12 ], [ %min.0595, %land.lhs.true30 ], [ %min.0595, %land.lhs.true30 ], [ %min.0595, %land.lhs.true41 ], [ %min.0595, %land.lhs.true49 ], [ %min.0595, %land.lhs.true63 ], [ %min.0595, %land.lhs.true71 ], [ %min.0595, %land.lhs.true91 ], [ %min.0595, %land.lhs.true91 ], [ %min.0595, %land.lhs.true102 ], [ %min.0595, %land.lhs.true110 ], [ %min.0595, %land.lhs.true123 ], [ %min.0595, %land.lhs.true131 ], [ %min.0595, %land.lhs.true151 ], [ %min.0595, %land.lhs.true151 ], [ %min.0595, %land.lhs.true170 ], [ %min.0595, %land.lhs.true170 ], [ %min.0595, %land.lhs.true181 ], [ %min.0595, %land.lhs.true189 ], [ %min.0595, %land.lhs.true211 ], [ %min.0595, %land.lhs.true211 ], [ %min.0595, %land.lhs.true222 ], [ %min.0595, %land.lhs.true230 ], [ %min.0595, %land.lhs.true243 ], [ %min.0595, %land.lhs.true251 ], [ %min.0595, %land.lhs.true271 ], [ %min.0595, %land.lhs.true271 ], [ %min.0595, %land.lhs.true290 ], [ %min.0595, %land.lhs.true290 ], [ %min.0595, %land.lhs.true309 ], [ %min.0595, %land.lhs.true309 ], [ %min.0595, %land.lhs.true320 ], [ %min.0595, %land.lhs.true328 ], [ %min.0595, %land.lhs.true351 ], [ %min.0595, %land.lhs.true351 ], [ %min.0595, %land.lhs.true370 ], [ %min.0595, %land.lhs.true370 ], [ %min.0595, %land.lhs.true389 ], [ %min.0595, %land.lhs.true389 ], [ %min.0595, %land.lhs.true408 ], [ %min.0595, %land.lhs.true408 ], [ %min.0595, %land.lhs.true427 ], [ %min.0595, %land.lhs.true427 ], [ %min.0595, %land.lhs.true438 ], [ %min.0595, %land.lhs.true446 ], [ %min.0595, %land.lhs.true471 ], [ %min.0595, %land.lhs.true471 ], [ %min.0595, %land.lhs.true482 ], [ %min.0595, %land.lhs.true490 ], [ %min.0595, %land.lhs.true503 ], [ %min.0595, %land.lhs.true511 ], [ %min.0595, %land.lhs.true531 ], [ %min.0595, %land.lhs.true531 ], [ %min.0595, %land.lhs.true542 ], [ %min.0595, %land.lhs.true550 ], [ %min.0595, %land.lhs.true571 ], [ %min.0595, %land.lhs.true571 ], [ %min.0595, %land.lhs.true590 ], [ %min.0595, %land.lhs.true590 ], [ %min.0595, %land.lhs.true601 ], [ %min.0595, %land.lhs.true609 ], [ %min.0595, %land.lhs.true631 ], [ %min.0595, %land.lhs.true631 ], [ %min.0595, %land.lhs.true642 ], [ %min.0595, %land.lhs.true650 ], [ %min.0595, %land.lhs.true663 ], [ %min.0595, %land.lhs.true691 ], [ %min.0595, %land.lhs.true699 ], [ %tmp_min.0, %land.lhs.true991 ], [ %tmp_min.0, %land.lhs.true983 ], [ %tmp_min.0, %if.end943 ], [ %tmp_min.0, %if.else948 ], [ %tmp_min.0, %if.else981 ], [ %tmp_min.0, %if.then999 ], [ %tmp_min.0, %if.then977 ], [ %min.0595, %if.end1061 ], [ %min.0595, %if.end1076 ], [ %min.0595, %if.else1169 ], [ %min.0595, %if.end1211 ], [ %min.0595, %if.else1234 ], [ %min.0595, %if.then1252 ], [ %min.0595, %cond.true1254 ], [ %min.0595, %if.then1293 ], [ %min.0595, %cond.true1295 ], [ %min.0595, %if.then1328 ], [ %min.0595, %if.else1247 ], [ %min.0595, %if.then1361 ], [ %min.0595, %cond.true1363 ], [ %min.0595, %sw.bb81 ], [ %min.0595, %sw.bb141 ], [ %min.0595, %if.else299 ], [ %min.0595, %sw.bb521 ], [ %min.0595, %sw.bb621 ], [ %min.0595, %if.else1347 ], [ %min.0595, %land.lhs.true83 ], [ %min.0595, %land.lhs.true162 ], [ %min.0595, %land.lhs.true143 ], [ %min.0595, %land.lhs.true301 ], [ %min.0595, %land.lhs.true523 ], [ %min.0595, %land.lhs.true623 ], [ %min.0595, %while.end ], [ %min.0595, %land.lhs.true1160 ], [ %min.0595, %land.lhs.true671 ] + %sec.1 = phi i32 [ %sec.0597, %if.end4 ], [ %sec.0597, %if.then793 ], [ %sec.0597, %if.end798 ], [ %sec.0597, %while.end834 ], [ %sec.0597, %if.else881 ], [ %sec.0597, %if.then1018 ], [ %sec.0597, %if.then1042 ], [ %sec.0597, %if.end1068 ], [ %sec.0597, %if.end1098 ], [ %sec.0597, %if.then1127 ], [ %sec.0597, %if.then1193 ], [ %sec.0597, %if.end1199 ], [ %sec.0597, %if.end1216 ], [ %sec.0597, %if.then1345 ], [ %sec.0597, %if.else1341 ], [ %sec.0597, %if.then711 ], [ %sec.0597, %if.then716 ], [ %sec.0597, %if.end777 ], [ %sec.0597, %if.then707 ], [ %sec.0597, %sw.bb689 ], [ %sec.0597, %sw.bb661 ], [ %sec.0597, %if.then658 ], [ %sec.0597, %if.then617 ], [ %sec.0597, %if.else599 ], [ %sec.0597, %if.then558 ], [ %sec.0597, %if.then519 ], [ %sec.0597, %sw.bb501 ], [ %sec.0597, %if.then498 ], [ %sec.0597, %if.else480 ], [ %sec.0597, %if.then454 ], [ %sec.0597, %if.else436 ], [ %sec.0597, %if.then336 ], [ %sec.0597, %if.then259 ], [ %sec.0597, %sw.bb241 ], [ %sec.0597, %if.then238 ], [ %sec.0597, %if.else220 ], [ %sec.0597, %if.then197 ], [ %sec.0597, %if.then139 ], [ %sec.0597, %sw.bb121 ], [ %sec.0597, %if.then118 ], [ %sec.0597, %if.then79 ], [ %sec.0597, %sw.bb61 ], [ %sec.0597, %if.then57 ], [ %sec.0597, %if.else39 ], [ %sec.0597, %land.lhs.true12 ], [ %sec.0597, %land.lhs.true12 ], [ %sec.0597, %land.lhs.true30 ], [ %sec.0597, %land.lhs.true30 ], [ %sec.0597, %land.lhs.true41 ], [ %sec.0597, %land.lhs.true49 ], [ %sec.0597, %land.lhs.true63 ], [ %sec.0597, %land.lhs.true71 ], [ %sec.0597, %land.lhs.true91 ], [ %sec.0597, %land.lhs.true91 ], [ %sec.0597, %land.lhs.true102 ], [ %sec.0597, %land.lhs.true110 ], [ %sec.0597, %land.lhs.true123 ], [ %sec.0597, %land.lhs.true131 ], [ %sec.0597, %land.lhs.true151 ], [ %sec.0597, %land.lhs.true151 ], [ %sec.0597, %land.lhs.true170 ], [ %sec.0597, %land.lhs.true170 ], [ %sec.0597, %land.lhs.true181 ], [ %sec.0597, %land.lhs.true189 ], [ %sec.0597, %land.lhs.true211 ], [ %sec.0597, %land.lhs.true211 ], [ %sec.0597, %land.lhs.true222 ], [ %sec.0597, %land.lhs.true230 ], [ %sec.0597, %land.lhs.true243 ], [ %sec.0597, %land.lhs.true251 ], [ %sec.0597, %land.lhs.true271 ], [ %sec.0597, %land.lhs.true271 ], [ %sec.0597, %land.lhs.true290 ], [ %sec.0597, %land.lhs.true290 ], [ %sec.0597, %land.lhs.true309 ], [ %sec.0597, %land.lhs.true309 ], [ %sec.0597, %land.lhs.true320 ], [ %sec.0597, %land.lhs.true328 ], [ %sec.0597, %land.lhs.true351 ], [ %sec.0597, %land.lhs.true351 ], [ %sec.0597, %land.lhs.true370 ], [ %sec.0597, %land.lhs.true370 ], [ %sec.0597, %land.lhs.true389 ], [ %sec.0597, %land.lhs.true389 ], [ %sec.0597, %land.lhs.true408 ], [ %sec.0597, %land.lhs.true408 ], [ %sec.0597, %land.lhs.true427 ], [ %sec.0597, %land.lhs.true427 ], [ %sec.0597, %land.lhs.true438 ], [ %sec.0597, %land.lhs.true446 ], [ %sec.0597, %land.lhs.true471 ], [ %sec.0597, %land.lhs.true471 ], [ %sec.0597, %land.lhs.true482 ], [ %sec.0597, %land.lhs.true490 ], [ %sec.0597, %land.lhs.true503 ], [ %sec.0597, %land.lhs.true511 ], [ %sec.0597, %land.lhs.true531 ], [ %sec.0597, %land.lhs.true531 ], [ %sec.0597, %land.lhs.true542 ], [ %sec.0597, %land.lhs.true550 ], [ %sec.0597, %land.lhs.true571 ], [ %sec.0597, %land.lhs.true571 ], [ %sec.0597, %land.lhs.true590 ], [ %sec.0597, %land.lhs.true590 ], [ %sec.0597, %land.lhs.true601 ], [ %sec.0597, %land.lhs.true609 ], [ %sec.0597, %land.lhs.true631 ], [ %sec.0597, %land.lhs.true631 ], [ %sec.0597, %land.lhs.true642 ], [ %sec.0597, %land.lhs.true650 ], [ %sec.0597, %land.lhs.true663 ], [ %sec.0597, %land.lhs.true691 ], [ %sec.0597, %land.lhs.true699 ], [ %tmp_sec.0, %land.lhs.true991 ], [ %tmp_sec.0, %land.lhs.true983 ], [ %tmp_sec.0, %if.end943 ], [ %tmp_sec.0, %if.else948 ], [ %tmp_sec.0, %if.else981 ], [ %tmp_sec.0, %if.then999 ], [ %tmp_sec.0, %if.then977 ], [ %sec.0597, %if.end1061 ], [ %sec.0597, %if.end1076 ], [ %sec.0597, %if.else1169 ], [ %sec.0597, %if.end1211 ], [ %sec.0597, %if.else1234 ], [ %sec.0597, %if.then1252 ], [ %sec.0597, %cond.true1254 ], [ %sec.0597, %if.then1293 ], [ %sec.0597, %cond.true1295 ], [ %sec.0597, %if.then1328 ], [ %sec.0597, %if.else1247 ], [ %sec.0597, %if.then1361 ], [ %sec.0597, %cond.true1363 ], [ %sec.0597, %sw.bb81 ], [ %sec.0597, %sw.bb141 ], [ %sec.0597, %if.else299 ], [ %sec.0597, %sw.bb521 ], [ %sec.0597, %sw.bb621 ], [ %sec.0597, %if.else1347 ], [ %sec.0597, %land.lhs.true83 ], [ %sec.0597, %land.lhs.true162 ], [ %sec.0597, %land.lhs.true143 ], [ %sec.0597, %land.lhs.true301 ], [ %sec.0597, %land.lhs.true523 ], [ %sec.0597, %land.lhs.true623 ], [ %sec.0597, %while.end ], [ %sec.0597, %land.lhs.true1160 ], [ %sec.0597, %land.lhs.true671 ] + %usec.1 = phi i32 [ %usec.0599, %if.end4 ], [ %usec.0599, %if.then793 ], [ %usec.0599, %if.end798 ], [ %usec.0599, %while.end834 ], [ %usec.0599, %if.else881 ], [ %usec.0599, %if.then1018 ], [ %usec.0599, %if.then1042 ], [ %usec.0599, %if.end1068 ], [ %usec.0599, %if.end1098 ], [ %usec.0599, %if.then1127 ], [ %usec.0599, %if.then1193 ], [ %usec.0599, %if.end1199 ], [ %usec.0599, %if.end1216 ], [ %usec.0599, %if.then1345 ], [ %usec.0599, %if.else1341 ], [ %usec.0599, %if.then711 ], [ %usec.0599, %if.then716 ], [ %usec.0599, %if.end777 ], [ %usec.0599, %if.then707 ], [ %usec.0599, %sw.bb689 ], [ %usec.0599, %sw.bb661 ], [ %usec.0599, %if.then658 ], [ %usec.0599, %if.then617 ], [ %usec.0599, %if.else599 ], [ %usec.0599, %if.then558 ], [ %usec.0599, %if.then519 ], [ %usec.0599, %sw.bb501 ], [ %usec.0599, %if.then498 ], [ %usec.0599, %if.else480 ], [ %usec.0599, %if.then454 ], [ %usec.0599, %if.else436 ], [ %usec.0599, %if.then336 ], [ %usec.0599, %if.then259 ], [ %usec.0599, %sw.bb241 ], [ %usec.0599, %if.then238 ], [ %usec.0599, %if.else220 ], [ %usec.0599, %if.then197 ], [ %usec.0599, %if.then139 ], [ %usec.0599, %sw.bb121 ], [ %usec.0599, %if.then118 ], [ %usec.0599, %if.then79 ], [ %usec.0599, %sw.bb61 ], [ %usec.0599, %if.then57 ], [ %usec.0599, %if.else39 ], [ %usec.0599, %land.lhs.true12 ], [ %usec.0599, %land.lhs.true12 ], [ %usec.0599, %land.lhs.true30 ], [ %usec.0599, %land.lhs.true30 ], [ %usec.0599, %land.lhs.true41 ], [ %usec.0599, %land.lhs.true49 ], [ %usec.0599, %land.lhs.true63 ], [ %usec.0599, %land.lhs.true71 ], [ %usec.0599, %land.lhs.true91 ], [ %usec.0599, %land.lhs.true91 ], [ %usec.0599, %land.lhs.true102 ], [ %usec.0599, %land.lhs.true110 ], [ %usec.0599, %land.lhs.true123 ], [ %usec.0599, %land.lhs.true131 ], [ %usec.0599, %land.lhs.true151 ], [ %usec.0599, %land.lhs.true151 ], [ %usec.0599, %land.lhs.true170 ], [ %usec.0599, %land.lhs.true170 ], [ %usec.0599, %land.lhs.true181 ], [ %usec.0599, %land.lhs.true189 ], [ %usec.0599, %land.lhs.true211 ], [ %usec.0599, %land.lhs.true211 ], [ %usec.0599, %land.lhs.true222 ], [ %usec.0599, %land.lhs.true230 ], [ %usec.0599, %land.lhs.true243 ], [ %usec.0599, %land.lhs.true251 ], [ %usec.0599, %land.lhs.true271 ], [ %usec.0599, %land.lhs.true271 ], [ %usec.0599, %land.lhs.true290 ], [ %usec.0599, %land.lhs.true290 ], [ %usec.0599, %land.lhs.true309 ], [ %usec.0599, %land.lhs.true309 ], [ %usec.0599, %land.lhs.true320 ], [ %usec.0599, %land.lhs.true328 ], [ %usec.0599, %land.lhs.true351 ], [ %usec.0599, %land.lhs.true351 ], [ %usec.0599, %land.lhs.true370 ], [ %usec.0599, %land.lhs.true370 ], [ %usec.0599, %land.lhs.true389 ], [ %usec.0599, %land.lhs.true389 ], [ %usec.0599, %land.lhs.true408 ], [ %usec.0599, %land.lhs.true408 ], [ %usec.0599, %land.lhs.true427 ], [ %usec.0599, %land.lhs.true427 ], [ %usec.0599, %land.lhs.true438 ], [ %usec.0599, %land.lhs.true446 ], [ %usec.0599, %land.lhs.true471 ], [ %usec.0599, %land.lhs.true471 ], [ %usec.0599, %land.lhs.true482 ], [ %usec.0599, %land.lhs.true490 ], [ %usec.0599, %land.lhs.true503 ], [ %usec.0599, %land.lhs.true511 ], [ %usec.0599, %land.lhs.true531 ], [ %usec.0599, %land.lhs.true531 ], [ %usec.0599, %land.lhs.true542 ], [ %usec.0599, %land.lhs.true550 ], [ %usec.0599, %land.lhs.true571 ], [ %usec.0599, %land.lhs.true571 ], [ %usec.0599, %land.lhs.true590 ], [ %usec.0599, %land.lhs.true590 ], [ %usec.0599, %land.lhs.true601 ], [ %usec.0599, %land.lhs.true609 ], [ %usec.0599, %land.lhs.true631 ], [ %usec.0599, %land.lhs.true631 ], [ %usec.0599, %land.lhs.true642 ], [ %usec.0599, %land.lhs.true650 ], [ %usec.0599, %land.lhs.true663 ], [ %usec.0599, %land.lhs.true691 ], [ %usec.0599, %land.lhs.true699 ], [ %tmp_usec.0, %land.lhs.true991 ], [ %tmp_usec.0, %land.lhs.true983 ], [ %tmp_usec.0, %if.end943 ], [ %tmp_usec.0, %if.else948 ], [ %tmp_usec.0, %if.else981 ], [ %tmp_usec.0, %if.then999 ], [ %tmp_usec.0, %if.then977 ], [ %usec.0599, %if.end1061 ], [ %usec.0599, %if.end1076 ], [ %usec.0599, %if.else1169 ], [ %usec.0599, %if.end1211 ], [ %usec.0599, %if.else1234 ], [ %usec.0599, %if.then1252 ], [ %usec.0599, %cond.true1254 ], [ %usec.0599, %if.then1293 ], [ %usec.0599, %cond.true1295 ], [ %usec.0599, %if.then1328 ], [ %usec.0599, %if.else1247 ], [ %usec.0599, %if.then1361 ], [ %usec.0599, %cond.true1363 ], [ %usec.0599, %sw.bb81 ], [ %usec.0599, %sw.bb141 ], [ %usec.0599, %if.else299 ], [ %usec.0599, %sw.bb521 ], [ %usec.0599, %sw.bb621 ], [ %usec.0599, %if.else1347 ], [ %usec.0599, %land.lhs.true83 ], [ %usec.0599, %land.lhs.true162 ], [ %usec.0599, %land.lhs.true143 ], [ %usec.0599, %land.lhs.true301 ], [ %usec.0599, %land.lhs.true523 ], [ %usec.0599, %land.lhs.true623 ], [ %usec.0599, %while.end ], [ %usec.0599, %land.lhs.true1160 ], [ %usec.0599, %land.lhs.true671 ] + %rest.1 = phi ptr [ %rest.0601, %if.end4 ], [ %rest.0601, %if.then793 ], [ %rest.0601, %if.end798 ], [ %incdec.ptr789, %while.end834 ], [ %spec.select, %if.else881 ], [ %rest.0601, %if.then1018 ], [ %rest.0601, %if.then1042 ], [ %rest.0601, %if.end1068 ], [ %rest.0601, %if.end1098 ], [ %rest.0601, %if.then1127 ], [ %rest.0601, %if.then1193 ], [ %s1019.3, %if.end1199 ], [ %s1019.3, %if.end1216 ], [ %rest.0601, %if.then1345 ], [ %rest.0601, %if.else1341 ], [ %incdec.ptr, %if.then711 ], [ %incdec.ptr717, %if.then716 ], [ %incdec.ptr721.ptr, %if.end777 ], [ %rest.0601, %if.then707 ], [ %rest.0601, %sw.bb689 ], [ %rest.0601, %sw.bb661 ], [ %rest.0601, %if.then658 ], [ %rest.0601, %if.then617 ], [ %rest.0601, %if.else599 ], [ %rest.0601, %if.then558 ], [ %rest.0601, %if.then519 ], [ %rest.0601, %sw.bb501 ], [ %rest.0601, %if.then498 ], [ %rest.0601, %if.else480 ], [ %rest.0601, %if.then454 ], [ %rest.0601, %if.else436 ], [ %rest.0601, %if.then336 ], [ %rest.0601, %if.then259 ], [ %rest.0601, %sw.bb241 ], [ %rest.0601, %if.then238 ], [ %rest.0601, %if.else220 ], [ %rest.0601, %if.then197 ], [ %rest.0601, %if.then139 ], [ %rest.0601, %sw.bb121 ], [ %rest.0601, %if.then118 ], [ %rest.0601, %if.then79 ], [ %rest.0601, %sw.bb61 ], [ %rest.0601, %if.then57 ], [ %rest.0601, %if.else39 ], [ %rest.0601, %land.lhs.true12 ], [ %rest.0601, %land.lhs.true12 ], [ %rest.0601, %land.lhs.true30 ], [ %rest.0601, %land.lhs.true30 ], [ %rest.0601, %land.lhs.true41 ], [ %rest.0601, %land.lhs.true49 ], [ %rest.0601, %land.lhs.true63 ], [ %rest.0601, %land.lhs.true71 ], [ %rest.0601, %land.lhs.true91 ], [ %rest.0601, %land.lhs.true91 ], [ %rest.0601, %land.lhs.true102 ], [ %rest.0601, %land.lhs.true110 ], [ %rest.0601, %land.lhs.true123 ], [ %rest.0601, %land.lhs.true131 ], [ %rest.0601, %land.lhs.true151 ], [ %rest.0601, %land.lhs.true151 ], [ %rest.0601, %land.lhs.true170 ], [ %rest.0601, %land.lhs.true170 ], [ %rest.0601, %land.lhs.true181 ], [ %rest.0601, %land.lhs.true189 ], [ %rest.0601, %land.lhs.true211 ], [ %rest.0601, %land.lhs.true211 ], [ %rest.0601, %land.lhs.true222 ], [ %rest.0601, %land.lhs.true230 ], [ %rest.0601, %land.lhs.true243 ], [ %rest.0601, %land.lhs.true251 ], [ %rest.0601, %land.lhs.true271 ], [ %rest.0601, %land.lhs.true271 ], [ %rest.0601, %land.lhs.true290 ], [ %rest.0601, %land.lhs.true290 ], [ %rest.0601, %land.lhs.true309 ], [ %rest.0601, %land.lhs.true309 ], [ %rest.0601, %land.lhs.true320 ], [ %rest.0601, %land.lhs.true328 ], [ %rest.0601, %land.lhs.true351 ], [ %rest.0601, %land.lhs.true351 ], [ %rest.0601, %land.lhs.true370 ], [ %rest.0601, %land.lhs.true370 ], [ %rest.0601, %land.lhs.true389 ], [ %rest.0601, %land.lhs.true389 ], [ %rest.0601, %land.lhs.true408 ], [ %rest.0601, %land.lhs.true408 ], [ %rest.0601, %land.lhs.true427 ], [ %rest.0601, %land.lhs.true427 ], [ %rest.0601, %land.lhs.true438 ], [ %rest.0601, %land.lhs.true446 ], [ %rest.0601, %land.lhs.true471 ], [ %rest.0601, %land.lhs.true471 ], [ %rest.0601, %land.lhs.true482 ], [ %rest.0601, %land.lhs.true490 ], [ %rest.0601, %land.lhs.true503 ], [ %rest.0601, %land.lhs.true511 ], [ %rest.0601, %land.lhs.true531 ], [ %rest.0601, %land.lhs.true531 ], [ %rest.0601, %land.lhs.true542 ], [ %rest.0601, %land.lhs.true550 ], [ %rest.0601, %land.lhs.true571 ], [ %rest.0601, %land.lhs.true571 ], [ %rest.0601, %land.lhs.true590 ], [ %rest.0601, %land.lhs.true590 ], [ %rest.0601, %land.lhs.true601 ], [ %rest.0601, %land.lhs.true609 ], [ %rest.0601, %land.lhs.true631 ], [ %rest.0601, %land.lhs.true631 ], [ %rest.0601, %land.lhs.true642 ], [ %rest.0601, %land.lhs.true650 ], [ %rest.0601, %land.lhs.true663 ], [ %rest.0601, %land.lhs.true691 ], [ %rest.0601, %land.lhs.true699 ], [ %end780.3, %land.lhs.true991 ], [ %end780.3, %land.lhs.true983 ], [ %end780.3, %if.end943 ], [ %end780.3, %if.else948 ], [ %end780.3, %if.else981 ], [ %end780.3, %if.then999 ], [ %end780.3, %if.then977 ], [ %rest.0601, %if.end1061 ], [ %rest.0601, %if.end1076 ], [ %rest.0601, %if.else1169 ], [ %s1019.3, %if.end1211 ], [ %rest.0601, %if.else1234 ], [ %rest.0601, %if.then1252 ], [ %rest.0601, %cond.true1254 ], [ %rest.0601, %if.then1293 ], [ %rest.0601, %cond.true1295 ], [ %rest.0601, %if.then1328 ], [ %rest.0601, %if.else1247 ], [ %rest.0601, %if.then1361 ], [ %rest.0601, %cond.true1363 ], [ %rest.0601, %sw.bb81 ], [ %rest.0601, %sw.bb141 ], [ %rest.0601, %if.else299 ], [ %rest.0601, %sw.bb521 ], [ %rest.0601, %sw.bb621 ], [ %rest.0601, %if.else1347 ], [ %rest.0601, %land.lhs.true83 ], [ %rest.0601, %land.lhs.true162 ], [ %rest.0601, %land.lhs.true143 ], [ %rest.0601, %land.lhs.true301 ], [ %rest.0601, %land.lhs.true523 ], [ %rest.0601, %land.lhs.true623 ], [ %incdec.ptr721.ptr, %while.end ], [ %rest.0601, %land.lhs.true1160 ], [ %rest.0601, %land.lhs.true671 ] + %dotw.1 = phi i32 [ %dotw.0604, %if.end4 ], [ %dotw.0604, %if.then793 ], [ %dotw.0604, %if.end798 ], [ %dotw.0604, %while.end834 ], [ %dotw.0604, %if.else881 ], [ %dotw.0604, %if.then1018 ], [ %dotw.0604, %if.then1042 ], [ %dotw.0604, %if.end1068 ], [ %dotw.0604, %if.end1098 ], [ %dotw.0604, %if.then1127 ], [ %dotw.0604, %if.then1193 ], [ %dotw.0604, %if.end1199 ], [ %dotw.0604, %if.end1216 ], [ %dotw.0604, %if.then1345 ], [ %dotw.0604, %if.else1341 ], [ %dotw.0604, %if.then711 ], [ %dotw.0604, %if.then716 ], [ %dotw.0604, %if.end777 ], [ 4, %if.then707 ], [ %dotw.0604, %sw.bb689 ], [ %dotw.0604, %sw.bb661 ], [ 3, %if.then658 ], [ 1, %if.then617 ], [ %dotw.0604, %if.else599 ], [ %dotw.0604, %if.then558 ], [ %dotw.0604, %if.then519 ], [ %dotw.0604, %sw.bb501 ], [ %dotw.0604, %if.then498 ], [ %dotw.0604, %if.else480 ], [ %dotw.0604, %if.then454 ], [ %dotw.0604, %if.else436 ], [ %dotw.0604, %if.then336 ], [ %dotw.0604, %if.then259 ], [ %dotw.0604, %sw.bb241 ], [ 6, %if.then238 ], [ %dotw.0604, %if.else220 ], [ %dotw.0604, %if.then197 ], [ %dotw.0604, %if.then139 ], [ %dotw.0604, %sw.bb121 ], [ %dotw.0604, %if.then118 ], [ %dotw.0604, %if.then79 ], [ %dotw.0604, %sw.bb61 ], [ %dotw.0604, %if.then57 ], [ %dotw.0604, %if.else39 ], [ %dotw.0604, %land.lhs.true12 ], [ %dotw.0604, %land.lhs.true12 ], [ %dotw.0604, %land.lhs.true30 ], [ %dotw.0604, %land.lhs.true30 ], [ %dotw.0604, %land.lhs.true41 ], [ %dotw.0604, %land.lhs.true49 ], [ %dotw.0604, %land.lhs.true63 ], [ %dotw.0604, %land.lhs.true71 ], [ %dotw.0604, %land.lhs.true91 ], [ %dotw.0604, %land.lhs.true91 ], [ %dotw.0604, %land.lhs.true102 ], [ %dotw.0604, %land.lhs.true110 ], [ %dotw.0604, %land.lhs.true123 ], [ %dotw.0604, %land.lhs.true131 ], [ %dotw.0604, %land.lhs.true151 ], [ %dotw.0604, %land.lhs.true151 ], [ %dotw.0604, %land.lhs.true170 ], [ %dotw.0604, %land.lhs.true170 ], [ %dotw.0604, %land.lhs.true181 ], [ %dotw.0604, %land.lhs.true189 ], [ %dotw.0604, %land.lhs.true211 ], [ %dotw.0604, %land.lhs.true211 ], [ 0, %land.lhs.true222 ], [ 0, %land.lhs.true230 ], [ %dotw.0604, %land.lhs.true243 ], [ %dotw.0604, %land.lhs.true251 ], [ %dotw.0604, %land.lhs.true271 ], [ %dotw.0604, %land.lhs.true271 ], [ %dotw.0604, %land.lhs.true290 ], [ %dotw.0604, %land.lhs.true290 ], [ %dotw.0604, %land.lhs.true309 ], [ %dotw.0604, %land.lhs.true309 ], [ %dotw.0604, %land.lhs.true320 ], [ %dotw.0604, %land.lhs.true328 ], [ %dotw.0604, %land.lhs.true351 ], [ %dotw.0604, %land.lhs.true351 ], [ %dotw.0604, %land.lhs.true370 ], [ %dotw.0604, %land.lhs.true370 ], [ %dotw.0604, %land.lhs.true389 ], [ %dotw.0604, %land.lhs.true389 ], [ %dotw.0604, %land.lhs.true408 ], [ %dotw.0604, %land.lhs.true408 ], [ 2, %land.lhs.true427 ], [ 2, %land.lhs.true427 ], [ %dotw.0604, %land.lhs.true438 ], [ %dotw.0604, %land.lhs.true446 ], [ %dotw.0604, %land.lhs.true471 ], [ %dotw.0604, %land.lhs.true471 ], [ %dotw.0604, %land.lhs.true482 ], [ %dotw.0604, %land.lhs.true490 ], [ %dotw.0604, %land.lhs.true503 ], [ %dotw.0604, %land.lhs.true511 ], [ %dotw.0604, %land.lhs.true531 ], [ %dotw.0604, %land.lhs.true531 ], [ %dotw.0604, %land.lhs.true542 ], [ %dotw.0604, %land.lhs.true550 ], [ 7, %land.lhs.true571 ], [ 7, %land.lhs.true571 ], [ %dotw.0604, %land.lhs.true590 ], [ %dotw.0604, %land.lhs.true590 ], [ 0, %land.lhs.true601 ], [ 0, %land.lhs.true609 ], [ 5, %land.lhs.true631 ], [ 5, %land.lhs.true631 ], [ 0, %land.lhs.true642 ], [ 0, %land.lhs.true650 ], [ %dotw.0604, %land.lhs.true663 ], [ 0, %land.lhs.true691 ], [ 0, %land.lhs.true699 ], [ %dotw.0604, %land.lhs.true991 ], [ %dotw.0604, %land.lhs.true983 ], [ %dotw.0604, %if.end943 ], [ %dotw.0604, %if.else948 ], [ %dotw.0604, %if.else981 ], [ %dotw.0604, %if.then999 ], [ %dotw.0604, %if.then977 ], [ %dotw.0604, %if.end1061 ], [ %dotw.0604, %if.end1076 ], [ %dotw.0604, %if.else1169 ], [ %dotw.0604, %if.end1211 ], [ %dotw.0604, %if.else1234 ], [ %dotw.0604, %if.then1252 ], [ %dotw.0604, %cond.true1254 ], [ %dotw.0604, %if.then1293 ], [ %dotw.0604, %cond.true1295 ], [ %dotw.0604, %if.then1328 ], [ %dotw.0604, %if.else1247 ], [ %dotw.0604, %if.then1361 ], [ %dotw.0604, %cond.true1363 ], [ %dotw.0604, %sw.bb81 ], [ %dotw.0604, %sw.bb141 ], [ %dotw.0604, %if.else299 ], [ %dotw.0604, %sw.bb521 ], [ %dotw.0604, %sw.bb621 ], [ %dotw.0604, %if.else1347 ], [ %dotw.0604, %land.lhs.true83 ], [ %dotw.0604, %land.lhs.true162 ], [ %dotw.0604, %land.lhs.true143 ], [ %dotw.0604, %land.lhs.true301 ], [ %dotw.0604, %land.lhs.true523 ], [ 0, %land.lhs.true623 ], [ %dotw.0604, %while.end ], [ %dotw.0604, %land.lhs.true1160 ], [ %dotw.0604, %land.lhs.true671 ] br label %while.cond1377 while.cond1377: ; preds = %while.body1425, %sw.epilog @@ -2056,13 +2052,13 @@ land.lhs.true1482: ; preds = %while.cond1428 %160 = load i8, ptr %arrayidx1483, align 1 %161 = add i8 %160, -48 %or.cond535 = icmp ult i8 %161, 10 - %spec.select667 = select i1 %or.cond535, i8 %160, i8 84 - %spec.select668 = select i1 %or.cond535, ptr %arrayidx1483, ptr %rest.6 + %spec.select668 = select i1 %or.cond535, i8 %160, i8 84 + %spec.select669 = select i1 %or.cond535, ptr %arrayidx1483, ptr %rest.6 br label %if.end1492 if.end1492: ; preds = %lor.lhs.false1469, %while.cond1428, %land.lhs.true1482 - %162 = phi i8 [ %spec.select667, %land.lhs.true1482 ], [ 45, %lor.lhs.false1469 ], [ %156, %while.cond1428 ] - %rest.7 = phi ptr [ %spec.select668, %land.lhs.true1482 ], [ %rest.6, %while.cond1428 ], [ %rest.6, %lor.lhs.false1469 ] + %162 = phi i8 [ %spec.select668, %land.lhs.true1482 ], [ 45, %lor.lhs.false1469 ], [ %156, %while.cond1428 ] + %rest.7 = phi ptr [ %spec.select669, %land.lhs.true1482 ], [ %rest.6, %while.cond1428 ], [ %rest.6, %lor.lhs.false1469 ] %tobool2.not = icmp eq i8 %162, 0 br i1 %tobool2.not, label %while.end1493, label %while.body, !llvm.loop !17 diff --git a/bench/linux/optimized/trace_output.ll b/bench/linux/optimized/trace_output.ll index e9430924f08..eb05ffacab8 100644 --- a/bench/linux/optimized/trace_output.ll +++ b/bench/linux/optimized/trace_output.ll @@ -511,58 +511,69 @@ define dso_local ptr @trace_print_array_seq(ptr noundef %0, ptr noundef readonly %12 = icmp ugt ptr %11, %1 br i1 %12, label %.preheader, label %.loopexit -.preheader: ; preds = %4, %29 - %13 = phi ptr [ %31, %29 ], [ %1, %4 ] - %14 = phi ptr [ @.str.8, %29 ], [ @.str.4, %4 ] - %15 = phi i64 [ %30, %29 ], [ %3, %4 ] - switch i64 %15, label %26 [ - i64 1, label %16 - i64 2, label %19 - i64 4, label %22 - i64 8, label %24 +.preheader: ; preds = %4 + switch i64 %3, label %.preheader.thread [ + i64 1, label %.preheader.jt1 + i64 2, label %.preheader2 + i64 4, label %.preheader3 + i64 8, label %.preheader5 ] -16: ; preds = %.preheader - %17 = load i8, ptr %13, align 1 +.preheader.jt1: ; preds = %35, %.preheader + %13 = phi ptr [ @.str.4, %.preheader ], [ @.str.8, %35 ] + %14 = phi ptr [ %1, %.preheader ], [ %37, %35 ] + %15 = load i8, ptr %14, align 1 + %16 = zext i8 %15 to i32 + tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.5, ptr noundef nonnull %13, i32 noundef %16) #10 + br label %35 + +.preheader.thread: ; preds = %.preheader + %17 = load i8, ptr %1, align 1 %18 = zext i8 %17 to i32 - tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.5, ptr noundef nonnull %14, i32 noundef %18) #10 - br label %29 - -19: ; preds = %.preheader - %20 = load i16, ptr %13, align 2 - %21 = zext i16 %20 to i32 - tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.5, ptr noundef nonnull %14, i32 noundef %21) #10 - br label %29 - -22: ; preds = %.preheader - %23 = load i32, ptr %13, align 4 - tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.5, ptr noundef nonnull %14, i32 noundef %23) #10 - br label %29 - -24: ; preds = %.preheader - %25 = load i64, ptr %13, align 8 - tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.6, ptr noundef nonnull %14, i64 noundef %25) #10 - br label %29 - -26: ; preds = %.preheader - %27 = load i8, ptr %13, align 1 - %28 = zext i8 %27 to i32 - tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.7, i64 noundef %15, i32 noundef %28) #10 - br label %29 - -29: ; preds = %26, %24, %22, %19, %16 - %30 = phi i64 [ 1, %26 ], [ 8, %24 ], [ 4, %22 ], [ 2, %19 ], [ 1, %16 ] - %31 = getelementptr i8, ptr %13, i64 %30 - %32 = icmp ult ptr %31, %11 - br i1 %32, label %.preheader, label %.loopexit, !llvm.loop !20 - -.loopexit: ; preds = %29, %4 - %33 = tail call i64 @llvm.umin.i64(i64 %6, i64 %8) - %34 = and i64 %33, 4294967295 - %35 = getelementptr i8, ptr %0, i64 %34 + tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.7, i64 noundef %3, i32 noundef %18) #10 + br label %35 + +.preheader2: ; preds = %.preheader, %.preheader2 + %19 = phi ptr [ @.str.8, %.preheader2 ], [ @.str.4, %.preheader ] + %20 = phi ptr [ %23, %.preheader2 ], [ %1, %.preheader ] + %21 = load i16, ptr %20, align 2 + %22 = zext i16 %21 to i32 + tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.5, ptr noundef nonnull %19, i32 noundef %22) #10 + %23 = getelementptr i8, ptr %20, i64 2 + %24 = icmp ult ptr %23, %11 + br i1 %24, label %.preheader2, label %.loopexit, !llvm.loop !20 + +.preheader3: ; preds = %.preheader, %.preheader3 + %25 = phi ptr [ @.str.8, %.preheader3 ], [ @.str.4, %.preheader ] + %26 = phi ptr [ %28, %.preheader3 ], [ %1, %.preheader ] + %27 = load i32, ptr %26, align 4 + tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.5, ptr noundef nonnull %25, i32 noundef %27) #10 + %28 = getelementptr i8, ptr %26, i64 4 + %29 = icmp ult ptr %28, %11 + br i1 %29, label %.preheader3, label %.loopexit, !llvm.loop !20 + +.preheader5: ; preds = %.preheader, %.preheader5 + %30 = phi ptr [ @.str.8, %.preheader5 ], [ @.str.4, %.preheader ] + %31 = phi ptr [ %33, %.preheader5 ], [ %1, %.preheader ] + %32 = load i64, ptr %31, align 8 + tail call void (ptr, ptr, ...) @trace_seq_printf(ptr noundef %0, ptr noundef nonnull @.str.6, ptr noundef nonnull %30, i64 noundef %32) #10 + %33 = getelementptr i8, ptr %31, i64 8 + %34 = icmp ult ptr %33, %11 + br i1 %34, label %.preheader5, label %.loopexit, !llvm.loop !20 + +35: ; preds = %.preheader.jt1, %.preheader.thread + %36 = phi ptr [ %14, %.preheader.jt1 ], [ %1, %.preheader.thread ] + %37 = getelementptr i8, ptr %36, i64 1 + %38 = icmp ult ptr %37, %11 + br i1 %38, label %.preheader.jt1, label %.loopexit, !llvm.loop !20 + +.loopexit: ; preds = %.preheader5, %.preheader3, %.preheader2, %35, %4 + %39 = tail call i64 @llvm.umin.i64(i64 %6, i64 %8) + %40 = and i64 %39, 4294967295 + %41 = getelementptr i8, ptr %0, i64 %40 tail call void @trace_seq_putc(ptr noundef %0, i8 noundef zeroext 125) #10 tail call void @trace_seq_putc(ptr noundef %0, i8 noundef zeroext 0) #10 - ret ptr %35 + ret ptr %41 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/llvm/optimized/CGExprConstant.cpp.ll b/bench/llvm/optimized/CGExprConstant.cpp.ll index 35435a2c769..4d4786304aa 100644 --- a/bench/llvm/optimized/CGExprConstant.cpp.ll +++ b/bench/llvm/optimized/CGExprConstant.cpp.ll @@ -3741,9 +3741,9 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_124ConstantAggregateB %41 = getelementptr inbounds nuw i8, ptr %13, i64 8 br label %42 -42: ; preds = %340, %3 - %.sroa.094.0 = phi i64 [ %27, %3 ], [ %341, %340 ] - %.043 = phi i32 [ %24, %3 ], [ %.144, %340 ] +42: ; preds = %_ZN4llvm5APIntD2Ev.exit85.jt0, %3 + %.sroa.094.0 = phi i64 [ %27, %3 ], [ %348, %_ZN4llvm5APIntD2Ev.exit85.jt0 ] + %.043 = phi i32 [ %24, %3 ], [ 0, %_ZN4llvm5APIntD2Ev.exit85.jt0 ] %43 = load i32, ptr %28, align 8 %44 = zext i32 %43 to i64 %45 = zext i32 %.043 to i64 @@ -3997,7 +3997,7 @@ _ZN4llvm5APIntD2Ev.exit68: ; preds = %143, %140, %137 %156 = extractvalue { i64, i8 } %155, 0 %157 = extractvalue { i64, i8 } %155, 1 %158 = trunc i8 %157 to i1 - br i1 %158, label %159, label %_ZN4llvm5APIntD2Ev.exit84 + br i1 %158, label %159, label %_ZN4llvm5APIntD2Ev.exit84.jt1 159: ; preds = %154 %160 = add nsw i64 %.sroa.094.0, 1 @@ -4005,7 +4005,7 @@ _ZN4llvm5APIntD2Ev.exit68: ; preds = %143, %140, %137 %162 = extractvalue { i64, i8 } %161, 0 %163 = extractvalue { i64, i8 } %161, 1 %164 = trunc i8 %163 to i1 - br i1 %164, label %165, label %_ZN4llvm5APIntD2Ev.exit84 + br i1 %164, label %165, label %_ZN4llvm5APIntD2Ev.exit84.jt1 165: ; preds = %159 store i32 %30, ptr %35, align 8 @@ -4297,7 +4297,7 @@ _ZN4llvm5APIntD2Ev.exit79: ; preds = %_ZN4llvm5APIntD2Ev. _ZN4llvm5APIntD2Ev.exit80: ; preds = %302, %299, %296, %148 %303 = load i32, ptr %28, align 8 %304 = icmp eq i32 %303, %47 - br i1 %304, label %_ZN4llvm5APIntD2Ev.exit84, label %305 + br i1 %304, label %_ZN4llvm5APIntD2Ev.exit84.jt2, label %305 305: ; preds = %_ZN4llvm5APIntD2Ev.exit80 %306 = load ptr, ptr %0, align 8 @@ -4329,75 +4329,79 @@ _ZN4llvm5APInt11lshrInPlaceEj.exit81: ; preds = %317, %314, %305 call void @_ZNK4llvm5APInt5truncEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::APInt") align 8 %13, ptr noundef nonnull align 8 dereferenceable(12) %1, i32 noundef %319) #20 %320 = load i32, ptr %28, align 8 %321 = icmp ult i32 %320, 65 - br i1 %321, label %_ZN4llvm5APIntD2Ev.exit83, label %322 + br i1 %321, label %_ZN4llvm5APIntD2Ev.exit84.jt0, label %322 322: ; preds = %_ZN4llvm5APInt11lshrInPlaceEj.exit81 %323 = load ptr, ptr %1, align 8 %324 = icmp eq ptr %323, null - br i1 %324, label %_ZN4llvm5APIntD2Ev.exit83, label %325 + br i1 %324, label %_ZN4llvm5APIntD2Ev.exit84.jt0, label %325 325: ; preds = %322 call void @_ZdaPv(ptr noundef nonnull %323) #22 - br label %_ZN4llvm5APIntD2Ev.exit83 + br label %_ZN4llvm5APIntD2Ev.exit84.jt0 -_ZN4llvm5APIntD2Ev.exit83: ; preds = %325, %322, %_ZN4llvm5APInt11lshrInPlaceEj.exit81 - %326 = load i64, ptr %13, align 8 - store i64 %326, ptr %1, align 8 - %327 = load i32, ptr %41, align 8 - store i32 %327, ptr %28, align 8 +.critedge: ; preds = %244 + %326 = load i32, ptr %35, align 8 + %327 = icmp ugt i32 %326, 64 + br i1 %327, label %328, label %_ZN4llvm5APIntD2Ev.exit84.jt1 + +328: ; preds = %.critedge + %329 = load ptr, ptr %9, align 8 + %330 = icmp eq ptr %329, null + br i1 %330, label %_ZN4llvm5APIntD2Ev.exit84.jt1, label %331 + +331: ; preds = %328 + call void @_ZdaPv(ptr noundef nonnull %329) #22 + br label %_ZN4llvm5APIntD2Ev.exit84.jt1 + +_ZN4llvm5APIntD2Ev.exit84.jt2: ; preds = %_ZN4llvm5APIntD2Ev.exit80 + %332 = load i32, ptr %29, align 8 + %333 = icmp ult i32 %332, 65 + %334 = load ptr, ptr %4, align 8 + %335 = icmp eq ptr %334, null + %or.cond = select i1 %333, i1 true, i1 %335 + br i1 %or.cond, label %.loopexit, label %.loopexit.sink.split + +_ZN4llvm5APIntD2Ev.exit84.jt1: ; preds = %159, %154, %331, %328, %.critedge + %336 = load i32, ptr %29, align 8 + %337 = icmp ult i32 %336, 65 + %338 = load ptr, ptr %4, align 8 + %339 = icmp eq ptr %338, null + %or.cond110 = select i1 %337, i1 true, i1 %339 + br i1 %or.cond110, label %.loopexit, label %.loopexit.sink.split + +_ZN4llvm5APIntD2Ev.exit84.jt0: ; preds = %_ZN4llvm5APInt11lshrInPlaceEj.exit81, %322, %325 + %340 = load i64, ptr %13, align 8 + store i64 %340, ptr %1, align 8 + %341 = load i32, ptr %41, align 8 + store i32 %341, ptr %28, align 8 store i32 0, ptr %41, align 8 - br label %_ZN4llvm5APIntD2Ev.exit84 + %342 = load i32, ptr %29, align 8 + %343 = icmp ugt i32 %342, 64 + br i1 %343, label %344, label %_ZN4llvm5APIntD2Ev.exit85.jt0 -.critedge: ; preds = %244 - %328 = load i32, ptr %35, align 8 - %329 = icmp ugt i32 %328, 64 - br i1 %329, label %330, label %_ZN4llvm5APIntD2Ev.exit84 +344: ; preds = %_ZN4llvm5APIntD2Ev.exit84.jt0 + %345 = load ptr, ptr %4, align 8 + %346 = icmp eq ptr %345, null + br i1 %346, label %_ZN4llvm5APIntD2Ev.exit85.jt0, label %347 -330: ; preds = %.critedge - %331 = load ptr, ptr %9, align 8 - %332 = icmp eq ptr %331, null - br i1 %332, label %_ZN4llvm5APIntD2Ev.exit84, label %333 +347: ; preds = %344 + call void @_ZdaPv(ptr noundef nonnull %345) #22 + br label %_ZN4llvm5APIntD2Ev.exit85.jt0 -333: ; preds = %330 - call void @_ZdaPv(ptr noundef nonnull %331) #22 - br label %_ZN4llvm5APIntD2Ev.exit84 - -_ZN4llvm5APIntD2Ev.exit84: ; preds = %333, %330, %.critedge, %_ZN4llvm5APIntD2Ev.exit80, %159, %154, %_ZN4llvm5APIntD2Ev.exit83 - %.045 = phi i32 [ 0, %_ZN4llvm5APIntD2Ev.exit83 ], [ 1, %154 ], [ 1, %159 ], [ 2, %_ZN4llvm5APIntD2Ev.exit80 ], [ 1, %.critedge ], [ 1, %330 ], [ 1, %333 ] - %.144 = phi i32 [ 0, %_ZN4llvm5APIntD2Ev.exit83 ], [ %.043, %154 ], [ %.043, %159 ], [ %.043, %_ZN4llvm5APIntD2Ev.exit80 ], [ %.043, %.critedge ], [ %.043, %330 ], [ %.043, %333 ] - %334 = load i32, ptr %29, align 8 - %335 = icmp ugt i32 %334, 64 - br i1 %335, label %336, label %_ZN4llvm5APIntD2Ev.exit85 - -336: ; preds = %_ZN4llvm5APIntD2Ev.exit84 - %337 = load ptr, ptr %4, align 8 - %338 = icmp eq ptr %337, null - br i1 %338, label %_ZN4llvm5APIntD2Ev.exit85, label %339 - -339: ; preds = %336 - call void @_ZdaPv(ptr noundef nonnull %337) #22 - br label %_ZN4llvm5APIntD2Ev.exit85 - -_ZN4llvm5APIntD2Ev.exit85: ; preds = %_ZN4llvm5APIntD2Ev.exit84, %336, %339 - switch i32 %.045, label %default.unreachable106 [ - i32 0, label %340 - i32 1, label %.loopexit.loopexit - i32 2, label %.loopexit - ] - -340: ; preds = %_ZN4llvm5APIntD2Ev.exit85 - %341 = add nsw i64 %.sroa.094.0, 1 +_ZN4llvm5APIntD2Ev.exit85.jt0: ; preds = %344, %347, %_ZN4llvm5APIntD2Ev.exit84.jt0 + %348 = add nsw i64 %.sroa.094.0, 1 br label %42, !llvm.loop !25 -.loopexit.loopexit: ; preds = %_ZN4llvm5APIntD2Ev.exit85 +.loopexit.sink.split: ; preds = %_ZN4llvm5APIntD2Ev.exit84.jt1, %_ZN4llvm5APIntD2Ev.exit84.jt2 + %.sink107 = phi ptr [ %334, %_ZN4llvm5APIntD2Ev.exit84.jt2 ], [ %338, %_ZN4llvm5APIntD2Ev.exit84.jt1 ] + %.4.ph = phi i1 [ true, %_ZN4llvm5APIntD2Ev.exit84.jt2 ], [ false, %_ZN4llvm5APIntD2Ev.exit84.jt1 ] + call void @_ZdaPv(ptr noundef nonnull %.sink107) #22 br label %.loopexit -.loopexit: ; preds = %_ZN4llvm5APIntD2Ev.exit85, %.loopexit.loopexit - %.4 = phi i1 [ false, %.loopexit.loopexit ], [ true, %_ZN4llvm5APIntD2Ev.exit85 ] +.loopexit: ; preds = %.loopexit.sink.split, %_ZN4llvm5APIntD2Ev.exit84.jt2, %_ZN4llvm5APIntD2Ev.exit84.jt1 + %.4 = phi i1 [ false, %_ZN4llvm5APIntD2Ev.exit84.jt1 ], [ true, %_ZN4llvm5APIntD2Ev.exit84.jt2 ], [ %.4.ph, %.loopexit.sink.split ] ret i1 %.4 - -default.unreachable106: ; preds = %_ZN4llvm5APIntD2Ev.exit85 - unreachable } declare noundef zeroext i1 @_ZNK5clang4Expr16EvaluateAsLValueERNS0_10EvalResultERKNS_10ASTContextEb(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(23096), i1 noundef zeroext) local_unnamed_addr #3 diff --git a/bench/llvm/optimized/StackAddrEscapeChecker.cpp.ll b/bench/llvm/optimized/StackAddrEscapeChecker.cpp.ll index 2ca9732763e..c54f7b7fc13 100644 --- a/bench/llvm/optimized/StackAddrEscapeChecker.cpp.ll +++ b/bench/llvm/optimized/StackAddrEscapeChecker.cpp.ll @@ -3434,8 +3434,8 @@ _ZNSt10unique_ptrIN5clang4ento7BugTypeESt14default_deleteIS2_EED2Ev.exit.i: ; pr %115 = getelementptr inbounds nuw i8, ptr %7, i64 40 br label %116 -116: ; preds = %297, %.lr.ph.i - %.02941.i = phi ptr [ %99, %.lr.ph.i ], [ %298, %297 ] +116: ; preds = %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.i, %.lr.ph.i + %.02941.i = phi ptr [ %99, %.lr.ph.i ], [ %302, %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.i ] %117 = load ptr, ptr %.02941.i, align 8 %118 = call noundef nonnull ptr @_ZNK5clang4ento9MemRegion13getBaseRegionEv(ptr noundef nonnull align 8 dereferenceable(48) %117) #17 %119 = getelementptr inbounds nuw i8, ptr %.02941.i, i64 8 @@ -3524,7 +3524,7 @@ _ZNK4llvm15SmallPtrSetImplIPKN5clang4ento9MemRegionEE8containsES5_.exit.i: ; pre %.v.i.i.i = zext i32 %.v.v.i.i.i to i64 %158 = getelementptr inbounds ptr, ptr %155, i64 %.v.i.i.i %.not38.i = icmp eq ptr %.0.i.i.i, %158 - br i1 %.not38.i, label %159, label %297 + br i1 %.not38.i, label %159, label %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.i 159: ; preds = %_ZNK4llvm15SmallPtrSetImplIPKN5clang4ento9MemRegionEE8containsES5_.exit.i call void @_ZN4llvm15SmallVectorBaseImEC2EPvm(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %102, i64 noundef 128) #17 @@ -3649,24 +3649,20 @@ _ZN5clang4ento9BugReport8addRangeENS_11SourceRangeE.exit.i: ; preds = %209, %204 call void %222(ptr noundef nonnull align 8 dereferenceable(120) %218, ptr noundef nonnull %6) #17 %223 = load ptr, ptr %6, align 8 %.not.i.i45.i = icmp eq ptr %223, null - br i1 %.not.i.i45.i, label %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i, label %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i + br i1 %.not.i.i45.i, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt1.i, label %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i _ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i: ; preds = %216 %224 = load ptr, ptr %223, align 8 %225 = getelementptr inbounds i8, ptr %224, i64 8 %226 = load ptr, ptr %225, align 8 call void %226(ptr noundef nonnull align 8 dereferenceable(488) %223) #17 - br label %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i - -_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i: ; preds = %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i, %216 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i + br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt1.i 227: ; preds = %159 call void @_Z13printReferrerB5cxx11PKN5clang4ento9MemRegionE(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.0") align 8 %13, ptr noundef nonnull %118) %228 = load i8, ptr %108, align 8 %229 = trunc i8 %228 to i1 - br i1 %229, label %230, label %289 + br i1 %229, label %230, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt3.i 230: ; preds = %227 %231 = load ptr, ptr %109, align 8 @@ -3768,55 +3764,63 @@ _ZN5clang4ento9BugReport8addRangeENS_11SourceRangeE.exit60.i: ; preds = %271, %2 call void %284(ptr noundef nonnull align 8 dereferenceable(120) %280, ptr noundef nonnull %4) #17 %285 = load ptr, ptr %4, align 8 %.not.i.i61.i = icmp eq ptr %285, null - br i1 %.not.i.i61.i, label %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit69.i, label %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i62.i + br i1 %.not.i.i61.i, label %289, label %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i62.i _ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i62.i: ; preds = %278 %286 = load ptr, ptr %285, align 8 %287 = getelementptr inbounds i8, ptr %286, i64 8 %288 = load ptr, ptr %287, align 8 call void %288(ptr noundef nonnull align 8 dereferenceable(488) %285) #17 - br label %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit69.i + br label %289 -_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit69.i: ; preds = %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i62.i, %278 +289: ; preds = %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i62.i, %278 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) %.pre.i = load i8, ptr %108, align 8 - br label %289 + %290 = trunc i8 %.pre.i to i1 + br i1 %290, label %291, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt0.i -289: ; preds = %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit69.i, %227 - %290 = phi i8 [ %.pre.i, %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit69.i ], [ %228, %227 ] - %.1.i = phi i32 [ 0, %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit69.i ], [ 3, %227 ] - %291 = trunc i8 %290 to i1 - br i1 %291, label %292, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i - -292: ; preds = %289 +291: ; preds = %289 store i8 0, ptr %108, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #17 - br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i + br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt0.i -_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i: ; preds = %292, %289, %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i - %.028.i = phi i32 [ 1, %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i ], [ %.1.i, %289 ], [ %.1.i, %292 ] +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt3.i: ; preds = %227 call void @_ZN4llvm11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #17 - %293 = call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #17 - %294 = load ptr, ptr %11, align 8 - %295 = icmp eq ptr %294, %102 - br i1 %295, label %_ZN4llvm11SmallStringILj128EED2Ev.exit.i, label %296 - -296: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i - call void @free(ptr noundef %294) #17 - br label %_ZN4llvm11SmallStringILj128EED2Ev.exit.i - -_ZN4llvm11SmallStringILj128EED2Ev.exit.i: ; preds = %296, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i - switch i32 %.028.i, label %._crit_edge.i [ - i32 0, label %297 - i32 3, label %297 - ] + %292 = call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #17 + %293 = load ptr, ptr %11, align 8 + %294 = icmp eq ptr %293, %102 + br i1 %294, label %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.i, label %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.sink.split.i + +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt0.i: ; preds = %291, %289 + call void @_ZN4llvm11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #17 + %295 = call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #17 + %296 = load ptr, ptr %11, align 8 + %297 = icmp eq ptr %296, %102 + br i1 %297, label %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.i, label %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.sink.split.i -297: ; preds = %_ZN4llvm11SmallStringILj128EED2Ev.exit.i, %_ZN4llvm11SmallStringILj128EED2Ev.exit.i, %_ZNK4llvm15SmallPtrSetImplIPKN5clang4ento9MemRegionEE8containsES5_.exit.i - %298 = getelementptr inbounds i8, ptr %.02941.i, i64 16 - %.not31.i = icmp eq ptr %298, %101 +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt1.i: ; preds = %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i, %216 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) + call void @_ZN4llvm11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #17 + %298 = call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #17 + %299 = load ptr, ptr %11, align 8 + %300 = icmp eq ptr %299, %102 + br i1 %300, label %._crit_edge.i, label %301 + +301: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt1.i + call void @free(ptr noundef %299) #17 + br label %._crit_edge.i + +_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.sink.split.i: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt0.i, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt3.i + %.sink.i = phi ptr [ %293, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt3.i ], [ %296, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt0.i ] + call void @free(ptr noundef %.sink.i) #17 + br label %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.i + +_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.i: ; preds = %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.sink.split.i, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt0.i, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt3.i, %_ZNK4llvm15SmallPtrSetImplIPKN5clang4ento9MemRegionEE8containsES5_.exit.i + %302 = getelementptr inbounds i8, ptr %.02941.i, i64 16 + %.not31.i = icmp eq ptr %302, %101 br i1 %.not31.i, label %._crit_edge.i, label %116 -._crit_edge.i: ; preds = %297, %_ZN4llvm11SmallStringILj128EED2Ev.exit.i +._crit_edge.i: ; preds = %_ZN4llvm11SmallStringILj128EED2Ev.exit.jt3.i, %301, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.jt1.i br i1 %.not.i.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit71.i, label %.thread.i .thread.i: ; preds = %._crit_edge.i, %_ZNSt10unique_ptrIN5clang4ento7BugTypeESt14default_deleteIS2_EED2Ev.exit.i, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i @@ -3825,26 +3829,26 @@ _ZN4llvm11SmallStringILj128EED2Ev.exit.i: ; preds = %296, %_ZNSt8optiona _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit71.i: ; preds = %.thread.i, %._crit_edge.i store ptr getelementptr inbounds inrange(-16, 24) (i8, ptr @_ZTVZNK12_GLOBAL__N_122StackAddrEscapeChecker16checkEndFunctionEPKN5clang10ReturnStmtERNS1_4ento14CheckerContextEE8CallBack, i64 16), ptr %10, align 8 - %299 = load ptr, ptr %61, align 8 - %300 = load ptr, ptr %59, align 8 - %301 = icmp eq ptr %299, %300 - br i1 %301, label %_ZN4llvm11SmallPtrSetIPKN5clang4ento9MemRegionELj4EED2Ev.exit.i.i, label %302 + %303 = load ptr, ptr %61, align 8 + %304 = load ptr, ptr %59, align 8 + %305 = icmp eq ptr %303, %304 + br i1 %305, label %_ZN4llvm11SmallPtrSetIPKN5clang4ento9MemRegionELj4EED2Ev.exit.i.i, label %306 -302: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit71.i - call void @free(ptr noundef %299) #17 +306: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit71.i + call void @free(ptr noundef %303) #17 br label %_ZN4llvm11SmallPtrSetIPKN5clang4ento9MemRegionELj4EED2Ev.exit.i.i -_ZN4llvm11SmallPtrSetIPKN5clang4ento9MemRegionELj4EED2Ev.exit.i.i: ; preds = %302, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit71.i - %303 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %57) #17 - %304 = load ptr, ptr %57, align 8 - %305 = icmp eq ptr %304, %58 - br i1 %305, label %_ZZNK12_GLOBAL__N_122StackAddrEscapeChecker16checkEndFunctionEPKN5clang10ReturnStmtERNS1_4ento14CheckerContextEEN8CallBackD2Ev.exit.i, label %306 +_ZN4llvm11SmallPtrSetIPKN5clang4ento9MemRegionELj4EED2Ev.exit.i.i: ; preds = %306, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit71.i + %307 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %57) #17 + %308 = load ptr, ptr %57, align 8 + %309 = icmp eq ptr %308, %58 + br i1 %309, label %_ZZNK12_GLOBAL__N_122StackAddrEscapeChecker16checkEndFunctionEPKN5clang10ReturnStmtERNS1_4ento14CheckerContextEEN8CallBackD2Ev.exit.i, label %310 -306: ; preds = %_ZN4llvm11SmallPtrSetIPKN5clang4ento9MemRegionELj4EED2Ev.exit.i.i - call void @free(ptr noundef %304) #17 +310: ; preds = %_ZN4llvm11SmallPtrSetIPKN5clang4ento9MemRegionELj4EED2Ev.exit.i.i + call void @free(ptr noundef %308) #17 br label %_ZZNK12_GLOBAL__N_122StackAddrEscapeChecker16checkEndFunctionEPKN5clang10ReturnStmtERNS1_4ento14CheckerContextEEN8CallBackD2Ev.exit.i -_ZZNK12_GLOBAL__N_122StackAddrEscapeChecker16checkEndFunctionEPKN5clang10ReturnStmtERNS1_4ento14CheckerContextEEN8CallBackD2Ev.exit.i: ; preds = %306, %_ZN4llvm11SmallPtrSetIPKN5clang4ento9MemRegionELj4EED2Ev.exit.i.i +_ZZNK12_GLOBAL__N_122StackAddrEscapeChecker16checkEndFunctionEPKN5clang10ReturnStmtERNS1_4ento14CheckerContextEEN8CallBackD2Ev.exit.i: ; preds = %310, %_ZN4llvm11SmallPtrSetIPKN5clang4ento9MemRegionELj4EED2Ev.exit.i.i call void @_ZN5clang4ento12StoreManager15BindingsHandlerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #17 br label %_ZNK12_GLOBAL__N_122StackAddrEscapeChecker16checkEndFunctionEPKN5clang10ReturnStmtERNS1_4ento14CheckerContextE.exit diff --git a/bench/llvm/optimized/ThreadSafety.cpp.ll b/bench/llvm/optimized/ThreadSafety.cpp.ll index 651e50d59d6..0001235cbf0 100644 --- a/bench/llvm/optimized/ThreadSafety.cpp.ll +++ b/bench/llvm/optimized/ThreadSafety.cpp.ll @@ -15625,24 +15625,25 @@ define linkonce_odr hidden void @_ZN5clang12threadSafety3til13PrettyPrinterINS1_ ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr hidden void @_ZN5clang12threadSafety3til13PrettyPrinterINS1_10StdPrinterESoE13printFunctionEPKNS1_8FunctionERSoj(ptr noundef nonnull align 1 dereferenceable(3) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2, i32 noundef %3) local_unnamed_addr #1 comdat align 2 { - %5 = getelementptr inbounds nuw i8, ptr %0, i64 2 - br label %tailrecurse - -tailrecurse: ; preds = %29, %4 - %.tr17 = phi ptr [ %1, %4 ], [ %28, %29 ] - %.tr19 = phi i32 [ %3, %4 ], [ 2, %29 ] - %switch.selectcmp = icmp eq i32 %.tr19, 2 +tailrecurse: + %4 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %switch.selectcmp = icmp eq i32 %3, 2 %switch.select = select i1 %switch.selectcmp, ptr @.str.21, ptr @.str.20 - %switch.selectcmp20 = icmp eq i32 %.tr19, 1 - %switch.select21 = select i1 %switch.selectcmp20, ptr @.str.5, ptr %switch.select - %6 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %switch.select21) #18 - %7 = getelementptr inbounds nuw i8, ptr %.tr17, i64 16 + %switch.selectcmp22 = icmp eq i32 %3, 1 + %switch.select23 = select i1 %switch.selectcmp22, ptr @.str.5, ptr %switch.select + br label %5 + +5: ; preds = %tailrecurse, %29 + %.str.21.sink = phi ptr [ @.str.21, %29 ], [ %switch.select23, %tailrecurse ] + %.tr1721 = phi ptr [ %28, %29 ], [ %1, %tailrecurse ] + %6 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %.str.21.sink) #18 + %7 = getelementptr inbounds nuw i8, ptr %.tr1721, i64 16 %8 = load ptr, ptr %7, align 8 - %9 = load i8, ptr %5, align 1 + %9 = load i8, ptr %4, align 1 %10 = trunc i8 %9 to i1 br i1 %10, label %11, label %17 -11: ; preds = %tailrecurse +11: ; preds = %5 %12 = getelementptr inbounds nuw i8, ptr %8, i64 2 %13 = load i16, ptr %12, align 2 %14 = icmp eq i16 %13, 2 @@ -15652,7 +15653,7 @@ tailrecurse: ; preds = %29, %4 %16 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.19) #18 br label %_ZN5clang12threadSafety3til13PrettyPrinterINS1_10StdPrinterESoE13printVariableEPKNS1_8VariableERSob.exit -17: ; preds = %11, %tailrecurse +17: ; preds = %11, %5 %18 = getelementptr inbounds nuw i8, ptr %8, i64 16 %.sroa.0.0.copyload.i.i = load ptr, ptr %18, align 8 %.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %8, i64 24 @@ -15669,7 +15670,7 @@ _ZN5clang12threadSafety3til13PrettyPrinterINS1_10StdPrinterESoE13printVariableEP %25 = getelementptr inbounds nuw i8, ptr %24, i64 32 %26 = load ptr, ptr %25, align 8 tail call void @_ZN5clang12threadSafety3til13PrettyPrinterINS1_10StdPrinterESoE10printSExprEPKNS1_5SExprERSojb(ptr noundef nonnull align 1 dereferenceable(3) %0, ptr noundef %26, ptr noundef nonnull align 8 dereferenceable(8) %2, i32 noundef 6, i1 noundef zeroext true) - %27 = getelementptr inbounds nuw i8, ptr %.tr17, i64 24 + %27 = getelementptr inbounds nuw i8, ptr %.tr1721, i64 24 %28 = load ptr, ptr %27, align 8 %.not = icmp eq ptr %28, null br i1 %.not, label %32, label %29 @@ -15677,7 +15678,7 @@ _ZN5clang12threadSafety3til13PrettyPrinterINS1_10StdPrinterESoE13printVariableEP 29: ; preds = %_ZN5clang12threadSafety3til13PrettyPrinterINS1_10StdPrinterESoE13printVariableEPKNS1_8VariableERSob.exit %30 = load i8, ptr %28, align 8 %31 = icmp eq i8 %30, 6 - br i1 %31, label %tailrecurse, label %32 + br i1 %31, label %5, label %32 32: ; preds = %29, %_ZN5clang12threadSafety3til13PrettyPrinterINS1_10StdPrinterESoE13printVariableEPKNS1_8VariableERSob.exit %33 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.6) #18 diff --git a/bench/llvm/optimized/VFABIDemangler.cpp.ll b/bench/llvm/optimized/VFABIDemangler.cpp.ll index 33e88c18924..a338ac36365 100644 --- a/bench/llvm/optimized/VFABIDemangler.cpp.ll +++ b/bench/llvm/optimized/VFABIDemangler.cpp.ll @@ -187,10 +187,10 @@ _ZN12_GLOBAL__N_111tryParseISAERN4llvm9StringRefERNS0_9VFISAKindE.exit: ; preds br label %_ZN4llvm11SmallVectorINS_11VFParameterELj8EED2Ev.exit _ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.i: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i.i, %_ZN4llvmeqENS_9StringRefES0_.exit.i47.i, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split.i, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split116.i, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split117.i, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split118.i, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i - %.sink149 = phi i64 [ 10, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i ], [ 5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split118.i ], [ 5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split117.i ], [ 5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split116.i ], [ 5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split.i ], [ 5, %_ZN4llvmeqENS_9StringRefES0_.exit.i47.i ], [ 5, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i ] + %.sink152 = phi i64 [ 10, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i ], [ 5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split118.i ], [ 5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split117.i ], [ 5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split116.i ], [ 5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split.i ], [ 5, %_ZN4llvmeqENS_9StringRefES0_.exit.i47.i ], [ 5, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i ] %.sink = phi i64 [ -10, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i ], [ -5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split118.i ], [ -5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split117.i ], [ -5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split116.i ], [ -5, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split.i ], [ -5, %_ZN4llvmeqENS_9StringRefES0_.exit.i47.i ], [ -5, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i ] %.0.ph = phi i32 [ 6, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i ], [ 4, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split118.i ], [ 3, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split117.i ], [ 2, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split116.i ], [ 1, %_ZN4llvm12StringSwitchINS_9VFISAKindES1_E4CaseENS_13StringLiteralES1_.exit50.fold.split.i ], [ %34, %_ZN4llvmeqENS_9StringRefES0_.exit.i47.i ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.i.i ] - %36 = getelementptr inbounds i8, ptr %1, i64 %.sink149 + %36 = getelementptr inbounds i8, ptr %1, i64 %.sink152 %37 = add i64 %.sink, %2 %.not.i.i.i27 = icmp eq i64 %37, 0 br i1 %.not.i.i.i27, label %38, label %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i28 @@ -273,7 +273,6 @@ _ZN12_GLOBAL__N_112tryParseVLENERN4llvm9StringRefENS0_9VFISAKindERSt4pairIjbE.ex _ZNK4llvm9StringRef11starts_withES0_.exit.i.i38: ; preds = %_ZN12_GLOBAL__N_112tryParseVLENERN4llvm9StringRefENS0_9VFISAKindERSt4pairIjbE.exit, %_ZN4llvm23SmallVectorTemplateBaseINS_11VFParameterELb1EE9push_backES1_.exit %59 = phi i64 [ %181, %_ZN4llvm23SmallVectorTemplateBaseINS_11VFParameterELb1EE9push_backES1_.exit ], [ %58, %_ZN12_GLOBAL__N_112tryParseVLENERN4llvm9StringRefENS0_9VFISAKindERSt4pairIjbE.exit ] %60 = phi i64 [ %180, %_ZN4llvm23SmallVectorTemplateBaseINS_11VFParameterELb1EE9push_backES1_.exit ], [ %57, %_ZN12_GLOBAL__N_112tryParseVLENERN4llvm9StringRefENS0_9VFISAKindERSt4pairIjbE.exit ] - %.097146 = phi i32 [ %.9116129, %_ZN4llvm23SmallVectorTemplateBaseINS_11VFParameterELb1EE9push_backES1_.exit ], [ undef, %_ZN12_GLOBAL__N_112tryParseVLENERN4llvm9StringRefENS0_9VFISAKindERSt4pairIjbE.exit ] %.pre.i.i39 = load ptr, ptr %15, align 8 %lhsc.i40 = load i8, ptr %.pre.i.i39, align 1 switch i8 %lhsc.i40, label %thread-pre-split.i [ @@ -311,22 +310,22 @@ _ZN4llvm5VFABI24getVFParamKindFromStringENS_9StringRefE.exit41.i: ; preds = %_ZN store i64 %69, ptr %23, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) %70 = call noundef zeroext i1 @_ZN4llvm20consumeSignedIntegerERNS_9StringRefEjRx(ptr noundef nonnull align 8 dereferenceable(16) %15, i32 noundef 10, ptr noundef nonnull align 8 dereferenceable(8) %13) #12 - br i1 %70, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i, label %71 + br i1 %70, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i.jt2, label %71 71: ; preds = %_ZN4llvm5VFABI24getVFParamKindFromStringENS_9StringRefE.exit41.i %72 = load i64, ptr %13, align 8 %73 = add i64 %72, 2147483648 %.not.i.i.i.i = icmp ult i64 %73, 4294967296 + br i1 %.not.i.i.i.i, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i.jt0, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i.jt2 + +_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i.jt0: ; preds = %71 %74 = trunc i64 %72 to i32 - %spec.select = select i1 %.not.i.i.i.i, i32 %74, i32 %.097146 - %spec.select135 = select i1 %.not.i.i.i.i, i32 0, i32 2 - br label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) + br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split -_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i: ; preds = %71, %_ZN4llvm5VFABI24getVFParamKindFromStringENS_9StringRefE.exit41.i - %.8 = phi i32 [ %.097146, %_ZN4llvm5VFABI24getVFParamKindFromStringENS_9StringRefE.exit41.i ], [ %spec.select, %71 ] - %.0.ph.i.i.i = phi i32 [ 2, %_ZN4llvm5VFABI24getVFParamKindFromStringENS_9StringRefE.exit41.i ], [ %spec.select135, %71 ] +_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i.jt2: ; preds = %71, %_ZN4llvm5VFABI24getVFParamKindFromStringENS_9StringRefE.exit41.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) - br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit + br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.jt2 _ZNK4llvm9StringRef11starts_withES0_.exit.i.i29.i.i: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i.i.i %bcmp.i.i.i30.i.i = call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %.pre.i.i39, ptr noundef nonnull readonly dereferenceable(2) @.str.11, i64 2) @@ -340,22 +339,22 @@ _ZN4llvmeqENS_9StringRefES0_.exit.i48.i.i: ; preds = %_ZNK4llvm9StringRef store i64 %77, ptr %23, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) %78 = call noundef zeroext i1 @_ZN4llvm20consumeSignedIntegerERNS_9StringRefEjRx(ptr noundef nonnull align 8 dereferenceable(16) %15, i32 noundef 10, ptr noundef nonnull align 8 dereferenceable(8) %12) #12 - br i1 %78, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i, label %79 + br i1 %78, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i.jt2, label %79 79: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.i48.i.i %80 = load i64, ptr %12, align 8 %81 = add i64 %80, 2147483648 %.not.i.i32.i.i = icmp ult i64 %81, 4294967296 + br i1 %.not.i.i32.i.i, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i.jt0, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i.jt2 + +_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i.jt0: ; preds = %79 %82 = trunc i64 %80 to i32 - %spec.select136 = select i1 %.not.i.i32.i.i, i32 %82, i32 %.097146 - %spec.select137 = select i1 %.not.i.i32.i.i, i32 0, i32 2 - br label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) + br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split -_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i: ; preds = %79, %_ZN4llvmeqENS_9StringRefES0_.exit.i48.i.i - %.7 = phi i32 [ %.097146, %_ZN4llvmeqENS_9StringRefES0_.exit.i48.i.i ], [ %spec.select136, %79 ] - %.0.ph.i34.i.i = phi i32 [ 2, %_ZN4llvmeqENS_9StringRefES0_.exit.i48.i.i ], [ %spec.select137, %79 ] +_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i.jt2: ; preds = %79, %_ZN4llvmeqENS_9StringRefES0_.exit.i48.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) - br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit + br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.jt2 _ZNK4llvm9StringRef11starts_withES0_.exit.i.i39.i.i: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i29.i.i %bcmp.i.i.i40.i.i = call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %.pre.i.i39, ptr noundef nonnull readonly dereferenceable(2) @.str.10, i64 2) @@ -370,22 +369,22 @@ _ZNK4llvm9StringRef11starts_withES0_.exit.i.i39.i.i: ; preds = %_ZNK4llvm9String %87 = call noundef i32 @_ZN4llvm5VFABI24getVFParamKindFromStringENS_9StringRefE(ptr nonnull readonly @.str.10, i64 2) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) %88 = call noundef zeroext i1 @_ZN4llvm20consumeSignedIntegerERNS_9StringRefEjRx(ptr noundef nonnull align 8 dereferenceable(16) %15, i32 noundef 10, ptr noundef nonnull align 8 dereferenceable(8) %11) #12 - br i1 %88, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i, label %89 + br i1 %88, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i.jt2, label %89 89: ; preds = %84 %90 = load i64, ptr %11, align 8 %91 = add i64 %90, 2147483648 %.not.i.i42.i.i = icmp ult i64 %91, 4294967296 + br i1 %.not.i.i42.i.i, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i.jt0, label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i.jt2 + +_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i.jt0: ; preds = %89 %92 = trunc i64 %90 to i32 - %spec.select138 = select i1 %.not.i.i42.i.i, i32 %92, i32 %.097146 - %spec.select139 = select i1 %.not.i.i42.i.i, i32 0, i32 2 - br label %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) + br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split -_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i: ; preds = %89, %84 - %.6 = phi i32 [ %.097146, %84 ], [ %spec.select138, %89 ] - %.0.ph.i44.i.i = phi i32 [ 2, %84 ], [ %spec.select139, %89 ] +_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i.jt2: ; preds = %89, %84 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) - br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit + br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.jt2 _ZNK4llvm9StringRef11starts_withES0_.exit.i.i49.i.i: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i39.i.i %bcmp.i.i.i50.i.i = call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %.pre.i.i39, ptr noundef nonnull readonly dereferenceable(2) @.str.12, i64 2) @@ -400,22 +399,22 @@ _ZNK4llvm9StringRef11starts_withES0_.exit.i.i49.i.i: ; preds = %_ZNK4llvm9String %97 = call noundef i32 @_ZN4llvm5VFABI24getVFParamKindFromStringENS_9StringRefE(ptr nonnull readonly @.str.12, i64 2) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) %98 = call noundef zeroext i1 @_ZN4llvm20consumeSignedIntegerERNS_9StringRefEjRx(ptr noundef nonnull align 8 dereferenceable(16) %15, i32 noundef 10, ptr noundef nonnull align 8 dereferenceable(8) %10) #12 - br i1 %98, label %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i, label %99 + br i1 %98, label %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i.jt2, label %99 99: ; preds = %94 %100 = load i64, ptr %10, align 8 %101 = add i64 %100, 2147483648 %.not.i.i52.i.i = icmp ult i64 %101, 4294967296 + br i1 %.not.i.i52.i.i, label %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i.jt0, label %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i.jt2 + +_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i.jt0: ; preds = %99 %102 = trunc i64 %100 to i32 - %spec.select140 = select i1 %.not.i.i52.i.i, i32 %102, i32 %.097146 - %spec.select141 = select i1 %.not.i.i52.i.i, i32 0, i32 2 - br label %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) + br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split -_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i: ; preds = %99, %94 - %.5 = phi i32 [ %.097146, %94 ], [ %spec.select140, %99 ] - %.0.ph.i54.i.i = phi i32 [ 2, %94 ], [ %spec.select141, %99 ] +_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i.jt2: ; preds = %99, %94 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) - br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit + br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.jt2 _ZNK4llvm9StringRef11starts_withES0_.exit.i.i.i26.i: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i49.i.i, %thread-pre-split.i switch i8 %lhsc.i40, label %.critedge [ @@ -453,8 +452,8 @@ _ZN4llvm9StringRef13consume_frontES0_.exit17.i.i.i: ; preds = %_ZNK4llvm9StringR %112 = add i64 %111, 2147483648 %.not.i.i.i29.i = icmp ult i64 %112, 4294967296 %113 = trunc i64 %111 to i32 - %spec.select150 = select i1 %.not.i.i.i29.i, i32 %113, i32 1 - %.4 = select i1 %110, i32 1, i32 %spec.select150 + %spec.select = select i1 %.not.i.i.i29.i, i32 %113, i32 1 + %.4 = select i1 %110, i32 1, i32 %spec.select call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) br i1 %109, label %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i, label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split @@ -487,8 +486,8 @@ _ZN4llvm9StringRef13consume_frontES0_.exit17.i21.i.i: ; preds = %_ZNK4llvm9Strin %124 = add i64 %123, 2147483648 %.not.i.i22.i.i = icmp ult i64 %124, 4294967296 %125 = trunc i64 %123 to i32 - %spec.select151 = select i1 %.not.i.i22.i.i, i32 %125, i32 1 - %.3 = select i1 %122, i32 1, i32 %spec.select151 + %spec.select153 = select i1 %.not.i.i22.i.i, i32 %125, i32 1 + %.3 = select i1 %122, i32 1, i32 %spec.select153 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) br i1 %121, label %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i, label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split @@ -521,8 +520,8 @@ _ZN4llvm9StringRef13consume_frontES0_.exit17.i35.i.i: ; preds = %_ZNK4llvm9Strin %136 = add i64 %135, 2147483648 %.not.i.i36.i.i = icmp ult i64 %136, 4294967296 %137 = trunc i64 %135 to i32 - %spec.select152 = select i1 %.not.i.i36.i.i, i32 %137, i32 1 - %.299 = select i1 %134, i32 1, i32 %spec.select152 + %spec.select154 = select i1 %.not.i.i36.i.i, i32 %137, i32 1 + %.299 = select i1 %134, i32 1, i32 %spec.select154 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) br i1 %133, label %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i, label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split @@ -555,8 +554,8 @@ _ZN4llvm9StringRef13consume_frontES0_.exit17.i49.i.i: ; preds = %_ZNK4llvm9Strin %148 = add i64 %147, 2147483648 %.not.i.i50.i.i = icmp ult i64 %148, 4294967296 %149 = trunc i64 %147 to i32 - %spec.select153 = select i1 %.not.i.i50.i.i, i32 %149, i32 1 - %.198 = select i1 %146, i32 1, i32 %spec.select153 + %spec.select155 = select i1 %.not.i.i50.i.i, i32 %149, i32 1 + %.198 = select i1 %146, i32 1, i32 %spec.select155 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) br i1 %145, label %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i, label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split @@ -566,32 +565,24 @@ _ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFPar %150 = sub nsw i32 0, %.sink67.i.i br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split -_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit: ; preds = %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i - %.9 = phi i32 [ %.8, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i ], [ %.7, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i ], [ %.6, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i ], [ %.5, %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i ] - %.2 = phi i32 [ 5, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i ], [ 7, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i ], [ %87, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i ], [ %97, %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i ] - %.0.i41 = phi i32 [ %.0.ph.i.i.i, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i ], [ %.0.ph.i34.i.i, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i ], [ %.0.ph.i44.i.i, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i ], [ %.0.ph.i54.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i ] - switch i32 %.0.i41, label %.critedge [ - i32 2, label %151 - i32 0, label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split - ] - -151: ; preds = %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit - %152 = getelementptr inbounds nuw i8, ptr %0, i64 224 - store i8 0, ptr %152, align 8 +_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.jt2: ; preds = %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i.jt2, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i.jt2, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i.jt2, %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i.jt2 + %151 = getelementptr inbounds nuw i8, ptr %0, i64 224 + store i8 0, ptr %151, align 8 br label %253 -_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split: ; preds = %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit, %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i35.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i21.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i49.i.i - %.9116129.ph = phi i32 [ %.4, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i.i.i ], [ %.3, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i21.i.i ], [ %.299, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i35.i.i ], [ %.198, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i49.i.i ], [ %150, %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i ], [ %.9, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit ] - %.2117128.ph = phi i32 [ 1, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i.i.i ], [ %117, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i21.i.i ], [ %129, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i35.i.i ], [ %141, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i49.i.i ], [ %.1, %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i ], [ %.2, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit ] +_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split: ; preds = %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i.jt0, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i.jt0, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i.jt0, %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i.jt0, %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i35.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i21.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i.i.i, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i49.i.i + %.9116129.ph = phi i32 [ %.4, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i.i.i ], [ %.3, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i21.i.i ], [ %.299, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i35.i.i ], [ %.198, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i49.i.i ], [ %150, %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i ], [ %74, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i.jt0 ], [ %82, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i.jt0 ], [ %92, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i.jt0 ], [ %102, %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i.jt0 ] + %.2117128.ph = phi i32 [ 1, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i.i.i ], [ %117, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i21.i.i ], [ %129, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i35.i.i ], [ %141, %_ZN4llvm9StringRef13consume_frontES0_.exit17.i49.i.i ], [ %.1, %_ZN12_GLOBAL__N_130tryParseCompileTimeLinearTokenERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit53.sink.split.i.i ], [ 5, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit.i.i.jt0 ], [ 7, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit36.i.i.jt0 ], [ %87, %_ZN12_GLOBAL__N_134tryParseLinearTokenWithRuntimeStepERN4llvm9StringRefERNS0_11VFParamKindERiS1_.exit46.i.i.jt0 ], [ %97, %_ZN4llvm9StringRef13consume_frontES0_.exit.thread.sink.split.i53.i.i.jt0 ] %.pr = load i64, ptr %23, align 8 - %153 = zext nneg i32 %.2117128.ph to i64 - %154 = shl nuw nsw i64 %153, 32 + %152 = zext nneg i32 %.2117128.ph to i64 + %153 = shl nuw nsw i64 %152, 32 + %154 = zext i32 %.9116129.ph to i64 br label %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.thread _ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.thread: ; preds = %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split, %61, %64 %155 = phi i64 [ %.pr, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split ], [ %63, %61 ], [ %66, %64 ] - %.9116129 = phi i32 [ %.9116129.ph, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split ], [ 0, %61 ], [ 0, %64 ] - %.2117128 = phi i64 [ %154, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split ], [ 0, %61 ], [ 38654705664, %64 ] + %.9116129 = phi i64 [ %154, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split ], [ 0, %61 ], [ 0, %64 ] + %.2117128 = phi i64 [ %153, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.threadthread-pre-split ], [ 0, %61 ], [ 38654705664, %64 ] %.not.i.i.i42 = icmp eq i64 %155, 0 br i1 %.not.i.i.i42, label %170, label %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i43 @@ -637,8 +628,7 @@ _ZN12_GLOBAL__N_113tryParseAlignERN4llvm9StringRefERNS0_5AlignE.exit: ; preds = %.sroa.085.0.ph = phi i64 [ 0, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i43 ], [ %168, %164 ], [ 0, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.thread.thread ] %.sroa.013.0.insert.ext = and i64 %60, 4294967295 %.sroa.013.0.insert.insert = or disjoint i64 %.2117128, %.sroa.013.0.insert.ext - %.sroa.315.8.insert.ext = zext i32 %.9116129 to i64 - %.sroa.315.8.insert.insert = or disjoint i64 %.sroa.085.0.ph, %.sroa.315.8.insert.ext + %.sroa.315.8.insert.insert = or disjoint i64 %.sroa.085.0.ph, %.9116129 %171 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %17) #12 %172 = add i64 %171, 1 %173 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE8capacityEv(ptr noundef nonnull align 8 dereferenceable(16) %17) #12 @@ -664,7 +654,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_11VFParameterELb1EE9push_backES1_.exit: ; p %.not.i.i.i37 = icmp eq i64 %181, 0 br i1 %.not.i.i.i37, label %.critedge, label %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i38, !llvm.loop !4 -.critedge: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11VFParameterELb1EE9push_backES1_.exit, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i.i26.i, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit, %_ZN12_GLOBAL__N_112tryParseVLENERN4llvm9StringRefENS0_9VFISAKindERSt4pairIjbE.exit +.critedge: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11VFParameterELb1EE9push_backES1_.exit, %_ZNK4llvm9StringRef11starts_withES0_.exit.i.i.i26.i, %_ZN12_GLOBAL__N_112tryParseVLENERN4llvm9StringRefENS0_9VFISAKindERSt4pairIjbE.exit %182 = call noundef zeroext i1 @_ZNK4llvm15SmallVectorBaseIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %17) #12 br i1 %182, label %183, label %185 @@ -785,14 +775,14 @@ _ZNK4llvm9StringRef11starts_withES0_.exit.i57: ; preds = %220 %229 = add i64 %225, -1 store ptr %228, ptr %15, align 8 store i64 %229, ptr %23, align 8 - %.not.i.i154 = icmp eq i64 %229, 0 - br i1 %.not.i.i154, label %234, label %230 + %.not.i.i156 = icmp eq i64 %229, 0 + br i1 %.not.i.i156, label %234, label %230 230: ; preds = %227 %231 = getelementptr i8, ptr %223, i64 %222 %232 = getelementptr inbounds i8, ptr %231, i64 -1 - %lhsc157 = load i8, ptr %232, align 1 - %233 = icmp eq i8 %lhsc157, 41 + %lhsc159 = load i8, ptr %232, align 1 + %233 = icmp eq i8 %lhsc159, 41 br i1 %233, label %236, label %234 234: ; preds = %230, %227 @@ -802,8 +792,8 @@ _ZNK4llvm9StringRef11starts_withES0_.exit.i57: ; preds = %220 236: ; preds = %230 %237 = add i64 %225, -2 - %.sroa.speculated.i.i156 = call i64 @llvm.umin.i64(i64 %229, i64 %237) - store i64 %.sroa.speculated.i.i156, ptr %23, align 8 + %.sroa.speculated.i.i158 = call i64 @llvm.umin.i64(i64 %229, i64 %237) + store i64 %.sroa.speculated.i.i158, ptr %23, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %15, i64 16, i1 false) %238 = getelementptr inbounds nuw i8, ptr %16, i64 8 %239 = load i64, ptr %238, align 8 @@ -865,7 +855,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread123: ; preds = %_ZN4llvmeqENS_9Stri call void @_ZN4llvm7VFShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %19) #12 br label %253 -253: ; preds = %248, %_ZN4llvmeqENS_9StringRefES0_.exit.thread, %241, %234, %218, %203, %197, %191, %183, %_ZN12_GLOBAL__N_113tryParseAlignERN4llvm9StringRefERNS0_5AlignE.exit, %151 +253: ; preds = %248, %_ZN4llvmeqENS_9StringRefES0_.exit.thread, %241, %234, %218, %203, %197, %191, %183, %_ZN12_GLOBAL__N_113tryParseAlignERN4llvm9StringRefERNS0_5AlignE.exit, %_ZN12_GLOBAL__N_117tryParseParameterERN4llvm9StringRefERNS0_11VFParamKindERi.exit.jt2 %254 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %17) #12 %255 = load ptr, ptr %17, align 8 %256 = icmp eq ptr %255, %56 diff --git a/bench/mold/optimized/input-sections.cc.ALPHA.cc.ll b/bench/mold/optimized/input-sections.cc.ALPHA.cc.ll index 948a9373981..b5eb4a04d76 100644 --- a/bench/mold/optimized/input-sections.cc.ALPHA.cc.ll +++ b/bench/mold/optimized/input-sections.cc.ALPHA.cc.ll @@ -4013,12 +4013,17 @@ entry: %tobool29.not = icmp eq ptr %result, null %frombool.i = zext i1 %write to i8 %m_is_writer.i78 = getelementptr inbounds i8, ptr %result, i64 8 + br label %restart.outer + +restart.outer: ; preds = %cleanup.thread, %entry + %m.0.ph = phi i64 [ %50, %cleanup.thread ], [ %2, %entry ] + %tmp_n.addr.0.ph = phi ptr [ %tmp_n.addr.2, %cleanup.thread ], [ %tmp_n, %entry ] + %grow_segment.0.ph = phi i64 [ %grow_segment.1, %cleanup.thread ], [ 0, %entry ] br label %restart -restart: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit, %entry - %m.0 = phi i64 [ %2, %entry ], [ %m.2142, %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit ] - %tmp_n.addr.0 = phi ptr [ %tmp_n, %entry ], [ %tmp_n.addr.3143, %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit ] - %grow_segment.0 = phi i64 [ 0, %entry ], [ %grow_segment.2145, %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit ] +restart: ; preds = %restart.backedge, %restart.outer + %m.0 = phi i64 [ %m.0.ph, %restart.outer ], [ %24, %restart.backedge ] + %tmp_n.addr.0 = phi ptr [ %tmp_n.addr.0.ph, %restart.outer ], [ %tmp_n.addr.1, %restart.backedge ] %and = and i64 %m.0, %1 %or.i.i.i = or i64 %and, 1 %3 = tail call noundef range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %or.i.i.i, i1 true) @@ -4178,7 +4183,6 @@ _ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.e br label %exists while.end: ; preds = %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit37, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE17upgrade_to_writerEv.exit, %if.end - %n.0.lcssa = phi ptr [ null, %if.end ], [ null, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE17upgrade_to_writerEv.exit ], [ %n.0.lcssa.i30, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit37 ] %b.sroa.9.1 = phi i8 [ %b.sroa.9.6, %if.end ], [ 1, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE17upgrade_to_writerEv.exit ], [ 1, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit37 ] %24 = load atomic i64, ptr %my_mask acquire, align 8 %cmp.not.i = icmp eq i64 %m.0, %24 @@ -4216,7 +4220,7 @@ for.end.i.i: ; preds = %for.cond.i.i %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base *const, std::vector>>>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i, i64 %sub.i.i.i, i32 1 %29 = load atomic i64, ptr %node_list.i.i acquire, align 8 %cmp.i.i.i55 = icmp eq i64 %29, 3 - br i1 %cmp.i.i.i55, label %if.end25, label %cleanup + br i1 %cmp.i.i.i55, label %if.end25, label %cleanup.jt2 if.end25: ; preds = %if.then.i54, %for.end.i.i, %while.end %m.3.ph = phi i64 [ %m.0, %while.end ], [ %24, %for.end.i.i ], [ %24, %if.then.i54 ] @@ -4245,14 +4249,13 @@ land.lhs.true.i: ; preds = %if.then.i60 %spec.select.i = select i1 %37, i64 %xor.i.i.i, i64 0 br label %exists -exists: ; preds = %land.rhs.i, %land.lhs.true.i, %if.then.i60, %if.end25, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit - %m.1 = phi i64 [ %m.0, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ %m.0, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ], [ %m.3.ph, %if.end25 ], [ %m.3.ph, %if.then.i60 ], [ %m.3.ph, %land.lhs.true.i ], [ %m.0, %land.rhs.i ] - %b.sroa.9.2 = phi i8 [ 0, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ %b.sroa.9.6, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ], [ %b.sroa.9.1, %if.end25 ], [ %b.sroa.9.1, %if.then.i60 ], [ %b.sroa.9.1, %land.lhs.true.i ], [ %b.sroa.9.6, %land.rhs.i ] - %tmp_n.addr.2 = phi ptr [ %tmp_n.addr.1, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ %tmp_n.addr.0, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ], [ null, %if.end25 ], [ null, %if.then.i60 ], [ null, %land.lhs.true.i ], [ %tmp_n.addr.0, %land.rhs.i ] - %return_value.0 = phi i1 [ false, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ false, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ], [ true, %if.end25 ], [ true, %if.then.i60 ], [ true, %land.lhs.true.i ], [ false, %land.rhs.i ] - %grow_segment.1 = phi i64 [ %grow_segment.0, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ %grow_segment.0, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ], [ 0, %if.end25 ], [ 0, %if.then.i60 ], [ %spec.select.i, %land.lhs.true.i ], [ %grow_segment.0, %land.rhs.i ] - %n.1 = phi ptr [ %n.0.lcssa.i30, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ %n.0.lcssa.i, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ], [ %tmp_n.addr.1, %if.end25 ], [ %tmp_n.addr.1, %if.then.i60 ], [ %tmp_n.addr.1, %land.lhs.true.i ], [ %n.05.i, %land.rhs.i ] - br i1 %tobool29.not, label %cleanup, label %if.end31 +exists: ; preds = %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit, %land.rhs.i, %land.lhs.true.i, %if.then.i60, %if.end25, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit + %b.sroa.9.2 = phi i8 [ 0, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ %b.sroa.9.1, %if.end25 ], [ %b.sroa.9.1, %if.then.i60 ], [ %b.sroa.9.1, %land.lhs.true.i ], [ %b.sroa.9.6, %land.rhs.i ], [ %b.sroa.9.6, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ] + %tmp_n.addr.2 = phi ptr [ %tmp_n.addr.1, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ null, %if.end25 ], [ null, %if.then.i60 ], [ null, %land.lhs.true.i ], [ %tmp_n.addr.0, %land.rhs.i ], [ %tmp_n.addr.0, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ] + %return_value.0 = phi i1 [ false, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ true, %if.end25 ], [ true, %if.then.i60 ], [ true, %land.lhs.true.i ], [ false, %land.rhs.i ], [ false, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ] + %grow_segment.1 = phi i64 [ %grow_segment.0.ph, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ 0, %if.end25 ], [ 0, %if.then.i60 ], [ %spec.select.i, %land.lhs.true.i ], [ %grow_segment.0.ph, %land.rhs.i ], [ %grow_segment.0.ph, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ] + %n.1 = phi ptr [ %n.0.lcssa.i30, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEE19downgrade_to_readerEv.exit ], [ %tmp_n.addr.1, %if.end25 ], [ %tmp_n.addr.1, %if.then.i60 ], [ %tmp_n.addr.1, %land.lhs.true.i ], [ %n.05.i, %land.rhs.i ], [ %n.0.lcssa.i, %_ZNK3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE13search_bucketIS8_EEPNSQ_4nodeERKT_PNS1_13hash_map_baseISP_NSI_13spin_rw_mutexEE6bucketE.exit ] + br i1 %tobool29.not, label %cleanup.jt6, label %if.end31 if.end31: ; preds = %exists %mutex = getelementptr inbounds i8, ptr %n.1, i64 8 @@ -4273,7 +4276,7 @@ seqcst.i14.i.i: ; preds = %cond.false.i %39 = atomicrmw add ptr %mutex, i64 4 seq_cst, align 8 %and4.i.i = and i64 %39, 1 %tobool5.not.i.i = icmp eq i64 %and4.i.i, 0 - br i1 %tobool5.not.i.i, label %cleanup.sink.split, label %if.end.i.i + br i1 %tobool5.not.i.i, label %cleanup.jt0, label %if.end.i.i if.end.i.i: ; preds = %seqcst.i14.i.i %40 = atomicrmw sub ptr %mutex, i64 4 seq_cst, align 8 @@ -4282,7 +4285,7 @@ if.end.i.i: ; preds = %seqcst.i14.i.i cond.end.i: ; preds = %cond.true.i %41 = cmpxchg ptr %mutex, i64 %38, i64 1 seq_cst seq_cst, align 8 %42 = extractvalue { i64, i1 } %41, 1 - br i1 %42, label %cleanup.sink.split, label %if.then34 + br i1 %42, label %cleanup.jt0, label %if.then34 if.then34: ; preds = %cond.end.i, %cond.true.i, %if.end.i.i, %cond.false.i tail call void @llvm.x86.sse2.pause() @@ -4307,7 +4310,7 @@ seqcst.i14.i.i73: ; preds = %cond.false.i68 %44 = atomicrmw add ptr %mutex, i64 4 seq_cst, align 8 %and4.i.i74 = and i64 %44, 1 %tobool5.not.i.i75 = icmp eq i64 %and4.i.i74, 0 - br i1 %tobool5.not.i.i75, label %cleanup.sink.split, label %if.end.i.i76 + br i1 %tobool5.not.i.i75, label %cleanup.jt0, label %if.end.i.i76 if.end.i.i76: ; preds = %seqcst.i14.i.i73 %45 = atomicrmw sub ptr %mutex, i64 4 seq_cst, align 8 @@ -4316,7 +4319,7 @@ if.end.i.i76: ; preds = %seqcst.i14.i.i73 cond.end.i82: ; preds = %cond.true.i79 %46 = cmpxchg ptr %mutex, i64 %43, i64 1 seq_cst seq_cst, align 8 %47 = extractvalue { i64, i1 } %46, 1 - br i1 %47, label %cleanup.sink.split, label %if.end39 + br i1 %47, label %cleanup.jt0, label %if.end39 if.end39: ; preds = %cond.end.i82, %cond.true.i79, %if.end.i.i76, %cond.false.i68 %cmp1.i.i = icmp sgt i32 %backoff.sroa.0.0, 0 @@ -4352,67 +4355,79 @@ if.else.i: ; preds = %if.then41 cleanup.thread: ; preds = %if.else.i, %if.then.i90 %call.i.i = tail call noundef i32 @sched_yield() #14 %50 = load atomic i64, ptr %my_mask acquire, align 8 - br label %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit + br label %restart.outer + +cleanup.jt2: ; preds = %for.end.i.i + %tobool.not.i.i91.jt2 = icmp eq i64 %4, 0 + br i1 %tobool.not.i.i91.jt2, label %restart.backedge, label %if.then.i.i92.jt2 -cleanup.sink.split: ; preds = %cond.end.i82, %seqcst.i14.i.i73, %cond.end.i, %seqcst.i14.i.i +cleanup.jt0: ; preds = %cond.end.i, %seqcst.i14.i.i, %cond.end.i82, %seqcst.i14.i.i73 store ptr %mutex, ptr %result, align 8 store i8 %frombool.i, ptr %m_is_writer.i78, align 8 - br label %cleanup - -cleanup: ; preds = %cleanup.sink.split, %for.end.i.i, %exists - %m.2 = phi i64 [ %m.1, %exists ], [ %24, %for.end.i.i ], [ %m.1, %cleanup.sink.split ] - %b.sroa.9.3 = phi i8 [ %b.sroa.9.2, %exists ], [ %b.sroa.9.1, %for.end.i.i ], [ %b.sroa.9.2, %cleanup.sink.split ] - %tmp_n.addr.3 = phi ptr [ %tmp_n.addr.2, %exists ], [ %tmp_n.addr.1, %for.end.i.i ], [ %tmp_n.addr.2, %cleanup.sink.split ] - %return_value.1 = phi i1 [ %return_value.0, %exists ], [ false, %for.end.i.i ], [ %return_value.0, %cleanup.sink.split ] - %grow_segment.2 = phi i64 [ %grow_segment.1, %exists ], [ %grow_segment.0, %for.end.i.i ], [ %grow_segment.1, %cleanup.sink.split ] - %n.2 = phi ptr [ %n.1, %exists ], [ %n.0.lcssa, %for.end.i.i ], [ %n.1, %cleanup.sink.split ] - %cleanup.dest.slot.0 = phi i32 [ 6, %exists ], [ 2, %for.end.i.i ], [ 0, %cleanup.sink.split ] - %tobool.not.i.i91 = icmp eq i64 %4, 0 - br i1 %tobool.not.i.i91, label %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit, label %if.then.i.i92 - -if.then.i.i92: ; preds = %cleanup - %tobool.i.i.i = trunc nuw i8 %b.sroa.9.3 to i1 - br i1 %tobool.i.i.i, label %if.then.i.i.i, label %if.else.i.i.i + %tobool.not.i.i91.jt0 = icmp eq i64 %4, 0 + br i1 %tobool.not.i.i91.jt0, label %cleanup.cont, label %if.then.i.i92.jt0 + +cleanup.jt6: ; preds = %exists + %tobool.not.i.i91.jt6 = icmp eq i64 %4, 0 + br i1 %tobool.not.i.i91.jt6, label %check_growth, label %if.then.i.i92.jt6 -if.then.i.i.i: ; preds = %if.then.i.i92 +if.then.i.i92.jt2: ; preds = %cleanup.jt2 + %tobool.i.i.i.jt2 = trunc nuw i8 %b.sroa.9.1 to i1 + br i1 %tobool.i.i.i.jt2, label %if.then.i.i.i.jt2, label %if.else.i.i.i.jt2 + +if.then.i.i92.jt0: ; preds = %cleanup.jt0 + %tobool.i.i.i.jt0 = trunc nuw i8 %b.sroa.9.2 to i1 + br i1 %tobool.i.i.i.jt0, label %if.then.i.i.i.jt0, label %if.else.i.i.i.jt0 + +if.then.i.i92.jt6: ; preds = %cleanup.jt6 + %tobool.i.i.i.jt6 = trunc nuw i8 %b.sroa.9.2 to i1 + br i1 %tobool.i.i.i.jt6, label %if.then.i.i.i.jt6, label %if.else.i.i.i.jt6 + +if.then.i.i.i.jt2: ; preds = %if.then.i.i92.jt2 %51 = atomicrmw and ptr %arrayidx4.i.i, i64 -4 seq_cst, align 8 - br label %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit + br label %restart.backedge -if.else.i.i.i: ; preds = %if.then.i.i92 - %52 = atomicrmw sub ptr %arrayidx4.i.i, i64 4 seq_cst, align 8 - br label %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit +if.then.i.i.i.jt0: ; preds = %if.then.i.i92.jt0 + %52 = atomicrmw and ptr %arrayidx4.i.i, i64 -4 seq_cst, align 8 + br label %cleanup.cont -_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit: ; preds = %cleanup.thread, %cleanup, %if.then.i.i.i, %if.else.i.i.i - %cleanup.dest.slot.0147 = phi i32 [ 2, %cleanup.thread ], [ %cleanup.dest.slot.0, %cleanup ], [ %cleanup.dest.slot.0, %if.then.i.i.i ], [ %cleanup.dest.slot.0, %if.else.i.i.i ] - %n.2146 = phi ptr [ %n.1, %cleanup.thread ], [ %n.2, %cleanup ], [ %n.2, %if.then.i.i.i ], [ %n.2, %if.else.i.i.i ] - %grow_segment.2145 = phi i64 [ %grow_segment.1, %cleanup.thread ], [ %grow_segment.2, %cleanup ], [ %grow_segment.2, %if.then.i.i.i ], [ %grow_segment.2, %if.else.i.i.i ] - %return_value.1144 = phi i1 [ %return_value.0, %cleanup.thread ], [ %return_value.1, %cleanup ], [ %return_value.1, %if.then.i.i.i ], [ %return_value.1, %if.else.i.i.i ] - %tmp_n.addr.3143 = phi ptr [ %tmp_n.addr.2, %cleanup.thread ], [ %tmp_n.addr.3, %cleanup ], [ %tmp_n.addr.3, %if.then.i.i.i ], [ %tmp_n.addr.3, %if.else.i.i.i ] - %m.2142 = phi i64 [ %50, %cleanup.thread ], [ %m.2, %cleanup ], [ %m.2, %if.then.i.i.i ], [ %m.2, %if.else.i.i.i ] - switch i32 %cleanup.dest.slot.0147, label %unreachable [ - i32 0, label %cleanup.cont - i32 2, label %restart - i32 6, label %check_growth - ] +if.then.i.i.i.jt6: ; preds = %if.then.i.i92.jt6 + %53 = atomicrmw and ptr %arrayidx4.i.i, i64 -4 seq_cst, align 8 + br label %check_growth + +if.else.i.i.i.jt2: ; preds = %if.then.i.i92.jt2 + %54 = atomicrmw sub ptr %arrayidx4.i.i, i64 4 seq_cst, align 8 + br label %restart.backedge + +restart.backedge: ; preds = %if.else.i.i.i.jt2, %if.then.i.i.i.jt2, %cleanup.jt2 + br label %restart -cleanup.cont: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit +if.else.i.i.i.jt0: ; preds = %if.then.i.i92.jt0 + %55 = atomicrmw sub ptr %arrayidx4.i.i, i64 4 seq_cst, align 8 + br label %cleanup.cont + +if.else.i.i.i.jt6: ; preds = %if.then.i.i92.jt6 + %56 = atomicrmw sub ptr %arrayidx4.i.i, i64 4 seq_cst, align 8 + br label %check_growth + +cleanup.cont: ; preds = %cleanup.jt0, %if.then.i.i.i.jt0, %if.else.i.i.i.jt0 %my_node = getelementptr inbounds i8, ptr %result, i64 16 - store ptr %n.2146, ptr %my_node, align 8 + store ptr %n.1, ptr %my_node, align 8 %my_hash = getelementptr inbounds i8, ptr %result, i64 24 store i64 %1, ptr %my_hash, align 8 br label %check_growth -check_growth: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit, %cleanup.cont - %tobool46.not = icmp eq i64 %grow_segment.2145, 0 +check_growth: ; preds = %cleanup.jt6, %if.then.i.i.i.jt6, %if.else.i.i.i.jt6, %cleanup.cont + %tobool46.not = icmp eq i64 %grow_segment.1, 0 br i1 %tobool46.not, label %if.end48, label %if.then47 if.then47: ; preds = %check_growth - %cmp.i93 = icmp ugt i64 %grow_segment.2145, 7 + %cmp.i93 = icmp ugt i64 %grow_segment.1, 7 br i1 %cmp.i93, label %if.then.i97, label %if.else.i94 if.then.i97: ; preds = %if.then47 - %shl.i.i98 = shl nuw i64 1, %grow_segment.2145 - %mul.i.i.i.i.i = shl i64 16, %grow_segment.2145 + %shl.i.i98 = shl nuw i64 1, %grow_segment.1 + %mul.i.i.i.i.i = shl i64 16, %grow_segment.1 %call.i.i.i.i.i = tail call noundef ptr @_ZN3tbb6detail2r115allocate_memoryEm(i64 noundef %mul.i.i.i.i.i) #14 br label %for.body.i.i.i @@ -4427,11 +4442,11 @@ for.body.i.i.i: ; preds = %for.body.i.i.i, %if br i1 %exitcond.not.i.i.i, label %_ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold3elf6SymbolINS7_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISJ_EEEEENS3_13spin_rw_mutexEE12init_bucketsEPNSP_6bucketEmb.exit.i, label %for.body.i.i.i, !llvm.loop !20 _ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold3elf6SymbolINS7_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISJ_EEEEENS3_13spin_rw_mutexEE12init_bucketsEPNSP_6bucketEmb.exit.i: ; preds = %for.body.i.i.i - %arrayidx.i100 = getelementptr inbounds [64 x %"struct.std::atomic.294"], ptr %my_table.i.i, i64 0, i64 %grow_segment.2145 - %53 = ptrtoint ptr %call.i.i.i.i.i to i64 - store atomic i64 %53, ptr %arrayidx.i100 release, align 8 - %shl.i = shl i64 2, %grow_segment.2145 - %54 = add i64 %shl.i, -1 + %arrayidx.i100 = getelementptr inbounds [64 x %"struct.std::atomic.294"], ptr %my_table.i.i, i64 0, i64 %grow_segment.1 + %57 = ptrtoint ptr %call.i.i.i.i.i to i64 + store atomic i64 %57, ptr %arrayidx.i100 release, align 8 + %shl.i = shl i64 2, %grow_segment.1 + %58 = add i64 %shl.i, -1 br label %_ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold3elf6SymbolINS7_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISJ_EEEEENS3_13spin_rw_mutexEE14enable_segmentEmb.exit if.else.i94: ; preds = %if.then47 @@ -4457,51 +4472,51 @@ for.body.i: ; preds = %for.body.i, %_ZN3tb %arrayidx12.i = getelementptr inbounds [64 x %"struct.std::atomic.294"], ptr %my_table.i.i, i64 0, i64 %i.034.i %shl.i23.i = shl nuw nsw i64 1, %i.034.i %add.ptr14.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base *const, std::vector>>>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %add.ptr.i, i64 %shl.i23.i - %55 = ptrtoint ptr %add.ptr14.i to i64 - store atomic i64 %55, ptr %arrayidx12.i release, align 8 + %59 = ptrtoint ptr %add.ptr14.i to i64 + store atomic i64 %59, ptr %arrayidx12.i release, align 8 %inc.i = add nuw nsw i64 %i.034.i, 1 %exitcond.not.i = icmp eq i64 %inc.i, 8 br i1 %exitcond.not.i, label %_ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold3elf6SymbolINS7_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISJ_EEEEENS3_13spin_rw_mutexEE14enable_segmentEmb.exit, label %for.body.i, !llvm.loop !21 _ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold3elf6SymbolINS7_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISJ_EEEEENS3_13spin_rw_mutexEE14enable_segmentEmb.exit: ; preds = %for.body.i, %_ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold3elf6SymbolINS7_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISJ_EEEEENS3_13spin_rw_mutexEE12init_bucketsEPNSP_6bucketEmb.exit.i - %sz.0.i = phi i64 [ %54, %_ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold3elf6SymbolINS7_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISJ_EEEEENS3_13spin_rw_mutexEE12init_bucketsEPNSP_6bucketEmb.exit.i ], [ 255, %for.body.i ] + %sz.0.i = phi i64 [ %58, %_ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold3elf6SymbolINS7_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISJ_EEEEENS3_13spin_rw_mutexEE12init_bucketsEPNSP_6bucketEmb.exit.i ], [ 255, %for.body.i ] store atomic i64 %sz.0.i, ptr %my_mask release, align 8 br label %if.end48 if.end48: ; preds = %_ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold3elf6SymbolINS7_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISJ_EEEEENS3_13spin_rw_mutexEE14enable_segmentEmb.exit, %check_growth - %tobool49.not = icmp eq ptr %tmp_n.addr.3143, null + %tobool49.not = icmp eq ptr %tmp_n.addr.2, null br i1 %tobool49.not, label %if.end51, label %if.then50 if.then50: ; preds = %if.end48 - %second.i.i.i.i.i.i = getelementptr inbounds i8, ptr %tmp_n.addr.3143, i64 24 - %56 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %_M_finish.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %tmp_n.addr.3143, i64 32 - %57 = load ptr, ptr %_M_finish.i.i.i.i.i.i.i, align 8 - %cmp.not3.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %56, %57 + %second.i.i.i.i.i.i = getelementptr inbounds i8, ptr %tmp_n.addr.2, i64 24 + %60 = load ptr, ptr %second.i.i.i.i.i.i, align 8 + %_M_finish.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %tmp_n.addr.2, i64 32 + %61 = load ptr, ptr %_M_finish.i.i.i.i.i.i.i, align 8 + %cmp.not3.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %60, %61 br i1 %cmp.not3.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i.i.i.i.i.i.i, label %for.body.i.i.i.i.i.i.i.i.i.i for.body.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then50, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i.i.i.i.i.i.i - %__first.addr.04.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i.i.i.i.i.i.i ], [ %56, %if.then50 ] - %58 = load ptr, ptr %__first.addr.04.i.i.i.i.i.i.i.i.i.i, align 8 - %59 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i.i.i.i.i, i64 16 - %cmp.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %58, %59 + %__first.addr.04.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i.i.i.i.i.i.i ], [ %60, %if.then50 ] + %62 = load ptr, ptr %__first.addr.04.i.i.i.i.i.i.i.i.i.i, align 8 + %63 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i.i.i.i.i, i64 16 + %cmp.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %62, %63 br i1 %cmp.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i.i.i.i %_M_string_length.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i.i.i.i.i, i64 8 - %60 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %cmp3.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp ult i64 %60, 16 + %64 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 + %cmp3.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp ult i64 %64, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i) br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i.i.i.i - tail call void @_ZdlPv(ptr noundef %58) #21 + tail call void @_ZdlPv(ptr noundef %62) #21 br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i.i.i.i.i.i.i _ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i.i.i.i.i.i tail call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__first.addr.04.i.i.i.i.i.i.i.i.i.i) #14 %incdec.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i.i.i.i.i, i64 32 - %cmp.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i, %57 + %cmp.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i, %61 br i1 %cmp.not.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i.i.i.i.i.i.i, label %for.body.i.i.i.i.i.i.i.i.i.i, !llvm.loop !12 _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i.i.i.i.i.i.i: ; preds = %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i.i.i.i.i.i.i.i @@ -4509,23 +4524,20 @@ _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSa br label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i.i.i.i.i.i.i _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i.i.i.i.i.i.i: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i.i.i.i.i.i.i, %if.then50 - %61 = phi ptr [ %.pr.i.i.i.i.i.i.i, %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i.i.i.i.i.i.i ], [ %56, %if.then50 ] - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %61, null + %65 = phi ptr [ %.pr.i.i.i.i.i.i.i, %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i.i.i.i.i.i.i ], [ %60, %if.then50 ] + %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %65, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSI_13spin_rw_mutexEEE.exit, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i.i.i.i.i.i.i - tail call void @_ZdlPv(ptr noundef nonnull %61) #21 + tail call void @_ZdlPv(ptr noundef nonnull %65) #21 br label %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSI_13spin_rw_mutexEEE.exit _ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSI_13spin_rw_mutexEEE.exit: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i - tail call void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %tmp_n.addr.3143) #14 + tail call void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %tmp_n.addr.2) #14 br label %if.end51 if.end51: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSI_13spin_rw_mutexEEE.exit, %if.end48 - ret i1 %return_value.1144 - -unreachable: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold3elf6SymbolINS4_5ALPHAEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISF_EENS0_2d116tbb_hash_compareIS8_EENSI_13tbb_allocatorISt4pairIKS8_SH_EEEE15bucket_accessorD2Ev.exit - unreachable + ret i1 %return_value.0 } ; Function Attrs: mustprogress nounwind diff --git a/bench/msdfgen/optimized/shape-description.cpp.ll b/bench/msdfgen/optimized/shape-description.cpp.ll index b07e68bd2ca..5ae0adac384 100644 --- a/bench/msdfgen/optimized/shape-description.cpp.ll +++ b/bench/msdfgen/optimized/shape-description.cpp.ll @@ -352,6 +352,8 @@ if.end6: ; preds = %if.else, %if.then %y.i9.i = getelementptr inbounds i8, ptr %p, i64 40 %arrayidx103 = getelementptr inbounds i8, ptr %p, i64 48 %agg.tmp102.sroa.2.0.arrayidx103.sroa_idx = getelementptr inbounds i8, ptr %p, i64 56 + %arrayidx55.jt0 = getelementptr inbounds i8, ptr %p, i64 16 + %y.i55.jt0 = getelementptr inbounds i8, ptr %p, i64 24 br label %do.body.i35 do.body.i35: ; preds = %do.body.i35.backedge, %if.end6 @@ -410,12 +412,12 @@ do.body.i42: ; preds = %if.end12, %do.body. i32 10, label %do.body.i42.backedge i32 9, label %do.body.i42.backedge i32 35, label %sw.bb - i32 59, label %FINISH_EDGE + i32 59, label %FINISH_EDGE.jt0 i32 40, label %READ_CONTROL_POINTS i32 67, label %sw.epilog.loopexit i32 99, label %sw.epilog.loopexit - i32 77, label %sw.epilog.loopexit153 - i32 109, label %sw.epilog.loopexit153 + i32 77, label %sw.epilog.loopexit157 + i32 109, label %sw.epilog.loopexit157 i32 89, label %sw.epilog i32 121, label %sw.epilog i32 87, label %sw.bb40 @@ -454,11 +456,11 @@ sw.default: ; preds = %do.body.i42 sw.epilog.loopexit: ; preds = %do.body.i42, %do.body.i42 br label %sw.epilog -sw.epilog.loopexit153: ; preds = %do.body.i42, %do.body.i42 +sw.epilog.loopexit157: ; preds = %do.body.i42, %do.body.i42 br label %sw.epilog -sw.epilog: ; preds = %do.body.i42, %do.body.i42, %sw.epilog.loopexit153, %sw.epilog.loopexit, %sw.bb40 - %color.2 = phi i32 [ 7, %sw.bb40 ], [ 6, %sw.epilog.loopexit ], [ 5, %sw.epilog.loopexit153 ], [ 3, %do.body.i42 ], [ 3, %do.body.i42 ] +sw.epilog: ; preds = %do.body.i42, %do.body.i42, %sw.epilog.loopexit157, %sw.epilog.loopexit, %sw.bb40 + %color.2 = phi i32 [ 7, %sw.bb40 ], [ 6, %sw.epilog.loopexit ], [ 5, %sw.epilog.loopexit157 ], [ 3, %do.body.i42 ], [ 3, %do.body.i42 ] store i8 1, ptr %colorsSpecified, align 1 br label %do.body.i47 @@ -469,7 +471,7 @@ do.body.i47: ; preds = %do.body.i47.backedg i32 13, label %do.body.i47.backedge i32 10, label %do.body.i47.backedge i32 9, label %do.body.i47.backedge - i32 59, label %FINISH_EDGE + i32 59, label %FINISH_EDGE.jt0 i32 40, label %READ_CONTROL_POINTS ] @@ -546,20 +548,33 @@ do.body.i51: ; preds = %do.body.i51.backedg do.body.i51.backedge: ; preds = %do.body.i51, %do.body.i51, %do.body.i51, %do.body.i51 br label %do.body.i51 -FINISH_EDGE: ; preds = %do.body.i42, %do.body.i47, %do.body.i51 - %controlPoints.0 = phi i32 [ %retval.0.i, %do.body.i51 ], [ 0, %do.body.i47 ], [ 0, %do.body.i42 ] - %color.0 = phi i32 [ %color.1, %do.body.i51 ], [ %color.2, %do.body.i47 ], [ 7, %do.body.i42 ] - %add = add nuw nsw i32 %controlPoints.0, 1 +FINISH_EDGE: ; preds = %do.body.i51 + %add = add nuw nsw i32 %retval.0.i, 1 %idxprom = zext nneg i32 %add to i64 %arrayidx55 = getelementptr inbounds [4 x %"struct.msdfgen::Vector2"], ptr %p, i64 0, i64 %idxprom %y.i55 = getelementptr inbounds i8, ptr %arrayidx55, i64 8 %call.i56 = call noundef i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %input, ptr noundef nonnull @.str, ptr noundef nonnull %arrayidx55, ptr noundef nonnull %y.i55) - switch i32 %call.i56, label %do.body.i57 [ + switch i32 %call.i56, label %do.body.i57.preheader [ i32 2, label %if.end71 i32 1, label %return ] -do.body.i57: ; preds = %FINISH_EDGE, %do.body.i57.backedge +FINISH_EDGE.jt0: ; preds = %do.body.i42, %do.body.i47 + %color.0.jt0 = phi i32 [ %color.2, %do.body.i47 ], [ 7, %do.body.i42 ] + %call.i56.jt0 = call noundef i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %input, ptr noundef nonnull @.str, ptr noundef nonnull %arrayidx55.jt0, ptr noundef nonnull %y.i55.jt0) + switch i32 %call.i56.jt0, label %do.body.i57.preheader [ + i32 2, label %sw.bb72 + i32 1, label %return + ] + +do.body.i57.preheader: ; preds = %FINISH_EDGE.jt0, %FINISH_EDGE + %y.i55113 = phi ptr [ %y.i55.jt0, %FINISH_EDGE.jt0 ], [ %y.i55, %FINISH_EDGE ] + %arrayidx55112 = phi ptr [ %arrayidx55.jt0, %FINISH_EDGE.jt0 ], [ %arrayidx55, %FINISH_EDGE ] + %color.0109 = phi i32 [ %color.0.jt0, %FINISH_EDGE.jt0 ], [ %color.1, %FINISH_EDGE ] + %controlPoints.0107 = phi i32 [ 0, %FINISH_EDGE.jt0 ], [ %retval.0.i, %FINISH_EDGE ] + br label %do.body.i57 + +do.body.i57: ; preds = %do.body.i57.backedge, %do.body.i57.preheader %call.i58 = call i32 @fgetc(ptr noundef %input) switch i32 %call.i58, label %return [ i32 32, label %do.body.i57.backedge @@ -573,23 +588,26 @@ do.body.i57.backedge: ; preds = %do.body.i57, %do.bo br label %do.body.i57 if.then64: ; preds = %do.body.i57 - store double %start.sroa.0.0.copyload, ptr %arrayidx55, align 16 - store double %start.sroa.5.0.copyload, ptr %y.i55, align 8 + store double %start.sroa.0.0.copyload, ptr %arrayidx55112, align 16 + store double %start.sroa.5.0.copyload, ptr %y.i55113, align 8 br label %if.end71 if.end71: ; preds = %FINISH_EDGE, %if.then64 - %agg.tmp74.sroa.0.0.copyload = load double, ptr %p, align 16 - %agg.tmp74.sroa.2.0.copyload = load double, ptr %start.sroa.5.0.p.sroa_idx, align 8 - %agg.tmp76.sroa.0.0.copyload = load double, ptr %arrayidx14, align 16 - %agg.tmp76.sroa.2.0.copyload = load double, ptr %y.i39, align 8 - switch i32 %controlPoints.0, label %default.unreachable [ + %color.0110 = phi i32 [ %color.1, %FINISH_EDGE ], [ %color.0109, %if.then64 ] + %controlPoints.0108 = phi i32 [ %retval.0.i, %FINISH_EDGE ], [ %controlPoints.0107, %if.then64 ] + switch i32 %controlPoints.0108, label %default.unreachable [ i32 0, label %sw.bb72 i32 1, label %sw.bb82 i32 2, label %sw.bb94 ] -sw.bb72: ; preds = %if.end71 - %call.i61 = call noundef ptr @_ZN7msdfgen11EdgeSegment6createENS_7Vector2ES1_NS_9EdgeColorE(double %agg.tmp74.sroa.0.0.copyload, double %agg.tmp74.sroa.2.0.copyload, double %agg.tmp76.sroa.0.0.copyload, double %agg.tmp76.sroa.2.0.copyload, i32 noundef %color.0) +sw.bb72: ; preds = %FINISH_EDGE.jt0, %if.end71 + %color.0111 = phi i32 [ %color.0110, %if.end71 ], [ %color.0.jt0, %FINISH_EDGE.jt0 ] + %agg.tmp74.sroa.0.0.copyload = load double, ptr %p, align 16 + %agg.tmp74.sroa.2.0.copyload = load double, ptr %start.sroa.5.0.p.sroa_idx, align 8 + %agg.tmp76.sroa.0.0.copyload = load double, ptr %arrayidx14, align 16 + %agg.tmp76.sroa.2.0.copyload = load double, ptr %y.i39, align 8 + %call.i61 = call noundef ptr @_ZN7msdfgen11EdgeSegment6createENS_7Vector2ES1_NS_9EdgeColorE(double %agg.tmp74.sroa.0.0.copyload, double %agg.tmp74.sroa.2.0.copyload, double %agg.tmp76.sroa.0.0.copyload, double %agg.tmp76.sroa.2.0.copyload, i32 noundef %color.0111) store ptr %call.i61, ptr %ref.tmp73, align 8 invoke void @_ZN7msdfgen7Contour7addEdgeEONS_10EdgeHolderE(ptr noundef nonnull align 8 dereferenceable(24) %output, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp73) to label %invoke.cont79 unwind label %lpad78 @@ -605,9 +623,13 @@ lpad78: ; preds = %sw.bb72 br label %eh.resume sw.bb82: ; preds = %if.end71 + %agg.tmp84.sroa.0.0.copyload = load double, ptr %p, align 16 + %agg.tmp84.sroa.2.0.copyload = load double, ptr %start.sroa.5.0.p.sroa_idx, align 8 + %agg.tmp86.sroa.0.0.copyload = load double, ptr %arrayidx14, align 16 + %agg.tmp86.sroa.2.0.copyload = load double, ptr %y.i39, align 8 %agg.tmp88.sroa.0.0.copyload = load double, ptr %arrayidx3.i, align 16 %agg.tmp88.sroa.2.0.copyload = load double, ptr %y.i9.i, align 8 - %call.i62 = call noundef ptr @_ZN7msdfgen11EdgeSegment6createENS_7Vector2ES1_S1_NS_9EdgeColorE(double %agg.tmp74.sroa.0.0.copyload, double %agg.tmp74.sroa.2.0.copyload, double %agg.tmp76.sroa.0.0.copyload, double %agg.tmp76.sroa.2.0.copyload, double %agg.tmp88.sroa.0.0.copyload, double %agg.tmp88.sroa.2.0.copyload, i32 noundef %color.0) + %call.i62 = call noundef ptr @_ZN7msdfgen11EdgeSegment6createENS_7Vector2ES1_S1_NS_9EdgeColorE(double %agg.tmp84.sroa.0.0.copyload, double %agg.tmp84.sroa.2.0.copyload, double %agg.tmp86.sroa.0.0.copyload, double %agg.tmp86.sroa.2.0.copyload, double %agg.tmp88.sroa.0.0.copyload, double %agg.tmp88.sroa.2.0.copyload, i32 noundef %color.0110) store ptr %call.i62, ptr %ref.tmp83, align 8 invoke void @_ZN7msdfgen7Contour7addEdgeEONS_10EdgeHolderE(ptr noundef nonnull align 8 dereferenceable(24) %output, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp83) to label %invoke.cont91 unwind label %lpad90 @@ -623,11 +645,15 @@ lpad90: ; preds = %sw.bb82 br label %eh.resume sw.bb94: ; preds = %if.end71 + %agg.tmp96.sroa.0.0.copyload = load double, ptr %p, align 16 + %agg.tmp96.sroa.2.0.copyload = load double, ptr %start.sroa.5.0.p.sroa_idx, align 8 + %agg.tmp98.sroa.0.0.copyload = load double, ptr %arrayidx14, align 16 + %agg.tmp98.sroa.2.0.copyload = load double, ptr %y.i39, align 8 %agg.tmp100.sroa.0.0.copyload = load double, ptr %arrayidx3.i, align 16 %agg.tmp100.sroa.2.0.copyload = load double, ptr %y.i9.i, align 8 %agg.tmp102.sroa.0.0.copyload = load double, ptr %arrayidx103, align 16 %agg.tmp102.sroa.2.0.copyload = load double, ptr %agg.tmp102.sroa.2.0.arrayidx103.sroa_idx, align 8 - %call.i63 = call noundef ptr @_ZN7msdfgen11EdgeSegment6createENS_7Vector2ES1_S1_S1_NS_9EdgeColorE(double %agg.tmp74.sroa.0.0.copyload, double %agg.tmp74.sroa.2.0.copyload, double %agg.tmp76.sroa.0.0.copyload, double %agg.tmp76.sroa.2.0.copyload, double %agg.tmp100.sroa.0.0.copyload, double %agg.tmp100.sroa.2.0.copyload, double %agg.tmp102.sroa.0.0.copyload, double %agg.tmp102.sroa.2.0.copyload, i32 noundef %color.0) + %call.i63 = call noundef ptr @_ZN7msdfgen11EdgeSegment6createENS_7Vector2ES1_S1_S1_NS_9EdgeColorE(double %agg.tmp96.sroa.0.0.copyload, double %agg.tmp96.sroa.2.0.copyload, double %agg.tmp98.sroa.0.0.copyload, double %agg.tmp98.sroa.2.0.copyload, double %agg.tmp100.sroa.0.0.copyload, double %agg.tmp100.sroa.2.0.copyload, double %agg.tmp102.sroa.0.0.copyload, double %agg.tmp102.sroa.2.0.copyload, i32 noundef %color.0110) store ptr %call.i63, ptr %ref.tmp95, align 8 invoke void @_ZN7msdfgen7Contour7addEdgeEONS_10EdgeHolderE(ptr noundef nonnull align 8 dereferenceable(24) %output, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp95) to label %invoke.cont105 unwind label %lpad104 @@ -642,8 +668,8 @@ lpad104: ; preds = %sw.bb94 cleanup br label %eh.resume -return: ; preds = %sw.epilog.i, %READ_CONTROL_POINTS, %_ZN7msdfgen9readCharFEP8_IO_FILE.exit38, %FINISH_EDGE, %if.end12, %do.body.i47, %do.body.i.i, %do.body.i11.i, %do.body.i15.i, %do.body.i51, %do.body.i57, %_ZN7msdfgen9readCharFEP8_IO_FILE.exit, %if.else, %sw.default - %retval.0 = phi i1 [ %cmp41, %sw.default ], [ %cmp5, %_ZN7msdfgen9readCharFEP8_IO_FILE.exit ], [ false, %if.else ], [ false, %do.body.i57 ], [ false, %do.body.i51 ], [ false, %do.body.i15.i ], [ false, %do.body.i11.i ], [ false, %do.body.i.i ], [ false, %do.body.i47 ], [ %cmp9.not, %if.end12 ], [ %cmp9.not, %FINISH_EDGE ], [ %cmp9.not, %_ZN7msdfgen9readCharFEP8_IO_FILE.exit38 ], [ %cmp9.not, %READ_CONTROL_POINTS ], [ %cmp9.not, %sw.epilog.i ] +return: ; preds = %sw.epilog.i, %READ_CONTROL_POINTS, %_ZN7msdfgen9readCharFEP8_IO_FILE.exit38, %FINISH_EDGE, %if.end12, %FINISH_EDGE.jt0, %do.body.i47, %do.body.i.i, %do.body.i11.i, %do.body.i15.i, %do.body.i51, %do.body.i57, %_ZN7msdfgen9readCharFEP8_IO_FILE.exit, %if.else, %sw.default + %retval.0 = phi i1 [ %cmp41, %sw.default ], [ %cmp5, %_ZN7msdfgen9readCharFEP8_IO_FILE.exit ], [ false, %if.else ], [ false, %do.body.i57 ], [ false, %do.body.i51 ], [ false, %do.body.i15.i ], [ false, %do.body.i11.i ], [ false, %do.body.i.i ], [ false, %do.body.i47 ], [ %cmp9.not, %FINISH_EDGE.jt0 ], [ %cmp9.not, %if.end12 ], [ %cmp9.not, %FINISH_EDGE ], [ %cmp9.not, %_ZN7msdfgen9readCharFEP8_IO_FILE.exit38 ], [ %cmp9.not, %READ_CONTROL_POINTS ], [ %cmp9.not, %sw.epilog.i ] ret i1 %retval.0 eh.resume: ; preds = %lpad104, %lpad90, %lpad78, %lpad32, %lpad diff --git a/bench/ninja/optimized/build.cc.ll b/bench/ninja/optimized/build.cc.ll index 06ea1ff167e..1d35514ced1 100644 --- a/bench/ninja/optimized/build.cc.ll +++ b/bench/ninja/optimized/build.cc.ll @@ -2064,8 +2064,8 @@ define dso_local noundef zeroext i1 @_ZN4Plan23RefreshDyndepDependentsEP14Depend %21 = getelementptr inbounds i8, ptr %0, i64 112 br label %22 -22: ; preds = %.lr.ph49, %102 - %.sroa.032.046 = phi ptr [ %13, %.lr.ph49 ], [ %103, %102 ] +22: ; preds = %.lr.ph49, %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0 + %.sroa.032.046 = phi ptr [ %13, %.lr.ph49 ], [ %104, %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0 ] %23 = getelementptr inbounds i8, ptr %.sroa.032.046, i64 32 %24 = load ptr, ptr %23, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) @@ -2073,7 +2073,7 @@ define dso_local noundef zeroext i1 @_ZN4Plan23RefreshDyndepDependentsEP14Depend to label %26 unwind label %.loopexit.split-lp.loopexit 26: ; preds = %22 - br i1 %25, label %31, label %_ZN4Plan10EdgeWantedEPK4Edge.exit + br i1 %25, label %31, label %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt1 27: ; preds = %4 %28 = landingpad { ptr, i32 } @@ -2202,7 +2202,7 @@ _ZNSt6vectorIPK4NodeSaIS2_EE9push_backERKS2_.exit.i: ; preds = %_ZNSt6vectorIPK4 to label %_ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit unwind label %.loopexit _ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %_ZNSt6vectorIPK4NodeSaIS2_EE9push_backERKS2_.exit.i - br i1 %71, label %_ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit._crit_edge, label %_ZN4Plan10EdgeWantedEPK4Edge.exit + br i1 %71, label %_ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit._crit_edge, label %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt1 _ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit._crit_edge: ; preds = %_ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit %.pre = load ptr, ptr %14, align 8 @@ -2218,7 +2218,7 @@ _ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE. %75 = getelementptr inbounds i8, ptr %24, i64 52 %76 = load i8, ptr %75, align 4 %77 = trunc i8 %76 to i1 - br i1 %77, label %78, label %_ZN4Plan10EdgeWantedEPK4Edge.exit + br i1 %77, label %78, label %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt4 78: ; preds = %._crit_edge %79 = getelementptr inbounds i8, ptr %24, i64 56 @@ -2256,7 +2256,7 @@ _ZNSt3mapIP4EdgeN4Plan4WantESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit: ; %90 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i, i64 40 %91 = load i32, ptr %90, align 8 %92 = icmp eq i32 %91, 0 - br i1 %92, label %93, label %_ZN4Plan10EdgeWantedEPK4Edge.exit + br i1 %92, label %93, label %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt0 93: ; preds = %_ZNSt3mapIP4EdgeN4Plan4WantESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit store i32 1, ptr %90, align 8 @@ -2267,46 +2267,54 @@ _ZNSt3mapIP4EdgeN4Plan4WantESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit: ; to label %.noexc21 unwind label %.loopexit.split-lp.loopexit .noexc21: ; preds = %93 - br i1 %96, label %_ZN4Plan10EdgeWantedEPK4Edge.exit, label %97 + br i1 %96, label %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt0, label %97 97: ; preds = %.noexc21 %98 = load i32, ptr %21, align 8 %99 = add nsw i32 %98, 1 store i32 %99, ptr %21, align 8 - br label %_ZN4Plan10EdgeWantedEPK4Edge.exit + br label %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt0 -_ZN4Plan10EdgeWantedEPK4Edge.exit: ; preds = %_ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, %97, %.noexc21, %_ZNSt3mapIP4EdgeN4Plan4WantESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit, %._crit_edge, %26 - %.013 = phi i32 [ 1, %26 ], [ 4, %._crit_edge ], [ 0, %_ZNSt3mapIP4EdgeN4Plan4WantESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit ], [ 0, %.noexc21 ], [ 0, %97 ], [ 1, %_ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ] +_ZN4Plan10EdgeWantedEPK4Edge.exit.jt0: ; preds = %97, %.noexc21, %_ZNSt3mapIP4EdgeN4Plan4WantESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit %100 = load ptr, ptr %6, align 8 - %.not.i.i.i22 = icmp eq ptr %100, null - br i1 %.not.i.i.i22, label %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23, label %101 - -101: ; preds = %_ZN4Plan10EdgeWantedEPK4Edge.exit - call void @_ZdlPv(ptr noundef nonnull %100) #25 - br label %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23 - -_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23: ; preds = %_ZN4Plan10EdgeWantedEPK4Edge.exit, %101 - switch i32 %.013, label %._crit_edge50 [ - i32 0, label %102 - i32 4, label %102 - ] - -102: ; preds = %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23, %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23 - %103 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.032.046) #27 - %.not35 = icmp eq ptr %103, %7 + %.not.i.i.i22.jt0 = icmp eq ptr %100, null + br i1 %.not.i.i.i22.jt0, label %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0, label %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0.sink.split + +_ZN4Plan10EdgeWantedEPK4Edge.exit.jt4: ; preds = %._crit_edge + %101 = load ptr, ptr %6, align 8 + %.not.i.i.i22.jt4 = icmp eq ptr %101, null + br i1 %.not.i.i.i22.jt4, label %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0, label %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0.sink.split + +_ZN4Plan10EdgeWantedEPK4Edge.exit.jt1: ; preds = %26, %_ZN4Plan9AddTargetEPK4NodePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit + %102 = load ptr, ptr %6, align 8 + %.not.i.i.i22.jt1 = icmp eq ptr %102, null + br i1 %.not.i.i.i22.jt1, label %._crit_edge50, label %103 + +103: ; preds = %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt1 + call void @_ZdlPv(ptr noundef nonnull %102) #25 + br label %._crit_edge50 + +_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0.sink.split: ; preds = %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt4, %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt0 + %.sink = phi ptr [ %100, %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt0 ], [ %101, %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt4 ] + call void @_ZdlPv(ptr noundef nonnull %.sink) #25 + br label %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0 + +_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0: ; preds = %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0.sink.split, %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt4, %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt0 + %104 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.032.046) #27 + %.not35 = icmp eq ptr %104, %7 br i1 %.not35, label %._crit_edge50, label %22, !llvm.loop !28 -._crit_edge50: ; preds = %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23, %102, %12 - %.not35.lcssa = phi i1 [ true, %12 ], [ true, %102 ], [ false, %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23 ] - %104 = load ptr, ptr %8, align 8 - invoke void @_ZNSt8_Rb_treeIP4NodeS1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE8_M_eraseEPSt13_Rb_tree_nodeIS1_E(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef %104) - to label %_ZNSt3setIP4NodeSt4lessIS1_ESaIS1_EED2Ev.exit unwind label %105 +._crit_edge50: ; preds = %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0, %103, %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt1, %12 + %.not35.lcssa = phi i1 [ true, %12 ], [ false, %103 ], [ false, %_ZN4Plan10EdgeWantedEPK4Edge.exit.jt1 ], [ true, %_ZNSt6vectorIP4NodeSaIS1_EED2Ev.exit23.jt0 ] + %105 = load ptr, ptr %8, align 8 + invoke void @_ZNSt8_Rb_treeIP4NodeS1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE8_M_eraseEPSt13_Rb_tree_nodeIS1_E(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef %105) + to label %_ZNSt3setIP4NodeSt4lessIS1_ESaIS1_EED2Ev.exit unwind label %106 -105: ; preds = %._crit_edge50 - %106 = landingpad { ptr, i32 } +106: ; preds = %._crit_edge50 + %107 = landingpad { ptr, i32 } catch ptr null - %107 = extractvalue { ptr, i32 } %106, 0 - call void @__clang_call_terminate(ptr %107) #22 + %108 = extractvalue { ptr, i32 } %107, 0 + call void @__clang_call_terminate(ptr %108) #22 unreachable _ZNSt3setIP4NodeSt4lessIS1_ESaIS1_EED2Ev.exit: ; preds = %._crit_edge50 diff --git a/bench/node/optimized/libnode.cares_wrap.ll b/bench/node/optimized/libnode.cares_wrap.ll index a0a206e5d3a..c1650221a91 100644 --- a/bench/node/optimized/libnode.cares_wrap.ll +++ b/bench/node/optimized/libnode.cares_wrap.ll @@ -6199,11 +6199,10 @@ for.body.lr.ph: ; preds = %for.cond.preheader br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc - %retval.2204 = phi i32 [ undef, %for.body.lr.ph ], [ %retval.3, %for.inc ] - %ptr.0203 = phi ptr [ %add.ptr6, %for.body.lr.ph ], [ %ptr.1, %for.inc ] + %ptr.0203 = phi ptr [ %add.ptr6, %for.body.lr.ph ], [ %add.ptr376, %for.inc ] %i.0202 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ] store ptr null, ptr %rr_name_temp, align 8 - %call13 = call i32 @ares_expand_name(ptr noundef %ptr.0203, ptr noundef %buf, i32 noundef %len, ptr noundef nonnull %rr_name_temp, ptr noundef nonnull %rr_temp_len) #20 + %call13 = call i32 @ares_expand_name(ptr noundef nonnull %ptr.0203, ptr noundef %buf, i32 noundef %len, ptr noundef nonnull %rr_name_temp, ptr noundef nonnull %rr_temp_len) #20 %cmp14.not = icmp eq i32 %call13, 0 br i1 %cmp14.not, label %if.end21, label %if.then15 @@ -6218,7 +6217,7 @@ if.end21: ; preds = %for.body %add.ptr22 = getelementptr inbounds i8, ptr %ptr.0203, i64 %6 %add.ptr23 = getelementptr inbounds i8, ptr %add.ptr22, i64 10 %cmp26 = icmp ugt ptr %add.ptr23, %add.ptr7 - br i1 %cmp26, label %cleanup377, label %if.end28 + br i1 %cmp26, label %cleanup377.jt1, label %if.end28 if.end28: ; preds = %if.end21 %add.ptr22.val = load i8, ptr %add.ptr22, align 1 @@ -6229,7 +6228,7 @@ if.end28: ; preds = %if.end21 %conv2.i80 = zext i8 %add.ptr22.val76 to i16 %or.i81 = or disjoint i16 %shl.i79, %conv2.i80 %cmp35 = icmp eq i16 %or.i81, 6 - br i1 %cmp35, label %if.then36, label %if.end374 + br i1 %cmp35, label %if.then36, label %cleanup377.jt0 if.then36: ; preds = %if.end28 store ptr null, ptr %nsname_temp, align 8 @@ -6240,7 +6239,7 @@ if.then36: ; preds = %if.end28 if.then39: ; preds = %if.then36 %cmp40 = icmp eq i32 %call37, 8 %cond44 = select i1 %cmp40, i32 10, i32 %call37 - br label %cleanup377 + br label %cleanup377.jt1 if.end45: ; preds = %if.then36 %8 = load ptr, ptr %nsname_temp, align 8 @@ -6254,7 +6253,7 @@ if.end45: ; preds = %if.then36 if.then49: ; preds = %if.end45 %cmp50 = icmp eq i32 %call47, 8 %cond54 = select i1 %cmp50, i32 10, i32 %call47 - br label %cleanup373 + br label %cleanup373.jt1 if.end55: ; preds = %if.end45 %10 = load ptr, ptr %hostmaster_temp, align 8 @@ -6262,7 +6261,7 @@ if.end55: ; preds = %if.end45 %add.ptr56 = getelementptr inbounds i8, ptr %add.ptr46, i64 %11 %add.ptr57 = getelementptr inbounds i8, ptr %add.ptr56, i64 20 %cmp60 = icmp ugt ptr %add.ptr57, %add.ptr7 - br i1 %cmp60, label %cleanup, label %if.end62 + br i1 %cmp60, label %cleanup.jt1, label %if.end62 if.end62: ; preds = %if.end55 %12 = load i8, ptr %add.ptr56, align 1 @@ -6517,39 +6516,52 @@ _ZNK2v85MaybeIbE5CheckEv.exit441: ; preds = %if.then.i440, %_ZNK %72 = load ptr, ptr %dns_soa_string_.i.i, align 8 %call363 = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call74, ptr %call2.i187, ptr %71, ptr %72) #20 %tobool.i616 = trunc i16 %call363 to i1 - br i1 %tobool.i616, label %_ZNK2v85MaybeIbE5CheckEv.exit, label %if.then.i + br i1 %tobool.i616, label %cleanup.jt2, label %if.then.i if.then.i: ; preds = %_ZNK2v85MaybeIbE5CheckEv.exit441 call void @_ZN2v812api_internal17FromJustIsNothingEv() #20 - br label %_ZNK2v85MaybeIbE5CheckEv.exit + br label %cleanup.jt2 + +cleanup.jt1: ; preds = %if.end55 + %cmp.not.i.jt1 = icmp eq ptr %10, null + br i1 %cmp.not.i.jt1, label %cleanup373.jt1, label %if.then.i190.jt1 -_ZNK2v85MaybeIbE5CheckEv.exit: ; preds = %if.then.i, %_ZNK2v85MaybeIbE5CheckEv.exit441 +cleanup.jt2: ; preds = %_ZNK2v85MaybeIbE5CheckEv.exit441, %if.then.i %call4.i = call noundef ptr @_ZN2v820EscapableHandleScope6EscapeEPm(ptr noundef nonnull align 8 dereferenceable(32) %handle_scope, ptr noundef nonnull %call74) #20 store ptr %call4.i, ptr %ret, align 8 - br label %cleanup + %cmp.not.i.jt2 = icmp eq ptr %10, null + br i1 %cmp.not.i.jt2, label %cleanup373.jt2, label %if.then.i190.jt2 -cleanup: ; preds = %if.end55, %_ZNK2v85MaybeIbE5CheckEv.exit - %cleanup.dest.slot.2 = phi i32 [ 2, %_ZNK2v85MaybeIbE5CheckEv.exit ], [ 1, %if.end55 ] - %retval.5 = phi i32 [ %retval.2204, %_ZNK2v85MaybeIbE5CheckEv.exit ], [ 10, %if.end55 ] - %cmp.not.i = icmp eq ptr %10, null - br i1 %cmp.not.i, label %cleanup373, label %if.then.i190 +if.then.i190.jt1: ; preds = %cleanup.jt1 + call void @ares_free_string(ptr noundef nonnull %10) #20 + br label %cleanup373.jt1 -if.then.i190: ; preds = %cleanup +if.then.i190.jt2: ; preds = %cleanup.jt2 call void @ares_free_string(ptr noundef nonnull %10) #20 - br label %cleanup373 + br label %cleanup373.jt2 + +cleanup373.jt2: ; preds = %if.then.i190.jt2, %cleanup.jt2 + %cmp.not.i191.jt2 = icmp eq ptr %8, null + br i1 %cmp.not.i191.jt2, label %cleanup377.jt2, label %if.then.i192.jt2 -cleanup373: ; preds = %if.then.i190, %cleanup, %if.then49 - %cleanup.dest.slot.1 = phi i32 [ 1, %if.then49 ], [ %cleanup.dest.slot.2, %cleanup ], [ %cleanup.dest.slot.2, %if.then.i190 ] - %ptr.2 = phi ptr [ %add.ptr46, %if.then49 ], [ %add.ptr56, %cleanup ], [ %add.ptr56, %if.then.i190 ] - %retval.4 = phi i32 [ %cond54, %if.then49 ], [ %retval.5, %cleanup ], [ %retval.5, %if.then.i190 ] - %cmp.not.i191 = icmp eq ptr %8, null - br i1 %cmp.not.i191, label %cleanup377, label %if.then.i192 +cleanup373.jt1: ; preds = %if.then.i190.jt1, %cleanup.jt1, %if.then49 + %retval.4.jt1 = phi i32 [ %cond54, %if.then49 ], [ 10, %cleanup.jt1 ], [ 10, %if.then.i190.jt1 ] + %cmp.not.i191.jt1 = icmp eq ptr %8, null + br i1 %cmp.not.i191.jt1, label %cleanup377.jt1, label %if.then.i192.jt1 -if.then.i192: ; preds = %cleanup373 +if.then.i192.jt2: ; preds = %cleanup373.jt2 call void @ares_free_string(ptr noundef nonnull %8) #20 - br label %cleanup377 + br label %cleanup377.jt2 -if.end374: ; preds = %if.end28 +if.then.i192.jt1: ; preds = %cleanup373.jt1 + call void @ares_free_string(ptr noundef nonnull %8) #20 + br label %cleanup377.jt1 + +cleanup377.jt2: ; preds = %if.then.i192.jt2, %cleanup373.jt2 + %cmp.not.i194.jt2 = icmp eq ptr %5, null + br i1 %cmp.not.i194.jt2, label %cleanup378, label %if.then.i195.jt2 + +cleanup377.jt0: ; preds = %if.end28 %add.ptr31 = getelementptr inbounds i8, ptr %add.ptr22, i64 8 %add.ptr31.val = load i8, ptr %add.ptr31, align 1 %conv.i82 = zext i8 %add.ptr31.val to i64 @@ -6559,35 +6571,33 @@ if.end374: ; preds = %if.end28 %conv2.i84 = zext i8 %add.ptr31.val77 to i64 %or.i85 = or disjoint i64 %shl.i83, %conv2.i84 %add.ptr376 = getelementptr inbounds i8, ptr %add.ptr23, i64 %or.i85 - br label %cleanup377 + %cmp.not.i194.jt0 = icmp eq ptr %5, null + br i1 %cmp.not.i194.jt0, label %for.inc, label %if.then.i195.jt0 -cleanup377: ; preds = %if.then.i192, %cleanup373, %if.end21, %if.end374, %if.then39 - %cleanup.dest.slot.0 = phi i32 [ 1, %if.then39 ], [ 0, %if.end374 ], [ 1, %if.end21 ], [ %cleanup.dest.slot.1, %cleanup373 ], [ %cleanup.dest.slot.1, %if.then.i192 ] - %ptr.1 = phi ptr [ %add.ptr23, %if.then39 ], [ %add.ptr376, %if.end374 ], [ %add.ptr22, %if.end21 ], [ %ptr.2, %cleanup373 ], [ %ptr.2, %if.then.i192 ] - %retval.3 = phi i32 [ %cond44, %if.then39 ], [ %retval.2204, %if.end374 ], [ 10, %if.end21 ], [ %retval.4, %cleanup373 ], [ %retval.4, %if.then.i192 ] - %cmp.not.i194 = icmp eq ptr %5, null - br i1 %cmp.not.i194, label %_ZNSt10unique_ptrIA_cZN4node10cares_wrap12_GLOBAL__N_113ParseSoaReplyEPNS1_11EnvironmentEPhiPN2v85LocalINS7_6ObjectEEEE11AresDeleterED2Ev.exit196, label %if.then.i195 +cleanup377.jt1: ; preds = %if.end21, %if.then.i192.jt1, %cleanup373.jt1, %if.then39 + %retval.3.jt1 = phi i32 [ %cond44, %if.then39 ], [ %retval.4.jt1, %cleanup373.jt1 ], [ %retval.4.jt1, %if.then.i192.jt1 ], [ 10, %if.end21 ] + %cmp.not.i194.jt1 = icmp eq ptr %5, null + br i1 %cmp.not.i194.jt1, label %cleanup378, label %if.then.i195.jt1 -if.then.i195: ; preds = %cleanup377 +if.then.i195.jt2: ; preds = %cleanup377.jt2 call void @ares_free_string(ptr noundef nonnull %5) #20 - br label %_ZNSt10unique_ptrIA_cZN4node10cares_wrap12_GLOBAL__N_113ParseSoaReplyEPNS1_11EnvironmentEPhiPN2v85LocalINS7_6ObjectEEEE11AresDeleterED2Ev.exit196 + br label %cleanup378 -_ZNSt10unique_ptrIA_cZN4node10cares_wrap12_GLOBAL__N_113ParseSoaReplyEPNS1_11EnvironmentEPhiPN2v85LocalINS7_6ObjectEEEE11AresDeleterED2Ev.exit196: ; preds = %cleanup377, %if.then.i195 - switch i32 %cleanup.dest.slot.0, label %cleanup378.loopexit [ - i32 0, label %for.inc - i32 2, label %cleanup378 - ] +if.then.i195.jt0: ; preds = %cleanup377.jt0 + call void @ares_free_string(ptr noundef nonnull %5) #20 + br label %for.inc + +if.then.i195.jt1: ; preds = %cleanup377.jt1 + call void @ares_free_string(ptr noundef nonnull %5) #20 + br label %cleanup378 -for.inc: ; preds = %_ZNSt10unique_ptrIA_cZN4node10cares_wrap12_GLOBAL__N_113ParseSoaReplyEPNS1_11EnvironmentEPhiPN2v85LocalINS7_6ObjectEEEE11AresDeleterED2Ev.exit196 +for.inc: ; preds = %cleanup377.jt0, %if.then.i195.jt0 %inc = add nuw nsw i32 %i.0202, 1 %exitcond.not = icmp eq i32 %inc, %4 br i1 %exitcond.not, label %cleanup378, label %for.body, !llvm.loop !35 -cleanup378.loopexit: ; preds = %_ZNSt10unique_ptrIA_cZN4node10cares_wrap12_GLOBAL__N_113ParseSoaReplyEPNS1_11EnvironmentEPhiPN2v85LocalINS7_6ObjectEEEE11AresDeleterED2Ev.exit196 - br label %cleanup378 - -cleanup378: ; preds = %_ZNSt10unique_ptrIA_cZN4node10cares_wrap12_GLOBAL__N_113ParseSoaReplyEPNS1_11EnvironmentEPhiPN2v85LocalINS7_6ObjectEEEE11AresDeleterED2Ev.exit196, %for.inc, %cleanup378.loopexit, %for.cond.preheader, %if.end, %if.then15 - %retval.1 = phi i32 [ %cond20, %if.then15 ], [ 10, %if.end ], [ 0, %for.cond.preheader ], [ %retval.3, %cleanup378.loopexit ], [ 0, %for.inc ], [ 0, %_ZNSt10unique_ptrIA_cZN4node10cares_wrap12_GLOBAL__N_113ParseSoaReplyEPNS1_11EnvironmentEPhiPN2v85LocalINS7_6ObjectEEEE11AresDeleterED2Ev.exit196 ] +cleanup378: ; preds = %for.inc, %if.then.i195.jt2, %cleanup377.jt2, %if.then.i195.jt1, %cleanup377.jt1, %for.cond.preheader, %if.end, %if.then15 + %retval.1 = phi i32 [ %cond20, %if.then15 ], [ 10, %if.end ], [ 0, %for.cond.preheader ], [ %retval.3.jt1, %cleanup377.jt1 ], [ %retval.3.jt1, %if.then.i195.jt1 ], [ 0, %cleanup377.jt2 ], [ 0, %if.then.i195.jt2 ], [ 0, %for.inc ] %cmp.not.i197 = icmp eq ptr %2, null br i1 %cmp.not.i197, label %cleanup379, label %if.then.i198 diff --git a/bench/node/optimized/libnode.crypto_common.ll b/bench/node/optimized/libnode.crypto_common.ll index 5073bc08e08..e31398f1c44 100644 --- a/bench/node/optimized/libnode.crypto_common.ll +++ b/bench/node/optimized/libnode.crypto_common.ll @@ -4067,7 +4067,7 @@ cond.false21: ; preds = %if.end.thread br label %cond.end24 cond.end24: ; preds = %if.end, %cond.false21 - %cond94172177 = phi ptr [ null, %cond.false21 ], [ %call2, %if.end ] + %cond94182187 = phi ptr [ null, %cond.false21 ], [ %call2, %if.end ] %cond25 = phi ptr [ %call23, %cond.false21 ], [ %call2, %if.end ] %call26 = tail call ptr @_ZN4node6crypto12X509ToObjectEPNS_11EnvironmentEP7x509_st(ptr noundef %env, ptr noundef %cond25) br label %cleanup145 @@ -4078,9 +4078,9 @@ if.end39: ; preds = %if.end br i1 %cmp.i.not.i, label %cleanup144.thread, label %land.lhs.true.i if.end39.thread: ; preds = %if.end.thread - %call1.i181 = tail call ptr @OPENSSL_sk_new(ptr noundef null) #17, !noalias !20 - %cmp.i.not.i182 = icmp eq ptr %call1.i181, null - br i1 %cmp.i.not.i182, label %cleanup144.thread, label %if.end10.i + %call1.i191 = tail call ptr @OPENSSL_sk_new(ptr noundef null) #17, !noalias !20 + %cmp.i.not.i192 = icmp eq ptr %call1.i191, null + br i1 %cmp.i.not.i192, label %cleanup144.thread, label %if.end10.i land.lhs.true.i: ; preds = %if.end39 %call8.i = tail call i32 @OPENSSL_sk_push(ptr noundef nonnull %call1.i, ptr noundef nonnull %call2) #17, !noalias !20 @@ -4088,27 +4088,27 @@ land.lhs.true.i: ; preds = %if.end39 br i1 %tobool.not.i, label %if.then.i11.i, label %if.end10.i if.end10.i: ; preds = %if.end39.thread, %land.lhs.true.i - %call496170184193 = phi ptr [ %call4, %land.lhs.true.i ], [ %call495, %if.end39.thread ] - %call1.i185191 = phi ptr [ %call1.i, %land.lhs.true.i ], [ %call1.i181, %if.end39.thread ] - %call1227.i = tail call i32 @OPENSSL_sk_num(ptr noundef %call496170184193) #17, !noalias !20 + %call496180194204 = phi ptr [ %call4, %land.lhs.true.i ], [ %call495, %if.end39.thread ] + %call1.i195201 = phi ptr [ %call1.i, %land.lhs.true.i ], [ %call1.i191, %if.end39.thread ] + %call1227.i = tail call i32 @OPENSSL_sk_num(ptr noundef %call496180194204) #17, !noalias !20 %cmp28.i = icmp sgt i32 %call1227.i, 0 br i1 %cmp28.i, label %for.body.i, label %if.end51 for.cond.i: ; preds = %lor.lhs.false.i %inc.i = add nuw nsw i32 %i.029.i, 1 - %call12.i = tail call i32 @OPENSSL_sk_num(ptr noundef %call496170184193) #17, !noalias !20 + %call12.i = tail call i32 @OPENSSL_sk_num(ptr noundef %call496180194204) #17, !noalias !20 %cmp.i24 = icmp slt i32 %inc.i, %call12.i br i1 %cmp.i24, label %for.body.i, label %if.end51, !llvm.loop !23 for.body.i: ; preds = %if.end10.i, %for.cond.i %i.029.i = phi i32 [ %inc.i, %for.cond.i ], [ 0, %if.end10.i ] - %call15.i = tail call ptr @OPENSSL_sk_value(ptr noundef %call496170184193, i32 noundef %i.029.i) #17, !noalias !20 + %call15.i = tail call ptr @OPENSSL_sk_value(ptr noundef %call496180194204, i32 noundef %i.029.i) #17, !noalias !20 %call16.i = tail call ptr @X509_dup(ptr noundef %call15.i) #17, !noalias !20 %cmp.i6.not.i = icmp eq ptr %call16.i, null br i1 %cmp.i6.not.i, label %if.then.i11.i, label %lor.lhs.false.i lor.lhs.false.i: ; preds = %for.body.i - %call22.i = tail call i32 @OPENSSL_sk_push(ptr noundef nonnull %call1.i185191, ptr noundef nonnull %call16.i) #17, !noalias !20 + %call22.i = tail call i32 @OPENSSL_sk_push(ptr noundef nonnull %call1.i195201, ptr noundef nonnull %call16.i) #17, !noalias !20 %tobool23.not.i = icmp eq i32 %call22.i, 0 br i1 %tobool23.not.i, label %if.then.i.i, label %for.cond.i @@ -4117,8 +4117,8 @@ if.then.i.i: ; preds = %lor.lhs.false.i br label %if.then.i11.i if.then.i11.i: ; preds = %for.body.i, %land.lhs.true.i, %if.then.i.i - %call1.i185192 = phi ptr [ %call1.i, %land.lhs.true.i ], [ %call1.i185191, %if.then.i.i ], [ %call1.i185191, %for.body.i ] - tail call void @OPENSSL_sk_pop_free(ptr noundef nonnull %call1.i185192, ptr noundef nonnull @X509_free) #17, !noalias !20 + %call1.i195202 = phi ptr [ %call1.i, %land.lhs.true.i ], [ %call1.i195201, %if.then.i.i ], [ %call1.i195201, %for.body.i ] + tail call void @OPENSSL_sk_pop_free(ptr noundef nonnull %call1.i195202, ptr noundef nonnull @X509_free) #17, !noalias !20 br label %cleanup144.thread cleanup144.thread: ; preds = %if.end39.thread, %if.then.i11.i, %if.end39 @@ -4131,7 +4131,7 @@ cleanup144.thread: ; preds = %if.end39.thread, %i br label %cleanup145 if.end51: ; preds = %for.cond.i, %if.end10.i - %call54 = tail call ptr @OPENSSL_sk_value(ptr noundef nonnull %call1.i185191, i32 noundef 0) #17 + %call54 = tail call ptr @OPENSSL_sk_value(ptr noundef nonnull %call1.i195201, i32 noundef 0) #17 %cmp.i27.not = icmp eq ptr %call54, null br i1 %cmp.i27.not, label %do.body59, label %do.end62 @@ -4149,20 +4149,20 @@ if.end72: ; preds = %do.end62 %isolate_.i.i = getelementptr inbounds i8, ptr %env, i64 88 %8 = load ptr, ptr %isolate_.i.i, align 8 %call3.i = tail call ptr @_ZN2v87Isolate17GetCurrentContextEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #17 - %call9.i = tail call ptr @OPENSSL_sk_delete(ptr noundef nonnull %call1.i185191, i32 noundef 0) #17 + %call9.i = tail call ptr @OPENSSL_sk_delete(ptr noundef nonnull %call1.i195201, i32 noundef 0) #17 %isolate_data_.i.i.i = getelementptr inbounds i8, ptr %env, i64 96 br label %for.cond.i28 for.cond.i28: ; preds = %for.end.i29, %if.end72 %cert.sroa.0.6 = phi ptr [ %call9.i, %if.end72 ], [ %cert.sroa.0.7, %for.end.i29 ] %object.sroa.0.0.i = phi ptr [ %call65, %if.end72 ], [ %object.sroa.0.1.i, %for.end.i29 ] - %call1321.i = tail call i32 @OPENSSL_sk_num(ptr noundef nonnull %call1.i185191) #17 + %call1321.i = tail call i32 @OPENSSL_sk_num(ptr noundef nonnull %call1.i195201) #17 %cmp22.i = icmp sgt i32 %call1321.i, 0 br i1 %cmp22.i, label %for.body.i30, label %for.end.i29 for.body.i30: ; preds = %for.cond.i28, %for.inc.i %i.023.i = phi i32 [ %inc.i32, %for.inc.i ], [ 0, %for.cond.i28 ] - %call16.i31 = tail call ptr @OPENSSL_sk_value(ptr noundef nonnull %call1.i185191, i32 noundef %i.023.i) #17 + %call16.i31 = tail call ptr @OPENSSL_sk_value(ptr noundef nonnull %call1.i195201, i32 noundef %i.023.i) #17 %call18.i = tail call i32 @X509_check_issued(ptr noundef %call16.i31, ptr noundef %cert.sroa.0.6) #17 %cmp19.not.i = icmp eq i32 %call18.i, 0 br i1 %cmp19.not.i, label %if.end.i34, label %for.inc.i @@ -4205,7 +4205,7 @@ _ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_I br i1 %tobool.i.i.i, label %if.end58.i, label %if.then.i62 if.end58.i: ; preds = %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i, %if.end5.i.i.i - %call61.i = tail call ptr @OPENSSL_sk_delete(ptr noundef nonnull %call1.i185191, i32 noundef %i.023.i) #17 + %call61.i = tail call ptr @OPENSSL_sk_delete(ptr noundef nonnull %call1.i195201, i32 noundef %i.023.i) #17 %tobool.not.i.i15.i = icmp eq ptr %cert.sroa.0.6, null br i1 %tobool.not.i.i15.i, label %for.end.i29, label %if.then.i.i16.i @@ -4215,7 +4215,7 @@ if.then.i.i16.i: ; preds = %if.end58.i for.inc.i: ; preds = %for.body.i30 %inc.i32 = add nuw nsw i32 %i.023.i, 1 - %call13.i = tail call i32 @OPENSSL_sk_num(ptr noundef nonnull %call1.i185191) #17 + %call13.i = tail call i32 @OPENSSL_sk_num(ptr noundef nonnull %call1.i195201) #17 %cmp.i33 = icmp slt i32 %inc.i32, %call13.i br i1 %cmp.i33, label %for.body.i30, label %for.end.i29, !llvm.loop !24 @@ -4223,7 +4223,7 @@ for.end.i29: ; preds = %for.inc.i, %if.then %cert.sroa.0.7 = phi ptr [ %call61.i, %if.end58.i ], [ %call61.i, %if.then.i.i16.i ], [ %cert.sroa.0.6, %for.cond.i28 ], [ %cert.sroa.0.6, %for.inc.i ] %i.020.i = phi i32 [ %i.023.i, %if.end58.i ], [ %i.023.i, %if.then.i.i16.i ], [ 0, %for.cond.i28 ], [ %inc.i32, %for.inc.i ] %object.sroa.0.1.i = phi ptr [ %call20.i, %if.end58.i ], [ %call20.i, %if.then.i.i16.i ], [ %object.sroa.0.0.i, %for.cond.i28 ], [ %object.sroa.0.0.i, %for.inc.i ] - %call64.i = tail call i32 @OPENSSL_sk_num(ptr noundef nonnull %call1.i185191) #17 + %call64.i = tail call i32 @OPENSSL_sk_num(ptr noundef nonnull %call1.i195201) #17 %cmp65.i = icmp eq i32 %i.020.i, %call64.i br i1 %cmp65.i, label %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit, label %for.cond.i28, !llvm.loop !25 @@ -4234,23 +4234,24 @@ _ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS if.end85: ; preds = %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit %18 = load ptr, ptr %isolate_.i.i, align 8 %call3.i36 = tail call ptr @_ZN2v87Isolate17GetCurrentContextEv(ptr noundef nonnull align 1 dereferenceable(1) %18) #17 - br label %while.cond.i + %call9.i38148 = tail call i32 @X509_check_issued(ptr noundef %cert.sroa.0.7, ptr noundef %cert.sroa.0.7) #17 + %cmp.not.i149 = icmp eq i32 %call9.i38148, 0 + br i1 %cmp.not.i149, label %if.end98, label %while.body.i -while.cond.i: ; preds = %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i, %if.end85 - %cert.sroa.0.9 = phi ptr [ %cert.sroa.0.7, %if.end85 ], [ %cert.sroa.0.11, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ] - %issuer_chain.sroa.0.0.i = phi ptr [ %object.sroa.0.1.i, %if.end85 ], [ %issuer_chain.sroa.0.233.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ] - %call9.i38 = call i32 @X509_check_issued(ptr noundef %cert.sroa.0.9, ptr noundef %cert.sroa.0.9) #17 - %cmp.not.i = icmp eq i32 %call9.i38, 0 - br i1 %cmp.not.i, label %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit, label %while.body.i - -while.body.i: ; preds = %while.cond.i +while.body.i: ; preds = %if.end85, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt0.i + %issuer_chain.sroa.0.0.i151 = phi ptr [ %call16.i41, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt0.i ], [ %object.sroa.0.1.i, %if.end85 ] + %cert.sroa.0.9150 = phi ptr [ %20, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt0.i ], [ %cert.sroa.0.7, %if.end85 ] %19 = load ptr, ptr %ssl, align 8 %call11.i = call ptr @SSL_get_SSL_CTX(ptr noundef %19) #17 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %issuer.i.i) %call.i.i = call ptr @SSL_CTX_get_cert_store(ptr noundef %call11.i) #17, !noalias !26 %call1.i.i = call ptr @X509_STORE_CTX_new() #17, !noalias !26 %cmp.not.i.i = icmp eq ptr %call1.i.i, null - br i1 %cmp.not.i.i, label %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit.sink.split, label %land.lhs.true.i.i + br i1 %cmp.not.i.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread.i, label %land.lhs.true.i.i + +_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread.i: ; preds = %while.body.i + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %issuer.i.i) + br label %if.end98 land.lhs.true.i.i: ; preds = %while.body.i %call4.i.i = call i32 @X509_STORE_CTX_init(ptr noundef nonnull %call1.i.i, ptr noundef %call.i.i, ptr noundef null, ptr noundef null) #17, !noalias !26 @@ -4258,25 +4259,26 @@ land.lhs.true.i.i: ; preds = %while.body.i br i1 %cmp5.i.i, label %land.lhs.true6.i.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread24.i land.lhs.true6.i.i: ; preds = %land.lhs.true.i.i - %call8.i.i = call i32 @X509_STORE_CTX_get1_issuer(ptr noundef nonnull %issuer.i.i, ptr noundef nonnull %call1.i.i, ptr noundef %cert.sroa.0.9) #17, !noalias !26 + %call8.i.i = call i32 @X509_STORE_CTX_get1_issuer(ptr noundef nonnull %issuer.i.i, ptr noundef nonnull %call1.i.i, ptr noundef %cert.sroa.0.9150) #17, !noalias !26 %cmp9.i.i = icmp eq i32 %call8.i.i, 1 br i1 %cmp9.i.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread24.i _ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread24.i: ; preds = %land.lhs.true6.i.i, %land.lhs.true.i.i call void @X509_STORE_CTX_free(ptr noundef nonnull %call1.i.i) #17, !noalias !26 - br label %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit.sink.split + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %issuer.i.i) + br label %if.end98 _ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.i: ; preds = %land.lhs.true6.i.i %20 = load ptr, ptr %issuer.i.i, align 8, !noalias !26 call void @X509_STORE_CTX_free(ptr noundef nonnull %call1.i.i) #17, !noalias !26 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %issuer.i.i) %cmp.i.not.i39 = icmp eq ptr %20, null - br i1 %cmp.i.not.i39, label %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit, label %if.end.i40 + br i1 %cmp.i.not.i39, label %if.end98, label %if.end.i40 if.end.i40: ; preds = %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.i %call16.i41 = call ptr @_ZN4node6crypto12X509ToObjectEPNS_11EnvironmentEP7x509_st(ptr noundef nonnull %env, ptr noundef nonnull %20) %cmp.i.i.not.i42 = icmp eq ptr %call16.i41, null - br i1 %cmp.i.i.not.i42, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.sink.split.i, label %if.end.i.i43 + br i1 %cmp.i.i.not.i42, label %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit, label %if.end.i.i43 if.end.i.i43: ; preds = %if.end.i40 %21 = load ptr, ptr %isolate_data_.i.i.i, align 8 @@ -4306,51 +4308,39 @@ if.end5.i.i.i54: ; preds = %if.end.i.i.i50 br i1 %cmp7.i.i.i57, label %if.end54.i, label %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i47 _ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i47: ; preds = %if.end5.i.i.i54, %if.end.i.i.i50, %if.end.i.i43 - %call29.i.i48 = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %issuer_chain.sroa.0.0.i, ptr %call3.i36, ptr %22, ptr nonnull %call16.i41) #17 + %call29.i.i48 = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %issuer_chain.sroa.0.0.i151, ptr %call3.i36, ptr %22, ptr nonnull %call16.i41) #17 %tobool.i.i.i49 = trunc i16 %call29.i.i48 to i1 - br i1 %tobool.i.i.i49, label %if.end54.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.sink.split.i + br i1 %tobool.i.i.i49, label %if.end54.i, label %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit if.end54.i: ; preds = %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i47, %if.end5.i.i.i54 - %cmp57.i = icmp eq ptr %cert.sroa.0.9, %20 - br i1 %cmp57.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.sink.split.i, label %if.end59.i + %cmp57.i = icmp eq ptr %cert.sroa.0.9150, %20 + br i1 %cmp57.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt3.i, label %if.end59.i if.end59.i: ; preds = %if.end54.i - %tobool.not.i.i.i.i9.i = icmp eq ptr %cert.sroa.0.9, null - br i1 %tobool.not.i.i.i.i9.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.sink.split.i - -_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.sink.split.i: ; preds = %if.end59.i, %if.end54.i, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i47, %if.end.i40 - %cert.sroa.0.10 = phi ptr [ %cert.sroa.0.9, %if.end.i40 ], [ %cert.sroa.0.9, %if.end54.i ], [ %20, %if.end59.i ], [ %cert.sroa.0.9, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i47 ] - %.sink.i = phi ptr [ %20, %if.end.i40 ], [ %20, %if.end54.i ], [ %cert.sroa.0.9, %if.end59.i ], [ %20, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i47 ] - %issuer_chain.sroa.0.233.ph.i = phi ptr [ %issuer_chain.sroa.0.0.i, %if.end.i40 ], [ %call16.i41, %if.end54.i ], [ %call16.i41, %if.end59.i ], [ %issuer_chain.sroa.0.0.i, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i47 ] - %cleanup.dest.slot.032.ph.i = phi i32 [ 1, %if.end.i40 ], [ 3, %if.end54.i ], [ 0, %if.end59.i ], [ 1, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i47 ] - call void @X509_free(ptr noundef nonnull %.sink.i) #17 - br label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i - -_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i: ; preds = %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.sink.split.i, %if.end59.i - %cert.sroa.0.11 = phi ptr [ %cert.sroa.0.10, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.sink.split.i ], [ %20, %if.end59.i ] - %issuer_chain.sroa.0.233.i = phi ptr [ %issuer_chain.sroa.0.233.ph.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.sink.split.i ], [ %call16.i41, %if.end59.i ] - %cleanup.dest.slot.032.i = phi i32 [ %cleanup.dest.slot.032.ph.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.sink.split.i ], [ 0, %if.end59.i ] - switch i32 %cleanup.dest.slot.032.i, label %unreachable.i [ - i32 0, label %while.cond.i - i32 3, label %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit - i32 1, label %if.then.i62 - ], !llvm.loop !29 - -unreachable.i: ; preds = %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i - unreachable + %tobool.not.i.i.i.i9.i = icmp eq ptr %cert.sroa.0.9150, null + br i1 %tobool.not.i.i.i.i9.i, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt0.i, label %if.then.i.i.i.i10.i -_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit.sink.split: ; preds = %while.body.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread24.i - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %issuer.i.i) - br label %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit +if.then.i.i.i.i10.i: ; preds = %if.end59.i + call void @X509_free(ptr noundef nonnull %cert.sroa.0.9150) #17 + br label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt0.i + +_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt0.i: ; preds = %if.then.i.i.i.i10.i, %if.end59.i + %call9.i38 = call i32 @X509_check_issued(ptr noundef nonnull %20, ptr noundef nonnull %20) #17 + %cmp.not.i = icmp eq i32 %call9.i38, 0 + br i1 %cmp.not.i, label %if.end98, label %while.body.i -_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit: ; preds = %while.cond.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit.sink.split - %cert.sroa.0.12 = phi ptr [ %cert.sroa.0.9, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit.sink.split ], [ %cert.sroa.0.11, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ], [ %cert.sroa.0.9, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.i ], [ %cert.sroa.0.9, %while.cond.i ] - %retval.sroa.0.2.i = phi ptr [ %issuer_chain.sroa.0.0.i, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit.sink.split ], [ %issuer_chain.sroa.0.233.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ], [ %issuer_chain.sroa.0.0.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.i ], [ %issuer_chain.sroa.0.0.i, %while.cond.i ] - %cmp.i.i318.not = icmp eq ptr %retval.sroa.0.2.i, null - br i1 %cmp.i.i318.not, label %if.then.i62, label %if.end98 +_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt3.i: ; preds = %if.end54.i + call void @X509_free(ptr noundef nonnull %20) #17 + br label %if.end98 + +_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit: ; preds = %if.end.i40, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i47 + call void @X509_free(ptr noundef nonnull %20) #17 + br label %if.then.i62 -if.end98: ; preds = %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit - %call101 = call i32 @X509_check_issued(ptr noundef %cert.sroa.0.12, ptr noundef %cert.sroa.0.12) #17 +if.end98: ; preds = %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt0.i, %if.end85, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread24.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread.i, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt3.i + %cert.sroa.0.9137 = phi ptr [ %cert.sroa.0.9150, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt3.i ], [ %cert.sroa.0.9150, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread.i ], [ %cert.sroa.0.9150, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread24.i ], [ %cert.sroa.0.7, %if.end85 ], [ %cert.sroa.0.9150, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.i ], [ %20, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt0.i ] + %retval.sroa.0.2.i.ph = phi ptr [ %call16.i41, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt3.i ], [ %issuer_chain.sroa.0.0.i151, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread.i ], [ %issuer_chain.sroa.0.0.i151, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.thread24.i ], [ %object.sroa.0.1.i, %if.end85 ], [ %issuer_chain.sroa.0.0.i151, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit.i ], [ %call16.i41, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.jt0.i ] + %call101 = call i32 @X509_check_issued(ptr noundef %cert.sroa.0.9137, ptr noundef %cert.sroa.0.9137) #17 %cmp102 = icmp eq i32 %call101, 0 br i1 %cmp102, label %land.lhs.true103, label %if.then.i62 @@ -4364,18 +4354,18 @@ land.lhs.true103: ; preds = %if.end98 %32 = load ptr, ptr %isolate_data_.i.i.i, align 8 %issuercert_string_.i.i = getelementptr inbounds i8, ptr %32, i64 1224 %33 = load ptr, ptr %issuercert_string_.i.i, align 8 - %call137 = call fastcc noundef zeroext i1 @_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE(ptr %call2.i, ptr nonnull %retval.sroa.0.2.i, ptr %33, ptr nonnull %retval.sroa.0.2.i) + %call137 = call fastcc noundef zeroext i1 @_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE(ptr %call2.i, ptr nonnull %retval.sroa.0.2.i.ph, ptr %33, ptr nonnull %retval.sroa.0.2.i.ph) %spec.select = select i1 %call137, ptr %call65, ptr null br label %if.then.i62 -if.then.i62: ; preds = %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i, %if.end.i34, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i, %land.lhs.true103, %do.end62, %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit, %if.end98 - %retval.sroa.0.2124 = phi ptr [ %call65, %if.end98 ], [ null, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit ], [ null, %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit ], [ null, %do.end62 ], [ %spec.select, %land.lhs.true103 ], [ null, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ], [ null, %if.end.i34 ], [ null, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i ] - %cert.sroa.0.1123 = phi ptr [ %cert.sroa.0.12, %if.end98 ], [ %cert.sroa.0.12, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit ], [ %cert.sroa.0.7, %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit ], [ null, %do.end62 ], [ %cert.sroa.0.12, %land.lhs.true103 ], [ %cert.sroa.0.11, %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit15.i ], [ %cert.sroa.0.6, %if.end.i34 ], [ %cert.sroa.0.6, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i ] - call void @OPENSSL_sk_pop_free(ptr noundef nonnull %call1.i185191, ptr noundef nonnull @X509_free) #17 +if.then.i62: ; preds = %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i, %if.end.i34, %land.lhs.true103, %do.end62, %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit, %if.end98, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit + %retval.sroa.0.2124 = phi ptr [ null, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit ], [ %call65, %if.end98 ], [ null, %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit ], [ null, %do.end62 ], [ %spec.select, %land.lhs.true103 ], [ null, %if.end.i34 ], [ null, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i ] + %cert.sroa.0.1123 = phi ptr [ %cert.sroa.0.9150, %_ZN4node6crypto12_GLOBAL__N_117GetLastIssuedCertEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEERKS2_I6ssl_stNS4_IS8_XadL_Z8SSL_freeEEEEEN2v85LocalINSD_6ObjectEEEPNS_11EnvironmentE.exit ], [ %cert.sroa.0.9137, %if.end98 ], [ %cert.sroa.0.7, %_ZN4node6crypto12_GLOBAL__N_122AddIssuerChainToObjectEPSt10unique_ptrI7x509_stNS_15FunctionDeleterIS3_XadL_Z9X509_freeEEEEEN2v85LocalINS8_6ObjectEEEOS2_I13stack_st_X509NS0_18StackOfX509DeleterEEPNS_11EnvironmentE.exit ], [ null, %do.end62 ], [ %cert.sroa.0.9137, %land.lhs.true103 ], [ %cert.sroa.0.6, %if.end.i34 ], [ %cert.sroa.0.6, %_ZN4node6crypto12_GLOBAL__N_13SetIN2v86ObjectEEEbNS3_5LocalINS3_7ContextEEENS5_IS4_EENS5_INS3_5ValueEEENS3_10MaybeLocalIT_EE.exit.i ] + call void @OPENSSL_sk_pop_free(ptr noundef nonnull %call1.i195201, ptr noundef nonnull @X509_free) #17 br label %cleanup145 cleanup145: ; preds = %if.then.i62, %cleanup144.thread, %cond.end24 - %cert.sroa.0.0 = phi ptr [ %cond94172177, %cond.end24 ], [ %cert.sroa.0.5102, %cleanup144.thread ], [ %cert.sroa.0.1123, %if.then.i62 ] + %cert.sroa.0.0 = phi ptr [ %cond94182187, %cond.end24 ], [ %cert.sroa.0.5102, %cleanup144.thread ], [ %cert.sroa.0.1123, %if.then.i62 ] %retval.sroa.0.0 = phi ptr [ %call26, %cond.end24 ], [ %7, %cleanup144.thread ], [ %retval.sroa.0.2124, %if.then.i62 ] %cmp.not.i64 = icmp eq ptr %cert.sroa.0.0, null br i1 %cmp.not.i64, label %_ZNSt10unique_ptrI7x509_stN4node15FunctionDeleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit67, label %if.then.i65 @@ -4834,7 +4824,7 @@ sw.default.us.i: ; preds = %for.body.us.i for.inc.us.i: ; preds = %sw.default.us.i %inc.us.i = add nuw i64 %i.09.us.i, 1 %exitcond27.not.i = icmp eq i64 %inc.us.i, %length - br i1 %exitcond27.not.i, label %if.then, label %for.body.us.i, !llvm.loop !30 + br i1 %exitcond27.not.i, label %if.then, label %for.body.us.i, !llvm.loop !29 for.body.i: ; preds = %for.body.lr.ph.i, %for.inc.i %i.09.i = phi i64 [ %inc.i, %for.inc.i ], [ 0, %for.body.lr.ph.i ] @@ -4855,7 +4845,7 @@ sw.default.i: ; preds = %for.body.i for.inc.i: ; preds = %sw.default.i %inc.i = add nuw i64 %i.09.i, 1 %exitcond.not.i = icmp eq i64 %inc.i, %length - br i1 %exitcond.not.i, label %if.then, label %for.body.i, !llvm.loop !30 + br i1 %exitcond.not.i, label %if.then, label %for.body.i, !llvm.loop !29 if.then: ; preds = %for.inc.i, %for.inc.us.i, %entry %cmp.not = icmp eq ptr %safe_prefix, null @@ -4949,7 +4939,7 @@ if.else40: ; preds = %if.else25 for.inc: ; preds = %if.then16, %if.then37, %if.else40, %if.then22 %inc = add nuw i64 %j.023, 1 %exitcond.not = icmp eq i64 %inc, %umax - br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !31 + br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !30 for.end: ; preds = %for.inc %18 = load ptr, ptr %out, align 8 @@ -5451,4 +5441,3 @@ attributes #22 = { nounwind allocsize(1) } !28 = distinct !{!28, !"_ZN4node6crypto18SSL_CTX_get_issuerEP10ssl_ctx_stP7x509_st"} !29 = distinct !{!29, !12} !30 = distinct !{!30, !12} -!31 = distinct !{!31, !12} diff --git a/bench/node/optimized/libnode.node_file.ll b/bench/node/optimized/libnode.node_file.ll index a5a2235685b..0d5f5dedfdb 100644 --- a/bench/node/optimized/libnode.node_file.ll +++ b/bench/node/optimized/libnode.node_file.ll @@ -44708,13 +44708,13 @@ entry: %call.i.i = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %path.i) #30 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(8) %path.i, ptr noundef %call.i.i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i) #30 %cmp.i.i = icmp eq ptr %6, null - br i1 %cmp.i.i, label %if.then.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit.i + br i1 %cmp.i.i, label %if.then.i.i, label %while.cond.i if.then.i.i: ; preds = %entry call void @_ZSt19__throw_logic_errorPKc(ptr noundef nonnull @.str.521) #32 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit.i: ; preds = %entry +while.cond.i: ; preds = %entry %call.i.i.i = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %6) #30 %add.ptr.i.i = getelementptr inbounds i8, ptr %6, i64 %call.i.i.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(32) %path.i, ptr noundef nonnull %6, ptr noundef nonnull %add.ptr.i.i) @@ -44723,11 +44723,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit.i: ; %7 = load i64, ptr %result.i, align 8 %conv.i = trunc i64 %7 to i32 %continuation_data_.i52.i = getelementptr inbounds i8, ptr %1, i64 528 - br label %while.cond.i - -while.cond.i: ; preds = %cleanup.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit.i - %err.0.i = phi i32 [ %conv.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit.i ], [ -17, %cleanup.i ] - switch i32 %err.0.i, label %sw.default.i [ + switch i32 %conv.i, label %sw.default.i [ i32 0, label %sw.bb.i i32 -13, label %sw.bb15.i i32 -20, label %sw.bb15.i @@ -44735,6 +44731,10 @@ while.cond.i: ; preds = %cleanup.i, %_ZNSt7_ i32 -2, label %sw.bb17.i ] +while.cond.jt4294967279.i: ; preds = %if.else23.i + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %dirname.i) #30 + br label %sw.default.i + sw.bb.i: ; preds = %while.cond.i %8 = load ptr, ptr %continuation_data_.i52.i, align 8 %paths_.i.i = getelementptr inbounds i8, ptr %8, i64 32 @@ -44773,17 +44773,18 @@ if.then.i33.i: ; preds = %if.else.i br label %_ZN4node2fs18FSContinuationData17MaybeSetFirstPathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit35.i _ZN4node2fs18FSContinuationData17MaybeSetFirstPathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit35.i: ; preds = %if.then.i33.i, %if.else.i - call void @uv_fs_req_cleanup(ptr noundef %req) #30 + call void @uv_fs_req_cleanup(ptr noundef nonnull %req) #30 %call11.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %path.i) #30 %15 = load ptr, ptr %continuation_data_.i52.i, align 8 %mode_.i.i = getelementptr inbounds i8, ptr %15, i64 24 %16 = load i32, ptr %mode_.i.i, align 8 - %call14.i = call noundef i32 @_ZN4node2fs11MKDirpAsyncEP9uv_loop_sP7uv_fs_sPKciPFvS4_E(ptr noundef %5, ptr noundef %req, ptr noundef %call11.i, i32 noundef %16, ptr noundef null) + %call14.i = call noundef i32 @_ZN4node2fs11MKDirpAsyncEP9uv_loop_sP7uv_fs_sPKciPFvS4_E(ptr noundef %5, ptr noundef nonnull %req, ptr noundef %call11.i, i32 noundef %16, ptr noundef null) br label %"_ZZN4node2fs11MKDirpAsyncEP9uv_loop_sP7uv_fs_sPKciPFvS4_EENK3$_0clES4_.exit" sw.bb15.i: ; preds = %while.cond.i, %while.cond.i, %while.cond.i %17 = load ptr, ptr %continuation_data_.i52.i, align 8 - %conv.i.i = sext i32 %err.0.i to i64 + %sext.i = shl i64 %7, 32 + %conv.i.i = ashr exact i64 %sext.i, 32 %req_.i38.i = getelementptr inbounds i8, ptr %17, i64 16 %18 = load ptr, ptr %req_.i38.i, align 8 %result2.i39.i = getelementptr inbounds i8, ptr %18, i64 88 @@ -44863,25 +44864,23 @@ if.else23.i: ; preds = %_ZStneIcSt11char_tr %30 = load ptr, ptr %_M_finish.i54.i, align 8 %31 = load ptr, ptr %paths_.i53.i, align 8 %cmp27.i = icmp eq ptr %30, %31 - br i1 %cmp27.i, label %cleanup.i, label %cleanup.thread.i, !llvm.loop !196 + br i1 %cmp27.i, label %while.cond.jt4294967279.i, label %cleanup.thread.i, !llvm.loop !196 cleanup.thread.i: ; preds = %if.else23.i, %if.else.i.i50.i, %if.then.i.i48.i - call void @uv_fs_req_cleanup(ptr noundef %req) #30 + call void @uv_fs_req_cleanup(ptr noundef nonnull %req) #30 %call31.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %path.i) #30 %32 = load ptr, ptr %continuation_data_.i52.i, align 8 %mode_.i60.i = getelementptr inbounds i8, ptr %32, i64 24 %33 = load i32, ptr %mode_.i60.i, align 8 - %call34.i = call noundef i32 @_ZN4node2fs11MKDirpAsyncEP9uv_loop_sP7uv_fs_sPKciPFvS4_E(ptr noundef %5, ptr noundef %req, ptr noundef %call31.i, i32 noundef %33, ptr noundef null) + %call34.i = call noundef i32 @_ZN4node2fs11MKDirpAsyncEP9uv_loop_sP7uv_fs_sPKciPFvS4_E(ptr noundef %5, ptr noundef nonnull %req, ptr noundef %call31.i, i32 noundef %33, ptr noundef null) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %dirname.i) #30 br label %"_ZZN4node2fs11MKDirpAsyncEP9uv_loop_sP7uv_fs_sPKciPFvS4_EENK3$_0clES4_.exit" -cleanup.i: ; preds = %if.else23.i - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %dirname.i) #30 - br label %while.cond.i - -sw.default.i: ; preds = %while.cond.i - call void @uv_fs_req_cleanup(ptr noundef %req) #30 - %conv35.i = sext i32 %err.0.i to i64 +sw.default.i: ; preds = %while.cond.jt4294967279.i, %while.cond.i + %err.016.i = phi i64 [ -17, %while.cond.jt4294967279.i ], [ %7, %while.cond.i ] + call void @uv_fs_req_cleanup(ptr noundef nonnull %req) #30 + %sext17.i = shl i64 %err.016.i, 32 + %conv35.i = ashr exact i64 %sext17.i, 32 %34 = inttoptr i64 %conv35.i to ptr store ptr %34, ptr %req, align 8 %call37.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %path.i) #30 diff --git a/bench/nuklear/optimized/unity.c.ll b/bench/nuklear/optimized/unity.c.ll index eb48ea4ed7d..3ffd343a19e 100644 --- a/bench/nuklear/optimized/unity.c.ll +++ b/bench/nuklear/optimized/unity.c.ll @@ -77623,7 +77623,7 @@ if.end49: ; preds = %do.body28.i, %if.en ; Function Attrs: nounwind uwtable define internal fastcc void @nk_textedit_key(ptr noundef %state, i32 noundef range(i32 -2147483648, 30) %key, i32 noundef %shift_mod, ptr noundef %font, float noundef %row_height) unnamed_addr #17 { -entry: +retry: %unicode.i583 = alloca i32, align 4 %unicode.i446 = alloca i32, align 4 %unicode.i = alloca i32, align 4 @@ -77636,11 +77636,7 @@ entry: %find358 = alloca %struct.nk_text_find, align 4 %find384 = alloca %struct.nk_text_find, align 4 %single_line = getelementptr inbounds i8, ptr %state, i64 184 - br label %retry - -retry: ; preds = %retry.backedge, %entry - %key.addr.0 = phi i32 [ %key, %entry ], [ %key.addr.0.be, %retry.backedge ] - switch i32 %key.addr.0, label %sw.epilog [ + switch i32 %key, label %sw.epilog [ i32 18, label %sw.bb355 i32 17, label %sw.bb310 i32 20, label %sw.bb294 @@ -77715,7 +77711,7 @@ if.then26: ; preds = %sw.bb17 store i8 0, ptr %mode18, align 4 br label %sw.epilog -sw.bb29: ; preds = %retry +sw.bb29: ; preds = %sw.bb166, %retry %tobool.not = icmp eq i32 %shift_mod, 0 br i1 %tobool.not, label %if.else, label %if.then30 @@ -77826,7 +77822,7 @@ if.end50: ; preds = %if.else42, %if.then store i8 0, ptr %has_preferred_x51, align 1 br label %sw.epilog -sw.bb53: ; preds = %retry +sw.bb53: ; preds = %sw.bb119, %retry %tobool54.not = icmp eq i32 %shift_mod, 0 %select_start61 = getelementptr inbounds i8, ptr %state, i64 172 %18 = load i32, ptr %select_start61, align 4 @@ -78116,11 +78112,7 @@ if.else114: ; preds = %if.else108 sw.bb119: ; preds = %retry %45 = load i8, ptr %single_line, align 8 %tobool120.not = icmp eq i8 %45, 0 - br i1 %tobool120.not, label %if.end122, label %retry.backedge - -retry.backedge: ; preds = %sw.bb119, %sw.bb166 - %key.addr.0.be = phi i32 [ 13, %sw.bb119 ], [ 12, %sw.bb166 ] - br label %retry + br i1 %tobool120.not, label %if.end122, label %sw.bb53 if.end122: ; preds = %sw.bb119 %tobool123.not = icmp eq i32 %shift_mod, 0 @@ -78155,10 +78147,10 @@ if.then130: ; preds = %if.else125 br label %if.end132 if.end132.thread: ; preds = %if.then.i367, %if.else125 - %len.i369638 = getelementptr inbounds i8, ptr %state, i64 144 - %49 = load i32, ptr %len.i369638, align 8 - %select_start.i370639 = getelementptr inbounds i8, ptr %state, i64 172 - %select_end.i371640 = getelementptr inbounds i8, ptr %state, i64 176 + %len.i369639 = getelementptr inbounds i8, ptr %state, i64 144 + %49 = load i32, ptr %len.i369639, align 8 + %select_start.i370640 = getelementptr inbounds i8, ptr %state, i64 172 + %select_end.i371641 = getelementptr inbounds i8, ptr %state, i64 176 br label %if.end16.i379 if.end132: ; preds = %if.else.i365, %if.then130 @@ -78199,10 +78191,10 @@ if.then13.i383: ; preds = %if.end9.i377 br label %if.end16.i379 if.end16.i379: ; preds = %if.end132.thread, %if.then13.i383, %if.end9.i377, %if.end132 - %select_end.i371644 = phi ptr [ %select_end.i371640, %if.end132.thread ], [ %select_end.i371, %if.then13.i383 ], [ %select_end.i371, %if.end9.i377 ], [ %select_end.i371, %if.end132 ] - %select_start.i370643 = phi ptr [ %select_start.i370639, %if.end132.thread ], [ %select_start.i370, %if.then13.i383 ], [ %select_start.i370, %if.end9.i377 ], [ %select_start.i370, %if.end132 ] + %select_end.i371645 = phi ptr [ %select_end.i371641, %if.end132.thread ], [ %select_end.i371, %if.then13.i383 ], [ %select_end.i371, %if.end9.i377 ], [ %select_end.i371, %if.end132 ] + %select_start.i370644 = phi ptr [ %select_start.i370640, %if.end132.thread ], [ %select_start.i370, %if.then13.i383 ], [ %select_start.i370, %if.end9.i377 ], [ %select_start.i370, %if.end132 ] %55 = phi i32 [ %49, %if.end132.thread ], [ %52, %if.then13.i383 ], [ %52, %if.end9.i377 ], [ %52, %if.end132 ] - %len.i369642 = phi ptr [ %len.i369638, %if.end132.thread ], [ %len.i369, %if.then13.i383 ], [ %len.i369, %if.end9.i377 ], [ %len.i369, %if.end132 ] + %len.i369643 = phi ptr [ %len.i369639, %if.end132.thread ], [ %len.i369, %if.then13.i383 ], [ %len.i369, %if.end9.i377 ], [ %len.i369, %if.end132 ] %cursor17.i380 = getelementptr inbounds i8, ptr %state, i64 168 %56 = load i32, ptr %cursor17.i380, align 8 %cmp18.i381 = icmp sgt i32 %56, %55 @@ -78321,9 +78313,9 @@ if.end154: ; preds = %nk_textedit_get_wid br i1 %72, label %for.body, label %for.end, !llvm.loop !256 for.end: ; preds = %if.end154, %nk_textedit_get_width.exit, %if.then137 - %73 = load i32, ptr %len.i369642, align 8 - %74 = load i32, ptr %select_start.i370643, align 4 - %75 = load i32, ptr %select_end.i371644, align 8 + %73 = load i32, ptr %len.i369643, align 8 + %74 = load i32, ptr %select_start.i370644, align 4 + %75 = load i32, ptr %select_end.i371645, align 8 %cmp.not.i392 = icmp eq i32 %74, %75 br i1 %cmp.not.i392, label %if.end16.i399, label %if.then.i393 @@ -78332,7 +78324,7 @@ if.then.i393: ; preds = %for.end br i1 %cmp2.i394, label %if.then3.i406, label %if.end.i395 if.then3.i406: ; preds = %if.then.i393 - store i32 %73, ptr %select_start.i370643, align 4 + store i32 %73, ptr %select_start.i370644, align 4 br label %if.end.i395 if.end.i395: ; preds = %if.then3.i406, %if.then.i393 @@ -78341,7 +78333,7 @@ if.end.i395: ; preds = %if.then3.i406, %if. br i1 %cmp6.i396, label %if.then7.i405, label %if.end9.i397 if.then7.i405: ; preds = %if.end.i395 - store i32 %73, ptr %select_end.i371644, align 8 + store i32 %73, ptr %select_end.i371645, align 8 br label %if.end9.i397 if.end9.i397: ; preds = %if.then7.i405, %if.end.i395 @@ -78369,13 +78361,13 @@ nk_textedit_clamp.exit407: ; preds = %if.end16.i399, %if. br i1 %tobool123.not, label %sw.epilog, label %if.then161 if.then161: ; preds = %nk_textedit_clamp.exit407 - store i32 %79, ptr %select_end.i371644, align 8 + store i32 %79, ptr %select_end.i371645, align 8 br label %sw.epilog sw.bb166: ; preds = %retry %80 = load i8, ptr %single_line, align 8 %tobool172.not = icmp eq i8 %80, 0 - br i1 %tobool172.not, label %if.end174, label %retry.backedge + br i1 %tobool172.not, label %if.end174, label %sw.bb29 if.end174: ; preds = %sw.bb166 %tobool175.not = icmp eq i32 %shift_mod, 0 @@ -78417,10 +78409,10 @@ nk_textedit_move_to_first.exit426: ; preds = %if.then.i419, %if.t br label %if.end184.thread if.end184.thread: ; preds = %if.then.i414, %if.else177, %nk_textedit_move_to_first.exit426 - %len.i427647 = getelementptr inbounds i8, ptr %state, i64 144 - %85 = load i32, ptr %len.i427647, align 8 - %select_start.i428648 = getelementptr inbounds i8, ptr %state, i64 172 - %select_end.i429649 = getelementptr inbounds i8, ptr %state, i64 176 + %len.i427648 = getelementptr inbounds i8, ptr %state, i64 144 + %85 = load i32, ptr %len.i427648, align 8 + %select_start.i428649 = getelementptr inbounds i8, ptr %state, i64 172 + %select_end.i429650 = getelementptr inbounds i8, ptr %state, i64 176 br label %if.end16.i437 if.then.i431: ; preds = %if.then176 @@ -78456,10 +78448,10 @@ if.then13.i441: ; preds = %if.end9.i435 br label %if.end16.i437 if.end16.i437: ; preds = %if.end184.thread, %if.then13.i441, %if.end9.i435 - %select_end.i429653 = phi ptr [ %select_end.i429649, %if.end184.thread ], [ %select_end.i429, %if.then13.i441 ], [ %select_end.i429, %if.end9.i435 ] - %select_start.i428652 = phi ptr [ %select_start.i428648, %if.end184.thread ], [ %select_start.i428, %if.then13.i441 ], [ %select_start.i428, %if.end9.i435 ] + %select_end.i429654 = phi ptr [ %select_end.i429650, %if.end184.thread ], [ %select_end.i429, %if.then13.i441 ], [ %select_end.i429, %if.end9.i435 ] + %select_start.i428653 = phi ptr [ %select_start.i428649, %if.end184.thread ], [ %select_start.i428, %if.then13.i441 ], [ %select_start.i428, %if.end9.i435 ] %89 = phi i32 [ %85, %if.end184.thread ], [ %86, %if.then13.i441 ], [ %86, %if.end9.i435 ] - %len.i427651 = phi ptr [ %len.i427647, %if.end184.thread ], [ %len.i427, %if.then13.i441 ], [ %len.i427, %if.end9.i435 ] + %len.i427652 = phi ptr [ %len.i427648, %if.end184.thread ], [ %len.i427, %if.then13.i441 ], [ %len.i427, %if.end9.i435 ] %cursor17.i438 = getelementptr inbounds i8, ptr %state, i64 168 %90 = load i32, ptr %cursor17.i438, align 8 %cmp18.i439 = icmp sgt i32 %90, %89 @@ -78575,9 +78567,9 @@ if.end224: ; preds = %nk_textedit_get_wid br i1 %105, label %for.body216, label %for.end229, !llvm.loop !257 for.end229: ; preds = %if.end224, %nk_textedit_get_width.exit482, %if.then191 - %106 = load i32, ptr %len.i427651, align 8 - %107 = load i32, ptr %select_start.i428652, align 4 - %108 = load i32, ptr %select_end.i429653, align 8 + %106 = load i32, ptr %len.i427652, align 8 + %107 = load i32, ptr %select_start.i428653, align 4 + %108 = load i32, ptr %select_end.i429654, align 8 %cmp.not.i486 = icmp eq i32 %107, %108 br i1 %cmp.not.i486, label %if.end16.i493, label %if.then.i487 @@ -78586,7 +78578,7 @@ if.then.i487: ; preds = %for.end229 br i1 %cmp2.i488, label %if.then3.i500, label %if.end.i489 if.then3.i500: ; preds = %if.then.i487 - store i32 %106, ptr %select_start.i428652, align 4 + store i32 %106, ptr %select_start.i428653, align 4 br label %if.end.i489 if.end.i489: ; preds = %if.then3.i500, %if.then.i487 @@ -78595,7 +78587,7 @@ if.end.i489: ; preds = %if.then3.i500, %if. br i1 %cmp6.i490, label %if.then7.i499, label %if.end9.i491 if.then7.i499: ; preds = %if.end.i489 - store i32 %106, ptr %select_end.i429653, align 8 + store i32 %106, ptr %select_end.i429654, align 8 br label %if.end9.i491 if.end9.i491: ; preds = %if.then7.i499, %if.end.i489 @@ -78623,7 +78615,7 @@ nk_textedit_clamp.exit501: ; preds = %if.end16.i493, %if. br i1 %tobool175.not, label %sw.epilog, label %if.then233 if.then233: ; preds = %nk_textedit_clamp.exit501 - store i32 %112, ptr %select_end.i429653, align 8 + store i32 %112, ptr %select_end.i429654, align 8 br label %sw.epilog sw.bb238: ; preds = %retry diff --git a/bench/ockam-rs/optimized/1nr6pb10qh86z9fy.ll b/bench/ockam-rs/optimized/1nr6pb10qh86z9fy.ll index 6221acdc7b3..356d86c3120 100644 --- a/bench/ockam-rs/optimized/1nr6pb10qh86z9fy.ll +++ b/bench/ockam-rs/optimized/1nr6pb10qh86z9fy.ll @@ -83,8 +83,8 @@ target triple = "x86_64-unknown-linux-gnu" @anon.319bcac2edebe9295f179af30ff32645.165.llvm.5773138781079186978 = external hidden unnamed_addr constant <{ [10 x i8] }>, align 1 @anon.319bcac2edebe9295f179af30ff32645.166.llvm.5773138781079186978 = external hidden unnamed_addr constant <{ [6 x i8] }>, align 1 @__rust_no_alloc_shim_is_unstable = external global i8 -@"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266.53" = private unnamed_addr constant [3 x ptr] [ptr @anon.319bcac2edebe9295f179af30ff32645.164.llvm.5773138781079186978, ptr @anon.319bcac2edebe9295f179af30ff32645.165.llvm.5773138781079186978, ptr @anon.319bcac2edebe9295f179af30ff32645.166.llvm.5773138781079186978], align 8 -@"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266.54" = private unnamed_addr constant [3 x i64] [i64 9, i64 10, i64 6], align 8 +@"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266" = private unnamed_addr constant [3 x ptr] [ptr @anon.319bcac2edebe9295f179af30ff32645.164.llvm.5773138781079186978, ptr @anon.319bcac2edebe9295f179af30ff32645.165.llvm.5773138781079186978, ptr @anon.319bcac2edebe9295f179af30ff32645.166.llvm.5773138781079186978], align 8 +@"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266.52" = private unnamed_addr constant [3 x i64] [i64 9, i64 10, i64 6], align 8 ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn uwtable define hidden noundef zeroext i1 @"_ZN100_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold5check28_$u7b$$u7b$closure$u7d$$u7d$17h2ecd41e36deca2aaE.llvm.17316549881917752266"(ptr noalias nocapture noundef align 8 dereferenceable(40) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %1) unnamed_addr #0 personality ptr @rust_eh_personality { @@ -774,23 +774,23 @@ switch.lookup: ; preds = %3 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4.0..sroa_idx.i.i.i.i, i8 0, i64 16, i1 false), !noalias !164 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8), !noalias !164 invoke void @_ZN4core3fmt9Formatter3new17hf75846ae39fe4547E(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, { i64, i64 }, { ptr, ptr }, i32, i32, i8, [7 x i8] }) align 8 dereferenceable(64) %8, ptr noundef nonnull align 1 %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.319bcac2edebe9295f179af30ff32645.7.llvm.5773138781079186978) - to label %switch.lookup15 unwind label %16, !noalias !164 + to label %switch.lookup14 unwind label %16, !noalias !164 -16: ; preds = %19, %switch.lookup15, %switch.lookup +16: ; preds = %19, %switch.lookup14, %switch.lookup %17 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h1a8dc4668ceb4783E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #32 to label %common.resume unwind label %20, !noalias !164 -switch.lookup15: ; preds = %switch.lookup - %switch.gep = getelementptr inbounds [3 x ptr], ptr @"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266.53", i64 0, i64 %1 +switch.lookup14: ; preds = %switch.lookup + %switch.gep = getelementptr inbounds [3 x ptr], ptr @"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266", i64 0, i64 %1 %switch.load = load ptr, ptr %switch.gep, align 8 - %switch.gep16 = getelementptr inbounds [3 x i64], ptr @"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266.54", i64 0, i64 %1 - %switch.load17 = load i64, ptr %switch.gep16, align 8 - %18 = invoke noundef zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hc2aaa223287dde65E"(ptr noalias noundef nonnull readonly align 1 %switch.load, i64 noundef %switch.load17, ptr noalias noundef nonnull align 8 dereferenceable(64) %8) + %switch.gep15 = getelementptr inbounds [3 x i64], ptr @"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266.52", i64 0, i64 %1 + %switch.load16 = load i64, ptr %switch.gep15, align 8 + %18 = invoke noundef zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hc2aaa223287dde65E"(ptr noalias noundef nonnull readonly align 1 %switch.load, i64 noundef %switch.load16, ptr noalias noundef nonnull align 8 dereferenceable(64) %8) to label %"_ZN73_$LT$ockam_abac..resource..ResourceType$u20$as$u20$core..fmt..Display$GT$3fmt17h39bcde56c49f46f2E.exit.i.i.i.i" unwind label %16, !noalias !164 -"_ZN73_$LT$ockam_abac..resource..ResourceType$u20$as$u20$core..fmt..Display$GT$3fmt17h39bcde56c49f46f2E.exit.i.i.i.i": ; preds = %switch.lookup15 +"_ZN73_$LT$ockam_abac..resource..ResourceType$u20$as$u20$core..fmt..Display$GT$3fmt17h39bcde56c49f46f2E.exit.i.i.i.i": ; preds = %switch.lookup14 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %4), !noalias !164 br i1 %18, label %19, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7a2850656f4f6ccaE.exit" @@ -835,7 +835,7 @@ common.resume: ; preds = %25, %.body, %16 %26 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h1a8dc4668ceb4783E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10) #32 - to label %common.resume unwind label %63 + to label %common.resume unwind label %67 27: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7a2850656f4f6ccaE.exit" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) @@ -873,55 +873,72 @@ common.resume: ; preds = %25, %.body, %16 br label %36 36: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i", %.lr.ph.i.i - %37 = phi i64 [ %33, %.lr.ph.i.i ], [ %51, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i" ] + %37 = phi i64 [ %33, %.lr.ph.i.i ], [ %55, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i" ] %.sroa.05.013.i.i = phi i64 [ %12, %.lr.ph.i.i ], [ %37, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i" ] - %38 = icmp ult i64 %.sroa.05.013.i.i, 3 - br i1 %38, label %switch.lookup18, label %.loopexit + switch i64 %.sroa.05.013.i.i, label %.loopexit [ + i64 0, label %38 + i64 1, label %40 + i64 2, label %39 + ] -switch.lookup18: ; preds = %36 +38: ; preds = %36 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !183 store ptr inttoptr (i64 1 to ptr), ptr %6, align 8, !noalias !183 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4.0..sroa_idx.i.i.i.i.i.i, i8 0, i64 16, i1 false), !noalias !183 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5), !noalias !183 invoke void @_ZN4core3fmt9Formatter3new17hf75846ae39fe4547E(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, { i64, i64 }, { ptr, ptr }, i32, i32, i8, [7 x i8] }) align 8 dereferenceable(64) %5, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.319bcac2edebe9295f179af30ff32645.7.llvm.5773138781079186978) - to label %switch.lookup20 unwind label %.loopexit.i.i, !noalias !194 + to label %.invoke.i.i.i.i.i.i unwind label %.loopexit.loopexit.i.i, !noalias !194 -.loopexit.i.i: ; preds = %switch.lookup20, %switch.lookup18 - %lpad.loopexit.i.i = landingpad { ptr, i32 } +39: ; preds = %36 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !183 + store ptr inttoptr (i64 1 to ptr), ptr %6, align 8, !noalias !183 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4.0..sroa_idx.i.i.i.i.i.i, i8 0, i64 16, i1 false), !noalias !183 + call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5), !noalias !183 + invoke void @_ZN4core3fmt9Formatter3new17hf75846ae39fe4547E(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, { i64, i64 }, { ptr, ptr }, i32, i32, i8, [7 x i8] }) align 8 dereferenceable(64) %5, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.319bcac2edebe9295f179af30ff32645.7.llvm.5773138781079186978) + to label %.invoke.i.i.i.i.i.i unwind label %.loopexit.loopexit.i.i, !noalias !194 + +40: ; preds = %36 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !183 + store ptr inttoptr (i64 1 to ptr), ptr %6, align 8, !noalias !183 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4.0..sroa_idx.i.i.i.i.i.i, i8 0, i64 16, i1 false), !noalias !183 + call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5), !noalias !183 + invoke void @_ZN4core3fmt9Formatter3new17hf75846ae39fe4547E(ptr noalias nocapture noundef nonnull sret({ { i64, i64 }, { i64, i64 }, { ptr, ptr }, i32, i32, i8, [7 x i8] }) align 8 dereferenceable(64) %5, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.319bcac2edebe9295f179af30ff32645.7.llvm.5773138781079186978) + to label %.invoke.i.i.i.i.i.i unwind label %.loopexit.loopexit.i.i, !noalias !194 + +.loopexit.loopexit.i.i: ; preds = %.invoke.i.i.i.i.i.i, %40, %39, %38 + %lpad.loopexit17.i.i = landingpad { ptr, i32 } cleanup - br label %39 + br label %41 -.loopexit.split-lp.i.i: ; preds = %41 +.loopexit.split-lp.i.i: ; preds = %45 %lpad.loopexit.split-lp.i.i = landingpad { ptr, i32 } cleanup - br label %39 + br label %41 -39: ; preds = %.loopexit.split-lp.i.i, %.loopexit.i.i - %lpad.phi.i.i = phi { ptr, i32 } [ %lpad.loopexit.i.i, %.loopexit.i.i ], [ %lpad.loopexit.split-lp.i.i, %.loopexit.split-lp.i.i ] +41: ; preds = %.loopexit.split-lp.i.i, %.loopexit.loopexit.i.i + %lpad.phi.i.i = phi { ptr, i32 } [ %lpad.loopexit17.i.i, %.loopexit.loopexit.i.i ], [ %lpad.loopexit.split-lp.i.i, %.loopexit.split-lp.i.i ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h1a8dc4668ceb4783E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #32 - to label %.body unwind label %42, !noalias !194 + to label %.body unwind label %46, !noalias !194 -switch.lookup20: ; preds = %switch.lookup18 - %switch.gep21 = getelementptr inbounds [3 x ptr], ptr @"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266.53", i64 0, i64 %.sroa.05.013.i.i - %switch.load22 = load ptr, ptr %switch.gep21, align 8 - %switch.gep23 = getelementptr inbounds [3 x i64], ptr @"switch.table._ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h363ac85da1581709E.llvm.17316549881917752266.54", i64 0, i64 %.sroa.05.013.i.i - %switch.load24 = load i64, ptr %switch.gep23, align 8 - %40 = invoke noundef zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hc2aaa223287dde65E"(ptr noalias noundef nonnull readonly align 1 %switch.load22, i64 noundef %switch.load24, ptr noalias noundef nonnull align 8 dereferenceable(64) %5) - to label %"_ZN73_$LT$ockam_abac..resource..ResourceType$u20$as$u20$core..fmt..Display$GT$3fmt17h39bcde56c49f46f2E.exit.i.i.i.i.i.i" unwind label %.loopexit.i.i, !noalias !194 +.invoke.i.i.i.i.i.i: ; preds = %40, %39, %38 + %42 = phi ptr [ @anon.319bcac2edebe9295f179af30ff32645.164.llvm.5773138781079186978, %38 ], [ @anon.319bcac2edebe9295f179af30ff32645.165.llvm.5773138781079186978, %40 ], [ @anon.319bcac2edebe9295f179af30ff32645.166.llvm.5773138781079186978, %39 ] + %43 = phi i64 [ 9, %38 ], [ 10, %40 ], [ 6, %39 ] + %44 = invoke noundef zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hc2aaa223287dde65E"(ptr noalias noundef nonnull readonly align 1 %42, i64 noundef %43, ptr noalias noundef nonnull align 8 dereferenceable(64) %5) + to label %"_ZN73_$LT$ockam_abac..resource..ResourceType$u20$as$u20$core..fmt..Display$GT$3fmt17h39bcde56c49f46f2E.exit.i.i.i.i.i.i" unwind label %.loopexit.loopexit.i.i, !noalias !194 -"_ZN73_$LT$ockam_abac..resource..ResourceType$u20$as$u20$core..fmt..Display$GT$3fmt17h39bcde56c49f46f2E.exit.i.i.i.i.i.i": ; preds = %switch.lookup20 +"_ZN73_$LT$ockam_abac..resource..ResourceType$u20$as$u20$core..fmt..Display$GT$3fmt17h39bcde56c49f46f2E.exit.i.i.i.i.i.i": ; preds = %.invoke.i.i.i.i.i.i call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %4), !noalias !183 - br i1 %40, label %41, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7a2850656f4f6ccaE.exit.i.i" + br i1 %44, label %45, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7a2850656f4f6ccaE.exit.i.i" -41: ; preds = %"_ZN73_$LT$ockam_abac..resource..ResourceType$u20$as$u20$core..fmt..Display$GT$3fmt17h39bcde56c49f46f2E.exit.i.i.i.i.i.i" +45: ; preds = %"_ZN73_$LT$ockam_abac..resource..ResourceType$u20$as$u20$core..fmt..Display$GT$3fmt17h39bcde56c49f46f2E.exit.i.i.i.i.i.i" invoke void @_ZN4core6result13unwrap_failed17hed0fccbe07e724fcE(ptr noalias noundef nonnull readonly align 1 @anon.319bcac2edebe9295f179af30ff32645.8.llvm.5773138781079186978, i64 noundef 55, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.319bcac2edebe9295f179af30ff32645.37.llvm.5773138781079186978, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.319bcac2edebe9295f179af30ff32645.10.llvm.5773138781079186978) #35 to label %.noexc5.i.i.i.i.i.i unwind label %.loopexit.split-lp.i.i, !noalias !194 -.noexc5.i.i.i.i.i.i: ; preds = %41 +.noexc5.i.i.i.i.i.i: ; preds = %45 unreachable -42: ; preds = %39 - %43 = landingpad { ptr, i32 } +46: ; preds = %41 + %47 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hceade526831b1e89E() #33, !noalias !194 unreachable @@ -933,67 +950,67 @@ switch.lookup20: ; preds = %switch.lookup18 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5), !noalias !183 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !183 %.not.i.i = icmp eq ptr %.sroa.0.i.sroa.0.0.copyload.i.i, null - br i1 %.not.i.i, label %.loopexit, label %44 + br i1 %.not.i.i, label %.loopexit, label %48 -44: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7a2850656f4f6ccaE.exit.i.i" +48: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7a2850656f4f6ccaE.exit.i.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !197 store ptr %.sroa.0.i.sroa.0.0.copyload.i.i, ptr %7, align 8, !noalias !197 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.8.0..sroa_idx.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.8.i.i, i64 16, i1 false), !noalias !197 - %45 = load i64, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !197, !noundef !4 - %46 = load i64, ptr %.sroa.5.0..sroa_idx, align 8, !alias.scope !197, !noundef !4 - %47 = icmp eq i64 %45, %46 - br i1 %47, label %55, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i" - -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i": ; preds = %60, %55, %44 - %48 = load ptr, ptr %11, align 8, !alias.scope !197, !nonnull !4, !noundef !4 - %49 = getelementptr inbounds { { { ptr, i64 }, i64 } }, ptr %48, i64 %45 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) - %50 = add i64 %45, 1 - store i64 %50, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !197 + %49 = load i64, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !197, !noundef !4 + %50 = load i64, ptr %.sroa.5.0..sroa_idx, align 8, !alias.scope !197, !noundef !4 + %51 = icmp eq i64 %49, %50 + br i1 %51, label %59, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i" + +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i": ; preds = %64, %59, %48 + %52 = load ptr, ptr %11, align 8, !alias.scope !197, !nonnull !4, !noundef !4 + %53 = getelementptr inbounds { { { ptr, i64 }, i64 } }, ptr %52, i64 %49 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) + %54 = add i64 %49, 1 + store i64 %54, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !197 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !197 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.8.i.i) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.8.i.i) - %51 = add i64 %37, 1 + %55 = add i64 %37, 1 %.reass.i.i = add i64 %invariant.op.i.i, %37 - %52 = icmp ugt i64 %.reass.i.i, 3 - br i1 %52, label %.loopexit, label %36 + %56 = icmp ugt i64 %.reass.i.i, 3 + br i1 %56, label %.loopexit, label %36 -53: ; preds = %60 - %54 = landingpad { ptr, i32 } +57: ; preds = %64 + %58 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h1a8dc4668ceb4783E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #32 - to label %.body unwind label %61 - -55: ; preds = %44 - %56 = add i64 %37, %2 - %57 = icmp ugt i64 %56, 2 - %58 = sub i64 4, %56 - %59 = select i1 %57, i64 1, i64 %58 - %.not12.i.i = icmp eq i64 %59, 0 - br i1 %.not12.i.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i", label %60 - -60: ; preds = %55 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17hbdead17bf6eec748E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %45, i64 noundef %59) - to label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i" unwind label %53 - -61: ; preds = %53 - %62 = landingpad { ptr, i32 } + to label %.body unwind label %65 + +59: ; preds = %48 + %60 = add i64 %37, %2 + %61 = icmp ugt i64 %60, 2 + %62 = sub i64 4, %60 + %63 = select i1 %61, i64 1, i64 %62 + %.not12.i.i = icmp eq i64 %63, 0 + br i1 %.not12.i.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i", label %64 + +64: ; preds = %59 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17hbdead17bf6eec748E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %49, i64 noundef %63) + to label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i" unwind label %57 + +65: ; preds = %57 + %66 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hceade526831b1e89E() #33 unreachable -.body: ; preds = %39, %53 - %eh.lpad-body = phi { ptr, i32 } [ %lpad.phi.i.i, %39 ], [ %54, %53 ] +.body: ; preds = %41, %57 + %eh.lpad-body = phi { ptr, i32 } [ %lpad.phi.i.i, %41 ], [ %58, %57 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$17h15994deaeaf2094aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %11) #32 - to label %common.resume unwind label %63 + to label %common.resume unwind label %67 .loopexit: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb11464bd8a11e3dbE.exit.i.i", %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7a2850656f4f6ccaE.exit.i.i", %36, %29 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.8.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %11, i64 24, i1 false) br label %24 -63: ; preds = %25, %.body - %64 = landingpad { ptr, i32 } +67: ; preds = %25, %.body + %68 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hceade526831b1e89E() #33 unreachable diff --git a/bench/opencv/optimized/histogram.cpp.ll b/bench/opencv/optimized/histogram.cpp.ll index 96b4963f424..36b65e5f597 100644 --- a/bench/opencv/optimized/histogram.cpp.ll +++ b/bench/opencv/optimized/histogram.cpp.ll @@ -653,7 +653,7 @@ define linkonce_odr hidden noundef float @_ZN2cv5rapid15HistTrackerImpl7computeE 67: ; preds = %65, %63 %.pn = phi { ptr, i32 } [ %66, %65 ], [ %64, %63 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #16 - br label %596 + br label %598 68: ; preds = %8 call void @_ZN2cv3MatC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %22) #16 @@ -766,7 +766,6 @@ define linkonce_odr hidden noundef float @_ZN2cv5rapid15HistTrackerImpl7computeE br label %173 173: ; preds = %68, %590 - %.058149 = phi float [ 0.000000e+00, %68 ], [ %.260, %590 ] %.063148 = phi i32 [ 0, %68 ], [ %591, %590 ] store i32 0, ptr %72, align 8 store i32 0, ptr %73, align 4 @@ -800,17 +799,17 @@ define linkonce_odr hidden noundef float @_ZN2cv5rapid15HistTrackerImpl7computeE 179: ; preds = %176 %180 = landingpad { ptr, i32 } cleanup - br label %595 + br label %597 181: ; preds = %173 %182 = landingpad { ptr, i32 } cleanup - br label %595 + br label %597 183: ; preds = %175 %184 = landingpad { ptr, i32 } cleanup - br label %595 + br label %597 185: ; preds = %178 call void @_ZN2cv3MatC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %29) #16 @@ -1627,7 +1626,7 @@ _ZN2cv4Mat_IiEclEi.exit.i125: ; preds = %512, %506, %499 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %144) #16 %531 = load i32, ptr %145, align 8 %532 = icmp slt i32 %531, 3 - br i1 %532, label %589, label %540 + br i1 %532, label %586, label %540 533: ; preds = %.loopexit140 %534 = landingpad { ptr, i32 } @@ -1659,14 +1658,14 @@ _ZN2cv4Mat_IiEclEi.exit.i125: ; preds = %512, %506, %499 store i32 16842752, ptr %50, align 8 store ptr %22, ptr %151, align 8 %541 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN2cv7noArrayEv() - to label %542 unwind label %572 + to label %542 unwind label %570 542: ; preds = %540 store i32 3, ptr %51, align 8 store i32 20, ptr %152, align 4 store double 0x3E80000000000000, ptr %153, align 8 invoke void @_ZN2cv16solvePnPRefineLMERKNS_11_InputArrayES2_S2_S2_RKNS_17_InputOutputArrayES5_NS_12TermCriteriaE(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %541, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull byval(%"class.cv::TermCriteria") align 8 %51) - to label %543 unwind label %572 + to label %543 unwind label %570 543: ; preds = %542 call void @_ZN2cv3MatC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %52) #16 @@ -1685,35 +1684,33 @@ _ZN2cv4Mat_IiEclEi.exit.i125: ; preds = %512, %506, %499 _ZN2cv4Mat_INS_3VecIhLi3EEEEC2ERKNS_3MatE.exit131: ; preds = %543 invoke void @_ZN2cv5rapid15HistTrackerImpl14updateFgBgHistERKNS_4Mat_INS_3VecIhLi3EEEEERKNS2_IiEE(ptr noundef nonnull align 8 dereferenceable(402) %0, ptr noundef nonnull align 8 dereferenceable(96) %52, ptr noundef nonnull align 8 dereferenceable(96) %37) - to label %550 unwind label %574 + to label %550 unwind label %572 550: ; preds = %_ZN2cv4Mat_INS_3VecIhLi3EEEEC2ERKNS_3MatE.exit131 call void @_ZN2cv3MatD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %52) #16 %551 = load i32, ptr %145, align 8 - %552 = sitofp i32 %551 to float - %553 = fdiv float %552, %154 - %554 = load i32, ptr %7, align 8 - %555 = and i32 %554, 2 - %.not = icmp eq i32 %555, 0 - br i1 %.not, label %588, label %556 - -556: ; preds = %550 + %552 = load i32, ptr %7, align 8 + %553 = and i32 %552, 2 + %.not = icmp eq i32 %553, 0 + br i1 %.not, label %590, label %554 + +554: ; preds = %550 call void @_ZN2cv3MatC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %53) #16 store i64 0, ptr %156, align 8 store i32 33619968, ptr %54, align 8 store ptr %53, ptr %155, align 8 invoke void @_ZN2cvgtERKNS_3MatEd(ptr dead_on_unwind nonnull writable sret(%"class.cv::MatExpr") align 8 %56, ptr noundef nonnull align 8 dereferenceable(96) %37, double noundef 0.000000e+00) - to label %557 unwind label %578 + to label %555 unwind label %576 -557: ; preds = %556 +555: ; preds = %554 invoke void @_ZN2cv11_InputArrayC1ERKNS_7MatExprE(ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull align 8 dereferenceable(352) %56) - to label %558 unwind label %580 + to label %556 unwind label %578 -558: ; preds = %557 +556: ; preds = %555 invoke void @_ZNK2cv3Mat6copyToERKNS_12_OutputArrayERKNS_11_InputArrayE(ptr noundef nonnull align 8 dereferenceable(96) %37, ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(24) %55) - to label %559 unwind label %582 + to label %557 unwind label %580 -559: ; preds = %558 +557: ; preds = %556 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %157) #16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %158) #16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %159) #16 @@ -1732,14 +1729,14 @@ _ZN2cv4Mat_INS_3VecIhLi3EEEEC2ERKNS_3MatE.exit131: ; preds = %543 store i64 0, ptr %167, align 8 store i32 -1040121856, ptr %11, align 8 store ptr %53, ptr %166, align 8 - %560 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN2cv7noArrayEv() - to label %.noexc132 unwind label %576 + %558 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN2cv7noArrayEv() + to label %.noexc132 unwind label %574 -.noexc132: ; preds = %559 - invoke void @_ZN2cv8subtractERKNS_11_InputArrayES2_RKNS_12_OutputArrayES2_i(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %560, i32 noundef -1) - to label %561 unwind label %576 +.noexc132: ; preds = %557 + invoke void @_ZN2cv8subtractERKNS_11_InputArrayES2_RKNS_12_OutputArrayES2_i(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %558, i32 noundef -1) + to label %559 unwind label %574 -561: ; preds = %.noexc132 +559: ; preds = %.noexc132 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) @@ -1747,93 +1744,102 @@ _ZN2cv4Mat_INS_3VecIhLi3EEEEC2ERKNS_3MatE.exit131: ; preds = %543 store i32 0, ptr %169, align 4 store i32 16842752, ptr %58, align 8 store ptr %53, ptr %170, align 8 - %562 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN2cv7noArrayEv() - to label %563 unwind label %585 + %560 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN2cv7noArrayEv() + to label %561 unwind label %583 + +561: ; preds = %559 + %562 = invoke noundef double @_ZN2cv4normERKNS_11_InputArrayEiS2_(ptr noundef nonnull align 8 dereferenceable(24) %58, i32 noundef 5, ptr noundef nonnull align 8 dereferenceable(24) %560) + to label %563 unwind label %583 563: ; preds = %561 - %564 = invoke noundef double @_ZN2cv4normERKNS_11_InputArrayEiS2_(ptr noundef nonnull align 8 dereferenceable(24) %58, i32 noundef 5, ptr noundef nonnull align 8 dereferenceable(24) %562) - to label %565 unwind label %585 - -565: ; preds = %563 - %566 = load i32, ptr %171, align 8 - %567 = sitofp i32 %566 to double - %568 = fdiv double %564, %567 - %569 = call double @sqrt(double noundef %568) #16 - %570 = load double, ptr %172, align 8 - %571 = fcmp uge double %569, %570 + %564 = load i32, ptr %171, align 8 + %565 = sitofp i32 %564 to double + %566 = fdiv double %562, %565 + %567 = call double @sqrt(double noundef %566) #16 + %568 = load double, ptr %172, align 8 + %569 = fcmp uge double %567, %568 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %53) #16 - br i1 %571, label %588, label %589 + br i1 %569, label %590, label %587 -572: ; preds = %542, %540 - %573 = landingpad { ptr, i32 } +570: ; preds = %542, %540 + %571 = landingpad { ptr, i32 } cleanup br label %.body129 -574: ; preds = %_ZN2cv4Mat_INS_3VecIhLi3EEEEC2ERKNS_3MatE.exit131 - %575 = landingpad { ptr, i32 } +572: ; preds = %_ZN2cv4Mat_INS_3VecIhLi3EEEEC2ERKNS_3MatE.exit131 + %573 = landingpad { ptr, i32 } cleanup call void @_ZN2cv3MatD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %52) #16 br label %.body129 -576: ; preds = %.noexc132, %559 +574: ; preds = %.noexc132, %557 + %575 = landingpad { ptr, i32 } + cleanup + br label %585 + +576: ; preds = %554 %577 = landingpad { ptr, i32 } cleanup - br label %587 + br label %585 -578: ; preds = %556 +578: ; preds = %555 %579 = landingpad { ptr, i32 } cleanup - br label %587 + br label %582 -580: ; preds = %557 +580: ; preds = %556 %581 = landingpad { ptr, i32 } cleanup - br label %584 - -582: ; preds = %558 - %583 = landingpad { ptr, i32 } - cleanup - br label %584 + br label %582 -584: ; preds = %582, %580 - %.pn85 = phi { ptr, i32 } [ %583, %582 ], [ %581, %580 ] +582: ; preds = %580, %578 + %.pn85 = phi { ptr, i32 } [ %581, %580 ], [ %579, %578 ] call void @_ZN2cv7MatExprD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %56) #16 - br label %587 + br label %585 -585: ; preds = %563, %561 - %586 = landingpad { ptr, i32 } +583: ; preds = %561, %559 + %584 = landingpad { ptr, i32 } cleanup - br label %587 + br label %585 -587: ; preds = %578, %584, %585, %576 - %.pn88 = phi { ptr, i32 } [ %586, %585 ], [ %577, %576 ], [ %.pn85, %584 ], [ %579, %578 ] +585: ; preds = %576, %582, %583, %574 + %.pn88 = phi { ptr, i32 } [ %584, %583 ], [ %575, %574 ], [ %.pn85, %582 ], [ %577, %576 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %53) #16 br label %.body129 -588: ; preds = %565, %550 - br label %589 +586: ; preds = %530 + call void @_ZN2cv3MatD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %40) #16 + call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %39) #16 + call void @_ZN2cv3MatD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %37) #16 + call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %34) #16 + call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %30) #16 + call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %29) #16 + br label %.loopexit142 -589: ; preds = %530, %565, %588 - %.061 = phi i32 [ 0, %588 ], [ 4, %565 ], [ 1, %530 ] - %.260 = phi float [ %553, %588 ], [ %553, %565 ], [ %.058149, %530 ] +587: ; preds = %563 + %588 = sitofp i32 %551 to float + %589 = fdiv float %588, %154 call void @_ZN2cv3MatD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %40) #16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %39) #16 call void @_ZN2cv3MatD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %37) #16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %34) #16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %30) #16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %29) #16 - switch i32 %.061, label %.loopexit142.loopexit [ - i32 0, label %590 - i32 4, label %.loopexit142 - ] + br label %.loopexit142 -590: ; preds = %589 +590: ; preds = %550, %563 + call void @_ZN2cv3MatD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %40) #16 + call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %39) #16 + call void @_ZN2cv3MatD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %37) #16 + call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %34) #16 + call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %30) #16 + call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %29) #16 %591 = add nuw nsw i32 %.063148, 1 %exitcond.not = icmp eq i32 %591, %smax - br i1 %exitcond.not, label %.loopexit142, label %173, !llvm.loop !39 + br i1 %exitcond.not, label %.loopexit142.loopexit.split.loop.exit169, label %173, !llvm.loop !39 -.body129: ; preds = %572, %539, %533, %468, %548, %587, %574, %.body109 - %.pn88.pn = phi { ptr, i32 } [ %.pn88, %587 ], [ %575, %574 ], [ %.pn75, %.body109 ], [ %469, %468 ], [ %549, %548 ], [ %.pn77, %539 ], [ %534, %533 ], [ %573, %572 ] +.body129: ; preds = %570, %539, %533, %468, %548, %585, %572, %.body109 + %.pn88.pn = phi { ptr, i32 } [ %.pn88, %585 ], [ %573, %572 ], [ %.pn75, %.body109 ], [ %469, %468 ], [ %549, %548 ], [ %.pn77, %539 ], [ %534, %533 ], [ %571, %570 ] call void @_ZN2cv3MatD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %40) #16 br label %592 @@ -1856,25 +1862,27 @@ _ZN2cv4Mat_INS_3VecIhLi3EEEEC2ERKNS_3MatE.exit131: ; preds = %543 %.pn88.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn88.pn.pn.pn.pn, %593 ], [ %205, %204 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %30) #16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %29) #16 - br label %595 + br label %597 -.loopexit142.loopexit: ; preds = %589 +.loopexit142.loopexit.split.loop.exit169: ; preds = %590 + %595 = sitofp i32 %551 to float + %596 = fdiv float %595, %154 br label %.loopexit142 -.loopexit142: ; preds = %590, %178, %589, %.loopexit142.loopexit - %.1 = phi float [ %.260, %589 ], [ %.260, %590 ], [ 0.000000e+00, %178 ], [ 0.000000e+00, %.loopexit142.loopexit ] +.loopexit142: ; preds = %178, %.loopexit142.loopexit.split.loop.exit169, %587, %586 + %.1 = phi float [ 0.000000e+00, %586 ], [ %589, %587 ], [ %596, %.loopexit142.loopexit.split.loop.exit169 ], [ 0.000000e+00, %178 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %23) #16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %22) #16 ret float %.1 -595: ; preds = %181, %183, %594, %179 +597: ; preds = %181, %183, %594, %179 %.pn88.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn88.pn.pn.pn.pn.pn, %594 ], [ %180, %179 ], [ %182, %181 ], [ %184, %183 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %23) #16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %22) #16 - br label %596 + br label %598 -596: ; preds = %595, %67 - %.pn88.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn88.pn.pn.pn.pn.pn.pn, %595 ], [ %.pn, %67 ] +598: ; preds = %597, %67 + %.pn88.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn88.pn.pn.pn.pn.pn.pn, %597 ], [ %.pn, %67 ] resume { ptr, i32 } %.pn88.pn.pn.pn.pn.pn.pn.pn } diff --git a/bench/openjdk/optimized/jni.ll b/bench/openjdk/optimized/jni.ll index 73f1cc6bbb0..b240225100f 100644 --- a/bench/openjdk/optimized/jni.ll +++ b/bench/openjdk/optimized/jni.ll @@ -34071,9 +34071,8 @@ _ZNK5Klass12class_loaderEv.exit53: ; preds = %72, %78 %wide.trip.count = zext nneg i32 %3 to i64 br label %86 -86: ; preds = %.lr.ph, %148 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %148 ] - %.095 = phi i32 [ 0, %.lr.ph ], [ %.28690, %148 ] +86: ; preds = %.lr.ph, %_ZN16SymbolHandleBaseILb1EED2Ev.exit62.jt0 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %_ZN16SymbolHandleBaseILb1EED2Ev.exit62.jt0 ] %87 = getelementptr inbounds %struct.JNINativeMethod, ptr %2, i64 %indvars.iv %88 = load ptr, ptr %87, align 8 %89 = getelementptr inbounds i8, ptr %87, i64 8 @@ -34119,6 +34118,7 @@ _ZN16SymbolHandleBaseILb1EEC2EP6Symbol.exit56: ; preds = %102, %106 br i1 %.not.i54, label %.thread, label %124 .thread: ; preds = %_ZN16SymbolHandleBaseILb1EEC2EP6Symbol.exit56, %_ZN16SymbolHandleBaseILb1EEC2EP6Symbol.exit + %.not.i54.lcssa = phi i1 [ true, %_ZN16SymbolHandleBaseILb1EEC2EP6Symbol.exit56 ], [ %.not.i54, %_ZN16SymbolHandleBaseILb1EEC2EP6Symbol.exit ] %107 = load ptr, ptr %85, align 8 %108 = getelementptr inbounds i8, ptr %107, i64 24 %109 = load ptr, ptr %108, align 8 @@ -34202,87 +34202,75 @@ _ZN12ResourceMarkD2Ev.exit60: ; preds = %143, %141, %124 %144 = getelementptr inbounds i8, ptr %87, i64 16 %145 = load ptr, ptr %144, align 8 %146 = call noundef zeroext i1 @_ZN6Method15register_nativeEP5KlassP6SymbolS3_PhP10JavaThread(ptr noundef nonnull %47, ptr noundef nonnull %93, ptr noundef nonnull %101, ptr noundef %145, ptr noundef %11) #15 - %spec.select = select i1 %146, i32 0, i32 4 - %spec.select93 = select i1 %146, i32 %.095, i32 -1 - br label %_ZN12ResourceMarkD2Ev.exit.thread + call void @_ZN6Symbol18decrement_refcountEv(ptr noundef nonnull align 4 dereferenceable(8) %101) #15 + br i1 %146, label %_ZN16SymbolHandleBaseILb1EED2Ev.exit62.jt0, label %.loopexit.sink.split _ZN12ResourceMarkD2Ev.exit: ; preds = %123, %121 - br i1 %.not.i55, label %_ZN16SymbolHandleBaseILb1EED2Ev.exit, label %_ZN12ResourceMarkD2Ev.exit.thread + br i1 %.not.i55, label %_ZN16SymbolHandleBaseILb1EED2Ev.exit.jt1, label %_ZN12ResourceMarkD2Ev.exit.thread.jt1 -_ZN12ResourceMarkD2Ev.exit.thread: ; preds = %_ZN12ResourceMarkD2Ev.exit60, %_ZN12ResourceMarkD2Ev.exit - %.04891 = phi i32 [ 1, %_ZN12ResourceMarkD2Ev.exit ], [ %spec.select, %_ZN12ResourceMarkD2Ev.exit60 ] - %.28689 = phi i32 [ %.095, %_ZN12ResourceMarkD2Ev.exit ], [ %spec.select93, %_ZN12ResourceMarkD2Ev.exit60 ] +_ZN12ResourceMarkD2Ev.exit.thread.jt1: ; preds = %_ZN12ResourceMarkD2Ev.exit call void @_ZN6Symbol18decrement_refcountEv(ptr noundef nonnull align 4 dereferenceable(8) %101) #15 - br label %_ZN16SymbolHandleBaseILb1EED2Ev.exit + br label %_ZN16SymbolHandleBaseILb1EED2Ev.exit.jt1 -_ZN16SymbolHandleBaseILb1EED2Ev.exit: ; preds = %_ZN12ResourceMarkD2Ev.exit, %_ZN12ResourceMarkD2Ev.exit.thread - %.04892 = phi i32 [ 1, %_ZN12ResourceMarkD2Ev.exit ], [ %.04891, %_ZN12ResourceMarkD2Ev.exit.thread ] - %.28690 = phi i32 [ %.095, %_ZN12ResourceMarkD2Ev.exit ], [ %.28689, %_ZN12ResourceMarkD2Ev.exit.thread ] - br i1 %.not.i54, label %_ZN16SymbolHandleBaseILb1EED2Ev.exit62, label %147 +_ZN16SymbolHandleBaseILb1EED2Ev.exit.jt1: ; preds = %_ZN12ResourceMarkD2Ev.exit.thread.jt1, %_ZN12ResourceMarkD2Ev.exit + br i1 %.not.i54.lcssa, label %.loopexit, label %.loopexit.sink.split -147: ; preds = %_ZN16SymbolHandleBaseILb1EED2Ev.exit +_ZN16SymbolHandleBaseILb1EED2Ev.exit62.jt0: ; preds = %_ZN12ResourceMarkD2Ev.exit60 call void @_ZN6Symbol18decrement_refcountEv(ptr noundef nonnull align 4 dereferenceable(8) %93) #15 - br label %_ZN16SymbolHandleBaseILb1EED2Ev.exit62 - -_ZN16SymbolHandleBaseILb1EED2Ev.exit62: ; preds = %_ZN16SymbolHandleBaseILb1EED2Ev.exit, %147 - switch i32 %.04892, label %.loopexit.loopexit [ - i32 0, label %148 - i32 4, label %.loopexit - ] - -148: ; preds = %_ZN16SymbolHandleBaseILb1EED2Ev.exit62 %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 %.loopexit, label %86, !llvm.loop !863 -.loopexit.loopexit: ; preds = %_ZN16SymbolHandleBaseILb1EED2Ev.exit62 +.loopexit.sink.split: ; preds = %_ZN12ResourceMarkD2Ev.exit60, %_ZN16SymbolHandleBaseILb1EED2Ev.exit.jt1 + %.3.ph = phi i32 [ 0, %_ZN16SymbolHandleBaseILb1EED2Ev.exit.jt1 ], [ -1, %_ZN12ResourceMarkD2Ev.exit60 ] + call void @_ZN6Symbol18decrement_refcountEv(ptr noundef nonnull align 4 dereferenceable(8) %93) #15 br label %.loopexit -.loopexit: ; preds = %148, %_ZN16SymbolHandleBaseILb1EED2Ev.exit62, %.loopexit.loopexit, %83 - %.3 = phi i32 [ 0, %83 ], [ %.28690, %.loopexit.loopexit ], [ %.28690, %_ZN16SymbolHandleBaseILb1EED2Ev.exit62 ], [ %.28690, %148 ] - %.2 = phi i32 [ 0, %83 ], [ -1, %.loopexit.loopexit ], [ %.28690, %_ZN16SymbolHandleBaseILb1EED2Ev.exit62 ], [ %.28690, %148 ] +.loopexit: ; preds = %_ZN16SymbolHandleBaseILb1EED2Ev.exit62.jt0, %.loopexit.sink.split, %_ZN16SymbolHandleBaseILb1EED2Ev.exit.jt1, %83 + %.3 = phi i32 [ 0, %83 ], [ 0, %_ZN16SymbolHandleBaseILb1EED2Ev.exit.jt1 ], [ %.3.ph, %.loopexit.sink.split ], [ 0, %_ZN16SymbolHandleBaseILb1EED2Ev.exit62.jt0 ] + %.2 = phi i32 [ 0, %83 ], [ -1, %_ZN16SymbolHandleBaseILb1EED2Ev.exit.jt1 ], [ -1, %.loopexit.sink.split ], [ 0, %_ZN16SymbolHandleBaseILb1EED2Ev.exit62.jt0 ] call void asm sideeffect ".altmacro\0A.macro _SDT_SIGN x\0A.pushsection .note.stapsdt,\22\22,\22note\22\0A.iflt \\x\0A.ascii \22-\22\0A.endif\0A.popsection\0A.endm\0A.macro _SDT_SIZE_ x\0A.pushsection .note.stapsdt,\22\22,\22note\22\0A.ascii \22\\x\22\0A.popsection\0A.endm\0A.macro _SDT_SIZE x\0A_SDT_SIZE_ %((-(-\\x*((-\\x>0)-(-\\x<0))))>>8)\0A.endm\0A.macro _SDT_TYPE_ x\0A.pushsection .note.stapsdt,\22\22,\22note\22\0A.ifc 8,\\x\0A.ascii \22f\22\0A.endif\0A.ascii \22@\22\0A.popsection\0A.endm\0A.macro _SDT_TYPE x\0A_SDT_TYPE_ %((\\x)&(0xff))\0A.endm\0A990: nop\0A.pushsection .note.stapsdt,\22?\22,\22note\22\0A.balign 4\0A.4byte 992f-991f,994f-993f,3\0A991: .asciz \22stapsdt\22\0A992: .balign 4\0A993: .8byte 990b\0A.8byte _.stapsdt.base\0A.8byte 0\0A.asciz \22hotspot_jni\22\0A.asciz \22RegisterNatives__return\22\0A_SDT_SIGN ${0:n}\0A_SDT_SIZE ${0:n}\0A_SDT_TYPE ${0:n}\0A.ascii \22$1\22\0A.ascii \22\\x00\22\0A.purgem _SDT_SIGN\0A.purgem _SDT_SIZE_\0A.purgem _SDT_SIZE\0A.purgem _SDT_TYPE_\0A.purgem _SDT_TYPE\0A994: .balign 4\0A.popsection\0A", "n,norfxy,~{dirflag},~{fpsr},~{flags}"(i32 1025, i32 %.3) #15, !srcloc !864 call void asm sideeffect ".ifndef _.stapsdt.base\0A.pushsection .stapsdt.base,\22aG\22,\22progbits\22,.stapsdt.base,comdat\0A.weak _.stapsdt.base\0A.hidden _.stapsdt.base\0A_.stapsdt.base: .space 1\0A.size _.stapsdt.base,1\0A.popsection\0A.endif\0A", "~{dirflag},~{fpsr},~{flags}"() #15, !srcloc !865 - %149 = load ptr, ptr %30, align 8 - %.not.i63 = icmp eq ptr %149, null - br i1 %.not.i63, label %_ZN25WeakPreserveExceptionMarkD2Ev.exit, label %150 + %147 = load ptr, ptr %30, align 8 + %.not.i63 = icmp eq ptr %147, null + br i1 %.not.i63, label %_ZN25WeakPreserveExceptionMarkD2Ev.exit, label %148 -150: ; preds = %.loopexit +148: ; preds = %.loopexit call void @_ZN25WeakPreserveExceptionMark7restoreEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #15 br label %_ZN25WeakPreserveExceptionMarkD2Ev.exit -_ZN25WeakPreserveExceptionMarkD2Ev.exit: ; preds = %.loopexit, %150 - %151 = getelementptr inbounds i8, ptr %11, i64 408 +_ZN25WeakPreserveExceptionMarkD2Ev.exit: ; preds = %.loopexit, %148 + %149 = getelementptr inbounds i8, ptr %11, i64 408 + %150 = load ptr, ptr %149, align 8 + %151 = getelementptr inbounds i8, ptr %150, i64 16 %152 = load ptr, ptr %151, align 8 - %153 = getelementptr inbounds i8, ptr %152, i64 16 - %154 = load ptr, ptr %153, align 8 - %155 = load ptr, ptr %154, align 8 - %.not.i.i64 = icmp eq ptr %155, null - br i1 %.not.i.i64, label %_ZN17HandleMarkCleanerD2Ev.exit, label %156 + %153 = load ptr, ptr %152, align 8 + %.not.i.i64 = icmp eq ptr %153, null + br i1 %.not.i.i64, label %_ZN17HandleMarkCleanerD2Ev.exit, label %154 -156: ; preds = %_ZN25WeakPreserveExceptionMarkD2Ev.exit - call void @_ZN10HandleMark17chop_later_chunksEv(ptr noundef nonnull align 8 dereferenceable(56) %152) #15 - %.pre.i.i = load ptr, ptr %153, align 8 +154: ; preds = %_ZN25WeakPreserveExceptionMarkD2Ev.exit + call void @_ZN10HandleMark17chop_later_chunksEv(ptr noundef nonnull align 8 dereferenceable(56) %150) #15 + %.pre.i.i = load ptr, ptr %151, align 8 br label %_ZN17HandleMarkCleanerD2Ev.exit -_ZN17HandleMarkCleanerD2Ev.exit: ; preds = %_ZN25WeakPreserveExceptionMarkD2Ev.exit, %156 - %157 = phi ptr [ %154, %_ZN25WeakPreserveExceptionMarkD2Ev.exit ], [ %.pre.i.i, %156 ] - %158 = getelementptr inbounds i8, ptr %152, i64 8 - %159 = load ptr, ptr %158, align 8 - %160 = getelementptr inbounds i8, ptr %159, i64 24 - store ptr %157, ptr %160, align 8 - %161 = getelementptr inbounds i8, ptr %152, i64 24 - %162 = load ptr, ptr %161, align 8 - %163 = load ptr, ptr %158, align 8 - %164 = getelementptr inbounds i8, ptr %163, i64 32 - store ptr %162, ptr %164, align 8 - %165 = getelementptr inbounds i8, ptr %152, i64 32 - %166 = load ptr, ptr %165, align 8 - %167 = load ptr, ptr %158, align 8 - %168 = getelementptr inbounds i8, ptr %167, i64 40 - store ptr %166, ptr %168, align 8 - %169 = getelementptr inbounds i8, ptr %11, i64 928 - call void @_ZN15JavaFrameAnchor13make_walkableEv(ptr noundef nonnull align 8 dereferenceable(24) %169) #15 +_ZN17HandleMarkCleanerD2Ev.exit: ; preds = %_ZN25WeakPreserveExceptionMarkD2Ev.exit, %154 + %155 = phi ptr [ %152, %_ZN25WeakPreserveExceptionMarkD2Ev.exit ], [ %.pre.i.i, %154 ] + %156 = getelementptr inbounds i8, ptr %150, i64 8 + %157 = load ptr, ptr %156, align 8 + %158 = getelementptr inbounds i8, ptr %157, i64 24 + store ptr %155, ptr %158, align 8 + %159 = getelementptr inbounds i8, ptr %150, i64 24 + %160 = load ptr, ptr %159, align 8 + %161 = load ptr, ptr %156, align 8 + %162 = getelementptr inbounds i8, ptr %161, i64 32 + store ptr %160, ptr %162, align 8 + %163 = getelementptr inbounds i8, ptr %150, i64 32 + %164 = load ptr, ptr %163, align 8 + %165 = load ptr, ptr %156, align 8 + %166 = getelementptr inbounds i8, ptr %165, i64 40 + store ptr %164, ptr %166, align 8 + %167 = getelementptr inbounds i8, ptr %11, i64 928 + call void @_ZN15JavaFrameAnchor13make_walkableEv(ptr noundef nonnull align 8 dereferenceable(24) %167) #15 call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #15, !srcloc !9 store volatile i32 4, ptr %19, align 4 ret i32 %.2 diff --git a/bench/openjdk/optimized/serialHeap.ll b/bench/openjdk/optimized/serialHeap.ll index 85ca79d4235..4c1c1c17f14 100644 --- a/bench/openjdk/optimized/serialHeap.ll +++ b/bench/openjdk/optimized/serialHeap.ll @@ -1182,11 +1182,9 @@ define hidden noundef ptr @_ZN10SerialHeap17mem_allocate_workEmb(ptr noundef non %17 = getelementptr inbounds i8, ptr %4, i64 32 br label %18 -18: ; preds = %127, %3 - %.039 = phi i32 [ 0, %3 ], [ %.140, %127 ] - %.038 = phi i32 [ 1, %3 ], [ %128, %127 ] - %.036 = phi i32 [ undef, %3 ], [ %.137, %127 ] - %.0 = phi ptr [ undef, %3 ], [ %.2, %127 ] +18: ; preds = %_ZN11MutexLockerD2Ev.exit.jt4, %3 + %.039 = phi i32 [ 0, %3 ], [ %.14066, %_ZN11MutexLockerD2Ev.exit.jt4 ] + %.038 = phi i32 [ 1, %3 ], [ %128, %_ZN11MutexLockerD2Ev.exit.jt4 ] %19 = load ptr, ptr %5, align 8 %20 = getelementptr inbounds i8, ptr %19, i64 432 %21 = load i64, ptr %20, align 8 @@ -1202,7 +1200,7 @@ define hidden noundef ptr @_ZN10SerialHeap17mem_allocate_workEmb(ptr noundef non %28 = load ptr, ptr %27, align 8 %29 = call noundef ptr %28(ptr noundef nonnull align 8 dereferenceable(744) %19, i64 noundef %1, i1 noundef zeroext %2) #16 %.not = icmp eq ptr %29, null - br i1 %.not, label %30, label %129 + br i1 %.not, label %30, label %_ZN11MutexLockerD2Ev.exit.jt1 30: ; preds = %25, %18 %31 = load ptr, ptr @Heap_lock, align 8 @@ -1274,20 +1272,20 @@ _ZNK10SerialHeap38should_try_older_generation_allocationEm.exit: ; preds = %35, _ZN10SerialHeap18attempt_allocationEmbb.exit: ; preds = %54, %60 %.013.i = phi ptr [ %58, %54 ], [ %65, %60 ] %.not46 = icmp eq ptr %.013.i, null - br i1 %.not46, label %_ZN10SerialHeap18attempt_allocationEmbb.exit.thread, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57 + br i1 %.not46, label %_ZN10SerialHeap18attempt_allocationEmbb.exit.thread, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1 _ZN10SerialHeap18attempt_allocationEmbb.exit.thread: ; preds = %59, %_ZN10SerialHeap18attempt_allocationEmbb.exit %66 = load volatile i8, ptr @_ZN8GCLocker9_needs_gcE, align 1 %67 = trunc i8 %66 to i1 - br i1 %67, label %_ZN8GCLocker22is_active_and_needs_gcEv.exit, label %_ZN8GCLocker22is_active_and_needs_gcEv.exit.thread + br i1 %67, label %_ZN8GCLocker22is_active_and_needs_gcEv.exit, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt0 _ZN8GCLocker22is_active_and_needs_gcEv.exit: ; preds = %_ZN10SerialHeap18attempt_allocationEmbb.exit.thread %68 = load volatile i32, ptr @_ZN8GCLocker15_jni_lock_countE, align 4 %69 = icmp sgt i32 %68, 0 - br i1 %69, label %70, label %_ZN8GCLocker22is_active_and_needs_gcEv.exit.thread + br i1 %69, label %70, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt0 70: ; preds = %_ZN8GCLocker22is_active_and_needs_gcEv.exit - br i1 %2, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57, label %71 + br i1 %2, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1, label %71 71: ; preds = %70 %72 = load ptr, ptr %0, align 8 @@ -1306,7 +1304,7 @@ _ZN8GCLocker22is_active_and_needs_gcEv.exit: ; preds = %_ZN10SerialHeap18at %81 = load ptr, ptr %80, align 8 %82 = call noundef ptr %81(ptr noundef nonnull align 8 dereferenceable(248) %78, i64 noundef %1, i1 noundef zeroext false) #16 %83 = icmp eq ptr %82, null - br i1 %83, label %.thread.i, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57 + br i1 %83, label %.thread.i, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1 .thread.i: ; preds = %77, %76 %84 = load ptr, ptr %5, align 8 @@ -1323,112 +1321,108 @@ _ZN10SerialHeap24expand_heap_and_allocateEmb.exit: ; preds = %.thread.i %92 = load ptr, ptr %91, align 8 %93 = call noundef ptr %92(ptr noundef nonnull align 8 dereferenceable(744) %84, i64 noundef %1, i1 noundef zeroext false) #16 %.not47 = icmp eq ptr %93, null - br i1 %.not47, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57 + br i1 %.not47, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1 _ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread: ; preds = %.thread.i, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit, %71 %94 = zext i32 %.039 to i64 %95 = load i64, ptr @GCLockerRetryAllocationCount, align 8 %96 = icmp ult i64 %95, %94 - br i1 %96, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57, label %97 + br i1 %96, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1, label %97 97: ; preds = %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread %98 = load ptr, ptr %11, align 8 %99 = getelementptr inbounds i8, ptr %98, i64 1308 %100 = load i32, ptr %99, align 4 %101 = icmp sgt i32 %100, 0 - br i1 %101, label %104, label %_ZN13MutexUnlockerD2Ev.exit + br i1 %101, label %102, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt4 -_ZN13MutexUnlockerD2Ev.exit: ; preds = %97 - %102 = load ptr, ptr @Heap_lock, align 8 - call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %102) #16 - call void @_ZN8GCLocker17stall_until_clearEv() #16 - %103 = add i32 %.039, 1 - call void @_ZN5Mutex4lockEv(ptr noundef nonnull align 8 dereferenceable(104) %102) #16 - br label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57 - -104: ; preds = %97 - %105 = load i8, ptr @CheckJNICalls, align 1 - %106 = trunc i8 %105 to i1 - br i1 %106, label %107, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57 - -107: ; preds = %104 - %108 = load ptr, ptr @g_assert_poison, align 8 - store i8 88, ptr %108, align 1 +102: ; preds = %97 + %103 = load i8, ptr @CheckJNICalls, align 1 + %104 = trunc i8 %103 to i1 + br i1 %104, label %105, label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1 + +105: ; preds = %102 + %106 = load ptr, ptr @g_assert_poison, align 8 + store i8 88, ptr %106, align 1 call void (i32, ptr, i32, ptr, ...) @_Z12report_fatal11VMErrorTypePKciS1_z(i32 noundef -536870912, ptr noundef nonnull @.str.14, i32 noundef 370, ptr noundef nonnull @.str.15) #17 unreachable -_ZN8GCLocker22is_active_and_needs_gcEv.exit.thread: ; preds = %_ZN10SerialHeap18attempt_allocationEmbb.exit.thread, %_ZN8GCLocker22is_active_and_needs_gcEv.exit - %109 = load i32, ptr %10, align 8 - br label %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57 +_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1: ; preds = %77, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit, %70, %_ZN10SerialHeap18attempt_allocationEmbb.exit, %102 + %.2.jt1 = phi ptr [ null, %102 ], [ %82, %77 ], [ null, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread ], [ %93, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit ], [ null, %70 ], [ %.013.i, %_ZN10SerialHeap18attempt_allocationEmbb.exit ] + br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit.jt1, label %110 + +_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt0: ; preds = %_ZN8GCLocker22is_active_and_needs_gcEv.exit, %_ZN10SerialHeap18attempt_allocationEmbb.exit.thread + %107 = load i32, ptr %10, align 8 + br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit.jt0, label %111 -_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57: ; preds = %77, %104, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit, %70, %_ZN10SerialHeap18attempt_allocationEmbb.exit, %_ZN8GCLocker22is_active_and_needs_gcEv.exit.thread, %_ZN13MutexUnlockerD2Ev.exit - %.140 = phi i32 [ %103, %_ZN13MutexUnlockerD2Ev.exit ], [ %.039, %_ZN8GCLocker22is_active_and_needs_gcEv.exit.thread ], [ %.039, %_ZN10SerialHeap18attempt_allocationEmbb.exit ], [ %.039, %70 ], [ %.039, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit ], [ %.039, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread ], [ %.039, %104 ], [ %.039, %77 ] - %.137 = phi i32 [ %.036, %_ZN13MutexUnlockerD2Ev.exit ], [ %109, %_ZN8GCLocker22is_active_and_needs_gcEv.exit.thread ], [ %.036, %_ZN10SerialHeap18attempt_allocationEmbb.exit ], [ %.036, %70 ], [ %.036, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit ], [ %.036, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread ], [ %.036, %104 ], [ %.036, %77 ] - %.034 = phi i32 [ 4, %_ZN13MutexUnlockerD2Ev.exit ], [ 0, %_ZN8GCLocker22is_active_and_needs_gcEv.exit.thread ], [ 1, %_ZN10SerialHeap18attempt_allocationEmbb.exit ], [ 1, %70 ], [ 1, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit ], [ 1, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread ], [ 1, %104 ], [ 1, %77 ] - %.2 = phi ptr [ %.0, %_ZN13MutexUnlockerD2Ev.exit ], [ %.0, %_ZN8GCLocker22is_active_and_needs_gcEv.exit.thread ], [ %.013.i, %_ZN10SerialHeap18attempt_allocationEmbb.exit ], [ null, %70 ], [ %93, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit ], [ null, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread ], [ null, %104 ], [ %82, %77 ] - br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit, label %110 +_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt4: ; preds = %97 + %108 = load ptr, ptr @Heap_lock, align 8 + call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %108) #16 + call void @_ZN8GCLocker17stall_until_clearEv() #16 + %109 = add i32 %.039, 1 + call void @_ZN5Mutex4lockEv(ptr noundef nonnull align 8 dereferenceable(104) %108) #16 + br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit.jt4, label %112 -110: ; preds = %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57 +110: ; preds = %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1 call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %31) #16 - br label %_ZN11MutexLockerD2Ev.exit + br label %_ZN11MutexLockerD2Ev.exit.jt1 -_ZN11MutexLockerD2Ev.exit: ; preds = %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57, %110 - switch i32 %.034, label %130 [ - i32 0, label %111 - i32 1, label %129 - i32 4, label %127 - ] +111: ; preds = %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt0 + call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %31) #16 + br label %_ZN11MutexLockerD2Ev.exit.jt0 + +112: ; preds = %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt4 + call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %31) #16 + br label %_ZN11MutexLockerD2Ev.exit.jt4 -111: ; preds = %_ZN11MutexLockerD2Ev.exit - call void @_ZN23VM_CollectForAllocationC2EmjN7GCCause5CauseE(ptr noundef nonnull align 8 dereferenceable(56) %4, i64 noundef %1, i32 noundef %.137, i32 noundef 13) #16 +_ZN11MutexLockerD2Ev.exit.jt0: ; preds = %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt0, %111 + call void @_ZN23VM_CollectForAllocationC2EmjN7GCCause5CauseE(ptr noundef nonnull align 8 dereferenceable(56) %4, i64 noundef %1, i32 noundef %107, i32 noundef 13) #16 store ptr getelementptr inbounds inrange(-16, 88) (i8, ptr @_ZTV29VM_SerialCollectForAllocation, i64 16), ptr %4, align 8 store i8 %12, ptr %13, align 8 call void @_ZN8VMThread7executeEP12VM_Operation(ptr noundef nonnull %4) #16 - %112 = load i8, ptr %14, align 1 - %113 = trunc i8 %112 to i1 - br i1 %113, label %123, label %114 - -114: ; preds = %111 - %115 = load i64, ptr @QueuedAllocationWarningCount, align 8 - %.not48 = icmp eq i64 %115, 0 - br i1 %.not48, label %.thread, label %116 - -116: ; preds = %114 - %117 = zext i32 %.038 to i64 - %118 = urem i64 %117, %115 - %119 = icmp eq i64 %118, 0 - br i1 %119, label %120, label %.thread - -120: ; preds = %116 - %121 = load volatile ptr, ptr getelementptr inbounds (i8, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_40ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, i64 72), align 8 - %.not65 = icmp eq ptr %121, null - br i1 %.not65, label %.thread, label %122 - -122: ; preds = %120 + %113 = load i8, ptr %14, align 1 + %114 = trunc i8 %113 to i1 + br i1 %114, label %124, label %115 + +115: ; preds = %_ZN11MutexLockerD2Ev.exit.jt0 + %116 = load i64, ptr @QueuedAllocationWarningCount, align 8 + %.not48 = icmp eq i64 %116, 0 + br i1 %.not48, label %.thread, label %117 + +117: ; preds = %115 + %118 = zext i32 %.038 to i64 + %119 = urem i64 %118, %116 + %120 = icmp eq i64 %119, 0 + br i1 %120, label %121, label %.thread + +121: ; preds = %117 + %122 = load volatile ptr, ptr getelementptr inbounds (i8, ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_40ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, i64 72), align 8 + %.not65 = icmp eq ptr %122, null + br i1 %.not65, label %.thread, label %123 + +123: ; preds = %121 call void (ptr, ...) @_ZN7LogImplILN6LogTag4typeE49ELS1_40ELS1_0ELS1_0ELS1_0ELS1_0EE5writeILN8LogLevel4typeE4EEEvPKcz(ptr noundef nonnull @.str.16, i32 noundef %.038, i64 noundef %1, ptr noundef nonnull %15) br label %.thread -.thread: ; preds = %122, %120, %116, %114 +.thread: ; preds = %123, %121, %117, %115 call void @_ZN15VM_GC_OperationD2Ev(ptr noundef nonnull align 8 dereferenceable(33) %4) #16 - br label %127 + br label %_ZN11MutexLockerD2Ev.exit.jt4 -123: ; preds = %111 - %124 = load ptr, ptr %16, align 8 - %125 = load i8, ptr %17, align 8 - %126 = trunc i8 %125 to i1 +124: ; preds = %_ZN11MutexLockerD2Ev.exit.jt0 + %125 = load ptr, ptr %16, align 8 + %126 = load i8, ptr %17, align 8 + %127 = trunc i8 %126 to i1 call void @_ZN15VM_GC_OperationD2Ev(ptr noundef nonnull align 8 dereferenceable(33) %4) #16 - br i1 %126, label %127, label %129 + br i1 %127, label %_ZN11MutexLockerD2Ev.exit.jt4, label %_ZN11MutexLockerD2Ev.exit.jt1 -127: ; preds = %.thread, %123, %_ZN11MutexLockerD2Ev.exit +_ZN11MutexLockerD2Ev.exit.jt4: ; preds = %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt4, %112, %.thread, %124 + %.14066 = phi i32 [ %.039, %.thread ], [ %.039, %124 ], [ %109, %112 ], [ %109, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt4 ] %128 = add i32 %.038, 1 br label %18, !llvm.loop !15 -129: ; preds = %123, %25, %_ZN11MutexLockerD2Ev.exit - %.1 = phi ptr [ %.2, %_ZN11MutexLockerD2Ev.exit ], [ %124, %123 ], [ %29, %25 ] +_ZN11MutexLockerD2Ev.exit.jt1: ; preds = %124, %25, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1, %110 + %.1 = phi ptr [ %.2.jt1, %110 ], [ %.2.jt1, %_ZN10SerialHeap24expand_heap_and_allocateEmb.exit.thread57.jt1 ], [ %29, %25 ], [ %125, %124 ] ret ptr %.1 - -130: ; preds = %_ZN11MutexLockerD2Ev.exit - unreachable } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/openmpi/optimized/cmd_line.ll b/bench/openmpi/optimized/cmd_line.ll index 48526e90608..2888911aa05 100644 --- a/bench/openmpi/optimized/cmd_line.ll +++ b/bench/openmpi/optimized/cmd_line.ll @@ -2064,11 +2064,11 @@ define noalias ptr @opal_cmd_line_get_usage_msg(ptr noundef %0) local_unnamed_ad 59: ; preds = %56 %60 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.store.select.i, ptr noundef nonnull dereferenceable(9) @.str.38) #22 %61 = icmp eq i32 %60, 0 - %spec.select.i = select i1 %61, i32 12, i32 13 + %spec.select = select i1 %61, i32 12, i32 13 br label %get_help_otype.exit -get_help_otype.exit: ; preds = %25, %29, %32, %35, %38, %41, %44, %47, %50, %53, %56, %59 - %.016.i = phi i32 [ 1, %25 ], [ 2, %29 ], [ 3, %32 ], [ 4, %35 ], [ 5, %38 ], [ 6, %41 ], [ 7, %44 ], [ 8, %47 ], [ 9, %50 ], [ 10, %53 ], [ 0, %56 ], [ %spec.select.i, %59 ] +get_help_otype.exit: ; preds = %59, %25, %29, %32, %35, %38, %41, %44, %47, %50, %53, %56 + %.016.i = phi i32 [ 1, %25 ], [ 2, %29 ], [ 3, %32 ], [ 4, %35 ], [ 5, %38 ], [ 6, %41 ], [ 7, %44 ], [ 8, %47 ], [ 9, %50 ], [ 10, %53 ], [ 0, %56 ], [ %spec.select, %59 ] %62 = load volatile i64, ptr %8, align 8 %.not153 = icmp eq i64 %62, 0 br i1 %.not153, label %._crit_edge152.thread, label %.lr.ph151 diff --git a/bench/openusd/optimized/coordSysAPI.cpp.ll b/bench/openusd/optimized/coordSysAPI.cpp.ll index 675f89e3eb7..3b48258d25c 100644 --- a/bench/openusd/optimized/coordSysAPI.cpp.ll +++ b/bench/openusd/optimized/coordSysAPI.cpp.ll @@ -10165,7 +10165,7 @@ _ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit: ; preds = %.noexc57 %220 = and i1 %219, %218 br i1 %220, label %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread101.thread, label %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread -_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread101.thread: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit, %212, %.noexc57 +_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread101.thread: ; preds = %212, %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit, %.noexc57 %221 = load ptr, ptr %193, align 8 %.not.i.i.i58 = icmp eq ptr %221, null br i1 %.not.i.i.i58, label %_ZNK32pxrInternal_v0_24__pxrReserved__9UsdObjectcvbEv.exit.thread, label %_ZNK32pxrInternal_v0_24__pxrReserved__18Usd_PrimDataHandlecvbEv.exit.i.i59 diff --git a/bench/openvdb/optimized/Mask.cc.ll b/bench/openvdb/optimized/Mask.cc.ll index 5fd8ec860d1..ff7296f14a6 100644 --- a/bench/openvdb/optimized/Mask.cc.ll +++ b/bench/openvdb/optimized/Mask.cc.ll @@ -15307,8 +15307,8 @@ entry: %my_size = getelementptr inbounds i8, ptr %this, i64 16 br label %restart -restart: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61, %entry - %mask.0 = phi i64 [ %2, %entry ], [ %mask.2, %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 ] +restart: ; preds = %restart.backedge, %entry + %mask.0 = phi i64 [ %2, %entry ], [ %mask.2.jt2, %restart.backedge ] %and = and i64 %mask.0, %1 store ptr null, ptr %b, align 8 store i8 0, ptr %m_is_writer.i.i, align 8 @@ -15351,8 +15351,8 @@ invoke.cont8.lr.ph: ; preds = %search %10 = load ptr, ptr %key, align 8 %11 = getelementptr inbounds i8, ptr %atomic-temp.i.0.i, i64 16 %12 = load ptr, ptr %11, align 8 - %cmp.i.i144 = icmp eq ptr %10, %12 - br i1 %cmp.i.i144, label %if.else, label %while.body + %cmp.i.i141 = icmp eq ptr %10, %12 + br i1 %cmp.i.i141, label %if.else, label %while.body invoke.cont8: ; preds = %while.body %13 = getelementptr inbounds i8, ptr %15, i64 16 @@ -15361,27 +15361,27 @@ invoke.cont8: ; preds = %while.body br i1 %cmp.i.i, label %if.else, label %while.body, !llvm.loop !172 while.body: ; preds = %invoke.cont8.lr.ph, %invoke.cont8 - %erase_node.0107145 = phi ptr [ %15, %invoke.cont8 ], [ %atomic-temp.i.0.i, %invoke.cont8.lr.ph ] - %15 = load ptr, ptr %erase_node.0107145, align 8 + %erase_node.0107142 = phi ptr [ %15, %invoke.cont8 ], [ %atomic-temp.i.0.i, %invoke.cont8.lr.ph ] + %15 = load ptr, ptr %erase_node.0107142, align 8 %cmp.i = icmp ugt ptr %15, inttoptr (i64 63 to ptr) br i1 %cmp.i, label %invoke.cont8, label %while.end, !llvm.loop !172 while.end: ; preds = %while.body, %search %erase_node.0.lcssa = phi ptr [ %atomic-temp.i.0.i, %search ], [ %15, %while.body ] - %prev.0.lcssa = phi ptr [ null, %search ], [ %erase_node.0107145, %while.body ] + %prev.0.lcssa = phi ptr [ null, %search ], [ %erase_node.0107142, %while.body ] %cmp = icmp eq ptr %erase_node.0.lcssa, null br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %while.end %16 = load atomic i64, ptr %my_mask acquire, align 8 %cmp.not.i = icmp eq i64 %mask.1.ph, %16 - br i1 %cmp.not.i, label %cleanup, label %if.then.i + br i1 %cmp.not.i, label %cleanup.jt1, label %if.then.i if.then.i: ; preds = %if.then %17 = xor i64 %16, %mask.1.ph %18 = and i64 %17, %1 %cmp.not.i.i = icmp eq i64 %18, 0 - br i1 %cmp.not.i.i, label %cleanup, label %if.then.i.i20 + br i1 %cmp.not.i.i, label %cleanup.jt1, label %if.then.i.i20 if.then.i.i20: ; preds = %if.then.i %inc.i.i = add i64 %mask.1.ph, 1 @@ -15409,12 +15409,11 @@ for.end.i.i: ; preds = %for.cond.i.i %node_list.i.i = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base, 4>, 5>>>, true> *const, bool>>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i, i64 %sub.i.i.i, i32 1 %21 = load atomic i64, ptr %node_list.i.i acquire, align 8 %cmp.i.i.i = icmp eq i64 %21, 3 - %spec.select = select i1 %cmp.i.i.i, i32 1, i32 2 - br label %cleanup + br i1 %cmp.i.i.i, label %cleanup.jt1, label %cleanup.jt2 if.else: ; preds = %invoke.cont8, %invoke.cont8.lr.ph, %while.end %erase_node.093 = phi ptr [ %erase_node.0.lcssa, %while.end ], [ %atomic-temp.i.0.i, %invoke.cont8.lr.ph ], [ %15, %invoke.cont8 ] - %prev.089 = phi ptr [ %prev.0.lcssa, %while.end ], [ null, %invoke.cont8.lr.ph ], [ %erase_node.0107145, %invoke.cont8 ] + %prev.089 = phi ptr [ %prev.0.lcssa, %while.end ], [ null, %invoke.cont8.lr.ph ], [ %erase_node.0107142, %invoke.cont8 ] %22 = load i8, ptr %m_is_writer.i.i, align 8 %tobool.i = trunc i8 %22 to i1 br i1 %tobool.i, label %if.end23, label %if.end.i @@ -15582,7 +15581,7 @@ for.end.i.i37: ; preds = %for.cond.i.i32 %node_list.i.i48 = getelementptr inbounds %"struct.tbb::detail::d2::hash_map_base, 4>, 5>>>, true> *const, bool>>, tbb::detail::d1::spin_rw_mutex>::bucket", ptr %atomic-temp.i.0.i.i.i.i47, i64 %sub.i.i.i44, i32 1 %42 = load atomic i64, ptr %node_list.i.i48 acquire, align 8 %cmp.i.i.i49 = icmp eq i64 %42, 3 - br i1 %cmp.i.i.i49, label %search.outer.backedge, label %cleanup + br i1 %cmp.i.i.i49, label %search.outer.backedge, label %cleanup.jt2 search.outer.backedge: ; preds = %for.end.i.i37, %if.then.i28 br label %search.outer @@ -15597,48 +15596,77 @@ if.then25: ; preds = %if.end23 %44 = load ptr, ptr %erase_node.093, align 8 %45 = ptrtoint ptr %44 to i64 store atomic i64 %45, ptr %node_list28 monotonic, align 8 - br label %if.end33 + br label %cleanup.jt0 if.else30: ; preds = %if.end23 %46 = load ptr, ptr %erase_node.093, align 8 store ptr %46, ptr %prev.089, align 8 - br label %if.end33 + br label %cleanup.jt0 -if.end33: ; preds = %if.else30, %if.then25 - %47 = atomicrmw sub ptr %my_size, i64 1 seq_cst, align 8 - br label %cleanup +cleanup.jt2: ; preds = %for.end.i.i37, %for.end.i.i + %mask.2.jt2 = phi i64 [ %16, %for.end.i.i ], [ %37, %for.end.i.i37 ] + %47 = load ptr, ptr %b, align 8 + %tobool.not.i.i54.jt2 = icmp eq ptr %47, null + br i1 %tobool.not.i.i54.jt2, label %restart.backedge, label %if.then.i.i55.jt2 -cleanup: ; preds = %for.end.i.i37, %for.end.i.i, %if.then.i, %if.then, %if.end33 - %erase_node.092 = phi ptr [ %erase_node.093, %if.end33 ], [ null, %if.then ], [ null, %if.then.i ], [ null, %for.end.i.i ], [ %erase_node.093, %for.end.i.i37 ] - %mask.2 = phi i64 [ %mask.1.ph, %if.end33 ], [ %mask.1.ph, %if.then ], [ %16, %if.then.i ], [ %16, %for.end.i.i ], [ %37, %for.end.i.i37 ] - %cleanup.dest.slot.0 = phi i32 [ 0, %if.end33 ], [ 1, %if.then ], [ 1, %if.then.i ], [ %spec.select, %for.end.i.i ], [ 2, %for.end.i.i37 ] +cleanup.jt1: ; preds = %for.end.i.i, %if.then.i, %if.then %48 = load ptr, ptr %b, align 8 - %tobool.not.i.i54 = icmp eq ptr %48, null - br i1 %tobool.not.i.i54, label %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61, label %if.then.i.i55 + %tobool.not.i.i54.jt1 = icmp eq ptr %48, null + br i1 %tobool.not.i.i54.jt1, label %return, label %if.then.i.i55.jt1 + +cleanup.jt0: ; preds = %if.then25, %if.else30 + %49 = atomicrmw sub ptr %my_size, i64 1 seq_cst, align 8 + %50 = load ptr, ptr %b, align 8 + %tobool.not.i.i54.jt0 = icmp eq ptr %50, null + br i1 %tobool.not.i.i54.jt0, label %cleanup.cont, label %if.then.i.i55.jt0 -if.then.i.i55: ; preds = %cleanup +if.then.i.i55.jt2: ; preds = %cleanup.jt2 store ptr null, ptr %b, align 8 - %49 = load i8, ptr %m_is_writer.i.i, align 8 - %tobool.i.i.i57 = trunc i8 %49 to i1 - br i1 %tobool.i.i.i57, label %if.then.i.i.i60, label %if.else.i.i.i58 - -if.then.i.i.i60: ; preds = %if.then.i.i55 - %50 = atomicrmw and ptr %48, i64 -4 seq_cst, align 8 - br label %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 - -if.else.i.i.i58: ; preds = %if.then.i.i55 - %51 = atomicrmw sub ptr %48, i64 4 seq_cst, align 8 - br label %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 - -_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61: ; preds = %cleanup, %if.then.i.i.i60, %if.else.i.i.i58 - switch i32 %cleanup.dest.slot.0, label %default.unreachable121 [ - i32 0, label %cleanup.cont - i32 2, label %restart - i32 1, label %return - ] + %51 = load i8, ptr %m_is_writer.i.i, align 8 + %tobool.i.i.i57.jt2 = trunc i8 %51 to i1 + br i1 %tobool.i.i.i57.jt2, label %if.then.i.i.i60.jt2, label %if.else.i.i.i58.jt2 + +if.then.i.i55.jt1: ; preds = %cleanup.jt1 + store ptr null, ptr %b, align 8 + %52 = load i8, ptr %m_is_writer.i.i, align 8 + %tobool.i.i.i57.jt1 = trunc i8 %52 to i1 + br i1 %tobool.i.i.i57.jt1, label %if.then.i.i.i60.jt1, label %if.else.i.i.i58.jt1 + +if.then.i.i55.jt0: ; preds = %cleanup.jt0 + store ptr null, ptr %b, align 8 + %53 = load i8, ptr %m_is_writer.i.i, align 8 + %tobool.i.i.i57.jt0 = trunc i8 %53 to i1 + br i1 %tobool.i.i.i57.jt0, label %if.then.i.i.i60.jt0, label %if.else.i.i.i58.jt0 + +if.then.i.i.i60.jt2: ; preds = %if.then.i.i55.jt2 + %54 = atomicrmw and ptr %47, i64 -4 seq_cst, align 8 + br label %restart.backedge + +if.then.i.i.i60.jt1: ; preds = %if.then.i.i55.jt1 + %55 = atomicrmw and ptr %48, i64 -4 seq_cst, align 8 + br label %return -cleanup.cont: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 - %mutex = getelementptr inbounds i8, ptr %erase_node.092, i64 8 +if.then.i.i.i60.jt0: ; preds = %if.then.i.i55.jt0 + %56 = atomicrmw and ptr %50, i64 -4 seq_cst, align 8 + br label %cleanup.cont + +if.else.i.i.i58.jt2: ; preds = %if.then.i.i55.jt2 + %57 = atomicrmw sub ptr %47, i64 4 seq_cst, align 8 + br label %restart.backedge + +restart.backedge: ; preds = %if.else.i.i.i58.jt2, %if.then.i.i.i60.jt2, %cleanup.jt2 + br label %restart + +if.else.i.i.i58.jt1: ; preds = %if.then.i.i55.jt1 + %58 = atomicrmw sub ptr %48, i64 4 seq_cst, align 8 + br label %return + +if.else.i.i.i58.jt0: ; preds = %if.then.i.i55.jt0 + %59 = atomicrmw sub ptr %50, i64 4 seq_cst, align 8 + br label %cleanup.cont + +cleanup.cont: ; preds = %cleanup.jt0, %if.then.i.i.i60.jt0, %if.else.i.i.i58.jt0 + %mutex = getelementptr inbounds i8, ptr %erase_node.093, i64 8 br label %for.cond.i.i.i.outer for.cond.i.i.i.outer: ; preds = %_ZN3tbb6detail2d0L13machine_pauseEi.exit.i.i.i.i, %cleanup.cont @@ -15647,23 +15675,23 @@ for.cond.i.i.i.outer: ; preds = %_ZN3tbb6detail2d0L1 br label %for.cond.i.i.i for.cond.i.i.i: ; preds = %for.cond.i.i.i.outer, %if.else.i.i.i.i - %52 = load atomic i64, ptr %mutex monotonic, align 8 - %and.i.i.i = and i64 %52, -3 + %60 = load atomic i64, ptr %mutex monotonic, align 8 + %and.i.i.i = and i64 %60, -3 %tobool.not.i.i.i = icmp eq i64 %and.i.i.i, 0 br i1 %tobool.not.i.i.i, label %_ZNSt13__atomic_baseIlE23compare_exchange_strongERllSt12memory_orderS2_.exit.i.i.i, label %if.else.i.i.i63 _ZNSt13__atomic_baseIlE23compare_exchange_strongERllSt12memory_orderS2_.exit.i.i.i: ; preds = %for.cond.i.i.i - %53 = cmpxchg ptr %mutex, i64 %52, i64 1 seq_cst seq_cst, align 8 - %54 = extractvalue { i64, i1 } %53, 1 - br i1 %54, label %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit, label %while.body.i.i.preheader.i.i.i + %61 = cmpxchg ptr %mutex, i64 %60, i64 1 seq_cst seq_cst, align 8 + %62 = extractvalue { i64, i1 } %61, 1 + br i1 %62, label %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit, label %while.body.i.i.preheader.i.i.i if.else.i.i.i63: ; preds = %for.cond.i.i.i - %and5.i.i.i = and i64 %52, 2 + %and5.i.i.i = and i64 %60, 2 %tobool6.not.i.i.i = icmp eq i64 %and5.i.i.i, 0 br i1 %tobool6.not.i.i.i, label %if.then7.i.i.i, label %for.inc.i.i.i if.then7.i.i.i: ; preds = %if.else.i.i.i63 - %55 = atomicrmw or ptr %mutex, i64 2 seq_cst, align 8 + %63 = atomicrmw or ptr %mutex, i64 2 seq_cst, align 8 br label %for.inc.i.i.i for.inc.i.i.i: ; preds = %if.then7.i.i.i, %if.else.i.i.i63 @@ -15694,16 +15722,13 @@ if.else.i.i.i.i: ; preds = %for.inc.i.i.i br label %for.cond.i.i.i, !llvm.loop !177 _ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit: ; preds = %_ZNSt13__atomic_baseIlE23compare_exchange_strongERllSt12memory_orderS2_.exit.i.i.i - %56 = atomicrmw and ptr %mutex, i64 -4 seq_cst, align 8 - call void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %erase_node.092) + %64 = atomicrmw and ptr %mutex, i64 -4 seq_cst, align 8 + call void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %erase_node.093) br label %return -return: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit - %retval.2 = phi i1 [ true, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit ], [ false, %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 ] +return: ; preds = %if.else.i.i.i58.jt1, %if.then.i.i.i60.jt1, %cleanup.jt1, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit + %retval.2 = phi i1 [ true, %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit ], [ false, %cleanup.jt1 ], [ false, %if.then.i.i.i60.jt1 ], [ false, %if.else.i.i.i58.jt1 ] ret i1 %retval.2 - -default.unreachable121: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN7openvdb5v11_04tree17ValueAccessorBaseINS5_4TreeINS5_8RootNodeINS5_12InternalNodeINS9_INS5_8LeafNodeIbLj3EEELj4EEELj5EEEEEEELb1EEEbNS0_2d116tbb_hash_compareISH_EENSI_13tbb_allocatorISt4pairIKSH_bEEEE15bucket_accessorD2Ev.exit61 - unreachable } ; Function Attrs: mustprogress uwtable diff --git a/bench/pbrt-v4/optimized/aggregates.cpp.ll b/bench/pbrt-v4/optimized/aggregates.cpp.ll index 7df77c9c744..c03fe4999de 100644 --- a/bench/pbrt-v4/optimized/aggregates.cpp.ll +++ b/bench/pbrt-v4/optimized/aggregates.cpp.ll @@ -8442,9 +8442,9 @@ entry: %0 = load i32, ptr %nextFreeNode, align 4 store i32 %0, ptr %vb, align 4 %cmp = icmp eq i32 %nodeNum, %0 - %.sink388.sroa.gep = getelementptr inbounds i8, ptr %bounds0, i64 12 - %.sink388.sroa.gep395 = getelementptr inbounds i8, ptr %bounds0, i64 16 - %.sink388.sroa.gep396 = getelementptr inbounds i8, ptr %bounds0, i64 20 + %.sink390.sroa.gep = getelementptr inbounds i8, ptr %bounds0, i64 12 + %.sink390.sroa.gep397 = getelementptr inbounds i8, ptr %bounds0, i64 16 + %.sink390.sroa.gep398 = getelementptr inbounds i8, ptr %bounds0, i64 20 br i1 %cmp, label %do.end, label %if.then if.then: ; preds = %entry @@ -8538,8 +8538,6 @@ if.end26: ; preds = %if.end18 %cmp3.i = fcmp ogt float %sub.i.i.i, %sub6.i.i.i %or.cond.i = select i1 %cmp.i134, i1 %cmp3.i, i1 false %cmp6.i = fcmp ogt float %sub4.i.i.i, %sub6.i.i.i - %..i = select i1 %cmp6.i, i32 1, i32 2 - %retval.0.i = select i1 %or.cond.i, i32 0, i32 %..i %mul61 = shl i64 %primNums.coerce1, 1 %add.ptr.i148.idx342 = mul i64 %primNums.coerce1, 24 %cmp.i.not.i.i = icmp eq i64 %add.ptr.i148.idx342, 0 @@ -8554,11 +8552,13 @@ if.end26: ; preds = %if.end18 %y.i155 = getelementptr inbounds i8, ptr %nodeBounds, i64 4 %emptyBonus = getelementptr inbounds i8, ptr %this, i64 12 %traversalCost = getelementptr inbounds i8, ptr %this, i64 4 + %..i.si.unfold.phi = select i1 %cmp6.i, i32 1, i32 2 + %axis.0.ph = select i1 %or.cond.i, i32 0, i32 %..i.si.unfold.phi br label %for.body.lr.ph -for.body.lr.ph: ; preds = %if.end26, %if.then162 +for.body.lr.ph: ; preds = %if.then162, %if.end26 %retries.0 = phi i32 [ 0, %if.end26 ], [ %inc163, %if.then162 ] - %axis.0 = phi i32 [ %retval.0.i, %if.end26 ], [ %rem165, %if.then162 ] + %axis.0 = phi i32 [ %axis.0.ph, %if.end26 ], [ %spec.select389, %if.then162 ] %bestCost.0 = phi float [ 0x7FF0000000000000, %if.end26 ], [ %bestCost.1.lcssa, %if.then162 ] %bestOffset.0 = phi i32 [ -1, %if.end26 ], [ %bestOffset.1.lcssa, %if.then162 ] %idxprom40325 = zext nneg i32 %axis.0 to i64 @@ -8606,13 +8606,13 @@ _ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit: ; preds = %for.body br label %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit144 _ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit144: ; preds = %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread322, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit - %add.ptr.i137316.sink387 = phi ptr [ %add.ptr.i137316, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread ], [ %add.ptr.i137328, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread322 ], [ %add.ptr.i137, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit ] + %add.ptr.i137316.sink388 = phi ptr [ %add.ptr.i137316, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread ], [ %add.ptr.i137328, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread322 ], [ %add.ptr.i137, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit ] %.sink = phi i64 [ 12, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread ], [ 16, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread322 ], [ 20, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit ] %mul42321 = phi i64 [ %mul42315, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread ], [ %mul42327, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread322 ], [ %mul42, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit ] %arrayidx41320 = phi ptr [ %arrayidx41326, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread ], [ %arrayidx41326, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread322 ], [ %arrayidx41, %_ZNK4pbrt6Tuple3INS_6Point3EfEixEi.exit ] - %ref.tmp38.sroa.2.0.add.ptr.i137.sroa_idx317 = getelementptr inbounds i8, ptr %add.ptr.i137316.sink387, i64 4 + %ref.tmp38.sroa.2.0.add.ptr.i137.sroa_idx317 = getelementptr inbounds i8, ptr %add.ptr.i137316.sink388, i64 4 store i32 %12, ptr %ref.tmp38.sroa.2.0.add.ptr.i137.sroa_idx317, align 4 - %ref.tmp38.sroa.3.0.add.ptr.i137.sroa_idx318 = getelementptr inbounds i8, ptr %add.ptr.i137316.sink387, i64 8 + %ref.tmp38.sroa.3.0.add.ptr.i137.sroa_idx318 = getelementptr inbounds i8, ptr %add.ptr.i137316.sink388, i64 8 store i32 0, ptr %ref.tmp38.sroa.3.0.add.ptr.i137.sroa_idx318, align 4 %pMax319 = getelementptr inbounds i8, ptr %add.ptr.i, i64 %.sink %retval.0.i141 = load float, ptr %pMax319, align 4 @@ -9122,7 +9122,7 @@ if.then162: ; preds = %land.end %inc163 = add nuw nsw i32 %retries.0, 1 %add164 = add i32 %axis.0, 1 %42 = icmp eq i32 %add164, 3 - %rem165 = select i1 %42, i32 0, i32 %add164 + %spec.select389 = select i1 %42, i32 0, i32 %add164 br label %for.body.lr.ph if.end166: ; preds = %land.end @@ -9258,8 +9258,8 @@ _ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit: ; preds = %for.end233 br label %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit249 _ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit249: ; preds = %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread, %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread337, %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit - %.sink388.sroa.phi = phi ptr [ %.sink388.sroa.gep, %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread ], [ %.sink388.sroa.gep395, %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread337 ], [ %.sink388.sroa.gep396, %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit ] - store float %55, ptr %.sink388.sroa.phi, align 4 + %.sink390.sroa.phi = phi ptr [ %.sink390.sroa.gep, %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread ], [ %.sink390.sroa.gep397, %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit.thread337 ], [ %.sink390.sroa.gep398, %_ZN4pbrt6Tuple3INS_6Point3EfEixEi.exit ] + store float %55, ptr %.sink390.sroa.phi, align 4 %add243 = add nsw i32 %nodeNum, 1 %n.i.i = getelementptr inbounds i8, ptr %prims0, i64 8 %56 = load i64, ptr %n.i.i, align 8 diff --git a/bench/protobuf/optimized/message_differencer.cc.ll b/bench/protobuf/optimized/message_differencer.cc.ll index 2f1ce3eddd2..c8a08b63f95 100644 --- a/bench/protobuf/optimized/message_differencer.cc.ll +++ b/bench/protobuf/optimized/message_differencer.cc.ll @@ -6634,7 +6634,7 @@ if.else83: ; preds = %if.end.i243.us, %in %.us-phi555 = phi ptr [ %call73.val, %if.end.i243 ], [ %call73.val, %invoke.cont74 ], [ %call73.val.us, %invoke.cont74.us ], [ %call73.val.us, %if.end.i243.us ] %type_.i = getelementptr inbounds i8, ptr %.us-phi555, i64 4 %45 = load i32, ptr %type_.i, align 4 - switch i32 %45, label %sw.epilog [ + switch i32 %45, label %if.end136 [ i32 0, label %sw.bb i32 1, label %sw.bb97 i32 2, label %sw.bb108 @@ -6674,7 +6674,7 @@ sw.bb119: ; preds = %if.else83 %call.i = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %52) #35 %call1.i = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %53) #35 %cmp.i268 = icmp eq i64 %call.i, %call1.i - br i1 %cmp.i268, label %land.rhs.i, label %sw.epilog + br i1 %cmp.i268, label %land.rhs.i, label %if.end136 land.rhs.i: ; preds = %sw.bb119 %call2.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %52) #35 @@ -6689,20 +6689,17 @@ if.end.i.i: ; preds = %land.rhs.i br label %sw.epilog sw.bb130: ; preds = %if.else83 - br label %sw.epilog + br label %if.end136 -sw.epilog: ; preds = %if.end.i.i, %land.rhs.i, %sw.bb119, %sw.bb130, %sw.bb108, %sw.bb97, %sw.bb, %if.else83 - %cmp132 = phi i1 [ true, %if.else83 ], [ false, %sw.bb130 ], [ true, %sw.bb108 ], [ true, %sw.bb97 ], [ true, %sw.bb ], [ true, %sw.bb119 ], [ true, %land.rhs.i ], [ true, %if.end.i.i ] - %change_type.1 = phi i32 [ 2, %if.else83 ], [ 3, %sw.bb130 ], [ 2, %sw.bb108 ], [ 2, %sw.bb97 ], [ 2, %sw.bb ], [ 2, %sw.bb119 ], [ 2, %land.rhs.i ], [ 2, %if.end.i.i ] - %match.0.shrunk = phi i1 [ false, %if.else83 ], [ false, %sw.bb130 ], [ %cmp117, %sw.bb108 ], [ %cmp106, %sw.bb97 ], [ %cmp96, %sw.bb ], [ false, %sw.bb119 ], [ true, %land.rhs.i ], [ %54, %if.end.i.i ] - %or.cond = and i1 %cmp132, %match.0.shrunk - %spec.store.select = select i1 %or.cond, i32 4, i32 %change_type.1 +sw.epilog: ; preds = %if.end.i.i, %land.rhs.i, %sw.bb108, %sw.bb97, %sw.bb + %match.0.shrunk = phi i1 [ %cmp117, %sw.bb108 ], [ %cmp106, %sw.bb97 ], [ %cmp96, %sw.bb ], [ true, %land.rhs.i ], [ %54, %if.end.i.i ] + %spec.select = select i1 %match.0.shrunk, i32 4, i32 2 br label %if.end136 -if.end136: ; preds = %if.else, %invoke.cont74, %lor.lhs.false71, %sw.epilog, %if.then67 - %index2.0470 = phi i64 [ %.us-phi552, %if.then67 ], [ %.us-phi553, %sw.epilog ], [ %index2.0.ph460, %lor.lhs.false71 ], [ %index2.0.ph460, %invoke.cont74 ], [ %index2.0.ph460, %if.else ] - %change_type.0 = phi i32 [ 1, %if.then67 ], [ %spec.store.select, %sw.epilog ], [ 0, %lor.lhs.false71 ], [ 0, %invoke.cont74 ], [ 0, %if.else ] - %focus_field.0 = phi ptr [ %40, %if.then67 ], [ %.us-phi555, %sw.epilog ], [ %.pre612, %lor.lhs.false71 ], [ %.pre612, %invoke.cont74 ], [ %.pre612, %if.else ] +if.end136: ; preds = %sw.epilog, %if.else, %sw.bb119, %if.else83, %sw.bb130, %invoke.cont74, %lor.lhs.false71, %if.then67 + %index2.0470 = phi i64 [ %.us-phi552, %if.then67 ], [ %index2.0.ph460, %lor.lhs.false71 ], [ %index2.0.ph460, %invoke.cont74 ], [ %.us-phi553, %sw.bb130 ], [ %.us-phi553, %if.else83 ], [ %.us-phi553, %sw.bb119 ], [ %index2.0.ph460, %if.else ], [ %.us-phi553, %sw.epilog ] + %change_type.0 = phi i32 [ 1, %if.then67 ], [ 0, %lor.lhs.false71 ], [ 0, %invoke.cont74 ], [ 3, %sw.bb130 ], [ 2, %if.else83 ], [ 2, %sw.bb119 ], [ 0, %if.else ], [ %spec.select, %sw.epilog ] + %focus_field.0 = phi ptr [ %40, %if.then67 ], [ %.pre612, %lor.lhs.false71 ], [ %.pre612, %invoke.cont74 ], [ %.us-phi555, %sw.bb130 ], [ %.us-phi555, %if.else83 ], [ %.us-phi555, %sw.bb119 ], [ %.pre612, %if.else ], [ %.us-phi555, %sw.epilog ] %cmp137 = icmp eq ptr %current_repeated.0.ph456, null br i1 %cmp137, label %if.then150, label %lor.lhs.false138 diff --git a/bench/proxygen/optimized/HTTP1xCodec.cpp.ll b/bench/proxygen/optimized/HTTP1xCodec.cpp.ll index e7c83007698..cc52c17bbda 100644 --- a/bench/proxygen/optimized/HTTP1xCodec.cpp.ll +++ b/bench/proxygen/optimized/HTTP1xCodec.cpp.ll @@ -7501,33 +7501,21 @@ cond.end: ; preds = %cond.false, %cond.t %call3.i4 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %currentHeaderValue_) #27 %add.ptr.i5 = getelementptr inbounds i8, ptr %call.i2, i64 %call3.i4 %cmp.not23.i = icmp eq i64 %call3.i4, 0 - br i1 %cmp.not23.i, label %if.end16, label %for.body.i - -for.body.i: ; preds = %cond.end, %for.inc.i - %p.027.i = phi ptr [ %incdec.ptr47.i, %for.inc.i ], [ %call.i2, %cond.end ] - %state.026.i = phi i32 [ %state.1.i, %for.inc.i ], [ 0, %cond.end ] - %quote.025.i = phi i1 [ %quote.1.i, %for.inc.i ], [ false, %cond.end ] - switch i32 %state.026.i, label %for.inc.i [ - i32 0, label %sw.bb.i - i32 1, label %sw.bb25.i - i32 2, label %sw.bb30.i - i32 3, label %sw.bb38.i - ] + br i1 %cmp.not23.i, label %if.end16, label %sw.bb.i -sw.bb.i: ; preds = %for.body.i - %1 = load i8, ptr %p.027.i, align 1 +sw.bb.i: ; preds = %cond.end, %for.inc.i.jt0 + %quote.025.i27 = phi i1 [ %quote.1.i.jt0, %for.inc.i.jt0 ], [ false, %cond.end ] + %p.027.i23 = phi ptr [ %incdec.ptr47.i.jt0, %for.inc.i.jt0 ], [ %call.i2, %cond.end ] + %1 = load i8, ptr %p.027.i23, align 1 switch i8 %1, label %sw.default.i [ - i8 92, label %sw.bb5.i + i8 92, label %for.inc.i.jt0 i8 34, label %sw.bb9.i - i8 13, label %for.inc.i + i8 13, label %for.inc.i.jt1 ] -sw.bb5.i: ; preds = %sw.bb.i - br label %for.inc.i - sw.bb9.i: ; preds = %sw.bb.i - %frombool.i = xor i1 %quote.025.i, true - br label %for.inc.i + %frombool.i = xor i1 %quote.025.i27, true + br label %for.inc.i.jt0 sw.default.i: ; preds = %sw.bb.i %cmp13.i = icmp ult i8 %1, 32 @@ -7535,50 +7523,61 @@ sw.default.i: ; preds = %sw.bb.i %or.cond18.not20.i = and i1 %cmp13.i, %cmp15.not.i %2 = icmp ugt i8 %1, 126 %or.cond74.i = or i1 %2, %or.cond18.not20.i - br i1 %or.cond74.i, label %if.then4, label %for.inc.i + br i1 %or.cond74.i, label %if.then4, label %for.inc.i.jt0 -sw.bb25.i: ; preds = %for.body.i - %3 = load i8, ptr %p.027.i, align 1 +sw.bb25.i: ; preds = %for.inc.i.jt1 + %3 = load i8, ptr %incdec.ptr47.i.jt1, align 1 %cmp27.not.i = icmp eq i8 %3, 10 - br i1 %cmp27.not.i, label %for.inc.i, label %if.then4 + br i1 %cmp27.not.i, label %for.inc.i.jt2, label %if.then4 -sw.bb30.i: ; preds = %for.body.i - %4 = load i8, ptr %p.027.i, align 1 +sw.bb30.i: ; preds = %for.inc.i.jt2 + %4 = load i8, ptr %incdec.ptr47.i.jt2, align 1 switch i8 %4, label %if.then4 [ - i8 32, label %for.inc.i - i8 9, label %for.inc.i + i8 32, label %for.inc.i.jt3.preheader + i8 9, label %for.inc.i.jt3.preheader ] -sw.bb38.i: ; preds = %for.body.i - %5 = load i8, ptr %p.027.i, align 1 - switch i8 %5, label %if.then44.i [ - i8 32, label %for.inc.i - i8 9, label %for.inc.i - ] - -if.then44.i: ; preds = %sw.bb38.i - %incdec.ptr.i = getelementptr inbounds i8, ptr %p.027.i, i64 -1 - br label %for.inc.i - -for.inc.i: ; preds = %if.then44.i, %sw.bb38.i, %sw.bb38.i, %sw.bb30.i, %sw.bb30.i, %sw.bb25.i, %sw.default.i, %sw.bb9.i, %sw.bb5.i, %sw.bb.i, %for.body.i - %escape.2.i = phi i1 [ false, %for.body.i ], [ false, %if.then44.i ], [ false, %sw.bb38.i ], [ false, %sw.bb9.i ], [ %quote.025.i, %sw.bb5.i ], [ false, %sw.bb.i ], [ false, %sw.bb25.i ], [ false, %sw.bb30.i ], [ false, %sw.bb30.i ], [ false, %sw.bb38.i ], [ false, %sw.default.i ] - %quote.1.i = phi i1 [ %quote.025.i, %for.body.i ], [ %quote.025.i, %if.then44.i ], [ %quote.025.i, %sw.bb38.i ], [ %frombool.i, %sw.bb9.i ], [ %quote.025.i, %sw.bb5.i ], [ %quote.025.i, %sw.bb.i ], [ %quote.025.i, %sw.bb25.i ], [ %quote.025.i, %sw.bb30.i ], [ %quote.025.i, %sw.bb30.i ], [ %quote.025.i, %sw.bb38.i ], [ %quote.025.i, %sw.default.i ] - %state.1.i = phi i32 [ %state.026.i, %for.body.i ], [ 0, %if.then44.i ], [ 3, %sw.bb38.i ], [ 0, %sw.bb9.i ], [ 0, %sw.bb5.i ], [ 1, %sw.bb.i ], [ 2, %sw.bb25.i ], [ 3, %sw.bb30.i ], [ 3, %sw.bb30.i ], [ 3, %sw.bb38.i ], [ 0, %sw.default.i ] - %p.1.i = phi ptr [ %p.027.i, %for.body.i ], [ %incdec.ptr.i, %if.then44.i ], [ %p.027.i, %sw.bb38.i ], [ %p.027.i, %sw.bb9.i ], [ %p.027.i, %sw.bb5.i ], [ %p.027.i, %sw.bb.i ], [ %p.027.i, %sw.bb25.i ], [ %p.027.i, %sw.bb30.i ], [ %p.027.i, %sw.bb30.i ], [ %p.027.i, %sw.bb38.i ], [ %p.027.i, %sw.default.i ] - %incdec.ptr47.i = getelementptr inbounds i8, ptr %p.1.i, i64 1 - %cmp.not.i = icmp eq ptr %incdec.ptr47.i, %add.ptr.i5 - br i1 %cmp.not.i, label %for.end.i, label %for.body.i, !llvm.loop !61 - -for.end.i: ; preds = %for.inc.i - br i1 %escape.2.i, label %if.then4, label %_ZN8proxygen9CodecUtil19validateHeaderValueEN5folly5RangeIPKhEENS0_13CtlEscapeModeE.exit - -_ZN8proxygen9CodecUtil19validateHeaderValueEN5folly5RangeIPKhEENS0_13CtlEscapeModeE.exit: ; preds = %for.end.i - switch i32 %state.1.i, label %if.then4 [ - i32 3, label %if.end16 - i32 0, label %if.end16 +for.inc.i.jt3.preheader: ; preds = %sw.bb30.i, %sw.bb30.i + %incdec.ptr47.i.jt340 = getelementptr inbounds i8, ptr %p.027.i23, i64 3 + %cmp.not.i.jt341 = icmp eq ptr %incdec.ptr47.i.jt340, %add.ptr.i5 + br i1 %cmp.not.i.jt341, label %if.end16, label %sw.bb38.i, !llvm.loop !61 + +sw.bb38.i: ; preds = %for.inc.i.jt3.preheader, %for.inc.i.jt3.backedge + %incdec.ptr47.i.jt343 = phi ptr [ %incdec.ptr47.i.jt3, %for.inc.i.jt3.backedge ], [ %incdec.ptr47.i.jt340, %for.inc.i.jt3.preheader ] + %p.1.i.jt342 = phi ptr [ %incdec.ptr47.i.jt343, %for.inc.i.jt3.backedge ], [ %incdec.ptr47.i.jt2, %for.inc.i.jt3.preheader ] + %5 = load i8, ptr %incdec.ptr47.i.jt343, align 1 + switch i8 %5, label %for.inc.i.jt0 [ + i8 32, label %for.inc.i.jt3.backedge + i8 9, label %for.inc.i.jt3.backedge ] -if.then4: ; preds = %sw.bb30.i, %sw.bb25.i, %sw.default.i, %_ZN8proxygen9CodecUtil19validateHeaderValueEN5folly5RangeIPKhEENS0_13CtlEscapeModeE.exit, %for.end.i +for.inc.i.jt3.backedge: ; preds = %sw.bb38.i, %sw.bb38.i + %incdec.ptr47.i.jt3 = getelementptr inbounds i8, ptr %incdec.ptr47.i.jt343, i64 1 + %cmp.not.i.jt3 = icmp eq ptr %incdec.ptr47.i.jt3, %add.ptr.i5 + br i1 %cmp.not.i.jt3, label %if.end16, label %sw.bb38.i, !llvm.loop !61 + +for.inc.i.jt2: ; preds = %sw.bb25.i + %incdec.ptr47.i.jt2 = getelementptr inbounds i8, ptr %p.027.i23, i64 2 + %cmp.not.i.jt2 = icmp eq ptr %incdec.ptr47.i.jt2, %add.ptr.i5 + br i1 %cmp.not.i.jt2, label %if.then4, label %sw.bb30.i, !llvm.loop !61 + +for.inc.i.jt1: ; preds = %sw.bb.i + %incdec.ptr47.i.jt1 = getelementptr inbounds i8, ptr %p.027.i23, i64 1 + %cmp.not.i.jt1 = icmp eq ptr %incdec.ptr47.i.jt1, %add.ptr.i5 + br i1 %cmp.not.i.jt1, label %if.then4, label %sw.bb25.i, !llvm.loop !61 + +for.inc.i.jt0: ; preds = %sw.bb38.i, %sw.bb.i, %sw.default.i, %sw.bb9.i + %escape.2.i.jt0 = phi i1 [ false, %sw.bb9.i ], [ false, %sw.default.i ], [ %quote.025.i27, %sw.bb.i ], [ false, %sw.bb38.i ] + %quote.1.i.jt0 = phi i1 [ %frombool.i, %sw.bb9.i ], [ %quote.025.i27, %sw.default.i ], [ %quote.025.i27, %sw.bb.i ], [ %quote.025.i27, %sw.bb38.i ] + %p.1.i.jt0 = phi ptr [ %p.027.i23, %sw.bb9.i ], [ %p.027.i23, %sw.default.i ], [ %p.027.i23, %sw.bb.i ], [ %p.1.i.jt342, %sw.bb38.i ] + %incdec.ptr47.i.jt0 = getelementptr inbounds i8, ptr %p.1.i.jt0, i64 1 + %cmp.not.i.jt0 = icmp eq ptr %incdec.ptr47.i.jt0, %add.ptr.i5 + br i1 %cmp.not.i.jt0, label %for.end.i, label %sw.bb.i, !llvm.loop !61 + +for.end.i: ; preds = %for.inc.i.jt0 + br i1 %escape.2.i.jt0, label %if.then4, label %if.end16 + +if.then4: ; preds = %for.inc.i.jt2, %for.inc.i.jt1, %sw.bb30.i, %sw.bb25.i, %sw.default.i, %for.end.i call void @_ZN6google10LogMessageC1EPKcii(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp5, ptr noundef nonnull @.str.2, i32 noundef 913, i32 noundef 2) %call6 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6google10LogMessage6streamEv(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp5) to label %invoke.cont unwind label %lpad @@ -7607,7 +7606,7 @@ lpad: ; preds = %invoke.cont7, %invo call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp5) #27 resume { ptr, i32 } %6 -if.end16: ; preds = %_ZN8proxygen9CodecUtil19validateHeaderValueEN5folly5RangeIPKhEENS0_13CtlEscapeModeE.exit, %_ZN8proxygen9CodecUtil19validateHeaderValueEN5folly5RangeIPKhEENS0_13CtlEscapeModeE.exit, %cond.end, %entry +if.end16: ; preds = %for.inc.i.jt3.preheader, %for.inc.i.jt3.backedge, %for.end.i, %cond.end, %entry %currentHeaderName_17 = getelementptr inbounds i8, ptr %this, i64 128 %call18 = tail call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %currentHeaderName_17) #27 br i1 %call18, label %if.then19, label %if.else diff --git a/bench/proxygen/optimized/HTTPSession.cpp.ll b/bench/proxygen/optimized/HTTPSession.cpp.ll index d11a9b97426..c489830ba0d 100644 --- a/bench/proxygen/optimized/HTTPSession.cpp.ll +++ b/bench/proxygen/optimized/HTTPSession.cpp.ll @@ -26024,7 +26024,7 @@ for.body: ; preds = %if.end, %for.inc store i8 0, ptr %timestampTx, align 1 store i8 0, ptr %timestampAck, align 1 invoke void @_ZN8proxygen11HTTPSession13getNextToSendEPbS1_S1_(ptr nonnull sret(%"class.std::unique_ptr.56") align 8 %writeBuf, ptr noundef nonnull align 8 dereferenceable(2504) %this, ptr noundef nonnull %cork, ptr noundef nonnull %timestampTx, ptr noundef nonnull %timestampAck) - to label %invoke.cont37 unwind label %terminate.lpad.loopexit + to label %invoke.cont37 unwind label %terminate.lpad.loopexit.loopexit invoke.cont37: ; preds = %for.body %12 = load ptr, ptr %writeBuf, align 8 @@ -26033,7 +26033,7 @@ invoke.cont37: ; preds = %for.body if.end40: ; preds = %invoke.cont37 %call43 = invoke noundef i64 @_ZNK5folly5IOBuf22computeChainDataLengthEv(ptr noundef nonnull align 8 dereferenceable(56) %12) - to label %invoke.cont42 unwind label %terminate.lpad.loopexit + to label %invoke.cont42 unwind label %terminate.lpad.loopexit.loopexit invoke.cont42: ; preds = %if.end40 %13 = load ptr, ptr @_ZZN8proxygen11HTTPSession15runLoopCallbackEvE8vlocal___0, align 8 @@ -26042,7 +26042,7 @@ invoke.cont42: ; preds = %if.end40 cond.true47: ; preds = %invoke.cont42 %call49 = invoke noundef zeroext i1 @_ZN6google11InitVLOG3__EPNS_8SiteFlagEPiPKci(ptr noundef nonnull @_ZZN8proxygen11HTTPSession15runLoopCallbackEvE8vlocal___0, ptr noundef nonnull @_ZN3fLI7FLAGS_vE, ptr noundef nonnull @.str, i32 noundef 11) - to label %cond.end52 unwind label %terminate.lpad.loopexit + to label %cond.end52 unwind label %terminate.lpad.loopexit.loopexit cond.false50: ; preds = %invoke.cont42 %14 = load i32, ptr %13, align 4 @@ -26054,53 +26054,53 @@ cond.end52: ; preds = %cond.true47 cond.false57: ; preds = %cond.false50, %cond.end52 invoke void @_ZN6google10LogMessageC1EPKci(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp60, ptr noundef nonnull @.str, i32 noundef 2254) - to label %invoke.cont61 unwind label %terminate.lpad.loopexit + to label %invoke.cont61 unwind label %terminate.lpad.loopexit.loopexit invoke.cont61: ; preds = %cond.false57 %call64 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6google10LogMessage6streamEv(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp60) - to label %invoke.cont63 unwind label %terminate.lpad.loopexit + to label %invoke.cont63 unwind label %terminate.lpad.loopexit.loopexit invoke.cont63: ; preds = %invoke.cont61 %call66 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6wanglelsERSoRKNS_17ManagedConnectionE(ptr noundef nonnull align 8 dereferenceable(8) %call64, ptr noundef nonnull align 8 dereferenceable(208) %this) - to label %invoke.cont65 unwind label %terminate.lpad.loopexit + to label %invoke.cont65 unwind label %terminate.lpad.loopexit.loopexit invoke.cont65: ; preds = %invoke.cont63 %call68 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call66, ptr noundef nonnull @.str.164) - to label %invoke.cont67 unwind label %terminate.lpad.loopexit + to label %invoke.cont67 unwind label %terminate.lpad.loopexit.loopexit invoke.cont67: ; preds = %invoke.cont65 %call70 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call68, i64 noundef %call43) - to label %invoke.cont69 unwind label %terminate.lpad.loopexit + to label %invoke.cont69 unwind label %terminate.lpad.loopexit.loopexit invoke.cont69: ; preds = %invoke.cont67 %call72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call70, ptr noundef nonnull @.str.165) - to label %invoke.cont71 unwind label %terminate.lpad.loopexit + to label %invoke.cont71 unwind label %terminate.lpad.loopexit.loopexit invoke.cont71: ; preds = %invoke.cont69 %15 = load i8, ptr %cork, align 1 %tobool73 = trunc i8 %15 to i1 %call75 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %call72, i1 noundef zeroext %tobool73) - to label %invoke.cont74 unwind label %terminate.lpad.loopexit + to label %invoke.cont74 unwind label %terminate.lpad.loopexit.loopexit invoke.cont74: ; preds = %invoke.cont71 %call77 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call75, ptr noundef nonnull @.str.166) - to label %invoke.cont76 unwind label %terminate.lpad.loopexit + to label %invoke.cont76 unwind label %terminate.lpad.loopexit.loopexit invoke.cont76: ; preds = %invoke.cont74 %16 = load i8, ptr %timestampTx, align 1 %tobool78 = trunc i8 %16 to i1 %call80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %call77, i1 noundef zeroext %tobool78) - to label %invoke.cont79 unwind label %terminate.lpad.loopexit + to label %invoke.cont79 unwind label %terminate.lpad.loopexit.loopexit invoke.cont79: ; preds = %invoke.cont76 %call82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call80, ptr noundef nonnull @.str.167) - to label %invoke.cont81 unwind label %terminate.lpad.loopexit + to label %invoke.cont81 unwind label %terminate.lpad.loopexit.loopexit invoke.cont81: ; preds = %invoke.cont79 %17 = load i8, ptr %timestampAck, align 1 %tobool83 = trunc i8 %17 to i1 %call85 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %call82, i1 noundef zeroext %tobool83) - to label %cleanup.action89 unwind label %terminate.lpad.loopexit + to label %cleanup.action89 unwind label %terminate.lpad.loopexit.loopexit cleanup.action89: ; preds = %invoke.cont81 call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp60) #41 @@ -26112,7 +26112,7 @@ cleanup.done90: ; preds = %cond.false50, %cond if.then92: ; preds = %cleanup.done90 invoke void @_ZN8proxygen11HTTPSession16checkForShutdownEv(ptr noundef nonnull align 8 dereferenceable(2504) %this) - to label %cleanup unwind label %terminate.lpad.loopexit + to label %cleanup.jt1 unwind label %terminate.lpad.loopexit.loopexit.split-lp invoke.cont105: ; preds = %cleanup.done90 %18 = load i8, ptr %cork, align 1 @@ -26154,14 +26154,14 @@ _ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit: ; preds = %invoke.c store ptr %add.ptr, ptr %second.i.i.i.i, align 8 store i8 1, ptr %hasValue.i.i, align 8 %call132 = invoke noundef zeroext i1 @_ZNK5folly16HHWheelTimerBaseINSt6chrono8durationIlSt5ratioILl1ELl1000EEEEE8Callback11isScheduledEv(ptr noundef nonnull align 8 dereferenceable(64) %writeTimeout_) - to label %invoke.cont131 unwind label %terminate.lpad.loopexit + to label %invoke.cont131 unwind label %terminate.lpad.loopexit.loopexit invoke.cont131: ; preds = %_ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit br i1 %call132, label %if.end136, label %if.then133 if.then133: ; preds = %invoke.cont131 invoke void @_ZN8proxygen18WheelTimerInstance15scheduleTimeoutEPN5folly16HHWheelTimerBaseINSt6chrono8durationIlSt5ratioILl1ELl1000EEEEE8CallbackE(ptr noundef nonnull align 8 dereferenceable(16) %wheelTimer_, ptr noundef nonnull %writeTimeout_) - to label %if.end136 unwind label %terminate.lpad.loopexit + to label %if.end136 unwind label %terminate.lpad.loopexit.loopexit if.end136: ; preds = %if.then133, %invoke.cont131 %24 = load i32, ptr %numActiveWrites_, align 8 @@ -26173,7 +26173,7 @@ if.end136: ; preds = %if.then133, %invoke cond.true140: ; preds = %if.end136 %call142 = invoke noundef zeroext i1 @_ZN6google11InitVLOG3__EPNS_8SiteFlagEPiPKci(ptr noundef nonnull @_ZZN8proxygen11HTTPSession15runLoopCallbackEvE8vlocal___1, ptr noundef nonnull @_ZN3fLI7FLAGS_vE, ptr noundef nonnull @.str, i32 noundef 4) - to label %cond.end145 unwind label %terminate.lpad.loopexit + to label %cond.end145 unwind label %terminate.lpad.loopexit.loopexit cond.false143: ; preds = %if.end136 %26 = load i32, ptr %25, align 4 @@ -26185,62 +26185,62 @@ cond.end145: ; preds = %cond.true140 cond.false150: ; preds = %cond.false143, %cond.end145 invoke void @_ZN6google10LogMessageC1EPKci(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp153, ptr noundef nonnull @.str, i32 noundef 2275) - to label %invoke.cont154 unwind label %terminate.lpad.loopexit + to label %invoke.cont154 unwind label %terminate.lpad.loopexit.loopexit invoke.cont154: ; preds = %cond.false150 %call157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6google10LogMessage6streamEv(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp153) - to label %invoke.cont156 unwind label %terminate.lpad.loopexit + to label %invoke.cont156 unwind label %terminate.lpad.loopexit.loopexit invoke.cont156: ; preds = %invoke.cont154 %call159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6wanglelsERSoRKNS_17ManagedConnectionE(ptr noundef nonnull align 8 dereferenceable(8) %call157, ptr noundef nonnull align 8 dereferenceable(208) %this) - to label %invoke.cont158 unwind label %terminate.lpad.loopexit + to label %invoke.cont158 unwind label %terminate.lpad.loopexit.loopexit invoke.cont158: ; preds = %invoke.cont156 %call161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call159, ptr noundef nonnull @.str.169) - to label %invoke.cont160 unwind label %terminate.lpad.loopexit + to label %invoke.cont160 unwind label %terminate.lpad.loopexit.loopexit invoke.cont160: ; preds = %invoke.cont158 %call163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call161, i64 noundef %call43) - to label %invoke.cont162 unwind label %terminate.lpad.loopexit + to label %invoke.cont162 unwind label %terminate.lpad.loopexit.loopexit invoke.cont162: ; preds = %invoke.cont160 %call165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call163, ptr noundef nonnull @.str.170) - to label %invoke.cont164 unwind label %terminate.lpad.loopexit + to label %invoke.cont164 unwind label %terminate.lpad.loopexit.loopexit invoke.cont164: ; preds = %invoke.cont162 %27 = load i32, ptr %numActiveWrites_, align 8 %call168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %call165, i32 noundef %27) - to label %invoke.cont167 unwind label %terminate.lpad.loopexit + to label %invoke.cont167 unwind label %terminate.lpad.loopexit.loopexit invoke.cont167: ; preds = %invoke.cont164 %call170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call168, ptr noundef nonnull @.str.165) - to label %invoke.cont169 unwind label %terminate.lpad.loopexit + to label %invoke.cont169 unwind label %terminate.lpad.loopexit.loopexit invoke.cont169: ; preds = %invoke.cont167 %28 = load i8, ptr %cork, align 1 %tobool171 = trunc i8 %28 to i1 %call173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %call170, i1 noundef zeroext %tobool171) - to label %invoke.cont172 unwind label %terminate.lpad.loopexit + to label %invoke.cont172 unwind label %terminate.lpad.loopexit.loopexit invoke.cont172: ; preds = %invoke.cont169 %call175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call173, ptr noundef nonnull @.str.166) - to label %invoke.cont174 unwind label %terminate.lpad.loopexit + to label %invoke.cont174 unwind label %terminate.lpad.loopexit.loopexit invoke.cont174: ; preds = %invoke.cont172 %29 = load i8, ptr %timestampTx, align 1 %tobool176 = trunc i8 %29 to i1 %call178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %call175, i1 noundef zeroext %tobool176) - to label %invoke.cont177 unwind label %terminate.lpad.loopexit + to label %invoke.cont177 unwind label %terminate.lpad.loopexit.loopexit invoke.cont177: ; preds = %invoke.cont174 %call180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call178, ptr noundef nonnull @.str.167) - to label %invoke.cont179 unwind label %terminate.lpad.loopexit + to label %invoke.cont179 unwind label %terminate.lpad.loopexit.loopexit invoke.cont179: ; preds = %invoke.cont177 %30 = load i8, ptr %timestampAck, align 1 %tobool181 = trunc i8 %30 to i1 %call183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %call180, i1 noundef zeroext %tobool181) - to label %cleanup.action187 unwind label %terminate.lpad.loopexit + to label %cleanup.action187 unwind label %terminate.lpad.loopexit.loopexit cleanup.action187: ; preds = %invoke.cont179 call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp153) #41 @@ -26256,45 +26256,66 @@ cleanup.done188: ; preds = %cond.false143, %con %vfn = getelementptr inbounds i8, ptr %vtable, i64 16 %33 = load ptr, ptr %vfn, align 8 invoke void %33(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr190, ptr noundef nonnull %add.ptr191, ptr noundef nonnull align 8 dereferenceable(8) %writeBuf, i32 noundef %or.i.i14) - to label %invoke.cont192 unwind label %terminate.lpad.loopexit + to label %invoke.cont192 unwind label %terminate.lpad.loopexit.loopexit invoke.cont192: ; preds = %cleanup.done188 %34 = load i32, ptr %numActiveWrites_, align 8 %cmp194.not = icmp eq i32 %34, 0 - br i1 %cmp194.not, label %cleanup, label %if.then195 + br i1 %cmp194.not, label %cleanup.jt0, label %if.then195 if.then195: ; preds = %invoke.cont192 invoke void @_ZN8proxygen11HTTPSession16updateWriteCountEv(ptr noundef nonnull align 8 dereferenceable(2504) %this) - to label %invoke.cont196 unwind label %terminate.lpad.loopexit + to label %invoke.cont196 unwind label %terminate.lpad.loopexit.loopexit.split-lp invoke.cont196: ; preds = %if.then195 %call198 = invoke noundef zeroext i1 @_ZN8proxygen15HTTPSessionBase24notifyEgressBodyBufferedElb(ptr noundef nonnull align 8 dereferenceable(1582) %this, i64 noundef %call43, i1 noundef zeroext false) - to label %cleanup unwind label %terminate.lpad.loopexit - -cleanup: ; preds = %invoke.cont192, %invoke.cont196, %if.then92 - %cleanup.dest.slot.0.ph = phi i32 [ 0, %invoke.cont192 ], [ 2, %invoke.cont196 ], [ 1, %if.then92 ] - %.pr = load ptr, ptr %writeBuf, align 8 - %cmp.not.i22 = icmp eq ptr %.pr, null - br i1 %cmp.not.i22, label %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i + to label %cleanup.jt2 unwind label %terminate.lpad.loopexit.loopexit.split-lp + +cleanup.jt1: ; preds = %if.then92 + %.pr.jt1 = load ptr, ptr %writeBuf, align 8 + %cmp.not.i22.jt1 = icmp eq ptr %.pr.jt1, null + br i1 %cmp.not.i22.jt1, label %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit.jt1, label %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.jt1 + +cleanup.jt2: ; preds = %invoke.cont196 + %.pr.jt2 = load ptr, ptr %writeBuf, align 8 + %cmp.not.i22.jt2 = icmp eq ptr %.pr.jt2, null + br i1 %cmp.not.i22.jt2, label %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit.jt2, label %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.jt2 + +cleanup.jt0: ; preds = %invoke.cont192 + %.pr.jt0 = load ptr, ptr %writeBuf, align 8 + %cmp.not.i22.jt0 = icmp eq ptr %.pr.jt0, null + br i1 %cmp.not.i22.jt0, label %for.inc, label %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.jt0 + +_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.jt1: ; preds = %cleanup.jt1 + call void @_ZN5folly5IOBufD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %.pr.jt1) #41 + call void @_ZN5folly5IOBufdlEPv(ptr noundef nonnull %.pr.jt1) #41 + br label %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit.jt1 + +_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.jt2: ; preds = %cleanup.jt2 + call void @_ZN5folly5IOBufD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %.pr.jt2) #41 + call void @_ZN5folly5IOBufdlEPv(ptr noundef nonnull %.pr.jt2) #41 + br label %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit.jt2 + +_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.jt0: ; preds = %cleanup.jt0 + call void @_ZN5folly5IOBufD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %.pr.jt0) #41 + call void @_ZN5folly5IOBufdlEPv(ptr noundef nonnull %.pr.jt0) #41 + br label %for.inc -_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i: ; preds = %cleanup - call void @_ZN5folly5IOBufD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %.pr) #41 - call void @_ZN5folly5IOBufdlEPv(ptr noundef nonnull %.pr) #41 - br label %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit +_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit.jt1: ; preds = %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.jt1, %cleanup.jt1 + store ptr null, ptr %writeBuf, align 8 + br label %if.then.i27 -_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit: ; preds = %cleanup, %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i +_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit.jt2: ; preds = %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.jt2, %cleanup.jt2 store ptr null, ptr %writeBuf, align 8 - switch i32 %cleanup.dest.slot.0.ph, label %if.then.i27 [ - i32 0, label %for.inc - i32 2, label %for.end - ] + br label %for.end -for.inc: ; preds = %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit +for.inc: ; preds = %cleanup.jt0, %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.jt0 + store ptr null, ptr %writeBuf, align 8 %inc200 = add nuw nsw i32 %i.063, 1 %exitcond.not = icmp eq i32 %inc200, 32 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !197 -for.end: ; preds = %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit, %for.inc, %invoke.cont37 +for.end: ; preds = %for.inc, %invoke.cont37, %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit.jt2 %35 = load i32, ptr %numActiveWrites_, align 8 %cmp202 = icmp ne i32 %35, 0 %writes_.i = getelementptr inbounds i8, ptr %this, i64 2393 @@ -26365,7 +26386,7 @@ if.then233: ; preds = %invoke.cont230 invoke void %43(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr236, ptr noundef nonnull %add.ptr237) to label %if.then.i27 unwind label %terminate.lpad.loopexit.split-lp -if.then.i27: ; preds = %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit, %invoke.cont221, %invoke.cont230, %if.then233, %if.end217 +if.then.i27: ; preds = %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EED2Ev.exit.jt1, %invoke.cont221, %invoke.cont230, %if.then233, %if.end217 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %agg.tmp.i.i.i) %bf.load.i.i.i = load i8, ptr %inLoopCallback_, align 2 %bf.clear.i.i.i = and i8 %bf.load.i.i.i, -5 @@ -26471,8 +26492,13 @@ terminate.lpad.i42: ; preds = %if.then6.i39 _ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit43: ; preds = %if.then.i34, %if.then6.i39 ret void -terminate.lpad.loopexit: ; preds = %for.body, %if.end40, %cond.true47, %cond.false57, %invoke.cont61, %invoke.cont63, %invoke.cont65, %invoke.cont67, %invoke.cont69, %invoke.cont71, %invoke.cont74, %invoke.cont76, %invoke.cont79, %invoke.cont81, %if.then92, %_ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit, %if.then133, %cond.true140, %cond.false150, %invoke.cont154, %invoke.cont156, %invoke.cont158, %invoke.cont160, %invoke.cont162, %invoke.cont164, %invoke.cont167, %invoke.cont169, %invoke.cont172, %invoke.cont174, %invoke.cont177, %invoke.cont179, %cleanup.done188, %if.then195, %invoke.cont196 - %lpad.loopexit = landingpad { ptr, i32 } +terminate.lpad.loopexit.loopexit: ; preds = %cleanup.done188, %invoke.cont179, %invoke.cont177, %invoke.cont174, %invoke.cont172, %invoke.cont169, %invoke.cont167, %invoke.cont164, %invoke.cont162, %invoke.cont160, %invoke.cont158, %invoke.cont156, %invoke.cont154, %cond.false150, %cond.true140, %if.then133, %_ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit, %invoke.cont81, %invoke.cont79, %invoke.cont76, %invoke.cont74, %invoke.cont71, %invoke.cont69, %invoke.cont67, %invoke.cont65, %invoke.cont63, %invoke.cont61, %cond.false57, %cond.true47, %if.end40, %for.body + %lpad.loopexit66 = landingpad { ptr, i32 } + catch ptr null + br label %terminate.lpad + +terminate.lpad.loopexit.loopexit.split-lp: ; preds = %invoke.cont196, %if.then195, %if.then92 + %lpad.loopexit.split-lp67 = landingpad { ptr, i32 } catch ptr null br label %terminate.lpad @@ -26481,8 +26507,8 @@ terminate.lpad.loopexit.split-lp: ; preds = %cond.true, %cond.fa catch ptr null br label %terminate.lpad -terminate.lpad: ; preds = %terminate.lpad.loopexit.split-lp, %terminate.lpad.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %terminate.lpad.loopexit ], [ %lpad.loopexit.split-lp, %terminate.lpad.loopexit.split-lp ] +terminate.lpad: ; preds = %terminate.lpad.loopexit.loopexit, %terminate.lpad.loopexit.loopexit.split-lp, %terminate.lpad.loopexit.split-lp + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %terminate.lpad.loopexit.split-lp ], [ %lpad.loopexit66, %terminate.lpad.loopexit.loopexit ], [ %lpad.loopexit.split-lp67, %terminate.lpad.loopexit.loopexit.split-lp ] %58 = extractvalue { ptr, i32 } %lpad.phi, 0 call void @__clang_call_terminate(ptr %58) #42 unreachable diff --git a/bench/qemu/optimized/backends_dbus-vmstate.c.ll b/bench/qemu/optimized/backends_dbus-vmstate.c.ll index 2293b618c17..ec2bb2c092b 100644 --- a/bench/qemu/optimized/backends_dbus-vmstate.c.ll +++ b/bench/qemu/optimized/backends_dbus-vmstate.c.ll @@ -666,14 +666,14 @@ for.body: ; preds = %for.body.lr.ph, %fo land.lhs.true: ; preds = %for.body %10 = load ptr, ptr %err, align 8 %cmp11.not = icmp eq ptr %10, null - br i1 %cmp11.not, label %glib_autoptr_cleanup_GVariant.exit.thread, label %if.then12 + br i1 %cmp11.not, label %glib_autoptr_cleanup_GVariant.exit.thread.jt4, label %if.then12 if.then12: ; preds = %land.lhs.true %message = getelementptr inbounds i8, ptr %10, i64 8 %11 = load ptr, ptr %message, align 8 call void (ptr, ...) @warn_report(ptr noundef nonnull @.str.21, ptr noundef nonnull @__func__.dbus_get_proxies, ptr noundef %11) #6 call void @g_clear_error(ptr noundef nonnull %err) #6 - br label %glib_autoptr_cleanup_GVariant.exit.thread + br label %glib_autoptr_cleanup_GVariant.exit.thread.jt4 if.end14: ; preds = %for.body %call15 = call ptr @g_dbus_proxy_get_cached_property(ptr noundef nonnull %call8, ptr noundef nonnull @.str.22) #6 @@ -683,7 +683,7 @@ if.end14: ; preds = %for.body if.then19: ; preds = %if.end14 call void (ptr, ...) @warn_report(ptr noundef nonnull @.str.23, ptr noundef nonnull @__func__.dbus_get_proxies) #6 call void @g_object_unref(ptr noundef nonnull %call8) #6 - br label %glib_autoptr_cleanup_GVariant.exit.thread + br label %glib_autoptr_cleanup_GVariant.exit.thread.jt4 if.end21: ; preds = %if.end14 %call22 = call ptr @g_variant_dup_string(ptr noundef nonnull %call15, ptr noundef nonnull %size) #6 @@ -696,67 +696,48 @@ land.lhs.true24: ; preds = %if.end21 do.body28: ; preds = %land.lhs.true24 %tobool32.not = icmp eq ptr %call22, null - br i1 %tobool32.not, label %if.then42, label %if.then33 + br i1 %tobool32.not, label %glib_autoptr_cleanup_GVariant.exit.jt4, label %if.then33 if.then33: ; preds = %do.body28 call void @g_free(ptr noundef nonnull %call22) #6 - br label %if.then42 - -if.then42: ; preds = %if.then33, %do.body28 - call void @g_object_unref(ptr noundef nonnull %call8) #6 - br label %glib_autoptr_cleanup_GVariant.exit + br label %glib_autoptr_cleanup_GVariant.exit.jt4 if.end46: ; preds = %land.lhs.true24, %if.end21 %12 = load i64, ptr %size, align 8 %13 = add i64 %12, -256 %or.cond = icmp ult i64 %13, -255 - br i1 %or.cond, label %if.then49, label %if.end51 - -if.then49: ; preds = %if.end46 - %call50 = call i32 @g_io_error_quark() #6 - call void (ptr, i32, i32, ptr, ...) @g_set_error(ptr noundef nonnull %err, i32 noundef %call50, i32 noundef 0, ptr noundef nonnull @.str.24, ptr noundef %call22) #6 - br label %glib_autoptr_cleanup_GVariant.exit + br i1 %or.cond, label %glib_autoptr_cleanup_GDBusProxy.exit.jt1, label %if.end51 if.end51: ; preds = %if.end46 %call52 = call i32 @g_hash_table_insert(ptr noundef %call1, ptr noundef %call22, ptr noundef nonnull %call8) #6 %tobool53.not = icmp eq i32 %call52, 0 - br i1 %tobool53.not, label %if.then54, label %if.then62 - -if.then54: ; preds = %if.end51 - %call55 = call i32 @g_io_error_quark() #6 - call void (ptr, i32, i32, ptr, ...) @g_set_error(ptr noundef nonnull %err, i32 noundef %call55, i32 noundef 0, ptr noundef nonnull @.str.25, ptr noundef %call22) #6 - br label %glib_autoptr_cleanup_GVariant.exit - -if.then62: ; preds = %if.end51 - call void @g_variant_unref(ptr noundef nonnull %call15) #6 - br label %glib_autoptr_cleanup_GVariant.exit.thread + br i1 %tobool53.not, label %glib_autoptr_cleanup_GDBusProxy.exit.jt1, label %glib_autoptr_cleanup_GDBusProxy.exit.jt0 -glib_autoptr_cleanup_GVariant.exit.thread: ; preds = %if.then62, %if.then19, %if.then12, %land.lhs.true - %cleanup.dest.slot.0.ph = phi i32 [ 0, %if.then62 ], [ 4, %if.then19 ], [ 4, %land.lhs.true ], [ 4, %if.then12 ] +glib_autoptr_cleanup_GVariant.exit.thread.jt4: ; preds = %if.then12, %land.lhs.true, %if.then19 call void @g_free(ptr noundef null) #6 - br label %glib_autoptr_cleanup_GDBusProxy.exit + br label %for.inc -glib_autoptr_cleanup_GVariant.exit: ; preds = %if.then42, %if.then54, %if.then49 - %proxy.0 = phi ptr [ %call8, %if.then49 ], [ %call8, %if.then54 ], [ null, %if.then42 ] - %id.0 = phi ptr [ %call22, %if.then49 ], [ %call22, %if.then54 ], [ null, %if.then42 ] - %cleanup.dest.slot.0 = phi i32 [ 1, %if.then49 ], [ 1, %if.then54 ], [ 4, %if.then42 ] - call void @g_free(ptr noundef %id.0) #6 +glib_autoptr_cleanup_GVariant.exit.jt4: ; preds = %do.body28, %if.then33 + call void @g_object_unref(ptr noundef nonnull %call8) #6 + call void @g_free(ptr noundef null) #6 call void @g_variant_unref(ptr noundef nonnull %call15) #6 - %tobool.not.i.i29 = icmp eq ptr %proxy.0, null - br i1 %tobool.not.i.i29, label %glib_autoptr_cleanup_GDBusProxy.exit, label %if.then.i.i30 + br label %for.inc -if.then.i.i30: ; preds = %glib_autoptr_cleanup_GVariant.exit - call void @g_object_unref(ptr noundef nonnull %proxy.0) #6 - br label %glib_autoptr_cleanup_GDBusProxy.exit +glib_autoptr_cleanup_GDBusProxy.exit.jt1: ; preds = %if.end51, %if.end46 + %.str.25.sink = phi ptr [ @.str.24, %if.end46 ], [ @.str.25, %if.end51 ] + %call55 = call i32 @g_io_error_quark() #6 + call void (ptr, i32, i32, ptr, ...) @g_set_error(ptr noundef nonnull %err, i32 noundef %call55, i32 noundef 0, ptr noundef nonnull %.str.25.sink, ptr noundef %call22) #6 + call void @g_free(ptr noundef %call22) #6 + call void @g_variant_unref(ptr noundef nonnull %call15) #6 + call void @g_object_unref(ptr noundef nonnull %call8) #6 + br label %if.then.i -glib_autoptr_cleanup_GDBusProxy.exit: ; preds = %glib_autoptr_cleanup_GVariant.exit.thread, %glib_autoptr_cleanup_GVariant.exit, %if.then.i.i30 - %cleanup.dest.slot.05256 = phi i32 [ %cleanup.dest.slot.0.ph, %glib_autoptr_cleanup_GVariant.exit.thread ], [ %cleanup.dest.slot.0, %glib_autoptr_cleanup_GVariant.exit ], [ %cleanup.dest.slot.0, %if.then.i.i30 ] - switch i32 %cleanup.dest.slot.05256, label %if.then.i [ - i32 0, label %for.inc - i32 4, label %for.inc - ] +glib_autoptr_cleanup_GDBusProxy.exit.jt0: ; preds = %if.end51 + call void @g_variant_unref(ptr noundef nonnull %call15) #6 + call void @g_free(ptr noundef null) #6 + br label %for.inc -for.inc: ; preds = %glib_autoptr_cleanup_GDBusProxy.exit, %glib_autoptr_cleanup_GDBusProxy.exit +for.inc: ; preds = %glib_autoptr_cleanup_GVariant.exit.thread.jt4, %glib_autoptr_cleanup_GVariant.exit.jt4, %glib_autoptr_cleanup_GDBusProxy.exit.jt0 %inc = add i64 %i.067, 1 %arrayidx = getelementptr ptr, ptr %call2, i64 %inc %14 = load ptr, ptr %arrayidx, align 8 @@ -771,24 +752,23 @@ if.then69: ; preds = %for.end %call70 = call ptr @g_hash_table_get_keys_as_array(ptr noundef nonnull %retval.06.i, ptr noundef null) #6 %15 = load ptr, ptr %call70, align 8 %tobool71.not = icmp eq ptr %15, null - br i1 %tobool71.not, label %if.then.i.sink.split, label %if.then72 + br i1 %tobool71.not, label %if.end80.critedge, label %if.then72 if.then72: ; preds = %if.then69 %call73 = call noalias ptr @g_strjoinv(ptr noundef nonnull @.str.26, ptr noundef nonnull %call70) #6 %call74 = call i32 @g_io_error_quark() #6 call void (ptr, i32, i32, ptr, ...) @g_set_error(ptr noundef nonnull %err, i32 noundef %call74, i32 noundef 0, ptr noundef nonnull @.str.27, ptr noundef %call73) #6 call void @g_free(ptr noundef %call73) #6 - br label %if.then.i.sink.split + call void @g_free(ptr noundef nonnull %call70) #6 + br label %if.then.i -if.then.i.sink.split: ; preds = %if.then69, %if.then72 - %retval.061.ph = phi ptr [ null, %if.then72 ], [ %call1, %if.then69 ] - %proxies.059.ph = phi ptr [ %call1, %if.then72 ], [ null, %if.then69 ] +if.end80.critedge: ; preds = %if.then69 call void @g_free(ptr noundef nonnull %call70) #6 br label %if.then.i -if.then.i: ; preds = %glib_autoptr_cleanup_GDBusProxy.exit, %if.then.i.sink.split, %for.end - %retval.061 = phi ptr [ %call1, %for.end ], [ %retval.061.ph, %if.then.i.sink.split ], [ null, %glib_autoptr_cleanup_GDBusProxy.exit ] - %proxies.059 = phi ptr [ null, %for.end ], [ %proxies.059.ph, %if.then.i.sink.split ], [ %call1, %glib_autoptr_cleanup_GDBusProxy.exit ] +if.then.i: ; preds = %glib_autoptr_cleanup_GDBusProxy.exit.jt1, %if.then72, %if.end80.critedge, %for.end + %retval.061 = phi ptr [ %call1, %for.end ], [ %call1, %if.end80.critedge ], [ null, %if.then72 ], [ null, %glib_autoptr_cleanup_GDBusProxy.exit.jt1 ] + %proxies.059 = phi ptr [ null, %for.end ], [ null, %if.end80.critedge ], [ %call1, %if.then72 ], [ %call1, %glib_autoptr_cleanup_GDBusProxy.exit.jt1 ] call void @g_strfreev(ptr noundef nonnull %call2) #6 br label %glib_auto_cleanup_GStrv.exit diff --git a/bench/qemu/optimized/block_qcow2-refcount.c.ll b/bench/qemu/optimized/block_qcow2-refcount.c.ll index 065cdaf3e1b..ae896042267 100644 --- a/bench/qemu/optimized/block_qcow2-refcount.c.ll +++ b/bench/qemu/optimized/block_qcow2-refcount.c.ll @@ -6934,13 +6934,14 @@ land.lhs.true.i: ; preds = %if.else.i if.then3.i: ; preds = %land.lhs.true.i %and4.i = and i64 %16, 72057594037927424 %tobool5.not.i = icmp eq i64 %and4.i, 0 - %..i = select i1 %tobool5.not.i, i32 1, i32 2 - br label %qcow2_get_cluster_type.exit + %and.jt1 = and i64 %16, 4539628424389460478 + %tobool.not.jt1 = icmp eq i64 %and.jt1, 0 + br i1 %tobool5.not.i, label %qcow2_get_cluster_type.exit.jt1, label %qcow2_get_cluster_type.exit.jt2 if.else7.i: ; preds = %land.lhs.true.i, %if.else.i %and8.i = and i64 %16, 72057594037927424 %tobool9.not.i = icmp eq i64 %and8.i, 0 - br i1 %tobool9.not.i, label %if.then10.i, label %qcow2_get_cluster_type.exit + br i1 %tobool9.not.i, label %if.then10.i, label %qcow2_get_cluster_type.exit.jt3 if.then10.i: ; preds = %if.else7.i %bs.val6.i = load ptr, ptr %file, align 8 @@ -6949,43 +6950,52 @@ if.then10.i: ; preds = %if.else7.i %cmp.i.not.i = icmp eq ptr %bs.val.val.i, %bs.val6.i %tobool14.not.i = icmp sgt i64 %16, -1 %or.cond.i = or i1 %tobool14.not.i, %cmp.i.not.i - %spec.select.i = select i1 %or.cond.i, i32 0, i32 3 - br label %qcow2_get_cluster_type.exit + br i1 %or.cond.i, label %qcow2_get_cluster_type.exit.jt0, label %qcow2_get_cluster_type.exit.jt3 -qcow2_get_cluster_type.exit: ; preds = %if.then3.i, %if.else7.i, %if.then10.i - %retval.0.i87 = phi i32 [ %..i, %if.then3.i ], [ 3, %if.else7.i ], [ %spec.select.i, %if.then10.i ] - %and = and i64 %16, 4539628424389460478 - %tobool.not = icmp eq i64 %and, 0 - br i1 %tobool.not, label %if.end18, label %if.then14 +qcow2_get_cluster_type.exit.jt2: ; preds = %if.then3.i + br i1 %tobool.not.jt1, label %sw.bb55, label %sw.bb55.sink.split + +qcow2_get_cluster_type.exit.jt0: ; preds = %if.then10.i + %and.jt0 = and i64 %16, 4539628424389460478 + %tobool.not.jt0 = icmp eq i64 %and.jt0, 0 + br i1 %tobool.not.jt0, label %sw.bb131, label %if.then14.jt0 -if.then14: ; preds = %qcow2_get_cluster_type.exit +qcow2_get_cluster_type.exit.jt3: ; preds = %if.then10.i, %if.else7.i + %and.jt3 = and i64 %16, 4539628424389460478 + %tobool.not.jt3 = icmp eq i64 %and.jt3, 0 + br i1 %tobool.not.jt3, label %sw.bb55, label %sw.bb55.sink.split + +qcow2_get_cluster_type.exit.jt1: ; preds = %if.then3.i + br i1 %tobool.not.jt1, label %sw.bb126, label %if.then14.jt1 + +if.then14.jt0: ; preds = %qcow2_get_cluster_type.exit.jt0 %24 = load ptr, ptr @stderr, align 8 - %call15 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %24, ptr noundef nonnull @.str.65, i64 noundef %16) #19 + %call15.jt0 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %24, ptr noundef nonnull @.str.65, i64 noundef %16) #19 %25 = load i32, ptr %res, align 8 - %inc16 = add i32 %25, 1 - store i32 %inc16, ptr %res, align 8 - br label %if.end18 - -if.end18: ; preds = %if.then14, %qcow2_get_cluster_type.exit - switch i32 %retval.0.i87, label %default.unreachable112 [ - i32 0, label %sw.bb131 - i32 2, label %sw.bb55 - i32 3, label %sw.bb55 - i32 1, label %sw.bb126 - ] + %inc16.jt0 = add i32 %25, 1 + store i32 %inc16.jt0, ptr %res, align 8 + br label %sw.bb131 + +if.then14.jt1: ; preds = %qcow2_get_cluster_type.exit.jt1 + %26 = load ptr, ptr @stderr, align 8 + %call15.jt1 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %26, ptr noundef nonnull @.str.65, i64 noundef %16) #19 + %27 = load i32, ptr %res, align 8 + %inc16.jt1 = add i32 %27, 1 + store i32 %inc16.jt1, ptr %res, align 8 + br label %sw.bb126 sw.bb: ; preds = %get_l2_bitmap.exit %tobool20.not = icmp sgt i64 %16, -1 br i1 %tobool20.not, label %if.end27, label %if.then21 if.then21: ; preds = %sw.bb - %26 = load ptr, ptr @stderr, align 8 - %27 = load i64, ptr %cluster_offset_mask, align 8 - %and22 = and i64 %27, %16 - %call23 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %26, ptr noundef nonnull @.str.66, i64 noundef %and22) #19 + %28 = load ptr, ptr @stderr, align 8 + %29 = load i64, ptr %cluster_offset_mask, align 8 + %and22 = and i64 %29, %16 + %call23 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %28, ptr noundef nonnull @.str.66, i64 noundef %and22) #19 %and24 = and i64 %16, 9223372036854775807 - %28 = load i32, ptr %res, align 8 - %inc26 = add i32 %28, 1 + %30 = load i32, ptr %res, align 8 + %inc26 = add i32 %30, 1 store i32 %inc26, ptr %res, align 8 %bs.val78.pre = load ptr, ptr %opaque, align 8 br label %if.end27 @@ -6994,16 +7004,16 @@ if.end27: ; preds = %if.then21, %sw.bb %bs.val78 = phi ptr [ %bs.val78.pre, %if.then21 ], [ %21, %sw.bb ] %l2_entry.0 = phi i64 [ %and24, %if.then21 ], [ %16, %sw.bb ] %bs.val79 = load ptr, ptr %file, align 8 - %29 = getelementptr i8, ptr %bs.val78, i64 480 - %bs.val78.val = load ptr, ptr %29, align 8 + %31 = getelementptr i8, ptr %bs.val78, i64 480 + %bs.val78.val = load ptr, ptr %31, align 8 %cmp.i.not = icmp eq ptr %bs.val78.val, %bs.val79 br i1 %cmp.i.not, label %if.end33, label %if.then29 if.then29: ; preds = %if.end27 - %30 = load ptr, ptr @stderr, align 8 - %call30 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %30, ptr noundef nonnull @.str.67, i32 noundef %14, i64 noundef %l2_entry.0) #19 - %31 = load i32, ptr %res, align 8 - %inc32 = add i32 %31, 1 + %32 = load ptr, ptr @stderr, align 8 + %call30 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %32, ptr noundef nonnull @.str.67, i32 noundef %14, i64 noundef %l2_entry.0) #19 + %33 = load i32, ptr %res, align 8 + %inc32 = add i32 %33, 1 store i32 %inc32, ptr %res, align 8 br label %for.inc @@ -7012,19 +7022,19 @@ if.end33: ; preds = %if.end27 br i1 %tobool34.not, label %if.end39, label %if.then35 if.then35: ; preds = %if.end33 - %32 = load ptr, ptr @stderr, align 8 - %call36 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %32, ptr noundef nonnull @.str.68, i32 noundef %14, i64 noundef %l2_entry.0) #19 - %33 = load i32, ptr %res, align 8 - %inc38 = add i32 %33, 1 + %34 = load ptr, ptr @stderr, align 8 + %call36 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %34, ptr noundef nonnull @.str.68, i32 noundef %14, i64 noundef %l2_entry.0) #19 + %35 = load i32, ptr %res, align 8 + %inc38 = add i32 %35, 1 store i32 %inc38, ptr %res, align 8 br label %for.inc if.end39: ; preds = %if.end33 call void @qcow2_parse_compressed_l2_entry(ptr noundef nonnull %bs, i64 noundef %l2_entry.0, ptr noundef nonnull %coffset, ptr noundef nonnull %csize) #17 - %34 = load i64, ptr %coffset, align 8 - %35 = load i32, ptr %csize, align 4 - %conv40 = sext i32 %35 to i64 - %call41 = call i32 @qcow2_inc_refcounts_imrt(ptr noundef nonnull %bs, ptr noundef %res, ptr noundef %refcount_table, ptr noundef %refcount_table_size, i64 noundef %34, i64 noundef %conv40) + %36 = load i64, ptr %coffset, align 8 + %37 = load i32, ptr %csize, align 4 + %conv40 = sext i32 %37 to i64 + %call41 = call i32 @qcow2_inc_refcounts_imrt(ptr noundef nonnull %bs, ptr noundef %res, ptr noundef %refcount_table, ptr noundef %refcount_table_size, i64 noundef %36, i64 noundef %conv40) %cmp42 = icmp slt i32 %call41, 0 br i1 %cmp42, label %cleanup, label %if.end45 @@ -7032,18 +7042,26 @@ if.end45: ; preds = %if.end39 br i1 %tobool47.not, label %for.inc, label %if.then48 if.then48: ; preds = %if.end45 - %36 = load i64, ptr %bfi, align 8 - %inc49 = add i64 %36, 1 + %38 = load i64, ptr %bfi, align 8 + %inc49 = add i64 %38, 1 store i64 %inc49, ptr %bfi, align 8 - %37 = load i64, ptr %compressed_clusters, align 8 - %inc51 = add i64 %37, 1 + %39 = load i64, ptr %compressed_clusters, align 8 + %inc51 = add i64 %39, 1 store i64 %inc51, ptr %compressed_clusters, align 8 - %38 = load i64, ptr %fragmented_clusters, align 8 - %inc53 = add i64 %38, 1 + %40 = load i64, ptr %fragmented_clusters, align 8 + %inc53 = add i64 %40, 1 store i64 %inc53, ptr %fragmented_clusters, align 8 br label %for.inc -sw.bb55: ; preds = %if.end18, %if.end18 +sw.bb55.sink.split: ; preds = %qcow2_get_cluster_type.exit.jt3, %qcow2_get_cluster_type.exit.jt2 + %41 = load ptr, ptr @stderr, align 8 + %call15.jt3 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %41, ptr noundef nonnull @.str.65, i64 noundef %16) #19 + %42 = load i32, ptr %res, align 8 + %inc16.jt3 = add i32 %42, 1 + store i32 %inc16.jt3, ptr %res, align 8 + br label %sw.bb55 + +sw.bb55: ; preds = %sw.bb55.sink.split, %qcow2_get_cluster_type.exit.jt3, %qcow2_get_cluster_type.exit.jt2 %and56 = and i64 %16, 72057594037927424 %shr = lshr i64 %retval.0.i, 32 %and57 = and i64 %shr, %retval.0.i @@ -7051,11 +7069,11 @@ sw.bb55: ; preds = %if.end18, %if.end18 br i1 %tobool58.not, label %if.end63, label %if.then59 if.then59: ; preds = %sw.bb55 - %39 = load i32, ptr %res, align 8 - %inc61 = add i32 %39, 1 + %43 = load i32, ptr %res, align 8 + %inc61 = add i32 %43, 1 store i32 %inc61, ptr %res, align 8 - %40 = load ptr, ptr @stderr, align 8 - %call62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %40, ptr noundef nonnull @.str.69, i64 noundef %and56) #19 + %44 = load ptr, ptr @stderr, align 8 + %call62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %44, ptr noundef nonnull @.str.69, i64 noundef %and56) #19 br label %if.end63 if.end63: ; preds = %if.then59, %sw.bb55 @@ -7067,8 +7085,8 @@ if.end63: ; preds = %if.then59, %sw.bb55 br i1 %tobool65.not, label %if.end99, label %if.then66 if.then66: ; preds = %if.end63 - %41 = load i32, ptr %res, align 8 - %inc68 = add i32 %41, 1 + %45 = load i32, ptr %res, align 8 + %inc68 = add i32 %45, 1 store i32 %inc68, ptr %res, align 8 %.val76 = load i64, ptr %2, align 8 %and.i91 = and i64 %.val76, 16 @@ -7081,18 +7099,18 @@ if.then70: ; preds = %if.then66 br i1 %tobool72.not, label %if.then79, label %if.else96 if.end77: ; preds = %if.then66 - %42 = trunc i64 %16 to i1 - br i1 %42, label %if.then79, label %if.else96 + %46 = trunc i64 %16 to i1 + br i1 %46, label %if.then79, label %if.else96 if.then79: ; preds = %if.then70, %if.end77 - %43 = load ptr, ptr @stderr, align 8 - %call82 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %43, ptr noundef nonnull @.str.70, ptr noundef nonnull %cond, i64 noundef %and56) #19 + %47 = load ptr, ptr @stderr, align 8 + %call82 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %47, ptr noundef nonnull @.str.70, ptr noundef nonnull %cond, i64 noundef %and56) #19 br i1 %tobool81.not, label %if.end99, label %if.then85 if.then85: ; preds = %if.then79 %call87 = call i32 @fix_l2_entry_by_zero(ptr noundef nonnull %bs, ptr noundef nonnull %res, i64 noundef %l2_offset, ptr noundef nonnull %call1, i32 noundef %14, i1 noundef zeroext %active, ptr noundef nonnull %metadata_overlap) - %44 = load i8, ptr %metadata_overlap, align 1 - %tobool88 = trunc i8 %44 to i1 + %48 = load i8, ptr %metadata_overlap, align 1 + %tobool88 = trunc i8 %48 to i1 br i1 %tobool88, label %cleanup, label %if.end90 if.end90: ; preds = %if.then85 @@ -7100,16 +7118,16 @@ if.end90: ; preds = %if.then85 br i1 %cmp91, label %for.inc, label %if.end99 if.else96: ; preds = %if.then70, %if.end77 - %45 = load ptr, ptr @stderr, align 8 - %call97 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %45, ptr noundef nonnull @.str.73, i64 noundef %and56) #19 + %49 = load ptr, ptr @stderr, align 8 + %call97 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %49, ptr noundef nonnull @.str.73, i64 noundef %and56) #19 br label %if.end99 if.end99: ; preds = %if.else96, %if.end90, %if.then79, %if.end63 br i1 %tobool47.not, label %if.end115, label %if.then102 if.then102: ; preds = %if.end99 - %46 = load i64, ptr %bfi, align 8 - %inc105 = add i64 %46, 1 + %50 = load i64, ptr %bfi, align 8 + %inc105 = add i64 %50, 1 store i64 %inc105, ptr %bfi, align 8 %tobool106.not = icmp eq i64 %next_contiguous_offset.0104, 0 %cmp107.not = icmp eq i64 %and56, %next_contiguous_offset.0104 @@ -7117,14 +7135,14 @@ if.then102: ; preds = %if.end99 br i1 %or.cond75, label %if.end113, label %if.then109 if.then109: ; preds = %if.then102 - %47 = load i64, ptr %fragmented_clusters, align 8 - %inc112 = add i64 %47, 1 + %51 = load i64, ptr %fragmented_clusters, align 8 + %inc112 = add i64 %51, 1 store i64 %inc112, ptr %fragmented_clusters, align 8 br label %if.end113 if.end113: ; preds = %if.then109, %if.then102 - %48 = load i32, ptr %7, align 4 - %conv114 = sext i32 %48 to i64 + %52 = load i32, ptr %7, align 4 + %conv114 = sext i32 %52 to i64 %add = add nsw i64 %and56, %conv114 br label %if.end115 @@ -7132,19 +7150,19 @@ if.end115: ; preds = %if.end113, %if.end9 %next_contiguous_offset.2 = phi i64 [ %add, %if.end113 ], [ %next_contiguous_offset.0104, %if.end99 ] %bs.val = load ptr, ptr %opaque, align 8 %bs.val77 = load ptr, ptr %file, align 8 - %49 = getelementptr i8, ptr %bs.val, i64 480 - %bs.val.val = load ptr, ptr %49, align 8 + %53 = getelementptr i8, ptr %bs.val, i64 480 + %bs.val.val = load ptr, ptr %53, align 8 %cmp.i92.not = icmp eq ptr %bs.val.val, %bs.val77 br i1 %cmp.i92.not, label %if.then117, label %for.inc if.then117: ; preds = %if.end115 - %50 = load i32, ptr %7, align 4 - %conv119 = sext i32 %50 to i64 + %54 = load i32, ptr %7, align 4 + %conv119 = sext i32 %54 to i64 %call120 = call i32 @qcow2_inc_refcounts_imrt(ptr noundef nonnull %bs, ptr noundef %res, ptr noundef %refcount_table, ptr noundef %refcount_table_size, i64 noundef %and56, i64 noundef %conv119) %cmp121 = icmp slt i32 %call120, 0 br i1 %cmp121, label %cleanup, label %for.inc -sw.bb126: ; preds = %if.end18 +sw.bb126: ; preds = %qcow2_get_cluster_type.exit.jt1, %if.then14.jt1 %tobool127.not = icmp eq i64 %retval.0.i, 0 br i1 %tobool127.not, label %for.inc, label %if.else129 @@ -7152,28 +7170,25 @@ if.else129: ; preds = %sw.bb126 call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.1, i32 noundef 1835, ptr noundef nonnull @__PRETTY_FUNCTION__.check_refcounts_l2) #15 unreachable -sw.bb131: ; preds = %if.end18 +sw.bb131: ; preds = %qcow2_get_cluster_type.exit.jt0, %if.then14.jt0 %and132 = and i64 %retval.0.i, 4294967295 %tobool133.not = icmp eq i64 %and132, 0 br i1 %tobool133.not, label %for.inc, label %if.then134 if.then134: ; preds = %sw.bb131 - %51 = load i32, ptr %res, align 8 - %inc136 = add i32 %51, 1 + %55 = load i32, ptr %res, align 8 + %inc136 = add i32 %55, 1 store i32 %inc136, ptr %res, align 8 - %52 = load ptr, ptr @stderr, align 8 - %53 = call i64 @fwrite(ptr nonnull @.str.75, i64 66, i64 1, ptr %52) #19 + %56 = load ptr, ptr @stderr, align 8 + %57 = call i64 @fwrite(ptr nonnull @.str.75, i64 66, i64 1, ptr %56) #19 br label %for.inc -default.unreachable112: ; preds = %if.end18 - unreachable - for.inc: ; preds = %if.then29, %if.then35, %if.then48, %if.end45, %if.then117, %if.end115, %sw.bb126, %if.then134, %sw.bb131, %if.end90 %next_contiguous_offset.1 = phi i64 [ %next_contiguous_offset.0104, %if.then134 ], [ %next_contiguous_offset.0104, %sw.bb131 ], [ %next_contiguous_offset.0104, %sw.bb126 ], [ %next_contiguous_offset.2, %if.end115 ], [ %next_contiguous_offset.2, %if.then117 ], [ %next_contiguous_offset.0104, %if.end90 ], [ %next_contiguous_offset.0104, %if.then29 ], [ %next_contiguous_offset.0104, %if.then35 ], [ %next_contiguous_offset.0104, %if.then48 ], [ %next_contiguous_offset.0104, %if.end45 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %54 = load i32, ptr %l2_size, align 4 - %55 = sext i32 %54 to i64 - %cmp6 = icmp slt i64 %indvars.iv.next, %55 + %58 = load i32, ptr %l2_size, align 4 + %59 = sext i32 %58 to i64 + %cmp6 = icmp slt i64 %indvars.iv.next, %59 br i1 %cmp6, label %for.body, label %cleanup, !llvm.loop !59 cleanup: ; preds = %if.end39, %if.then85, %if.then117, %for.inc, %for.cond.preheader, %if.then diff --git a/bench/redis/optimized/listpack.ll b/bench/redis/optimized/listpack.ll index fff3aff9bba..933ab4a3486 100644 --- a/bench/redis/optimized/listpack.ll +++ b/bench/redis/optimized/listpack.ll @@ -1038,6 +1038,8 @@ while.body.preheader: ; preds = %entry %cmp2.i = icmp eq i32 %slen, 1 %incdec.ptr41.i = getelementptr inbounds i8, ptr %s, i64 1 %brmerge = select i1 %or.cond, i1 true, i1 %or.cond.i + %cmp.jt1 = icmp eq i32 %skip, 0 + %cmp.jt255 = icmp eq i32 %skip, 0 br label %while.body cond.false: ; preds = %entry @@ -1053,15 +1055,35 @@ while.body: ; preds = %while.body.preheade %cmp = icmp eq i32 %skipcnt.0, 0 br i1 %cmp, label %if.then, label %if.else58 +while.body.jt255: ; preds = %if.end87.jt255 + br i1 %cmp.jt255, label %if.then.jt255, label %if.else58 + +while.body.jt1: ; preds = %if.end87.jt1 + br i1 %cmp.jt1, label %if.then.jt1, label %if.else58 + if.then: ; preds = %while.body %call6 = call fastcc ptr @lpGetWithSize(ptr noundef nonnull %p.addr.0, ptr noundef nonnull %ll, ptr noundef null, ptr noundef nonnull %entry_size) %tobool7.not = icmp eq ptr %call6, null br i1 %tobool7.not, label %if.else, label %if.then8 -if.then8: ; preds = %if.then - %cmp9.not = icmp uge ptr %p.addr.0, %add.ptr +if.then.jt255: ; preds = %while.body.jt255 + %call6.jt255 = call fastcc ptr @lpGetWithSize(ptr noundef nonnull %add.ptr57.jt255, ptr noundef nonnull %ll, ptr noundef null, ptr noundef nonnull %entry_size) + %tobool7.not.jt255 = icmp eq ptr %call6.jt255, null + br i1 %tobool7.not.jt255, label %if.end56, label %if.then8 + +if.then.jt1: ; preds = %while.body.jt1 + %call6.jt1 = call fastcc ptr @lpGetWithSize(ptr noundef nonnull %add.ptr57.jt1, ptr noundef nonnull %ll, ptr noundef null, ptr noundef nonnull %entry_size) + %tobool7.not.jt1 = icmp eq ptr %call6.jt1, null + br i1 %tobool7.not.jt1, label %land.lhs.true51, label %if.then8 + +if.then8: ; preds = %if.then.jt255, %if.then.jt1, %if.then + %call656 = phi ptr [ %call6.jt255, %if.then.jt255 ], [ %call6.jt1, %if.then.jt1 ], [ %call6, %if.then ] + %p.addr.053 = phi ptr [ %add.ptr57.jt255, %if.then.jt255 ], [ %add.ptr57.jt1, %if.then.jt1 ], [ %p.addr.0, %if.then ] + %vencoding.051 = phi i8 [ -1, %if.then.jt255 ], [ 1, %if.then.jt1 ], [ %vencoding.0, %if.then ] + %vll.048 = phi i64 [ %vll.0, %if.then.jt255 ], [ %vll.240.jt1, %if.then.jt1 ], [ %vll.0, %if.then ] + %cmp9.not = icmp uge ptr %p.addr.053, %add.ptr %4 = load i64, ptr %entry_size, align 8 - %add.ptr11 = getelementptr inbounds i8, ptr %p.addr.0, i64 %4 + %add.ptr11 = getelementptr inbounds i8, ptr %p.addr.053, i64 %4 %cmp13 = icmp ult ptr %add.ptr11, %add.ptr12 %5 = select i1 %cmp9.not, i1 %cmp13, i1 false br i1 %5, label %cond.end23, label %cond.false22 @@ -1077,18 +1099,18 @@ cond.end23: ; preds = %if.then8 br i1 %cmp25, label %land.lhs.true, label %if.end56 land.lhs.true: ; preds = %cond.end23 - %bcmp = call i32 @bcmp(ptr nonnull %call6, ptr %s, i64 %conv24) + %bcmp = call i32 @bcmp(ptr nonnull %call656, ptr %s, i64 %conv24) %cmp29 = icmp eq i32 %bcmp, 0 br i1 %cmp29, label %return, label %if.end56 if.else: ; preds = %if.then switch i8 %vencoding.0, label %land.lhs.true51 [ i8 0, label %if.then35 - i8 -1, label %if.end56 + i8 -1, label %if.end60.jt255 ] if.then35: ; preds = %if.else - br i1 %brmerge, label %if.end56, label %if.end.i + br i1 %brmerge, label %if.end60.jt255, label %if.end.i if.end.i: ; preds = %if.then35 %7 = load i8, ptr %s, align 1 @@ -1096,8 +1118,8 @@ if.end.i: ; preds = %if.then35 land.lhs.true.i: ; preds = %if.end.i switch i8 %7, label %if.end20.thread.i [ - i8 48, label %land.lhs.true51 - i8 45, label %if.end56 + i8 48, label %land.lhs.true51.jt1 + i8 45, label %if.end60.jt255 ] if.end10.thread.i: ; preds = %if.end.i @@ -1114,17 +1136,17 @@ if.end20.i: ; preds = %if.then15.thread.i, %plen.0.i = phi i64 [ 1, %if.end10.thread.i ], [ 2, %if.then15.thread.i ] %9 = add i8 %8, -49 %or.cond35.i = icmp ult i8 %9, 9 - br i1 %or.cond35.i, label %if.then30.i, label %if.end56 + br i1 %or.cond35.i, label %if.then30.i, label %if.end60.jt255 if.end20.thread.i: ; preds = %land.lhs.true.i %10 = add i8 %7, -49 %or.cond3552.i = icmp ult i8 %10, 9 - br i1 %or.cond3552.i, label %if.else81.thread.i, label %if.end56 + br i1 %or.cond3552.i, label %if.else81.thread.i, label %if.end60.jt255 if.else81.thread.i: ; preds = %if.end20.thread.i %narrow59.i = add nsw i8 %7, -48 %sub60.i = zext nneg i8 %narrow59.i to i64 - br label %land.lhs.true51 + br label %land.lhs.true51.jt1 if.then30.i: ; preds = %if.end20.i %narrow.i = add nsw i8 %8, -48 @@ -1142,7 +1164,7 @@ land.lhs.true39.i: ; preds = %if.then30.i, %if.en %or.cond36.i = icmp ult i8 %12, -10 %cmp48.i = icmp ugt i64 %v.047.i, 1844674407370955161 %or.cond42.i = select i1 %or.cond36.i, i1 true, i1 %cmp48.i - br i1 %or.cond42.i, label %if.end56, label %if.end51.i + br i1 %or.cond42.i, label %if.end60.jt255, label %if.end51.i if.end51.i: ; preds = %land.lhs.true39.i %mul.i = mul nuw i64 %v.047.i, 10 @@ -1150,7 +1172,7 @@ if.end51.i: ; preds = %land.lhs.true39.i %sub54.i = zext nneg i8 %narrow34.i to i64 %sub56.i = xor i64 %sub54.i, -1 %cmp57.i = icmp ugt i64 %mul.i, %sub56.i - br i1 %cmp57.i, label %if.end56, label %if.end60.i + br i1 %cmp57.i, label %if.end60.jt255, label %if.end60.i if.end60.i: ; preds = %if.end51.i %add.i = add i64 %mul.i, %sub54.i @@ -1164,35 +1186,47 @@ if.end70.i: ; preds = %if.end60.i, %if.the if.then71.i: ; preds = %if.end70.i %cmp72.i = icmp ugt i64 %v.0.lcssa.i, -9223372036854775808 - br i1 %cmp72.i, label %if.end56, label %if.end75.i + br i1 %cmp72.i, label %if.end60.jt255, label %if.end75.i if.end75.i: ; preds = %if.then71.i %sub79.i = sub i64 0, %v.0.lcssa.i - br label %land.lhs.true51 + br label %land.lhs.true51.jt1 if.else81.i: ; preds = %if.end70.i %cmp82.i = icmp slt i64 %v.0.lcssa.i, 0 - br i1 %cmp82.i, label %if.end56, label %land.lhs.true51 + br i1 %cmp82.i, label %if.end60.jt255, label %land.lhs.true51.jt1 -land.lhs.true51: ; preds = %if.else, %if.else81.thread.i, %if.else81.i, %land.lhs.true.i, %if.end75.i - %vencoding.241 = phi i8 [ 1, %if.end75.i ], [ 1, %land.lhs.true.i ], [ 1, %if.else81.i ], [ 1, %if.else81.thread.i ], [ %vencoding.0, %if.else ] - %vll.240 = phi i64 [ %sub79.i, %if.end75.i ], [ 0, %land.lhs.true.i ], [ %v.0.lcssa.i, %if.else81.i ], [ %sub60.i, %if.else81.thread.i ], [ %vll.0, %if.else ] +land.lhs.true51: ; preds = %if.then.jt1, %if.else + %p.addr.054 = phi ptr [ %p.addr.0, %if.else ], [ %add.ptr57.jt1, %if.then.jt1 ] + %vencoding.241 = phi i8 [ %vencoding.0, %if.else ], [ 1, %if.then.jt1 ] + %vll.240 = phi i64 [ %vll.0, %if.else ], [ %vll.240.jt1, %if.then.jt1 ] %13 = load i64, ptr %ll, align 8 %cmp52 = icmp eq i64 %13, %vll.240 br i1 %cmp52, label %return, label %if.end56 -if.end56: ; preds = %land.lhs.true39.i, %if.end51.i, %if.then35, %if.else, %if.end20.thread.i, %land.lhs.true.i, %if.else81.i, %if.then71.i, %if.end20.i, %land.lhs.true51, %cond.end23, %land.lhs.true - %vll.1 = phi i64 [ %vll.240, %land.lhs.true51 ], [ %vll.0, %land.lhs.true ], [ %vll.0, %cond.end23 ], [ %vll.0, %if.then35 ], [ %vll.0, %if.end20.i ], [ %vll.0, %if.then71.i ], [ %vll.0, %if.else81.i ], [ %vll.0, %land.lhs.true.i ], [ %vll.0, %if.end20.thread.i ], [ %vll.0, %if.else ], [ %vll.0, %if.end51.i ], [ %vll.0, %land.lhs.true39.i ] - %vencoding.1 = phi i8 [ %vencoding.241, %land.lhs.true51 ], [ %vencoding.0, %land.lhs.true ], [ %vencoding.0, %cond.end23 ], [ -1, %if.then35 ], [ -1, %if.end20.i ], [ -1, %if.then71.i ], [ -1, %if.else81.i ], [ -1, %land.lhs.true.i ], [ -1, %if.end20.thread.i ], [ %vencoding.0, %if.else ], [ -1, %if.end51.i ], [ -1, %land.lhs.true39.i ] - %14 = load i64, ptr %entry_size, align 8 - %add.ptr57 = getelementptr inbounds i8, ptr %p.addr.0, i64 %14 +land.lhs.true51.jt1: ; preds = %if.else81.thread.i, %if.else81.i, %land.lhs.true.i, %if.end75.i + %vll.240.jt1 = phi i64 [ %sub79.i, %if.end75.i ], [ 0, %land.lhs.true.i ], [ %v.0.lcssa.i, %if.else81.i ], [ %sub60.i, %if.else81.thread.i ] + %14 = load i64, ptr %ll, align 8 + %cmp52.jt1 = icmp eq i64 %14, %vll.240.jt1 + br i1 %cmp52.jt1, label %return, label %if.end60.jt1 + +if.end56: ; preds = %if.then.jt255, %land.lhs.true51, %cond.end23, %land.lhs.true + %p.addr.055 = phi ptr [ %p.addr.054, %land.lhs.true51 ], [ %p.addr.053, %cond.end23 ], [ %p.addr.053, %land.lhs.true ], [ %add.ptr57.jt255, %if.then.jt255 ] + %vll.1 = phi i64 [ %vll.240, %land.lhs.true51 ], [ %vll.048, %cond.end23 ], [ %vll.048, %land.lhs.true ], [ %vll.0, %if.then.jt255 ] + %vencoding.1 = phi i8 [ %vencoding.241, %land.lhs.true51 ], [ %vencoding.051, %cond.end23 ], [ %vencoding.051, %land.lhs.true ], [ -1, %if.then.jt255 ] + %15 = load i64, ptr %entry_size, align 8 + %add.ptr57 = getelementptr inbounds i8, ptr %p.addr.055, i64 %15 br label %if.end60 -if.else58: ; preds = %while.body - %dec = add nsw i32 %skipcnt.0, -1 - %15 = load i8, ptr %p.addr.0, align 1 - %conv.i.i = zext i8 %15 to i32 - %cmp.i.i = icmp sgt i8 %15, -1 +if.else58: ; preds = %while.body.jt255, %while.body.jt1, %while.body + %p.addr.052 = phi ptr [ %add.ptr57.jt255, %while.body.jt255 ], [ %add.ptr57.jt1, %while.body.jt1 ], [ %p.addr.0, %while.body ] + %vencoding.050 = phi i8 [ -1, %while.body.jt255 ], [ 1, %while.body.jt1 ], [ %vencoding.0, %while.body ] + %skipcnt.049 = phi i32 [ %skip, %while.body.jt255 ], [ %skip, %while.body.jt1 ], [ %skipcnt.0, %while.body ] + %vll.047 = phi i64 [ %vll.0, %while.body.jt255 ], [ %vll.240.jt1, %while.body.jt1 ], [ %vll.0, %while.body ] + %dec = add nsw i32 %skipcnt.049, -1 + %16 = load i8, ptr %p.addr.052, align 1 + %conv.i.i = zext i8 %16 to i32 + %cmp.i.i = icmp sgt i8 %16, -1 br i1 %cmp.i.i, label %lpSkip.exit, label %if.end.i.i if.end.i.i: ; preds = %if.else58 @@ -1211,9 +1245,9 @@ if.end11.i.i: ; preds = %if.end.i.i br i1 %cmp15.i.i, label %lpSkip.exit, label %if.end18.i.i if.end18.i.i: ; preds = %if.end11.i.i - %switch.tableidx = add nsw i8 %15, 15 - %16 = icmp ult i8 %switch.tableidx, 4 - br i1 %16, label %switch.lookup, label %if.end46.i.i + %switch.tableidx = add nsw i8 %16, 15 + %17 = icmp ult i8 %switch.tableidx, 4 + br i1 %17, label %switch.lookup, label %if.end46.i.i if.end46.i.i: ; preds = %if.end18.i.i %and49.i.i = and i32 %conv.i.i, 240 @@ -1223,23 +1257,23 @@ if.end46.i.i: ; preds = %if.end18.i.i if.then52.i.i: ; preds = %if.end46.i.i %and55.i.i = shl nuw nsw i32 %conv.i.i, 8 %shl.i.i = and i32 %and55.i.i, 3840 - %arrayidx56.i.i = getelementptr inbounds i8, ptr %p.addr.0, i64 1 - %17 = load i8, ptr %arrayidx56.i.i, align 1 - %conv57.i.i = zext i8 %17 to i32 + %arrayidx56.i.i = getelementptr inbounds i8, ptr %p.addr.052, i64 1 + %18 = load i8, ptr %arrayidx56.i.i, align 1 + %conv57.i.i = zext i8 %18 to i32 %or.i.i = or disjoint i32 %shl.i.i, 2 %add58.i.i = add nuw nsw i32 %or.i.i, %conv57.i.i br label %lpCurrentEncodedSizeUnsafe.exit.i if.end59.i.i: ; preds = %if.end46.i.i - switch i8 %15, label %if.end88.i.i [ + switch i8 %16, label %if.end88.i.i [ i8 -16, label %if.then65.i.i i8 -1, label %lpSkip.exit ] if.then65.i.i: ; preds = %if.end59.i.i - %arrayidx66.i.i = getelementptr inbounds i8, ptr %p.addr.0, i64 1 - %18 = load i32, ptr %arrayidx66.i.i, align 1 - %add81.i.i = add i32 %18, 5 + %arrayidx66.i.i = getelementptr inbounds i8, ptr %p.addr.052, i64 1 + %19 = load i32, ptr %arrayidx66.i.i, align 1 + %add81.i.i = add i32 %19, 5 br label %lpCurrentEncodedSizeUnsafe.exit.i if.end88.i.i: ; preds = %if.end59.i.i @@ -1264,8 +1298,8 @@ if.else31.i.i: ; preds = %if.else12.i.i br label %lpSkip.exit switch.lookup: ; preds = %if.end18.i.i - %19 = zext nneg i8 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds [4 x i32], ptr @switch.table.lpRandomEntries.4, i64 0, i64 %19 + %20 = zext nneg i8 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds [4 x i32], ptr @switch.table.lpRandomEntries.4, i64 0, i64 %20 %switch.load = load i32, ptr %switch.gep, align 4 br label %lpSkip.exit @@ -1273,19 +1307,33 @@ lpSkip.exit: ; preds = %switch.lookup, %if. %conv10.shrunk.i = phi i32 [ %retval.0.i.i, %lpCurrentEncodedSizeUnsafe.exit.i ], [ %retval.0.i.i, %if.else.i.i ], [ %retval.0.i.i, %if.else12.i.i ], [ %retval.0.i.i, %if.else31.i.i ], [ 1, %if.end59.i.i ], [ 2, %if.end11.i.i ], [ 1, %if.else58 ], [ 0, %if.end88.i.i ], [ %add.i.i, %lpCurrentEncodedSizeUnsafe.exit.thread.i ], [ %switch.load, %switch.lookup ] %retval.0.i6.i = phi i64 [ 1, %lpCurrentEncodedSizeUnsafe.exit.i ], [ 2, %if.else.i.i ], [ 3, %if.else12.i.i ], [ %spec.select.i, %if.else31.i.i ], [ 1, %if.end59.i.i ], [ 1, %if.end11.i.i ], [ 1, %if.else58 ], [ 1, %if.end88.i.i ], [ 1, %lpCurrentEncodedSizeUnsafe.exit.thread.i ], [ 1, %switch.lookup ] %conv10.i = zext i32 %conv10.shrunk.i to i64 - %20 = getelementptr inbounds i8, ptr %p.addr.0, i64 %retval.0.i6.i - %add.ptr.i = getelementptr inbounds i8, ptr %20, i64 %conv10.i + %21 = getelementptr inbounds i8, ptr %p.addr.052, i64 %retval.0.i6.i + %add.ptr.i = getelementptr inbounds i8, ptr %21, i64 %conv10.i br label %if.end60 if.end60: ; preds = %lpSkip.exit, %if.end56 - %vll.3 = phi i64 [ %vll.1, %if.end56 ], [ %vll.0, %lpSkip.exit ] + %vll.3 = phi i64 [ %vll.1, %if.end56 ], [ %vll.047, %lpSkip.exit ] %skipcnt.1 = phi i32 [ %skip, %if.end56 ], [ %dec, %lpSkip.exit ] - %vencoding.3 = phi i8 [ %vencoding.1, %if.end56 ], [ %vencoding.0, %lpSkip.exit ] + %vencoding.3 = phi i8 [ %vencoding.1, %if.end56 ], [ %vencoding.050, %lpSkip.exit ] %p.addr.1 = phi ptr [ %add.ptr57, %if.end56 ], [ %add.ptr.i, %lpSkip.exit ] %add.ptr61 = getelementptr inbounds i8, ptr %p.addr.1, i64 8 %cmp64.not = icmp ult ptr %add.ptr61, %add.ptr12 br i1 %cmp64.not, label %if.else68, label %if.then66 +if.end60.jt255: ; preds = %if.end51.i, %land.lhs.true39.i, %if.then35, %if.end20.i, %if.then71.i, %if.else81.i, %land.lhs.true.i, %if.end20.thread.i, %if.else + %22 = load i64, ptr %entry_size, align 8 + %add.ptr57.jt255 = getelementptr inbounds i8, ptr %p.addr.0, i64 %22 + %add.ptr61.jt255 = getelementptr inbounds i8, ptr %add.ptr57.jt255, i64 8 + %cmp64.not.jt255 = icmp ult ptr %add.ptr61.jt255, %add.ptr12 + br i1 %cmp64.not.jt255, label %if.else68.jt255, label %if.then66.jt255 + +if.end60.jt1: ; preds = %land.lhs.true51.jt1 + %23 = load i64, ptr %entry_size, align 8 + %add.ptr57.jt1 = getelementptr inbounds i8, ptr %p.addr.0, i64 %23 + %add.ptr61.jt1 = getelementptr inbounds i8, ptr %add.ptr57.jt1, i64 8 + %cmp64.not.jt1 = icmp ult ptr %add.ptr61.jt1, %add.ptr12 + br i1 %cmp64.not.jt1, label %if.else68.jt1, label %if.then66.jt1 + if.then66: ; preds = %if.end60 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %p.addr.i) store ptr %p.addr.1, ptr %p.addr.i, align 8 @@ -1293,7 +1341,21 @@ if.then66: ; preds = %if.end60 %tobool.not.i = icmp eq i32 %call.i, 0 br i1 %tobool.not.i, label %cond.false.i, label %lpAssertValidEntry.exit -cond.false.i: ; preds = %if.then66 +if.then66.jt255: ; preds = %if.end60.jt255 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %p.addr.i) + store ptr %add.ptr57.jt255, ptr %p.addr.i, align 8 + %call.i.jt255 = call i32 @lpValidateNext(ptr noundef nonnull %lp, ptr noundef nonnull %p.addr.i, i64 noundef %1) + %tobool.not.i.jt255 = icmp eq i32 %call.i.jt255, 0 + br i1 %tobool.not.i.jt255, label %cond.false.i, label %lpAssertValidEntry.exit.jt255 + +if.then66.jt1: ; preds = %if.end60.jt1 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %p.addr.i) + store ptr %add.ptr57.jt1, ptr %p.addr.i, align 8 + %call.i.jt1 = call i32 @lpValidateNext(ptr noundef nonnull %lp, ptr noundef nonnull %p.addr.i, i64 noundef %1) + %tobool.not.i.jt1 = icmp eq i32 %call.i.jt1, 0 + br i1 %tobool.not.i.jt1, label %cond.false.i, label %lpAssertValidEntry.exit.jt1 + +cond.false.i: ; preds = %if.then66.jt255, %if.then66.jt1, %if.then66 call void @_serverAssert(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 1342) #16 call void @abort() #17 unreachable @@ -1302,22 +1364,48 @@ lpAssertValidEntry.exit: ; preds = %if.then66 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %p.addr.i) br label %if.end87 +lpAssertValidEntry.exit.jt255: ; preds = %if.then66.jt255 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %p.addr.i) + br label %if.end87.jt255 + +lpAssertValidEntry.exit.jt1: ; preds = %if.then66.jt1 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %p.addr.i) + br label %if.end87.jt1 + if.else68: ; preds = %if.end60 %cmp70.not = icmp ult ptr %p.addr.1, %add.ptr br i1 %cmp70.not, label %cond.false85, label %if.end87 -cond.false85: ; preds = %if.else68 +if.else68.jt255: ; preds = %if.end60.jt255 + %cmp70.not.jt255 = icmp ult ptr %add.ptr57.jt255, %add.ptr + br i1 %cmp70.not.jt255, label %cond.false85, label %if.end87.jt255 + +if.else68.jt1: ; preds = %if.end60.jt1 + %cmp70.not.jt1 = icmp ult ptr %add.ptr57.jt1, %add.ptr + br i1 %cmp70.not.jt1, label %cond.false85, label %if.end87.jt1 + +cond.false85: ; preds = %if.else68.jt255, %if.else68.jt1, %if.else68 call void @_serverAssert(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 745) #16 call void @abort() #17 unreachable if.end87: ; preds = %if.else68, %lpAssertValidEntry.exit - %21 = load i8, ptr %p.addr.1, align 1 - %cmp89.not = icmp eq i8 %21, -1 + %24 = load i8, ptr %p.addr.1, align 1 + %cmp89.not = icmp eq i8 %24, -1 br i1 %cmp89.not, label %return, label %while.body, !llvm.loop !8 -return: ; preds = %if.end87, %land.lhs.true51, %land.lhs.true - %retval.0 = phi ptr [ %p.addr.0, %land.lhs.true ], [ %p.addr.0, %land.lhs.true51 ], [ null, %if.end87 ] +if.end87.jt255: ; preds = %lpAssertValidEntry.exit.jt255, %if.else68.jt255 + %25 = load i8, ptr %add.ptr57.jt255, align 1 + %cmp89.not.jt255 = icmp eq i8 %25, -1 + br i1 %cmp89.not.jt255, label %return, label %while.body.jt255, !llvm.loop !8 + +if.end87.jt1: ; preds = %lpAssertValidEntry.exit.jt1, %if.else68.jt1 + %26 = load i8, ptr %add.ptr57.jt1, align 1 + %cmp89.not.jt1 = icmp eq i8 %26, -1 + br i1 %cmp89.not.jt1, label %return, label %while.body.jt1, !llvm.loop !8 + +return: ; preds = %if.end87.jt255, %if.end87.jt1, %land.lhs.true51.jt1, %if.end87, %land.lhs.true51, %land.lhs.true + %retval.0 = phi ptr [ %p.addr.053, %land.lhs.true ], [ %p.addr.054, %land.lhs.true51 ], [ null, %if.end87 ], [ %p.addr.0, %land.lhs.true51.jt1 ], [ null, %if.end87.jt1 ], [ null, %if.end87.jt255 ] ret ptr %retval.0 } diff --git a/bench/rocksdb/optimized/compaction_picker_level.cc.ll b/bench/rocksdb/optimized/compaction_picker_level.cc.ll index 8fa3164d324..34f29af583e 100644 --- a/bench/rocksdb/optimized/compaction_picker_level.cc.ll +++ b/bench/rocksdb/optimized/compaction_picker_level.cc.ll @@ -2255,7 +2255,7 @@ lpad19.loopexit.split-lp.i: ; preds = %if.then.i.i.i.i common.resume.sink.split: ; preds = %lpad96, %lpad103, %lpad19.i %largest.sink = phi ptr [ %my_largest.i, %lpad19.i ], [ %largest, %lpad103 ], [ %largest, %lpad96 ] %smallest.sink = phi ptr [ %my_smallest.i, %lpad19.i ], [ %smallest, %lpad103 ], [ %smallest, %lpad96 ] - %common.resume.op.ph = phi { ptr, i32 } [ %lpad.phi.i, %lpad19.i ], [ %138, %lpad103 ], [ %137, %lpad96 ] + %common.resume.op.ph = phi { ptr, i32 } [ %lpad.phi.i, %lpad19.i ], [ %lpad.phi, %lpad103 ], [ %137, %lpad96 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %largest.sink) #19 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %smallest.sink) #19 br label %common.resume @@ -2838,7 +2838,7 @@ for.body.lr.ph: ; preds = %if.end7 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc - %90 = phi ptr [ %89, %for.body.lr.ph ], [ %149, %for.inc ] + %90 = phi ptr [ %89, %for.body.lr.ph ], [ %151, %for.inc ] %conv119 = phi i64 [ %conv111, %for.body.lr.ph ], [ %conv, %for.inc ] %cmp_idx.0117 = phi i32 [ %87, %for.body.lr.ph ], [ %inc, %for.inc ] %add.ptr.i = getelementptr inbounds i32, ptr %90, i64 %conv119 @@ -3110,7 +3110,7 @@ invoke.cont97: ; preds = %if.end91 store i32 %130, ptr %output_level_inputs, align 8 %131 = load ptr, ptr %vstorage_.i, align 8 invoke void @_ZNK7rocksdb18VersionStorageInfo20GetOverlappingInputsEiPKNS_11InternalKeyES3_PSt6vectorIPNS_12FileMetaDataESaIS6_EEiPibPPS1_(ptr noundef nonnull align 16 dereferenceable(4112) %131, i32 noundef %130, ptr noundef nonnull %smallest, ptr noundef nonnull %largest, ptr noundef nonnull %files.i45, i32 noundef -1, ptr noundef null, i1 noundef zeroext true, ptr noundef null) - to label %invoke.cont104 unwind label %lpad103 + to label %invoke.cont104 unwind label %lpad103.loopexit invoke.cont104: ; preds = %invoke.cont97 %132 = load ptr, ptr %files.i45, align 8 @@ -3129,125 +3129,169 @@ land.lhs.true110: ; preds = %if.then107 %136 = load i8, ptr %compaction_pri113, align 1 %cmp115 = icmp eq i8 %136, 4 %call117 = invoke fastcc noundef zeroext i1 @_ZN7rocksdb12_GLOBAL__N_122LevelCompactionBuilder25TryExtendNonL0TrivialMoveEib(ptr noundef nonnull align 8 dereferenceable(256) %this, i32 noundef %91, i1 noundef zeroext %cmp115) - to label %invoke.cont116 unwind label %lpad103 + to label %invoke.cont116 unwind label %lpad103.loopexit.split-lp invoke.cont116: ; preds = %land.lhs.true110 - br i1 %call117, label %cleanup, label %if.end136 + br i1 %call117, label %cleanup.jt2, label %if.end136 lpad96: ; preds = %if.end91 %137 = landingpad { ptr, i32 } cleanup br label %common.resume.sink.split -lpad103: ; preds = %if.else, %land.lhs.true110, %invoke.cont97 - %138 = landingpad { ptr, i32 } +lpad103.loopexit: ; preds = %invoke.cont97, %if.else + %lpad.loopexit = landingpad { ptr, i32 } cleanup + br label %lpad103 + +lpad103.loopexit.split-lp: ; preds = %land.lhs.true110 + %lpad.loopexit.split-lp = landingpad { ptr, i32 } + cleanup + br label %lpad103 + +lpad103: ; preds = %lpad103.loopexit.split-lp, %lpad103.loopexit + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %lpad103.loopexit ], [ %lpad.loopexit.split-lp, %lpad103.loopexit.split-lp ] call void @_ZN7rocksdb20CompactionInputFilesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %output_level_inputs) #19 br label %common.resume.sink.split if.else: ; preds = %invoke.cont104 - %139 = load ptr, ptr %compaction_picker_29, align 8 - %140 = load ptr, ptr %this, align 8 - %141 = load ptr, ptr %vstorage_.i, align 8 - %call124 = invoke noundef zeroext i1 @_ZN7rocksdb16CompactionPicker22ExpandInputsToCleanCutERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_18VersionStorageInfoEPNS_20CompactionInputFilesEPPNS_11InternalKeyE(ptr noundef nonnull align 8 dereferenceable(128) %139, ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef %141, ptr noundef nonnull %output_level_inputs, ptr noundef null) - to label %invoke.cont123 unwind label %lpad103 + %138 = load ptr, ptr %compaction_picker_29, align 8 + %139 = load ptr, ptr %this, align 8 + %140 = load ptr, ptr %vstorage_.i, align 8 + %call124 = invoke noundef zeroext i1 @_ZN7rocksdb16CompactionPicker22ExpandInputsToCleanCutERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_18VersionStorageInfoEPNS_20CompactionInputFilesEPPNS_11InternalKeyE(ptr noundef nonnull align 8 dereferenceable(128) %138, ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef %140, ptr noundef nonnull %output_level_inputs, ptr noundef null) + to label %invoke.cont123 unwind label %lpad103.loopexit invoke.cont123: ; preds = %if.else br i1 %call124, label %if.end136, label %if.then125 if.then125: ; preds = %invoke.cont123 - %142 = load ptr, ptr %files.i, align 8 - %143 = load ptr, ptr %_M_finish.i.i.i, align 8 - %tobool.not.i.i.i51 = icmp eq ptr %143, %142 + %141 = load ptr, ptr %files.i, align 8 + %142 = load ptr, ptr %_M_finish.i.i.i, align 8 + %tobool.not.i.i.i51 = icmp eq ptr %142, %141 br i1 %tobool.not.i.i.i51, label %_ZN7rocksdb20CompactionInputFiles5clearEv.exit53, label %invoke.cont.i.i.i52 invoke.cont.i.i.i52: ; preds = %if.then125 - store ptr %142, ptr %_M_finish.i.i.i, align 8 + store ptr %141, ptr %_M_finish.i.i.i, align 8 br label %_ZN7rocksdb20CompactionInputFiles5clearEv.exit53 _ZN7rocksdb20CompactionInputFiles5clearEv.exit53: ; preds = %if.then125, %invoke.cont.i.i.i52 - %144 = load ptr, ptr %ioptions_44, align 8 - %compaction_pri130 = getelementptr inbounds i8, ptr %144, i64 577 - %145 = load i8, ptr %compaction_pri130, align 1 - %cmp132 = icmp eq i8 %145, 4 - %. = select i1 %cmp132, i32 1, i32 4 - br label %cleanup + %143 = load ptr, ptr %ioptions_44, align 8 + %compaction_pri130 = getelementptr inbounds i8, ptr %143, i64 577 + %144 = load i8, ptr %compaction_pri130, align 1 + %cmp132 = icmp eq i8 %144, 4 + %145 = load ptr, ptr %atomic_compaction_unit_boundaries.i54, align 8 + %tobool.not.i.i.i.i55.jt1 = icmp eq ptr %145, null + br i1 %cmp132, label %cleanup.jt1, label %cleanup.jt4 if.end136: ; preds = %invoke.cont123, %if.then107, %invoke.cont116 store i32 %91, ptr %base_index_, align 4 - br label %cleanup + br label %cleanup.jt2 + +cleanup.jt4: ; preds = %_ZN7rocksdb20CompactionInputFiles5clearEv.exit53 + br i1 %tobool.not.i.i.i.i55.jt1, label %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt4, label %if.then.i.i.i.i56.jt4 -cleanup: ; preds = %_ZN7rocksdb20CompactionInputFiles5clearEv.exit53, %invoke.cont116, %if.end136 - %cleanup.dest.slot.0 = phi i32 [ 2, %if.end136 ], [ 2, %invoke.cont116 ], [ %., %_ZN7rocksdb20CompactionInputFiles5clearEv.exit53 ] +cleanup.jt1: ; preds = %_ZN7rocksdb20CompactionInputFiles5clearEv.exit53 + br i1 %tobool.not.i.i.i.i55.jt1, label %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt1, label %if.then.i.i.i.i56.jt1 + +cleanup.jt2: ; preds = %invoke.cont116, %if.end136 %146 = load ptr, ptr %atomic_compaction_unit_boundaries.i54, align 8 - %tobool.not.i.i.i.i55 = icmp eq ptr %146, null - br i1 %tobool.not.i.i.i.i55, label %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57, label %if.then.i.i.i.i56 + %tobool.not.i.i.i.i55.jt2 = icmp eq ptr %146, null + br i1 %tobool.not.i.i.i.i55.jt2, label %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt2, label %if.then.i.i.i.i56.jt2 + +if.then.i.i.i.i56.jt4: ; preds = %cleanup.jt4 + call void @_ZdlPv(ptr noundef nonnull %145) #18 + br label %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt4 -if.then.i.i.i.i56: ; preds = %cleanup +if.then.i.i.i.i56.jt1: ; preds = %cleanup.jt1 + call void @_ZdlPv(ptr noundef nonnull %145) #18 + br label %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt1 + +if.then.i.i.i.i56.jt2: ; preds = %cleanup.jt2 call void @_ZdlPv(ptr noundef nonnull %146) #18 - br label %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57 + br label %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt2 -_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57: ; preds = %if.then.i.i.i.i56, %cleanup +_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt4: ; preds = %if.then.i.i.i.i56.jt4, %cleanup.jt4 %147 = load ptr, ptr %files.i45, align 8 - %tobool.not.i.i.i1.i59 = icmp eq ptr %147, null - br i1 %tobool.not.i.i.i1.i59, label %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61, label %if.then.i.i.i2.i60 + %tobool.not.i.i.i1.i59.jt4 = icmp eq ptr %147, null + br i1 %tobool.not.i.i.i1.i59.jt4, label %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt4, label %if.then.i.i.i2.i60.jt4 + +_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt1: ; preds = %if.then.i.i.i.i56.jt1, %cleanup.jt1 + %148 = load ptr, ptr %files.i45, align 8 + %tobool.not.i.i.i1.i59.jt1 = icmp eq ptr %148, null + br i1 %tobool.not.i.i.i1.i59.jt1, label %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt1, label %if.then.i.i.i2.i60.jt1 -if.then.i.i.i2.i60: ; preds = %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57 +_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt2: ; preds = %if.then.i.i.i.i56.jt2, %cleanup.jt2 + %149 = load ptr, ptr %files.i45, align 8 + %tobool.not.i.i.i1.i59.jt2 = icmp eq ptr %149, null + br i1 %tobool.not.i.i.i1.i59.jt2, label %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt2, label %if.then.i.i.i2.i60.jt2 + +if.then.i.i.i2.i60.jt4: ; preds = %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt4 call void @_ZdlPv(ptr noundef nonnull %147) #18 - br label %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61 + br label %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt4 + +if.then.i.i.i2.i60.jt1: ; preds = %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt1 + call void @_ZdlPv(ptr noundef nonnull %148) #18 + br label %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt1 -_ZN7rocksdb20CompactionInputFilesD2Ev.exit61: ; preds = %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57, %if.then.i.i.i2.i60 +if.then.i.i.i2.i60.jt2: ; preds = %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt2 + call void @_ZdlPv(ptr noundef nonnull %149) #18 + br label %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt2 + +_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt4: ; preds = %if.then.i.i.i2.i60.jt4, %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt4 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %largest) #19 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %smallest) #19 - switch i32 %cleanup.dest.slot.0, label %unreachable [ - i32 2, label %for.end - i32 1, label %return - i32 4, label %for.inc - ] + br label %for.inc -for.inc: ; preds = %_ZN7rocksdb20CompactionInputFiles5clearEv.exit44, %if.then22, %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61 +_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt1: ; preds = %if.then.i.i.i2.i60.jt1, %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt1 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %largest) #19 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %smallest) #19 + br label %return + +_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt2: ; preds = %if.then.i.i.i2.i60.jt2, %_ZNSt6vectorIN7rocksdb28AtomicCompactionUnitBoundaryESaIS1_EED2Ev.exit.i57.jt2 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %largest) #19 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %smallest) #19 + br label %for.end + +for.inc: ; preds = %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt4, %_ZN7rocksdb20CompactionInputFiles5clearEv.exit44, %if.then22 %inc = add i32 %cmp_idx.0117, 1 %conv = zext i32 %inc to i64 - %148 = load ptr, ptr %_M_finish.i, align 8 - %149 = load ptr, ptr %add.ptr.i.i, align 8 - %sub.ptr.lhs.cast.i = ptrtoint ptr %148 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %149 to i64 + %150 = load ptr, ptr %_M_finish.i, align 8 + %151 = load ptr, ptr %add.ptr.i.i, align 8 + %sub.ptr.lhs.cast.i = ptrtoint ptr %150 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %151 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 2 %cmp17 = icmp ugt i64 %sub.ptr.div.i, %conv br i1 %cmp17, label %for.body, label %for.end, !llvm.loop !23 -for.end: ; preds = %for.inc, %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61, %if.end7 - %cmp_idx.0.lcssa = phi i32 [ %87, %if.end7 ], [ %cmp_idx.0117, %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61 ], [ %inc, %for.inc ] +for.end: ; preds = %for.inc, %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt2, %if.end7 + %cmp_idx.0.lcssa = phi i32 [ %87, %if.end7 ], [ %cmp_idx.0117, %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt2 ], [ %inc, %for.inc ] %ioptions_142 = getelementptr inbounds i8, ptr %this, i64 240 - %150 = load ptr, ptr %ioptions_142, align 8 - %compaction_pri144 = getelementptr inbounds i8, ptr %150, i64 577 - %151 = load i8, ptr %compaction_pri144, align 1 - %cmp146.not = icmp eq i8 %151, 4 + %152 = load ptr, ptr %ioptions_142, align 8 + %compaction_pri144 = getelementptr inbounds i8, ptr %152, i64 577 + %153 = load i8, ptr %compaction_pri144, align 1 + %cmp146.not = icmp eq i8 %153, 4 br i1 %cmp146.not, label %if.end150, label %if.then147 if.then147: ; preds = %for.end - %152 = load ptr, ptr %vstorage_.i, align 8 - %153 = load i32, ptr %start_level_, align 8 - %next_file_to_compact_by_size_.i62 = getelementptr inbounds i8, ptr %152, i64 2848 - %conv.i63 = sext i32 %153 to i64 - %154 = load ptr, ptr %next_file_to_compact_by_size_.i62, align 8 - %add.ptr.i.i64 = getelementptr inbounds i32, ptr %154, i64 %conv.i63 + %154 = load ptr, ptr %vstorage_.i, align 8 + %155 = load i32, ptr %start_level_, align 8 + %next_file_to_compact_by_size_.i62 = getelementptr inbounds i8, ptr %154, i64 2848 + %conv.i63 = sext i32 %155 to i64 + %156 = load ptr, ptr %next_file_to_compact_by_size_.i62, align 8 + %add.ptr.i.i64 = getelementptr inbounds i32, ptr %156, i64 %conv.i63 store i32 %cmp_idx.0.lcssa, ptr %add.ptr.i.i64, align 4 br label %if.end150 if.end150: ; preds = %if.then147, %for.end - %155 = load ptr, ptr %_M_finish.i.i.i, align 8 - %156 = load ptr, ptr %files.i, align 8 - %cmp153 = icmp ne ptr %155, %156 + %157 = load ptr, ptr %_M_finish.i.i.i, align 8 + %158 = load ptr, ptr %files.i, align 8 + %cmp153 = icmp ne ptr %157, %158 br label %return -return: ; preds = %_ZN7rocksdb20CompactionInputFiles5clearEv.exit44, %if.then22, %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61, %_ZN7rocksdb12_GLOBAL__N_122LevelCompactionBuilder20TryPickL0TrivialMoveEv.exit, %land.lhs.true, %if.end150 - %retval.0 = phi i1 [ %cmp153, %if.end150 ], [ false, %land.lhs.true ], [ true, %_ZN7rocksdb12_GLOBAL__N_122LevelCompactionBuilder20TryPickL0TrivialMoveEv.exit ], [ false, %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61 ], [ false, %if.then22 ], [ false, %_ZN7rocksdb20CompactionInputFiles5clearEv.exit44 ] +return: ; preds = %_ZN7rocksdb20CompactionInputFiles5clearEv.exit44, %if.then22, %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt1, %_ZN7rocksdb12_GLOBAL__N_122LevelCompactionBuilder20TryPickL0TrivialMoveEv.exit, %land.lhs.true, %if.end150 + %retval.0 = phi i1 [ %cmp153, %if.end150 ], [ false, %land.lhs.true ], [ true, %_ZN7rocksdb12_GLOBAL__N_122LevelCompactionBuilder20TryPickL0TrivialMoveEv.exit ], [ false, %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61.jt1 ], [ false, %if.then22 ], [ false, %_ZN7rocksdb20CompactionInputFiles5clearEv.exit44 ] ret i1 %retval.0 - -unreachable: ; preds = %_ZN7rocksdb20CompactionInputFilesD2Ev.exit61 - unreachable } declare void @_ZN7rocksdb16CompactionPicker28PickFilesMarkedForCompactionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_18VersionStorageInfoEPiSB_PNS_20CompactionInputFilesE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3 diff --git a/bench/rocksdb/optimized/version_set.cc.ll b/bench/rocksdb/optimized/version_set.cc.ll index ed7dae43305..80b8d67e75f 100644 --- a/bench/rocksdb/optimized/version_set.cc.ll +++ b/bench/rocksdb/optimized/version_set.cc.ll @@ -6406,7 +6406,7 @@ for.body.lr.ph: ; preds = %if.end br label %for.body for.cond: ; preds = %for.body, %for.end - %num_entries_left.375 = phi i32 [ %num_entries_left.447, %for.end ], [ %num_entries_left.066, %for.body ] + %num_entries_left.376 = phi i32 [ %num_entries_left.3, %for.end ], [ %num_entries_left.066, %for.body ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %3 = load i32, ptr %num_levels_, align 16 %4 = sext i32 %3 to i64 @@ -6415,7 +6415,7 @@ for.cond: ; preds = %for.body, %for.end for.body: ; preds = %for.body.lr.ph, %for.cond %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.cond ] - %num_entries_left.066 = phi i32 [ %max_entries_to_print, %for.body.lr.ph ], [ %num_entries_left.375, %for.cond ] + %num_entries_left.066 = phi i32 [ %max_entries_to_print, %for.body.lr.ph ], [ %num_entries_left.376, %for.cond ] %5 = load ptr, ptr %files_, align 8 %arrayidx = getelementptr inbounds %"class.std::vector.297", ptr %5, i64 %indvars.iv %6 = load ptr, ptr %arrayidx, align 8 @@ -6424,9 +6424,9 @@ for.body: ; preds = %for.body.lr.ph, %fo %cmp.i.not60 = icmp eq ptr %6, %7 br i1 %cmp.i.not60, label %for.cond, label %for.body8 -for.body8: ; preds = %for.body, %for.inc - %num_entries_left.262 = phi i32 [ %num_entries_left.447, %for.inc ], [ %num_entries_left.066, %for.body ] - %__begin2.sroa.0.061 = phi ptr [ %incdec.ptr.i, %for.inc ], [ %6, %for.body ] +for.body8: ; preds = %for.body, %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt0 + %num_entries_left.262 = phi i32 [ %num_entries_left.448.jt0, %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt0 ], [ %num_entries_left.066, %for.body ] + %__begin2.sroa.0.061 = phi ptr [ %incdec.ptr.i, %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt0 ], [ %6, %for.body ] %8 = load ptr, ptr %cfd_, align 16 %cf_paths = getelementptr inbounds i8, ptr %8, i64 1712 %9 = load ptr, ptr %__begin2.sroa.0.061, align 8 @@ -6466,7 +6466,8 @@ invoke.cont39: ; preds = %invoke.cont25 %15 = load i8, ptr %agg.result, align 8 %cmp.i19 = icmp eq i8 %15, 0 %.pre72 = load ptr, ptr %tombstone_iter, align 8 - br i1 %cmp.i19, label %if.end42, label %nrvo.skipdtor + %cmp.i20.not = icmp eq ptr %.pre72, null + br i1 %cmp.i19, label %if.end42, label %nrvo.skipdtor.jt1 lpad10.loopexit: ; preds = %for.body8 %lpad.loopexit54 = landingpad { ptr, i32 } @@ -6499,8 +6500,7 @@ lpad38.loopexit.split-lp: ; preds = %if.then44 br label %ehcleanup92 if.end42: ; preds = %invoke.cont39 - %cmp.i20.not = icmp eq ptr %.pre72, null - br i1 %cmp.i20.not, label %nrvo.unused, label %if.then44 + br i1 %cmp.i20.not, label %nrvo.unused.jt0, label %if.then44 if.then44: ; preds = %if.end42 %vtable = load ptr, ptr %.pre72, align 8 @@ -6612,61 +6612,88 @@ ehcleanup: ; preds = %lpad72, %lpad61 cleanup: ; preds = %invoke.cont50 %cmp88 = icmp slt i32 %num_entries_left.6, 1 - %spec.select = select i1 %cmp88, i32 0, i32 %num_entries_left.6 - %spec.select17 = select i1 %cmp88, i32 5, i32 0 - br label %nrvo.unused + br i1 %cmp88, label %nrvo.unused.jt5, label %nrvo.unused.jt0 -nrvo.unused: ; preds = %cleanup, %if.end42 - %cleanup.dest.slot.050 = phi i32 [ %spec.select17, %cleanup ], [ 0, %if.end42 ] - %num_entries_left.448 = phi i32 [ %spec.select, %cleanup ], [ %num_entries_left.262, %if.end42 ] +nrvo.unused.jt0: ; preds = %cleanup, %if.end42 + %num_entries_left.448.jt0 = phi i32 [ %num_entries_left.262, %if.end42 ], [ %num_entries_left.6, %cleanup ] %33 = load ptr, ptr %state_.i, align 8 - %cmp.not.i.i = icmp eq ptr %33, null - br i1 %cmp.not.i.i, label %_ZN7rocksdb6StatusD2Ev.exit, label %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i + %cmp.not.i.i.jt0 = icmp eq ptr %33, null + br i1 %cmp.not.i.i.jt0, label %nrvo.skipdtor.jt0, label %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.jt0 -_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i: ; preds = %nrvo.unused +nrvo.unused.jt5: ; preds = %cleanup + %34 = load ptr, ptr %state_.i, align 8 + %cmp.not.i.i.jt5 = icmp eq ptr %34, null + br i1 %cmp.not.i.i.jt5, label %nrvo.skipdtor.jt5, label %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.jt5 + +_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.jt0: ; preds = %nrvo.unused.jt0 call void @_ZdaPv(ptr noundef nonnull %33) #34 - br label %_ZN7rocksdb6StatusD2Ev.exit + br label %nrvo.skipdtor.jt0 -_ZN7rocksdb6StatusD2Ev.exit: ; preds = %nrvo.unused, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i - store ptr null, ptr %state_.i, align 8 - %.pre = load ptr, ptr %tombstone_iter, align 8 - br label %nrvo.skipdtor +_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.jt5: ; preds = %nrvo.unused.jt5 + call void @_ZdaPv(ptr noundef nonnull %34) #34 + br label %nrvo.skipdtor.jt5 -nrvo.skipdtor: ; preds = %invoke.cont39, %_ZN7rocksdb6StatusD2Ev.exit - %34 = phi ptr [ %.pre, %_ZN7rocksdb6StatusD2Ev.exit ], [ %.pre72, %invoke.cont39 ] - %cleanup.dest.slot.049 = phi i32 [ %cleanup.dest.slot.050, %_ZN7rocksdb6StatusD2Ev.exit ], [ 1, %invoke.cont39 ] - %num_entries_left.447 = phi i32 [ %num_entries_left.448, %_ZN7rocksdb6StatusD2Ev.exit ], [ %num_entries_left.262, %invoke.cont39 ] - %cmp.not.i = icmp eq ptr %34, null - br i1 %cmp.not.i, label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i +nrvo.skipdtor.jt1: ; preds = %invoke.cont39 + br i1 %cmp.i20.not, label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt1, label %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i.jt1 -_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i: ; preds = %nrvo.skipdtor - %vtable.i.i = load ptr, ptr %34, align 8 - %vfn.i.i = getelementptr inbounds i8, ptr %vtable.i.i, i64 8 - %35 = load ptr, ptr %vfn.i.i, align 8 - call void %35(ptr noundef nonnull align 8 dereferenceable(200) %34) #36 - br label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit +nrvo.skipdtor.jt0: ; preds = %nrvo.unused.jt0, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.jt0 + store ptr null, ptr %state_.i, align 8 + %.pre.jt0 = load ptr, ptr %tombstone_iter, align 8 + %cmp.not.i.jt0 = icmp eq ptr %.pre.jt0, null + br i1 %cmp.not.i.jt0, label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt0, label %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i.jt0 -_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit: ; preds = %nrvo.skipdtor, %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i +nrvo.skipdtor.jt5: ; preds = %nrvo.unused.jt5, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i.jt5 + store ptr null, ptr %state_.i, align 8 + %.pre.jt5 = load ptr, ptr %tombstone_iter, align 8 + %cmp.not.i.jt5 = icmp eq ptr %.pre.jt5, null + br i1 %cmp.not.i.jt5, label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt5, label %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i.jt5 + +_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i.jt1: ; preds = %nrvo.skipdtor.jt1 + %vtable.i.i.jt1 = load ptr, ptr %.pre72, align 8 + %vfn.i.i.jt1 = getelementptr inbounds i8, ptr %vtable.i.i.jt1, i64 8 + %35 = load ptr, ptr %vfn.i.i.jt1, align 8 + call void %35(ptr noundef nonnull align 8 dereferenceable(200) %.pre72) #36 + br label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt1 + +_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i.jt0: ; preds = %nrvo.skipdtor.jt0 + %vtable.i.i.jt0 = load ptr, ptr %.pre.jt0, align 8 + %vfn.i.i.jt0 = getelementptr inbounds i8, ptr %vtable.i.i.jt0, i64 8 + %36 = load ptr, ptr %vfn.i.i.jt0, align 8 + call void %36(ptr noundef nonnull align 8 dereferenceable(200) %.pre.jt0) #36 + br label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt0 + +_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i.jt5: ; preds = %nrvo.skipdtor.jt5 + %vtable.i.i.jt5 = load ptr, ptr %.pre.jt5, align 8 + %vfn.i.i.jt5 = getelementptr inbounds i8, ptr %vtable.i.i.jt5, i64 8 + %37 = load ptr, ptr %vfn.i.i.jt5, align 8 + call void %37(ptr noundef nonnull align 8 dereferenceable(200) %.pre.jt5) #36 + br label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt5 + +_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt1: ; preds = %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i.jt1, %nrvo.skipdtor.jt1 store ptr null, ptr %tombstone_iter, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %fname) #36 - switch i32 %cleanup.dest.slot.049, label %cleanup113 [ - i32 0, label %for.inc - i32 5, label %for.end - ] + br label %cleanup113 -for.inc: ; preds = %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit +_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt0: ; preds = %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i.jt0, %nrvo.skipdtor.jt0 + store ptr null, ptr %tombstone_iter, align 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %fname) #36 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.061, i64 8 %cmp.i.not = icmp eq ptr %incdec.ptr.i, %7 br i1 %cmp.i.not, label %for.end, label %for.body8 +_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt5: ; preds = %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i.jt5, %nrvo.skipdtor.jt5 + store ptr null, ptr %tombstone_iter, align 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %fname) #36 + br label %for.end + ehcleanup92: ; preds = %lpad38.loopexit, %lpad38.loopexit.split-lp, %ehcleanup %.pn12 = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %lpad.loopexit, %lpad38.loopexit ], [ %lpad.loopexit.split-lp, %lpad38.loopexit.split-lp ] - %36 = load ptr, ptr %state_.i, align 8 - %cmp.not.i.i27 = icmp eq ptr %36, null + %38 = load ptr, ptr %state_.i, align 8 + %cmp.not.i.i27 = icmp eq ptr %38, null br i1 %cmp.not.i.i27, label %_ZN7rocksdb6StatusD2Ev.exit29, label %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i28 _ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i28: ; preds = %ehcleanup92 - call void @_ZdaPv(ptr noundef nonnull %36) #34 + call void @_ZdaPv(ptr noundef nonnull %38) #34 br label %_ZN7rocksdb6StatusD2Ev.exit29 _ZN7rocksdb6StatusD2Ev.exit29: ; preds = %ehcleanup92, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i28 @@ -6675,15 +6702,15 @@ _ZN7rocksdb6StatusD2Ev.exit29: ; preds = %ehcleanup92, %_ZNKS ehcleanup94: ; preds = %_ZN7rocksdb6StatusD2Ev.exit29, %lpad31 %.pn12.pn = phi { ptr, i32 } [ %.pn12, %_ZN7rocksdb6StatusD2Ev.exit29 ], [ %17, %lpad31 ] - %37 = load ptr, ptr %tombstone_iter, align 8 - %cmp.not.i30 = icmp eq ptr %37, null + %39 = load ptr, ptr %tombstone_iter, align 8 + %cmp.not.i30 = icmp eq ptr %39, null br i1 %cmp.not.i30, label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit34, label %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i31 _ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i31: ; preds = %ehcleanup94 - %vtable.i.i32 = load ptr, ptr %37, align 8 + %vtable.i.i32 = load ptr, ptr %39, align 8 %vfn.i.i33 = getelementptr inbounds i8, ptr %vtable.i.i32, i64 8 - %38 = load ptr, ptr %vfn.i.i33, align 8 - call void %38(ptr noundef nonnull align 8 dereferenceable(200) %37) #36 + %40 = load ptr, ptr %vfn.i.i33, align 8 + call void %40(ptr noundef nonnull align 8 dereferenceable(200) %39) #36 br label %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit34 _ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit34: ; preds = %ehcleanup94, %_ZNKSt14default_deleteIN7rocksdb32FragmentedRangeTombstoneIteratorEEclEPS1_.exit.i31 @@ -6695,8 +6722,9 @@ ehcleanup96: ; preds = %_ZNSt10unique_ptrIN call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %fname) #36 br label %ehcleanup114 -for.end: ; preds = %for.inc, %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit - %cmp98 = icmp slt i32 %num_entries_left.447, 1 +for.end: ; preds = %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt0, %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt5 + %num_entries_left.3 = phi i32 [ 0, %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt5 ], [ %num_entries_left.448.jt0, %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt0 ] + %cmp98 = icmp slt i32 %num_entries_left.3, 1 br i1 %cmp98, label %if.then104, label %for.cond if.then104: ; preds = %for.end @@ -6715,22 +6743,22 @@ invoke.cont110: ; preds = %if.end108 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(6) %agg.result, i8 0, i64 6, i1 false), !alias.scope !47 br label %cleanup113 -cleanup113: ; preds = %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit, %invoke.cont110 +cleanup113: ; preds = %_ZNSt10unique_ptrIN7rocksdb32FragmentedRangeTombstoneIteratorESt14default_deleteIS1_EED2Ev.exit.jt1, %invoke.cont110 %_M_manager.i.i.i = getelementptr inbounds i8, ptr %read_options, i64 136 - %39 = load ptr, ptr %_M_manager.i.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %39, null + %41 = load ptr, ptr %_M_manager.i.i.i, align 8 + %tobool.not.i.i.i = icmp eq ptr %41, null br i1 %tobool.not.i.i.i, label %_ZN7rocksdb11ReadOptionsD2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %cleanup113 %table_filter.i = getelementptr inbounds i8, ptr %read_options, i64 120 - %call.i.i.i = invoke noundef zeroext i1 %39(ptr noundef nonnull align 8 dereferenceable(16) %table_filter.i, ptr noundef nonnull align 8 dereferenceable(16) %table_filter.i, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %41(ptr noundef nonnull align 8 dereferenceable(16) %table_filter.i, ptr noundef nonnull align 8 dereferenceable(16) %table_filter.i, i32 noundef 3) to label %_ZN7rocksdb11ReadOptionsD2Ev.exit unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i - %40 = landingpad { ptr, i32 } + %42 = landingpad { ptr, i32 } catch ptr null - %41 = extractvalue { ptr, i32 } %40, 0 - call void @__clang_call_terminate(ptr %41) #37 + %43 = extractvalue { ptr, i32 } %42, 0 + call void @__clang_call_terminate(ptr %43) #37 unreachable _ZN7rocksdb11ReadOptionsD2Ev.exit: ; preds = %cleanup113, %if.then.i.i.i @@ -6740,20 +6768,20 @@ _ZN7rocksdb11ReadOptionsD2Ev.exit: ; preds = %cleanup113, %if.the ehcleanup114: ; preds = %lpad10.loopexit, %lpad10.loopexit.split-lp, %ehcleanup96 %.pn12.pn.pn.pn = phi { ptr, i32 } [ %.pn12.pn.pn, %ehcleanup96 ], [ %lpad.loopexit54, %lpad10.loopexit ], [ %lpad.loopexit.split-lp55, %lpad10.loopexit.split-lp ] %_M_manager.i.i.i36 = getelementptr inbounds i8, ptr %read_options, i64 136 - %42 = load ptr, ptr %_M_manager.i.i.i36, align 8 - %tobool.not.i.i.i37 = icmp eq ptr %42, null + %44 = load ptr, ptr %_M_manager.i.i.i36, align 8 + %tobool.not.i.i.i37 = icmp eq ptr %44, null br i1 %tobool.not.i.i.i37, label %_ZN7rocksdb11ReadOptionsD2Ev.exit42, label %if.then.i.i.i38 if.then.i.i.i38: ; preds = %ehcleanup114 %table_filter.i39 = getelementptr inbounds i8, ptr %read_options, i64 120 - %call.i.i.i40 = invoke noundef zeroext i1 %42(ptr noundef nonnull align 8 dereferenceable(16) %table_filter.i39, ptr noundef nonnull align 8 dereferenceable(16) %table_filter.i39, i32 noundef 3) + %call.i.i.i40 = invoke noundef zeroext i1 %44(ptr noundef nonnull align 8 dereferenceable(16) %table_filter.i39, ptr noundef nonnull align 8 dereferenceable(16) %table_filter.i39, i32 noundef 3) to label %_ZN7rocksdb11ReadOptionsD2Ev.exit42 unwind label %terminate.lpad.i.i.i41 terminate.lpad.i.i.i41: ; preds = %if.then.i.i.i38 - %43 = landingpad { ptr, i32 } + %45 = landingpad { ptr, i32 } catch ptr null - %44 = extractvalue { ptr, i32 } %43, 0 - call void @__clang_call_terminate(ptr %44) #37 + %46 = extractvalue { ptr, i32 } %45, 0 + call void @__clang_call_terminate(ptr %46) #37 unreachable _ZN7rocksdb11ReadOptionsD2Ev.exit42: ; preds = %ehcleanup114, %if.then.i.i.i38 diff --git a/bench/ruby/optimized/regexp.ll b/bench/ruby/optimized/regexp.ll index f7cf105db2d..e8662d23ddf 100644 --- a/bench/ruby/optimized/regexp.ll +++ b/bench/ruby/optimized/regexp.ll @@ -7,8 +7,6 @@ target triple = "x86_64-pc-linux-gnu" %struct.pm_regexp_options_t = type { [24 x i8] } %struct.pm_string_t = type { ptr, i64, i32 } -@switch.table.pm_regexp_parse_quantifier = private unnamed_addr constant [14 x i32] [i32 3, 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], align 4 - ; Function Attrs: nounwind sspstrong uwtable define hidden noundef zeroext i1 @pm_regexp_named_capture_group_names(ptr noundef %0, i64 noundef %1, ptr noundef %2, i1 noundef zeroext %3, ptr noundef %4) local_unnamed_addr #0 { %6 = alloca %struct.pm_regexp_parser_t, align 8 @@ -505,11 +503,11 @@ define internal fastcc void @pm_regexp_parse_quantifier(ptr nocapture noundef no %3 = getelementptr i8, ptr %0, i64 16 %.val6 = load ptr, ptr %3, align 8 %.not = icmp ult ptr %.val, %.val6 - br i1 %.not, label %4, label %26 + br i1 %.not, label %4, label %pm_regexp_parse_range_quantifier.exit 4: ; preds = %1 %5 = load i8, ptr %.val, align 1 - switch i8 %5, label %26 [ + switch i8 %5, label %pm_regexp_parse_range_quantifier.exit [ i8 42, label %6 i8 43, label %6 i8 63, label %6 @@ -518,102 +516,100 @@ define internal fastcc void @pm_regexp_parse_quantifier(ptr nocapture noundef no 6: ; preds = %4, %4, %4 %7 = getelementptr i8, ptr %.val, i64 1 - br label %.sink.split + br label %pm_regexp_parse_range_quantifier.exit.sink.split 8: ; preds = %4 %9 = getelementptr i8, ptr %.val, i64 1 - br label %10 - -10: ; preds = %24, %8 - %11 = phi ptr [ %9, %8 ], [ %25, %24 ] - %.0.i = phi i32 [ 0, %8 ], [ %.1.i, %24 ] - store ptr %11, ptr %2, align 8 - %12 = load i8, ptr %11, align 1 - switch i32 %.0.i, label %default.unreachable [ - i32 0, label %13 - i32 1, label %15 - i32 3, label %19 - i32 2, label %20 + store ptr %9, ptr %2, align 8 + %10 = load i8, ptr %9, align 1 + switch i8 %10, label %pm_regexp_parse_range_quantifier.exit [ + i8 48, label %.preheader + i8 49, label %.preheader + i8 50, label %.preheader + i8 51, label %.preheader + i8 52, label %.preheader + i8 53, label %.preheader + i8 54, label %.preheader + i8 55, label %.preheader + i8 56, label %.preheader + i8 57, label %.preheader + i8 44, label %16 ] -13: ; preds = %10 - %switch.tableidx = add i8 %12, -44 - %14 = icmp ult i8 %switch.tableidx, 14 - br i1 %14, label %switch.hole_check, label %.sink.split - -15: ; preds = %10 - switch i8 %12, label %.sink.split [ - i8 48, label %24 - i8 49, label %24 - i8 50, label %24 - i8 51, label %24 - i8 52, label %24 - i8 53, label %24 - i8 54, label %24 - i8 55, label %24 - i8 56, label %24 - i8 57, label %24 - i8 44, label %16 - i8 125, label %17 +.preheader: ; preds = %8, %8, %8, %8, %8, %8, %8, %8, %8, %8 + br label %11 + +11: ; preds = %.backedge, %.preheader + %.sink33.i = phi ptr [ %9, %.preheader ], [ %12, %.backedge ] + %12 = getelementptr i8, ptr %.sink33.i, i64 1 + store ptr %12, ptr %2, align 8 + %13 = load i8, ptr %12, align 1 + switch i8 %13, label %pm_regexp_parse_range_quantifier.exit.sink.split [ + i8 48, label %.backedge + i8 49, label %.backedge + i8 50, label %.backedge + i8 51, label %.backedge + i8 52, label %.backedge + i8 53, label %.backedge + i8 54, label %.backedge + i8 55, label %.backedge + i8 56, label %.backedge + i8 57, label %.backedge + i8 44, label %.preheader.i.preheader + i8 125, label %14 ] -16: ; preds = %15 - br label %24 +.backedge: ; preds = %11, %11, %11, %11, %11, %11, %11, %11, %11, %11 + br label %11 -17: ; preds = %15 - %18 = getelementptr i8, ptr %11, i64 1 - br label %.sink.split +14: ; preds = %11 + %15 = getelementptr i8, ptr %.sink33.i, i64 2 + br label %pm_regexp_parse_range_quantifier.exit.sink.split -19: ; preds = %10 - %.off.i = add i8 %12, -48 +16: ; preds = %8 + %17 = getelementptr i8, ptr %.val, i64 2 + store ptr %17, ptr %2, align 8 + %18 = load i8, ptr %17, align 1 + %.off.i = add i8 %18, -48 %switch.i = icmp ult i8 %.off.i, 10 - br i1 %switch.i, label %24, label %.sink.split - -20: ; preds = %10 - switch i8 %12, label %.sink.split [ - i8 48, label %24 - i8 49, label %24 - i8 50, label %24 - i8 51, label %24 - i8 52, label %24 - i8 53, label %24 - i8 54, label %24 - i8 55, label %24 - i8 56, label %24 - i8 57, label %24 + br i1 %switch.i, label %.preheader.i.preheader, label %pm_regexp_parse_range_quantifier.exit.sink.split + +.preheader.i.preheader: ; preds = %11, %16 + %.sink34.sink.i.ph = phi ptr [ %17, %16 ], [ %12, %11 ] + br label %.preheader.i + +.preheader.i: ; preds = %.preheader.i.backedge, %.preheader.i.preheader + %.sink34.sink.i = phi ptr [ %.sink34.sink.i.ph, %.preheader.i.preheader ], [ %19, %.preheader.i.backedge ] + %19 = getelementptr i8, ptr %.sink34.sink.i, i64 1 + store ptr %19, ptr %2, align 8 + %20 = load i8, ptr %19, align 1 + switch i8 %20, label %pm_regexp_parse_range_quantifier.exit.sink.split [ + i8 48, label %.preheader.i.backedge + i8 49, label %.preheader.i.backedge + i8 50, label %.preheader.i.backedge + i8 51, label %.preheader.i.backedge + i8 52, label %.preheader.i.backedge + i8 53, label %.preheader.i.backedge + i8 54, label %.preheader.i.backedge + i8 55, label %.preheader.i.backedge + i8 56, label %.preheader.i.backedge + i8 57, label %.preheader.i.backedge i8 125, label %21 ] -21: ; preds = %20 - %22 = getelementptr i8, ptr %11, i64 1 - br label %.sink.split - -default.unreachable: ; preds = %10 - unreachable - -switch.hole_check: ; preds = %13 - %switch.maskindex = zext nneg i8 %switch.tableidx to i16 - %switch.shifted = lshr i16 16369, %switch.maskindex - %switch.lobit = trunc i16 %switch.shifted to i1 - br i1 %switch.lobit, label %switch.lookup, label %.sink.split - -switch.lookup: ; preds = %switch.hole_check - %23 = zext nneg i8 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds [14 x i32], ptr @switch.table.pm_regexp_parse_quantifier, i64 0, i64 %23 - %switch.load = load i32, ptr %switch.gep, align 4 - br label %24 +.preheader.i.backedge: ; preds = %.preheader.i, %.preheader.i, %.preheader.i, %.preheader.i, %.preheader.i, %.preheader.i, %.preheader.i, %.preheader.i, %.preheader.i, %.preheader.i + br label %.preheader.i -24: ; preds = %switch.lookup, %20, %20, %20, %20, %20, %20, %20, %20, %20, %20, %19, %16, %15, %15, %15, %15, %15, %15, %15, %15, %15, %15 - %.1.i = phi i32 [ 2, %16 ], [ 1, %15 ], [ 1, %15 ], [ 1, %15 ], [ 1, %15 ], [ 1, %15 ], [ 1, %15 ], [ 1, %15 ], [ 1, %15 ], [ 1, %15 ], [ 1, %15 ], [ 2, %19 ], [ 2, %20 ], [ 2, %20 ], [ 2, %20 ], [ 2, %20 ], [ 2, %20 ], [ 2, %20 ], [ 2, %20 ], [ 2, %20 ], [ 2, %20 ], [ 2, %20 ], [ %switch.load, %switch.lookup ] - %25 = getelementptr i8, ptr %11, i64 1 - br label %10 +21: ; preds = %.preheader.i + %22 = getelementptr i8, ptr %.sink34.sink.i, i64 2 + br label %pm_regexp_parse_range_quantifier.exit.sink.split -.sink.split: ; preds = %20, %19, %15, %13, %switch.hole_check, %21, %17, %6 - %.sink.i.sink = phi ptr [ %7, %6 ], [ %22, %21 ], [ %18, %17 ], [ %9, %switch.hole_check ], [ %9, %13 ], [ %9, %15 ], [ %9, %19 ], [ %9, %20 ] +pm_regexp_parse_range_quantifier.exit.sink.split: ; preds = %11, %.preheader.i, %14, %16, %21, %6 + %.sink.i.sink = phi ptr [ %7, %6 ], [ %22, %21 ], [ %15, %14 ], [ %9, %16 ], [ %9, %.preheader.i ], [ %9, %11 ] store ptr %.sink.i.sink, ptr %2, align 8 - br label %26 + br label %pm_regexp_parse_range_quantifier.exit -26: ; preds = %.sink.split, %4, %1 +pm_regexp_parse_range_quantifier.exit: ; preds = %pm_regexp_parse_range_quantifier.exit.sink.split, %8, %4, %1 ret void } diff --git a/bench/rust-analyzer-rs/optimized/2n800w7wl0k2x7go.ll b/bench/rust-analyzer-rs/optimized/2n800w7wl0k2x7go.ll index b590b7e399c..e99b859f2e2 100644 --- a/bench/rust-analyzer-rs/optimized/2n800w7wl0k2x7go.ll +++ b/bench/rust-analyzer-rs/optimized/2n800w7wl0k2x7go.ll @@ -12194,7 +12194,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h495653956488d0a4E.exit.threa %32 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr44drop_in_place$LT$ide..hover..HoverAction$GT$17hf18b9f2ce13d0686E"(ptr noalias noundef align 8 dereferenceable(248) %5) #20 - to label %89 unwind label %87 + to label %91 unwind label %89 33: ; preds = %28 %34 = extractvalue { i64, ptr } %29, 0 @@ -12338,93 +12338,116 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h495653956488d0a4E.exit.threa cleanup store i64 %.sroa.0.0.copyload4.i.us.i.i.us.i27.lcssa33, ptr %37, align 8, !alias.scope !3852, !noalias !3851 store i64 %55, ptr %39, align 8, !alias.scope !3832, !noalias !3841 - br label %81 + br label %83 -.split.i.i.i: ; preds = %33, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i" - %67 = phi ptr [ %77, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i" ], [ %35, %33 ] - %68 = phi i64 [ %79, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i" ], [ 1, %33 ] - %spec.store.select.i.i.i.i23 = phi i64 [ %spec.store.select.i.i.i.i24, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i" ], [ %.promoted9.i, %33 ] - %69 = phi i64 [ %74, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i" ], [ %.promoted.i, %33 ] - %spec.store.select.i.i.i11.i = phi i64 [ %spec.store.select.i.i.i10.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i" ], [ %.promoted9.i, %33 ] - %.sroa.0.0.copyload4.i.us.i.i7.i = phi i64 [ %.sroa.0.0.copyload4.i.us.i.i2.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i" ], [ %.promoted.i, %33 ] +.split.i.i.i: ; preds = %33 + call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %.sroa.7.i.i) + tail call void @llvm.experimental.noalias.scope.decl(metadata !3846) + tail call void @llvm.experimental.noalias.scope.decl(metadata !3847) + %.promoted.i.off = add i64 %.promoted.i, -9 + %switch = icmp ult i64 %.promoted.i.off, 2 + br i1 %switch, label %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i", label %75 + +.split.i.i.i.jt9: ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge.jt9", %75 + %67 = phi ptr [ %35, %75 ], [ %.pre.jt9, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge.jt9" ] + %68 = getelementptr inbounds i8, ptr %67, i64 248 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(248) %68, ptr noundef nonnull align 8 dereferenceable(248) %3, i64 248, i1 false), !noalias !3830 + br label %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i.sink.split" + +.split.i.i.i.jt10: ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge.jt10", %79 + %69 = phi ptr [ %73, %79 ], [ %.pre.jt10, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge.jt10" ] + %70 = getelementptr inbounds { i64, [30 x i64] }, ptr %69, i64 %72 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(248) %70, ptr noundef nonnull align 8 dereferenceable(248) %3, i64 248, i1 false), !noalias !3830 + %71 = add i64 %72, 1 + br label %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i.sink.split" + +"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i.sink.split": ; preds = %.split.i.i.i.jt10, %.split.i.i.i.jt9 + %.sink = phi i64 [ 2, %.split.i.i.i.jt9 ], [ %71, %.split.i.i.i.jt10 ] + %spec.store.select.i.i.i11.i56.ph = phi i64 [ %.promoted9.i, %.split.i.i.i.jt9 ], [ 9, %.split.i.i.i.jt10 ] + %.ph84 = phi ptr [ %67, %.split.i.i.i.jt9 ], [ %69, %.split.i.i.i.jt10 ] + store i64 %.sink, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !3831, !noalias !3830 + call void @llvm.lifetime.end.p0(i64 248, ptr nonnull %3), !noalias !3854 + call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %.sroa.7.i.i) call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %.sroa.7.i.i) call void @llvm.experimental.noalias.scope.decl(metadata !3846) call void @llvm.experimental.noalias.scope.decl(metadata !3847) - switch i64 %.sroa.0.0.copyload4.i.us.i.i7.i, label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.thread.i.i" [ - i64 10, label %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i" - i64 9, label %_ZN4core4iter8adapters7flatten17and_then_or_clear17h495653956488d0a4E.exit.thread20.i.i.i.i - ] - -_ZN4core4iter8adapters7flatten17and_then_or_clear17h495653956488d0a4E.exit.thread20.i.i.i.i: ; preds = %.split.i.i.i br label %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i" -"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.thread.i.i": ; preds = %.split.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(240) %.sroa.7.i.i, ptr noundef nonnull align 8 dereferenceable(240) %.sroa.513.0..sroa_idx.i.i.i.i, i64 240, i1 false), !alias.scope !3853, !noalias !3831 - br label %73 - -"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i": ; preds = %.split.i.i.i, %_ZN4core4iter8adapters7flatten17and_then_or_clear17h495653956488d0a4E.exit.thread20.i.i.i.i - %70 = phi i64 [ 10, %_ZN4core4iter8adapters7flatten17and_then_or_clear17h495653956488d0a4E.exit.thread20.i.i.i.i ], [ %69, %.split.i.i.i ] +"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i": ; preds = %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i.sink.split", %.split.i.i.i + %spec.store.select.i.i.i11.i56 = phi i64 [ %.promoted9.i, %.split.i.i.i ], [ %spec.store.select.i.i.i11.i56.ph, %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i.sink.split" ] + %72 = phi i64 [ 1, %.split.i.i.i ], [ %.sink, %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i.sink.split" ] + %73 = phi ptr [ %35, %.split.i.i.i ], [ %.ph84, %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i.sink.split" ] call void @llvm.experimental.noalias.scope.decl(metadata !3848) - %71 = icmp eq i64 %spec.store.select.i.i.i11.i, 10 - br i1 %71, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15", label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i" + switch i64 %spec.store.select.i.i.i11.i56, label %79 [ + i64 10, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15.loopexit" + i64 9, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15" + ] -72: ; preds = %81 +74: ; preds = %83 invoke void @"_ZN4core3ptr225drop_in_place$LT$core..iter..adapters..flatten..FlattenCompat$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$C$4_usize$GT$$C$core..option..IntoIter$LT$ide..hover..HoverAction$GT$$GT$$GT$17h93cc7b825f7dfd22E.llvm.273501356006530532"(ptr noalias noundef nonnull align 8 dereferenceable(1512) %4) - to label %.body unwind label %83 + to label %.body unwind label %85 -"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i": ; preds = %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i" - %.not.i1.i.i.i.i = icmp eq i64 %spec.store.select.i.i.i11.i, 9 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(240) %.sroa.7.i.i, ptr noundef nonnull align 8 dereferenceable(240) %.sroa.517.0..sroa_idx.i.i.i.i, i64 240, i1 false), !alias.scope !3853, !noalias !3831 - br i1 %.not.i1.i.i.i.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15", label %73 - -73: ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i", %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.thread.i.i" - %spec.store.select.i.i.i.i24 = phi i64 [ 9, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i" ], [ %spec.store.select.i.i.i.i23, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.thread.i.i" ] - %74 = phi i64 [ %70, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i" ], [ 9, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.thread.i.i" ] - %spec.store.select.i.i.i10.i = phi i64 [ 9, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i" ], [ %spec.store.select.i.i.i11.i, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.thread.i.i" ] - %.sroa.0.0.copyload4.i.us.i.i2.i = phi i64 [ 10, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i" ], [ 9, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.thread.i.i" ] - %.sroa.0.0.i.i = phi i64 [ %spec.store.select.i.i.i11.i, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i" ], [ %.sroa.0.0.copyload4.i.us.i.i7.i, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.thread.i.i" ] +75: ; preds = %.split.i.i.i + %76 = getelementptr inbounds i8, ptr %1, i64 1024 call void @llvm.lifetime.start.p0(i64 248, ptr nonnull %3), !noalias !3854 - store i64 %.sroa.0.0.i.i, ptr %3, align 8, !noalias !3854 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(240) %.sroa.7.0..sroa_idx.i.i, ptr noundef nonnull align 8 dereferenceable(240) %.sroa.7.i.i, i64 240, i1 false), !noalias !3854 - %75 = load i64, ptr %6, align 8, !alias.scope !3831, !noalias !3830, !noundef !25 - %76 = icmp eq i64 %68, %75 - br i1 %76, label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i", label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i" - -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i": ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge", %73 - %77 = phi ptr [ %.pre, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge" ], [ %67, %73 ] - %78 = getelementptr inbounds { i64, [30 x i64] }, ptr %77, i64 %68 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(248) %78, ptr noundef nonnull align 8 dereferenceable(248) %3, i64 248, i1 false), !noalias !3830 - %79 = add i64 %68, 1 - store i64 %79, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !3831, !noalias !3830 - call void @llvm.lifetime.end.p0(i64 248, ptr nonnull %3), !noalias !3854 - call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %.sroa.7.i.i) - br label %.split.i.i.i + store i64 %.promoted.i, ptr %3, align 8, !noalias !3854 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(240) %.sroa.7.0..sroa_idx.i.i, ptr noundef nonnull align 8 dereferenceable(240) %76, i64 240, i1 false) + %77 = load i64, ptr %6, align 8, !alias.scope !3831, !noalias !3830, !noundef !25 + %78 = icmp eq i64 %77, 1 + br i1 %78, label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i.jt9", label %.split.i.i.i.jt9 -.split15.i: ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i" - %80 = landingpad { ptr, i32 } +79: ; preds = %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i" + call void @llvm.lifetime.start.p0(i64 248, ptr nonnull %3), !noalias !3854 + store i64 %spec.store.select.i.i.i11.i56, ptr %3, align 8, !noalias !3854 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(240) %.sroa.7.0..sroa_idx.i.i, ptr noundef nonnull align 8 dereferenceable(240) %.sroa.517.0..sroa_idx.i.i.i.i, i64 240, i1 false) + %80 = load i64, ptr %6, align 8, !alias.scope !3831, !noalias !3830, !noundef !25 + %81 = icmp eq i64 %72, %80 + br i1 %81, label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i.jt10", label %.split.i.i.i.jt10 + +.split15.i.loopexit: ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i.jt10" + %lpad.loopexit = landingpad { ptr, i32 } cleanup - store i64 %74, ptr %37, align 8, !alias.scope !3855, !noalias !3858 - br label %81 + br label %.split15.i -81: ; preds = %.split15.i, %.split15.us.i - %storemerge41 = phi i64 [ %spec.store.select.i.i.i.i24, %.split15.i ], [ %spec.store.select.i.i.i.us.i39, %.split15.us.i ] - %.us-phi.i5 = phi { ptr, i32 } [ %80, %.split15.i ], [ %66, %.split15.us.i ] +.split15.i.loopexit.split-lp: ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i.jt9" + %lpad.loopexit.split-lp = landingpad { ptr, i32 } + cleanup + br label %.split15.i + +.split15.i: ; preds = %.split15.i.loopexit.split-lp, %.split15.i.loopexit + %82 = phi i64 [ 10, %.split15.i.loopexit ], [ 9, %.split15.i.loopexit.split-lp ] + %spec.store.select.i.i.i.i2453 = phi i64 [ 9, %.split15.i.loopexit ], [ %.promoted9.i, %.split15.i.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.split15.i.loopexit ], [ %lpad.loopexit.split-lp, %.split15.i.loopexit.split-lp ] + store i64 %82, ptr %37, align 8, !alias.scope !3855, !noalias !3858 + br label %83 + +83: ; preds = %.split15.i, %.split15.us.i + %storemerge41 = phi i64 [ %spec.store.select.i.i.i.i2453, %.split15.i ], [ %spec.store.select.i.i.i.us.i39, %.split15.us.i ] + %.us-phi.i5 = phi { ptr, i32 } [ %lpad.phi, %.split15.i ], [ %66, %.split15.us.i ] store i64 %storemerge41, ptr %41, align 8, !alias.scope !3852, !noalias !3851 invoke fastcc void @"_ZN4core3ptr44drop_in_place$LT$ide..hover..HoverAction$GT$17hf18b9f2ce13d0686E"(ptr noalias noundef align 8 dereferenceable(248) %3) #20 - to label %72 unwind label %83, !noalias !3830 + to label %74 unwind label %85, !noalias !3830 -"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i": ; preds = %73 - %narrow63.i.i.i.i = icmp ult i64 %spec.store.select.i.i.i10.i, 9 - %82 = select i1 %narrow63.i.i.i.i, i64 2, i64 1 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17hef2ef1e861c17ec0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %68, i64 noundef %82) - to label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge" unwind label %.split15.i, !noalias !3830 +"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i.jt9": ; preds = %75 + %narrow63.i.i.i.i.jt9 = icmp ult i64 %.promoted9.i, 9 + %84 = select i1 %narrow63.i.i.i.i.jt9, i64 2, i64 1 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17hef2ef1e861c17ec0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6, i64 noundef 1, i64 noundef %84) + to label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge.jt9" unwind label %.split15.i.loopexit.split-lp, !noalias !3830 -"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge": ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i" - %.pre = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !alias.scope !3831, !noalias !3830 - br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i" +"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i.jt10": ; preds = %79 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17hef2ef1e861c17ec0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %72, i64 noundef 1) + to label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge.jt10" unwind label %.split15.i.loopexit, !noalias !3830 -83: ; preds = %81, %72 - %84 = landingpad { ptr, i32 } +"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge.jt9": ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i.jt9" + %.pre.jt9 = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !alias.scope !3831, !noalias !3830 + br label %.split.i.i.i.jt9 + +"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17ha0adf1355c4064a0E.llvm.7519451831489459490.exit.i.i_crit_edge.jt10": ; preds = %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h6124c78b3edfbd56E.exit.i.i.jt10" + %.pre.jt10 = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !alias.scope !3831, !noalias !3830 + br label %.split.i.i.i.jt10 + +85: ; preds = %83, %74 + %86 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #19 unreachable @@ -12435,9 +12458,12 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h495653956488d0a4E.exit.threa store i64 %63, ptr %39, align 8, !alias.scope !3832, !noalias !3841 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15": ; preds = %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i", %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i" - %spec.store.select.i.i.i.i25 = phi i64 [ %spec.store.select.i.i.i.i23, %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i" ], [ 10, %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3134e85b27336040E.exit.i.i" ] - store i64 %70, ptr %37, align 8, !alias.scope !3855, !noalias !3858 +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15.loopexit": ; preds = %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i" + br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15" + +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15": ; preds = %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15.loopexit" + %spec.store.select.i.i.i.i25 = phi i64 [ %spec.store.select.i.i.i11.i56, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15.loopexit" ], [ 10, %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$GT$17h506b5083f2224fb8E.exit.i.i.i.i" ] + store i64 10, ptr %37, align 8, !alias.scope !3855, !noalias !3858 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i" "_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit15", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i.loopexit" @@ -12445,17 +12471,17 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h495653956488d0a4E.exit.threa store i64 %storemerge, ptr %41, align 8, !alias.scope !3852, !noalias !3851 call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %.sroa.7.i.i) invoke void @"_ZN4core3ptr225drop_in_place$LT$core..iter..adapters..flatten..FlattenCompat$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$C$4_usize$GT$$C$core..option..IntoIter$LT$ide..hover..HoverAction$GT$$GT$$GT$17h93cc7b825f7dfd22E.llvm.273501356006530532"(ptr noalias noundef nonnull align 8 dereferenceable(1512) %4) - to label %"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17hf14e7bd4ee9eb90eE.exit" unwind label %85 + to label %"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17hf14e7bd4ee9eb90eE.exit" unwind label %87 -85: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i" - %86 = landingpad { ptr, i32 } +87: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i" + %88 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %72, %85 - %eh.lpad-body = phi { ptr, i32 } [ %86, %85 ], [ %.us-phi.i5, %72 ] +.body: ; preds = %74, %87 + %eh.lpad-body = phi { ptr, i32 } [ %88, %87 ], [ %.us-phi.i5, %74 ] invoke void @"_ZN4core3ptr67drop_in_place$LT$alloc..vec..Vec$LT$ide..hover..HoverAction$GT$$GT$17h3ac37e50d4252094E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #20 - to label %"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$C$4_usize$GT$$GT$$GT$17hf41613540a7f11e1E.exit" unwind label %87 + to label %"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$C$4_usize$GT$$GT$$GT$17hf41613540a7f11e1E.exit" unwind label %89 "_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17hf14e7bd4ee9eb90eE.exit": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h24c0fe2b1082d970E.exit.i" call void @llvm.lifetime.end.p0(i64 1512, ptr nonnull %4) @@ -12463,19 +12489,19 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h495653956488d0a4E.exit.threa call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) br label %30 -87: ; preds = %89, %.body, %31 - %88 = landingpad { ptr, i32 } +89: ; preds = %91, %.body, %31 + %90 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #19 unreachable -"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$C$4_usize$GT$$GT$$GT$17hf41613540a7f11e1E.exit": ; preds = %89, %.body - %.pn9 = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %32, %89 ] +"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$C$4_usize$GT$$GT$$GT$17hf41613540a7f11e1E.exit": ; preds = %91, %.body + %.pn9 = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %32, %91 ] resume { ptr, i32 } %.pn9 -89: ; preds = %31 +91: ; preds = %31 invoke void @"_ZN4core3ptr225drop_in_place$LT$core..iter..adapters..flatten..FlattenCompat$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$C$4_usize$GT$$C$core..option..IntoIter$LT$ide..hover..HoverAction$GT$$GT$$GT$17h93cc7b825f7dfd22E.llvm.273501356006530532"(ptr noalias noundef nonnull align 8 dereferenceable(1512) %1) - to label %"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$C$4_usize$GT$$GT$$GT$17hf41613540a7f11e1E.exit" unwind label %87 + to label %"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$ide..hover..HoverAction$GT$$C$4_usize$GT$$GT$$GT$17hf41613540a7f11e1E.exit" unwind label %89 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/tokenizers-rs/optimized/1ve5rid4048y19bt.ll b/bench/tokenizers-rs/optimized/1ve5rid4048y19bt.ll index 496952ef626..0c6c9261d53 100644 --- a/bench/tokenizers-rs/optimized/1ve5rid4048y19bt.ll +++ b/bench/tokenizers-rs/optimized/1ve5rid4048y19bt.ll @@ -7386,26 +7386,26 @@ define hidden { i32, i64 } @"_ZN127_$LT$unicode_normalization_alignments..recomp %13 = getelementptr inbounds i8, ptr %0, i64 136 %14 = getelementptr inbounds i8, ptr %0, i64 233 %.pre = load i64, ptr %4, align 8, !range !2355 - br label %.backedge100 - -.backedge100: ; preds = %.backedge100.backedge, %1 - %15 = phi i64 [ %.pre, %1 ], [ %.be, %.backedge100.backedge ] - switch i64 %15, label %default.unreachable148 [ + switch i64 %.pre, label %default.unreachable148 [ i64 0, label %.preheader i64 1, label %19 i64 2, label %24 ] -.preheader: ; preds = %.backedge100 +15: ; preds = %.lr.ph.preheader.i, %108 + store i64 0, ptr %4, align 8 + br label %.preheader + +.preheader: ; preds = %15, %1 %16 = tail call { i32, i64 } @"_ZN127_$LT$unicode_normalization_alignments..decompose..Decompositions$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8a82221ba54b80a5E.llvm.12993343960315125427"(ptr noalias noundef nonnull align 8 dereferenceable(120) %0) %17 = extractvalue { i32, i64 } %16, 0 %18 = icmp eq i32 %17, 1114112 br i1 %18, label %._crit_edge, label %.lr.ph -default.unreachable148: ; preds = %.backedge100 +default.unreachable148: ; preds = %1 unreachable -19: ; preds = %.backedge100 +19: ; preds = %1 %20 = load i64, ptr %5, align 8, !noundef !14 %21 = load i64, ptr %6, align 8, !alias.scope !2356, !noalias !2361, !noundef !14 %22 = icmp ugt i64 %21, 4 @@ -7414,7 +7414,7 @@ default.unreachable148: ; preds = %.backedge100 %.not98 = icmp ult i64 %20, %.sink6.i.i br i1 %.not98, label %110, label %108 -24: ; preds = %.backedge100 +24: ; preds = %._crit_edge, %1 %25 = load i64, ptr %5, align 8, !noundef !14 %26 = load i64, ptr %6, align 8, !alias.scope !2363, !noalias !2368, !noundef !14 %27 = icmp ugt i64 %26, 4 @@ -7428,7 +7428,7 @@ default.unreachable148: ; preds = %.backedge100 store i64 0, ptr %5, align 8 %29 = load i32, ptr %10, align 8, !range !2370, !noundef !14 %30 = icmp eq i32 %29, 1114112 - br i1 %30, label %.backedge100.backedge, label %36 + br i1 %30, label %24, label %36 .lr.ph: ; preds = %.preheader, %.backedge %.pn = phi { i32, i64 } [ %46, %.backedge ], [ %16, %.preheader ] @@ -7626,19 +7626,11 @@ default.unreachable148: ; preds = %.backedge100 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !2395 %.promoted.i = load i64, ptr %109, align 8 %.not99 = icmp eq i64 %.promoted.i, 0 - br i1 %.not99, label %"_ZN8smallvec17SmallVec$LT$A$GT$8truncate17h4cd6ce63bade8aa7E.exit", label %.lr.ph.preheader.i + br i1 %.not99, label %15, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %108 store i64 0, ptr %109, align 8 - br label %"_ZN8smallvec17SmallVec$LT$A$GT$8truncate17h4cd6ce63bade8aa7E.exit" - -"_ZN8smallvec17SmallVec$LT$A$GT$8truncate17h4cd6ce63bade8aa7E.exit": ; preds = %108, %.lr.ph.preheader.i - store i64 0, ptr %4, align 8 - br label %.backedge100.backedge - -.backedge100.backedge: ; preds = %"_ZN8smallvec17SmallVec$LT$A$GT$8truncate17h4cd6ce63bade8aa7E.exit", %._crit_edge - %.be = phi i64 [ 0, %"_ZN8smallvec17SmallVec$LT$A$GT$8truncate17h4cd6ce63bade8aa7E.exit" ], [ 2, %._crit_edge ] - br label %.backedge100 + br label %15 110: ; preds = %19 %111 = load ptr, ptr %13, align 8, !alias.scope !2356, !noalias !2361, !nonnull !14 diff --git a/bench/wireshark/optimized/qcustomplot.cpp.ll b/bench/wireshark/optimized/qcustomplot.cpp.ll index b8a64e991cd..bb8c58af050 100644 --- a/bench/wireshark/optimized/qcustomplot.cpp.ll +++ b/bench/wireshark/optimized/qcustomplot.cpp.ll @@ -114803,8 +114803,7 @@ _ZNK8QPointerI7QCPAxisE4dataEv.exit115.thread: ; preds = %_ZNK8QPointerI7QCPA 134: ; preds = %132 %135 = fcmp olt double %130, %103 - %..i = select i1 %135, i32 3, i32 2 - br label %.lr.ph + br i1 %135, label %.lr.ph, label %..i.si.unfold.false 136: ; preds = %125 %137 = fcmp ogt double %128, %92 @@ -114816,19 +114815,26 @@ _ZNK8QPointerI7QCPAxisE4dataEv.exit115.thread: ; preds = %_ZNK8QPointerI7QCPA 140: ; preds = %139 %141 = fcmp olt double %130, %103 - %.18.i = select i1 %141, i32 9, i32 8 - br label %.lr.ph + br i1 %141, label %.lr.ph, label %.18.i.si.unfold.false 142: ; preds = %136 br i1 %138, label %.lr.ph, label %143 143: ; preds = %142 %144 = fcmp olt double %130, %103 - %.19.i = select i1 %144, i32 6, i32 5 + br i1 %144, label %.lr.ph, label %.19.i.si.unfold.false + +.19.i.si.unfold.false: ; preds = %143 + br label %.lr.ph + +.18.i.si.unfold.false: ; preds = %140 + br label %.lr.ph + +..i.si.unfold.false: ; preds = %134 br label %.lr.ph -.lr.ph: ; preds = %143, %142, %140, %139, %134, %132 - %.0.i = phi i32 [ 1, %132 ], [ %..i, %134 ], [ 7, %139 ], [ %.18.i, %140 ], [ 4, %142 ], [ %.19.i, %143 ] +.lr.ph: ; preds = %142, %139, %132, %.19.i.si.unfold.false, %143, %.18.i.si.unfold.false, %140, %..i.si.unfold.false, %134 + %.0.i = phi i32 [ 1, %132 ], [ 3, %134 ], [ 7, %139 ], [ 9, %140 ], [ 4, %142 ], [ 6, %143 ], [ 5, %.19.i.si.unfold.false ], [ 8, %.18.i.si.unfold.false ], [ 2, %..i.si.unfold.false ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false) %145 = getelementptr inbounds i8, ptr %15, i64 8 %146 = getelementptr inbounds i8, ptr %15, i64 16 @@ -114859,8 +114865,7 @@ _ZNK8QPointerI7QCPAxisE4dataEv.exit115.thread: ; preds = %_ZNK8QPointerI7QCPA 163: ; preds = %161 %164 = fcmp olt double %159, %103 - %..i138 = select i1 %164, i32 3, i32 2 - br label %_ZNK8QCPCurve9getRegionEdddddd.exit139 + br i1 %164, label %_ZNK8QCPCurve9getRegionEdddddd.exit139, label %..i138.si.unfold.false 165: ; preds = %155 %166 = fcmp ogt double %157, %92 @@ -114872,24 +114877,31 @@ _ZNK8QPointerI7QCPAxisE4dataEv.exit115.thread: ; preds = %_ZNK8QPointerI7QCPA 169: ; preds = %168 %170 = fcmp olt double %159, %103 - %.18.i137 = select i1 %170, i32 9, i32 8 - br label %_ZNK8QCPCurve9getRegionEdddddd.exit139 + br i1 %170, label %_ZNK8QCPCurve9getRegionEdddddd.exit139, label %.18.i137.si.unfold.false 171: ; preds = %165 br i1 %167, label %_ZNK8QCPCurve9getRegionEdddddd.exit139, label %172 172: ; preds = %171 %173 = fcmp olt double %159, %103 - %.19.i135 = select i1 %173, i32 6, i32 5 + br i1 %173, label %_ZNK8QCPCurve9getRegionEdddddd.exit139, label %.19.i135.si.unfold.false + +.19.i135.si.unfold.false: ; preds = %172 + br label %_ZNK8QCPCurve9getRegionEdddddd.exit139 + +.18.i137.si.unfold.false: ; preds = %169 + br label %_ZNK8QCPCurve9getRegionEdddddd.exit139 + +..i138.si.unfold.false: ; preds = %163 br label %_ZNK8QCPCurve9getRegionEdddddd.exit139 -_ZNK8QCPCurve9getRegionEdddddd.exit139: ; preds = %161, %163, %168, %169, %171, %172 - %.0.i136 = phi i32 [ 1, %161 ], [ %..i138, %163 ], [ 7, %168 ], [ %.18.i137, %169 ], [ 4, %171 ], [ %.19.i135, %172 ] +_ZNK8QCPCurve9getRegionEdddddd.exit139: ; preds = %163, %..i138.si.unfold.false, %169, %.18.i137.si.unfold.false, %172, %.19.i135.si.unfold.false, %161, %168, %171 + %.not112 = phi i1 [ false, %161 ], [ false, %163 ], [ false, %168 ], [ false, %169 ], [ false, %171 ], [ false, %172 ], [ true, %.19.i135.si.unfold.false ], [ false, %.18.i137.si.unfold.false ], [ false, %..i138.si.unfold.false ] + %.0.i136 = phi i32 [ 1, %161 ], [ 3, %163 ], [ 7, %168 ], [ 9, %169 ], [ 4, %171 ], [ 6, %172 ], [ 5, %.19.i135.si.unfold.false ], [ 8, %.18.i137.si.unfold.false ], [ 2, %..i138.si.unfold.false ] %.not111 = icmp eq i32 %.0.i136, %.0106236 br i1 %.not111, label %290, label %174 174: ; preds = %_ZNK8QCPCurve9getRegionEdddddd.exit139 - %.not112 = icmp eq i32 %.0.i136, 5 br i1 %.not112, label %266, label %175 175: ; preds = %174 @@ -114944,7 +114956,7 @@ _ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i141: ; preds = %_ZN5QListI7QPoi %.not.i.i142 = icmp eq i32 %192, 1 br i1 %.not.i.i142, label %_ZN5QListI7QPointFED2Ev.exit.sink.split, label %_ZN5QListI7QPointFED2Ev.exit -.loopexit: ; preds = %.invoke240, %.invoke, %_ZN5QListI7QPointFE6appendEOS0_.exit, %_ZNK8QCPCurve11mayTraverseEii.exit.thread, %_ZNK8QCPCurve11mayTraverseEii.exit.thread228, %_ZN5QListI7QPointFElsEOS0_.exit, %292, %176 +.loopexit: ; preds = %.invoke245, %.invoke, %_ZN5QListI7QPointFE6appendEOS0_.exit, %_ZNK8QCPCurve11mayTraverseEii.exit.thread, %_ZNK8QCPCurve11mayTraverseEii.exit.thread228, %_ZN5QListI7QPointFElsEOS0_.exit, %292, %176 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %_ZN5QListI7QPointFED2Ev.exit146 @@ -115245,9 +115257,9 @@ _ZN5QListI7QPointFElsEOS0_.exit: ; preds = %.invoke store double %286, ptr %20, align 8 %287 = extractvalue { double, double } %284, 1 store double %287, ptr %153, align 8 - br label %.invoke240 + br label %.invoke245 -.invoke240: ; preds = %294, %285 +.invoke245: ; preds = %294, %285 %288 = phi ptr [ %20, %285 ], [ %21, %294 ] %289 = load i64, ptr %23, align 8 invoke void @_ZN9QtPrivate12QPodArrayOpsI7QPointFE7emplaceIJRKS1_EEEvxDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %289, ptr noundef nonnull align 8 dereferenceable(16) %288) @@ -115266,15 +115278,15 @@ _ZN5QListI7QPointFElsEOS0_.exit: ; preds = %.invoke store double %295, ptr %21, align 8 %296 = extractvalue { double, double } %293, 1 store double %296, ptr %154, align 8 - br label %.invoke240 + br label %.invoke245 _ZN5QListI7QPointFED2Ev.exit.sink.split: ; preds = %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i171, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i166, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i141 - %.sink241 = phi ptr [ %14, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i141 ], [ %15, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i166 ], [ %17, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i171 ] - %297 = load ptr, ptr %.sink241, align 8 + %.sink246 = phi ptr [ %14, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i141 ], [ %15, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i166 ], [ %17, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i171 ] + %297 = load ptr, ptr %.sink246, align 8 call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %297, i64 noundef 16, i64 noundef 8) #48 br label %_ZN5QListI7QPointFED2Ev.exit -_ZN5QListI7QPointFED2Ev.exit: ; preds = %_ZN5QListI7QPointFED2Ev.exit.sink.split, %.invoke240, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i171, %_ZN5QListI7QPointFElsEOS1_.exit169, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i166, %_ZN5QListI7QPointFED2Ev.exit164, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i141, %_ZN5QListI7QPointFElsEOS1_.exit, %290 +_ZN5QListI7QPointFED2Ev.exit: ; preds = %_ZN5QListI7QPointFED2Ev.exit.sink.split, %.invoke245, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i171, %_ZN5QListI7QPointFElsEOS1_.exit169, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i166, %_ZN5QListI7QPointFED2Ev.exit164, %_ZN17QArrayDataPointerI7QPointFE5derefEv.exit.i.i141, %_ZN5QListI7QPointFElsEOS1_.exit, %290 %298 = getelementptr i8, ptr %.sroa.0203.0234, i64 24 %.sroa.011.0.copyload = load ptr, ptr %9, align 8 %.not230 = icmp eq ptr %298, %.sroa.011.0.copyload diff --git a/bench/z3/optimized/nla_order_lemmas.cpp.ll b/bench/z3/optimized/nla_order_lemmas.cpp.ll index cfeec618687..8e9dde1b189 100644 --- a/bench/z3/optimized/nla_order_lemmas.cpp.ll +++ b/bench/z3/optimized/nla_order_lemmas.cpp.ll @@ -247,7 +247,7 @@ invoke.cont9: ; preds = %invoke.cont7 %arrayidx.i.i = getelementptr inbounds i8, ptr %3, i64 -4 %4 = load i32, ptr %arrayidx.i.i, align 4 %cmp.not = icmp eq i32 %4, 2 - br i1 %cmp.not, label %if.end, label %if.then.i.i.i.i + br i1 %cmp.not, label %if.end, label %if.then.i.i.i.i.jt3.invoke lpad8: ; preds = %if.end18, %if.else, %if.then13 %5 = landingpad { ptr, i32 } @@ -270,91 +270,102 @@ if.else: ; preds = %if.end if.end18: ; preds = %if.else, %if.then13 %call20 = invoke noundef zeroext i1 @_ZNK3nla6common4doneEv(ptr noundef nonnull align 8 dereferenceable(184) %this) - to label %cleanup unwind label %lpad8 + to label %invoke.cont19 unwind label %lpad8 -cleanup: ; preds = %if.end18 - %. = select i1 %call20, i32 2, i32 0 +invoke.cont19: ; preds = %if.end18 %.pr.pre = load ptr, ptr %ac, align 8 - %tobool.not.i.i.i.i = icmp eq ptr %.pr.pre, null - br i1 %tobool.not.i.i.i.i, label %_ZN3nla13factorizationD2Ev.exit, label %if.then.i.i.i.i + %tobool.not.i.i.i.i.jt2 = icmp eq ptr %.pr.pre, null + br i1 %call20, label %cleanup.jt2, label %cleanup.jt0 -if.then.i.i.i.i: ; preds = %invoke.cont9, %cleanup - %cleanup.dest.slot.0.ph32 = phi i32 [ %., %cleanup ], [ 3, %invoke.cont9 ] - %.pr31 = phi ptr [ %.pr.pre, %cleanup ], [ %3, %invoke.cont9 ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %.pr31, i64 -8 - invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i) - to label %_ZN3nla13factorizationD2Ev.exit unwind label %terminate.lpad.i.i.i +cleanup.jt0: ; preds = %invoke.cont19 + br i1 %tobool.not.i.i.i.i.jt2, label %for.inc, label %if.then.i.i.i.i.jt3.invoke -terminate.lpad.i.i.i: ; preds = %if.then.i.i.i.i - %7 = landingpad { ptr, i32 } +cleanup.jt2: ; preds = %invoke.cont19 + br i1 %tobool.not.i.i.i.i.jt2, label %cleanup24, label %if.then.i.i.i.i.jt2 + +if.then.i.i.i.i.jt3.invoke: ; preds = %invoke.cont9, %cleanup.jt0 + %.pr.pre.sink = phi ptr [ %.pr.pre, %cleanup.jt0 ], [ %3, %invoke.cont9 ] + %add.ptr.i.i.i.i.i.jt0 = getelementptr inbounds i8, ptr %.pr.pre.sink, i64 -8 + invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i.jt0) + to label %for.inc unwind label %terminate.lpad.i.i.i.loopexit + +if.then.i.i.i.i.jt2: ; preds = %cleanup.jt2 + %add.ptr.i.i.i.i.i.jt2 = getelementptr inbounds i8, ptr %.pr.pre, i64 -8 + invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i.jt2) + to label %cleanup24 unwind label %terminate.lpad.i.i.i.loopexit.split-lp + +terminate.lpad.i.i.i.loopexit: ; preds = %if.then.i.i.i.i.jt3.invoke + %lpad.loopexit = landingpad { ptr, i32 } catch ptr null - %8 = extractvalue { ptr, i32 } %7, 0 - call void @__clang_call_terminate(ptr %8) #16 - unreachable + br label %terminate.lpad.i.i.i -_ZN3nla13factorizationD2Ev.exit: ; preds = %cleanup, %if.then.i.i.i.i - %cleanup.dest.slot.0.ph33 = phi i32 [ %., %cleanup ], [ %cleanup.dest.slot.0.ph32, %if.then.i.i.i.i ] - switch i32 %cleanup.dest.slot.0.ph33, label %cleanup24 [ - i32 0, label %for.inc - i32 3, label %for.inc - ] +terminate.lpad.i.i.i.loopexit.split-lp: ; preds = %if.then.i.i.i.i.jt2 + %lpad.loopexit.split-lp = landingpad { ptr, i32 } + catch ptr null + br label %terminate.lpad.i.i.i + +terminate.lpad.i.i.i: ; preds = %terminate.lpad.i.i.i.loopexit.split-lp, %terminate.lpad.i.i.i.loopexit + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %terminate.lpad.i.i.i.loopexit ], [ %lpad.loopexit.split-lp, %terminate.lpad.i.i.i.loopexit.split-lp ] + %7 = extractvalue { ptr, i32 } %lpad.phi, 0 + call void @__clang_call_terminate(ptr %7) #16 + unreachable -for.inc: ; preds = %invoke.cont7, %_ZN3nla13factorizationD2Ev.exit, %_ZN3nla13factorizationD2Ev.exit +for.inc: ; preds = %if.then.i.i.i.i.jt3.invoke, %cleanup.jt0, %invoke.cont7 invoke void @_ZN3nla18const_iterator_monppEv(ptr nonnull sret(%"struct.nla::const_iterator_mon") align 8 %agg.tmp.ensured, ptr noundef nonnull align 8 dereferenceable(24) %__begin1) to label %invoke.cont23 unwind label %lpad4 invoke.cont23: ; preds = %for.inc - %9 = load ptr, ptr %agg.tmp.ensured, align 8 - %tobool.not.i.i.i.i7 = icmp eq ptr %9, null + %8 = load ptr, ptr %agg.tmp.ensured, align 8 + %tobool.not.i.i.i.i7 = icmp eq ptr %8, null br i1 %tobool.not.i.i.i.i7, label %for.cond.backedge, label %if.then.i.i.i.i8 for.cond.backedge: ; preds = %invoke.cont23, %if.then.i.i.i.i8 br label %for.cond if.then.i.i.i.i8: ; preds = %invoke.cont23 - %add.ptr.i.i.i.i.i9 = getelementptr inbounds i8, ptr %9, i64 -8 + %add.ptr.i.i.i.i.i9 = getelementptr inbounds i8, ptr %8, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i9) to label %for.cond.backedge unwind label %terminate.lpad.i.i.i10 terminate.lpad.i.i.i10: ; preds = %if.then.i.i.i.i8 - %10 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } catch ptr null - %11 = extractvalue { ptr, i32 } %10, 0 - call void @__clang_call_terminate(ptr %11) #16 + %10 = extractvalue { ptr, i32 } %9, 0 + call void @__clang_call_terminate(ptr %10) #16 unreachable -cleanup24: ; preds = %invoke.cont5, %_ZN3nla13factorizationD2Ev.exit - %12 = load ptr, ptr %__end1, align 8 - %tobool.not.i.i.i.i11 = icmp eq ptr %12, null +cleanup24: ; preds = %invoke.cont5, %cleanup.jt2, %if.then.i.i.i.i.jt2 + %11 = load ptr, ptr %__end1, align 8 + %tobool.not.i.i.i.i11 = icmp eq ptr %11, null br i1 %tobool.not.i.i.i.i11, label %_ZN3nla18const_iterator_monD2Ev.exit15, label %if.then.i.i.i.i12 if.then.i.i.i.i12: ; preds = %cleanup24 - %add.ptr.i.i.i.i.i13 = getelementptr inbounds i8, ptr %12, i64 -8 + %add.ptr.i.i.i.i.i13 = getelementptr inbounds i8, ptr %11, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i13) to label %_ZN3nla18const_iterator_monD2Ev.exit15 unwind label %terminate.lpad.i.i.i14 terminate.lpad.i.i.i14: ; preds = %if.then.i.i.i.i12 - %13 = landingpad { ptr, i32 } + %12 = landingpad { ptr, i32 } catch ptr null - %14 = extractvalue { ptr, i32 } %13, 0 - call void @__clang_call_terminate(ptr %14) #16 + %13 = extractvalue { ptr, i32 } %12, 0 + call void @__clang_call_terminate(ptr %13) #16 unreachable _ZN3nla18const_iterator_monD2Ev.exit15: ; preds = %cleanup24, %if.then.i.i.i.i12 - %15 = load ptr, ptr %__begin1, align 8 - %tobool.not.i.i.i.i16 = icmp eq ptr %15, null + %14 = load ptr, ptr %__begin1, align 8 + %tobool.not.i.i.i.i16 = icmp eq ptr %14, null br i1 %tobool.not.i.i.i.i16, label %_ZN3nla18const_iterator_monD2Ev.exit20, label %if.then.i.i.i.i17 if.then.i.i.i.i17: ; preds = %_ZN3nla18const_iterator_monD2Ev.exit15 - %add.ptr.i.i.i.i.i18 = getelementptr inbounds i8, ptr %15, i64 -8 + %add.ptr.i.i.i.i.i18 = getelementptr inbounds i8, ptr %14, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i18) to label %_ZN3nla18const_iterator_monD2Ev.exit20 unwind label %terminate.lpad.i.i.i19 terminate.lpad.i.i.i19: ; preds = %if.then.i.i.i.i17 - %16 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } catch ptr null - %17 = extractvalue { ptr, i32 } %16, 0 - call void @__clang_call_terminate(ptr %17) #16 + %16 = extractvalue { ptr, i32 } %15, 0 + call void @__clang_call_terminate(ptr %16) #16 unreachable _ZN3nla18const_iterator_monD2Ev.exit20: ; preds = %_ZN3nla18const_iterator_monD2Ev.exit15, %if.then.i.i.i.i17 diff --git a/bench/z3/optimized/spacer_quant_generalizer.cpp.ll b/bench/z3/optimized/spacer_quant_generalizer.cpp.ll index d534dad7bed..efdab8474aa 100644 --- a/bench/z3/optimized/spacer_quant_generalizer.cpp.ll +++ b/bench/z3/optimized/spacer_quant_generalizer.cpp.ll @@ -8175,7 +8175,7 @@ invoke.cont49: ; preds = %invoke.cont48 %arrayidx.i.i82 = getelementptr inbounds i8, ptr %62, i64 -4 %63 = load i32, ptr %arrayidx.i.i82, align 4 %cmp3.i.i83 = icmp eq i32 %63, 0 - br i1 %cmp3.i.i83, label %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i, label %for.body57.preheader + br i1 %cmp3.i.i83, label %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt4, label %for.body57.preheader lpad47.loopexit: ; preds = %for.body57 %lpad.loopexit = landingpad { ptr, i32 } @@ -8205,7 +8205,7 @@ for.body57: ; preds = %for.body57.preheade to label %invoke.cont60 unwind label %lpad47.loopexit invoke.cont60: ; preds = %for.body57 - br i1 %call61, label %cleanup, label %if.else + br i1 %call61, label %cleanup.jt1, label %if.else if.else: ; preds = %invoke.cont60 %66 = load i32, ptr %num_failures, align 4 @@ -8213,46 +8213,70 @@ if.else: ; preds = %invoke.cont60 store i32 %inc64, ptr %num_failures, align 4 %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 %cleanup, label %for.body57, !llvm.loop !31 - -cleanup: ; preds = %invoke.cont60, %if.else - %cleanup.dest.slot.0.ph.ph = phi i32 [ 0, %if.else ], [ 1, %invoke.cont60 ] - %.pr.pre = load ptr, ptr %m_nodes.i.i78, align 8 - %cmp.i.i.i93 = icmp eq ptr %.pr.pre, null - br i1 %cmp.i.i.i93, label %_ZN10ref_vectorI3app11ast_managerED2Ev.exit, label %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i - -_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i: ; preds = %invoke.cont49, %cleanup - %cleanup.dest.slot.0.ph140 = phi i32 [ %cleanup.dest.slot.0.ph.ph, %cleanup ], [ 4, %invoke.cont49 ] - %.pr139 = phi ptr [ %.pr.pre, %cleanup ], [ %62, %invoke.cont49 ] - %arrayidx.i.i.i94 = getelementptr inbounds i8, ptr %.pr139, i64 -4 - %67 = load i32, ptr %arrayidx.i.i.i94, align 4 - %68 = zext i32 %67 to i64 - %add.ptr.i.i = getelementptr inbounds ptr, ptr %.pr139, i64 %68 - %cmp3.i.not.i.i = icmp eq i32 %67, 0 - br i1 %cmp3.i.not.i.i, label %if.then.i.i.i.i.i96, label %for.body.i.i.i + br i1 %exitcond.not, label %cleanup.jt0, label %for.body57, !llvm.loop !31 -for.body.i.i.i: ; preds = %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i, %_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i - %it.04.i.i.i = phi ptr [ %incdec.ptr.i.i.i, %_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i ], [ %.pr139, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i ] - %69 = load ptr, ptr %it.04.i.i.i, align 8 - %70 = load ptr, ptr %candidates, align 8 - %tobool.not.i.i.i.i.i.i = icmp eq ptr %69, null +cleanup.jt1: ; preds = %invoke.cont60 + %.pr.pre.jt1 = load ptr, ptr %m_nodes.i.i78, align 8 + %cmp.i.i.i93.jt1 = icmp eq ptr %.pr.pre.jt1, null + br i1 %cmp.i.i.i93.jt1, label %cleanup70, label %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt1 + +cleanup.jt0: ; preds = %if.else + %.pr.pre.jt0 = load ptr, ptr %m_nodes.i.i78, align 8 + %cmp.i.i.i93.jt0 = icmp eq ptr %.pr.pre.jt0, null + br i1 %cmp.i.i.i93.jt0, label %for.inc67, label %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt0 + +_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt1: ; preds = %cleanup.jt1 + %arrayidx.i.i.i94.jt1 = getelementptr inbounds i8, ptr %.pr.pre.jt1, i64 -4 + %67 = load i32, ptr %arrayidx.i.i.i94.jt1, align 4 + %68 = zext i32 %67 to i64 + %add.ptr.i.i.jt1 = getelementptr inbounds ptr, ptr %.pr.pre.jt1, i64 %68 + %cmp3.i.not.i.i.jt1 = icmp eq i32 %67, 0 + br i1 %cmp3.i.not.i.i.jt1, label %if.then.i.i.i.i.i96.jt1, label %for.body.i.i.i.preheader + +_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt0: ; preds = %cleanup.jt0 + %arrayidx.i.i.i94.jt0 = getelementptr inbounds i8, ptr %.pr.pre.jt0, i64 -4 + %69 = load i32, ptr %arrayidx.i.i.i94.jt0, align 4 + %70 = zext i32 %69 to i64 + %add.ptr.i.i.jt0 = getelementptr inbounds ptr, ptr %.pr.pre.jt0, i64 %70 + %cmp3.i.not.i.i.jt0 = icmp eq i32 %69, 0 + br i1 %cmp3.i.not.i.i.jt0, label %if.then.i.i.i.i.i96.jt4.invoke, label %for.body.i.i.i.preheader + +_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt4: ; preds = %invoke.cont49 + %arrayidx.i.i.i94.jt4 = getelementptr inbounds i8, ptr %62, i64 -4 + %71 = load i32, ptr %arrayidx.i.i.i94.jt4, align 4 + %72 = zext i32 %71 to i64 + %add.ptr.i.i.jt4 = getelementptr inbounds ptr, ptr %62, i64 %72 + %cmp3.i.not.i.i.jt4 = icmp eq i32 %71, 0 + br i1 %cmp3.i.not.i.i.jt4, label %if.then.i.i.i.i.i96.jt4.invoke, label %for.body.i.i.i.preheader + +for.body.i.i.i.preheader: ; preds = %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt1, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt0, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt4 + %add.ptr.i.i138 = phi ptr [ %add.ptr.i.i.jt1, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt1 ], [ %add.ptr.i.i.jt0, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt0 ], [ %add.ptr.i.i.jt4, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt4 ] + %cleanup.dest.slot.0.ph137 = phi i32 [ 1, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt1 ], [ 0, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt0 ], [ 4, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt4 ] + %.pr136 = phi ptr [ %.pr.pre.jt1, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt1 ], [ %.pr.pre.jt0, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt0 ], [ %62, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt4 ] + br label %for.body.i.i.i + +for.body.i.i.i: ; preds = %for.body.i.i.i.preheader, %_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i + %it.04.i.i.i = phi ptr [ %incdec.ptr.i.i.i, %_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i ], [ %.pr136, %for.body.i.i.i.preheader ] + %73 = load ptr, ptr %it.04.i.i.i, align 8 + %74 = load ptr, ptr %candidates, align 8 + %tobool.not.i.i.i.i.i.i = icmp eq ptr %73, null br i1 %tobool.not.i.i.i.i.i.i, label %_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i, label %if.then.i.i.i.i.i.i if.then.i.i.i.i.i.i: ; preds = %for.body.i.i.i - %m_ref_count.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %69, i64 8 - %71 = load i32, ptr %m_ref_count.i.i.i.i.i.i.i, align 4 - %dec.i.i.i.i.i.i.i = add i32 %71, -1 + %m_ref_count.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %73, i64 8 + %75 = load i32, ptr %m_ref_count.i.i.i.i.i.i.i, align 4 + %dec.i.i.i.i.i.i.i = add i32 %75, -1 store i32 %dec.i.i.i.i.i.i.i, ptr %m_ref_count.i.i.i.i.i.i.i, align 4 %cmp.i.i.i.i.i.i = icmp eq i32 %dec.i.i.i.i.i.i.i, 0 br i1 %cmp.i.i.i.i.i.i, label %if.then2.i.i.i.i.i.i, label %_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i if.then2.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %70, ptr noundef nonnull %69) + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %74, ptr noundef nonnull %73) to label %_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i unwind label %terminate.lpad.i.i _ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i: ; preds = %if.then2.i.i.i.i.i.i, %if.then.i.i.i.i.i.i, %for.body.i.i.i %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %it.04.i.i.i, i64 8 - %cmp.i1.i.i = icmp ult ptr %incdec.ptr.i.i.i, %add.ptr.i.i + %cmp.i1.i.i = icmp ult ptr %incdec.ptr.i.i.i, %add.ptr.i.i138 br i1 %cmp.i1.i.i, label %for.body.i.i.i, label %invoke.cont8.i.i, !llvm.loop !12 invoke.cont8.i.i: ; preds = %_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i @@ -8260,40 +8284,58 @@ invoke.cont8.i.i: ; preds = %_ZN15ref_vector_cor %tobool.not.i.i.i.i.i95 = icmp eq ptr %.pre.i.i, null br i1 %tobool.not.i.i.i.i.i95, label %_ZN10ref_vectorI3app11ast_managerED2Ev.exit, label %if.then.i.i.i.i.i96 -if.then.i.i.i.i.i96: ; preds = %invoke.cont8.i.i, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i - %72 = phi ptr [ %.pre.i.i, %invoke.cont8.i.i ], [ %.pr139, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i ] - %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %72, i64 -8 +if.then.i.i.i.i.i96: ; preds = %invoke.cont8.i.i + %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %.pre.i.i, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i.i) - to label %_ZN10ref_vectorI3app11ast_managerED2Ev.exit unwind label %terminate.lpad.i.i.i.i + to label %_ZN10ref_vectorI3app11ast_managerED2Ev.exit unwind label %terminate.lpad.i.i.i.i.loopexit + +if.then.i.i.i.i.i96.jt1: ; preds = %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt1 + %add.ptr.i.i.i.i.i.i.jt1 = getelementptr inbounds i8, ptr %.pr.pre.jt1, i64 -8 + invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i.i.jt1) + to label %cleanup70 unwind label %terminate.lpad.i.i.i.i.loopexit.split-lp -terminate.lpad.i.i.i.i: ; preds = %if.then.i.i.i.i.i96 - %73 = landingpad { ptr, i32 } +if.then.i.i.i.i.i96.jt4.invoke: ; preds = %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt4, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt0 + %.pr.pre.jt0.sink = phi ptr [ %.pr.pre.jt0, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt0 ], [ %62, %_ZNK6vectorIP3appLb0EjE4sizeEv.exit.i.i.jt4 ] + %add.ptr.i.i.i.i.i.i.jt0 = getelementptr inbounds i8, ptr %.pr.pre.jt0.sink, i64 -8 + invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i.i.jt0) + to label %for.inc67 unwind label %terminate.lpad.i.i.i.i.loopexit + +terminate.lpad.i.i.i.i.loopexit: ; preds = %if.then.i.i.i.i.i96.jt4.invoke, %if.then.i.i.i.i.i96 + %lpad.loopexit139 = landingpad { ptr, i32 } catch ptr null - %74 = extractvalue { ptr, i32 } %73, 0 - call void @__clang_call_terminate(ptr %74) #21 + br label %terminate.lpad.i.i.i.i + +terminate.lpad.i.i.i.i.loopexit.split-lp: ; preds = %if.then.i.i.i.i.i96.jt1 + %lpad.loopexit.split-lp140 = landingpad { ptr, i32 } + catch ptr null + br label %terminate.lpad.i.i.i.i + +terminate.lpad.i.i.i.i: ; preds = %terminate.lpad.i.i.i.i.loopexit.split-lp, %terminate.lpad.i.i.i.i.loopexit + %lpad.phi141 = phi { ptr, i32 } [ %lpad.loopexit139, %terminate.lpad.i.i.i.i.loopexit ], [ %lpad.loopexit.split-lp140, %terminate.lpad.i.i.i.i.loopexit.split-lp ] + %76 = extractvalue { ptr, i32 } %lpad.phi141, 0 + call void @__clang_call_terminate(ptr %76) #21 unreachable terminate.lpad.i.i: ; preds = %if.then2.i.i.i.i.i.i - %75 = landingpad { ptr, i32 } + %77 = landingpad { ptr, i32 } catch ptr null - %76 = extractvalue { ptr, i32 } %75, 0 - call void @__clang_call_terminate(ptr %76) #21 + %78 = extractvalue { ptr, i32 } %77, 0 + call void @__clang_call_terminate(ptr %78) #21 unreachable -_ZN10ref_vectorI3app11ast_managerED2Ev.exit: ; preds = %cleanup, %invoke.cont8.i.i, %if.then.i.i.i.i.i96 - %cleanup.dest.slot.0.ph141 = phi i32 [ %cleanup.dest.slot.0.ph.ph, %cleanup ], [ %cleanup.dest.slot.0.ph140, %invoke.cont8.i.i ], [ %cleanup.dest.slot.0.ph140, %if.then.i.i.i.i.i96 ] - switch i32 %cleanup.dest.slot.0.ph141, label %cleanup70 [ +_ZN10ref_vectorI3app11ast_managerED2Ev.exit: ; preds = %invoke.cont8.i.i, %if.then.i.i.i.i.i96 + switch i32 %cleanup.dest.slot.0.ph137, label %cleanup70 [ i32 0, label %for.inc67 i32 4, label %for.inc67 ] -for.inc67: ; preds = %invoke.cont48, %_ZN10ref_vectorI3app11ast_managerED2Ev.exit, %_ZN10ref_vectorI3app11ast_managerED2Ev.exit +for.inc67: ; preds = %if.then.i.i.i.i.i96.jt4.invoke, %cleanup.jt0, %invoke.cont48, %_ZN10ref_vectorI3app11ast_managerED2Ev.exit, %_ZN10ref_vectorI3app11ast_managerED2Ev.exit %indvars.iv.next133 = add nuw nsw i64 %indvars.iv132, 1 br label %for.cond, !llvm.loop !32 -cleanup70: ; preds = %_ZNK15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE4sizeEv.exit, %_ZN10ref_vectorI3app11ast_managerED2Ev.exit - %77 = load i8, ptr %m_running.i.i, align 8 - %tobool.i.i98 = trunc i8 %77 to i1 +cleanup70: ; preds = %cleanup.jt1, %_ZNK15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE4sizeEv.exit, %_ZN10ref_vectorI3app11ast_managerED2Ev.exit, %if.then.i.i.i.i.i96.jt1 + %79 = load i8, ptr %m_running.i.i, align 8 + %tobool.i.i98 = trunc i8 %79 to i1 br i1 %tobool.i.i98, label %if.then.i.i99, label %cleanup.cont72 if.then.i.i99: ; preds = %cleanup70 @@ -8301,8 +8343,8 @@ if.then.i.i99: ; preds = %cleanup70 %retval.sroa.0.0.copyload.i1.i.i.i = load i64, ptr %watch, align 8 %sub.i.i.i.i = sub i64 %call.i.i.i100, %retval.sroa.0.0.copyload.i1.i.i.i %m_elapsed.i.i = getelementptr inbounds i8, ptr %this, i64 56 - %78 = load i64, ptr %m_elapsed.i.i, align 8 - %add.i.i.i = add nsw i64 %sub.i.i.i.i, %78 + %80 = load i64, ptr %m_elapsed.i.i, align 8 + %add.i.i.i = add nsw i64 %sub.i.i.i.i, %80 store i64 %add.i.i.i, ptr %m_elapsed.i.i, align 8 store i8 0, ptr %m_running.i.i, align 8 br label %cleanup.cont72 @@ -8312,8 +8354,8 @@ cleanup.cont72: ; preds = %entry, %if.then.i.i ehcleanup: ; preds = %lpad.loopexit120, %lpad.loopexit.split-lp121.loopexit.split-lp, %lpad.loopexit.split-lp121.loopexit, %lpad47, %lpad18 %.pn = phi { ptr, i32 } [ %lpad.phi, %lpad47 ], [ %lpad.phi119, %lpad18 ], [ %lpad.loopexit122, %lpad.loopexit120 ], [ %lpad.loopexit125, %lpad.loopexit.split-lp121.loopexit ], [ %lpad.loopexit.split-lp126, %lpad.loopexit.split-lp121.loopexit.split-lp ] - %79 = load i8, ptr %m_running.i.i, align 8 - %tobool.i.i102 = trunc i8 %79 to i1 + %81 = load i8, ptr %m_running.i.i, align 8 + %tobool.i.i102 = trunc i8 %81 to i1 br i1 %tobool.i.i102, label %if.then.i.i103, label %_ZN12scoped_watchD2Ev.exit109 if.then.i.i103: ; preds = %ehcleanup @@ -8321,8 +8363,8 @@ if.then.i.i103: ; preds = %ehcleanup %retval.sroa.0.0.copyload.i1.i.i.i105 = load i64, ptr %watch, align 8 %sub.i.i.i.i106 = sub i64 %call.i.i.i104, %retval.sroa.0.0.copyload.i1.i.i.i105 %m_elapsed.i.i107 = getelementptr inbounds i8, ptr %this, i64 56 - %80 = load i64, ptr %m_elapsed.i.i107, align 8 - %add.i.i.i108 = add nsw i64 %sub.i.i.i.i106, %80 + %82 = load i64, ptr %m_elapsed.i.i107, align 8 + %add.i.i.i108 = add nsw i64 %sub.i.i.i.i106, %82 store i64 %add.i.i.i108, ptr %m_elapsed.i.i107, align 8 store i8 0, ptr %m_running.i.i, align 8 br label %_ZN12scoped_watchD2Ev.exit109 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..1788ce57b55 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/83033 # Please rebase manually # git fetch origin