diff --git a/bench/c3c/optimized/sema_expr.c.ll b/bench/c3c/optimized/sema_expr.c.ll index 7c562623305..f8f805632a5 100644 --- a/bench/c3c/optimized/sema_expr.c.ll +++ b/bench/c3c/optimized/sema_expr.c.ll @@ -6715,31 +6715,29 @@ define internal fastcc i32 @range_const_len(ptr nocapture noundef readonly %0) u %43 = tail call i64 @int_to_i64(ptr noundef nonnull byval(%struct.Int) align 8 %40) #12 %44 = trunc i64 %43 to i32 %45 = load i8, ptr %0, align 4 - %46 = trunc i8 %45 to i1 - %47 = and i8 %45, 2 - %.not27 = icmp ne i8 %47, 0 - %or.cond.not = and i1 %.not27, %46 - br i1 %or.cond.not, label %48, label %50 + %46 = and i8 %45, 3 + %or.cond.not = icmp eq i8 %46, 3 + br i1 %or.cond.not, label %47, label %49 -48: ; preds = %42 +47: ; preds = %42 %reass.sub = sub i32 %44, %26 - %49 = add i32 %reass.sub, 1 + %48 = add i32 %reass.sub, 1 br label %.critedge -50: ; preds = %42 - %51 = lshr i8 %45, 1 - %52 = xor i8 %51, %45 - %53 = and i8 %52, 1 - %.not28 = icmp eq i8 %53, 0 - br i1 %.not28, label %54, label %.critedge +49: ; preds = %42 + %50 = lshr i8 %45, 1 + %51 = xor i8 %50, %45 + %52 = and i8 %51, 1 + %.not28 = icmp eq i8 %52, 0 + br i1 %.not28, label %53, label %.critedge -54: ; preds = %50 - %55 = add i32 %26, 1 - %56 = sub i32 %55, %44 +53: ; preds = %49 + %54 = add i32 %26, 1 + %55 = sub i32 %54, %44 br label %.critedge -.critedge: ; preds = %50, %39, %34, %29, %24, %21, %1, %16, %11, %54, %48 - %.0 = phi i32 [ %49, %48 ], [ %56, %54 ], [ -1, %11 ], [ -1, %16 ], [ -1, %1 ], [ -1, %21 ], [ %26, %24 ], [ -1, %29 ], [ -1, %34 ], [ -1, %39 ], [ -1, %50 ] +.critedge: ; preds = %49, %39, %34, %29, %24, %21, %1, %16, %11, %53, %47 + %.0 = phi i32 [ %48, %47 ], [ %55, %53 ], [ -1, %11 ], [ -1, %16 ], [ -1, %1 ], [ -1, %21 ], [ %26, %24 ], [ -1, %29 ], [ -1, %34 ], [ -1, %39 ], [ -1, %49 ] ret i32 %.0 } diff --git a/bench/grpc/optimized/channel.cc.ll b/bench/grpc/optimized/channel.cc.ll index 4473b54cc66..66f52d540f9 100644 --- a/bench/grpc/optimized/channel.cc.ll +++ b/bench/grpc/optimized/channel.cc.ll @@ -1525,10 +1525,8 @@ if.then30: ; preds = %if.then22 %13 = zext nneg i32 %12 to i64 %conv = select i1 %tobool.i.i31.not, i64 4096, i64 %13 %call43 = call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %args, i64 33, ptr nonnull @.str.9) - %14 = and i16 %call43, 256 - %tobool.i.i38.not = icmp ne i16 %14, 0 - %15 = trunc i16 %call43 to i1 - %retval.0.i42 = and i1 %tobool.i.i38.not, %15 + %14 = and i16 %call43, 257 + %retval.0.i42 = icmp eq i16 %14, 257 %cmp49 = icmp eq ptr %target, null %cond = select i1 %cmp49, ptr @.str.10, ptr %target call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp50) #25 @@ -1546,7 +1544,7 @@ call.i43.noexc: ; preds = %if.then30 to label %invoke.cont52 unwind label %lpad.i lpad.i: ; preds = %.noexc - %16 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %channelz_node_target) #25 br label %lpad51.body @@ -1566,18 +1564,18 @@ invoke.cont.i: ; preds = %call.i49.noexc to label %invoke.cont55 unwind label %lpad5.i, !noalias !17 lpad.i50: ; preds = %call.i49.noexc - %17 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup br label %cleanup.action.i lpad5.i: ; preds = %invoke.cont.i - %18 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp.i48) #25, !noalias !17 br label %cleanup.action.i cleanup.action.i: ; preds = %lpad5.i, %lpad.i50 - %.pn.i = phi { ptr, i32 } [ %18, %lpad5.i ], [ %17, %lpad.i50 ] + %.pn.i = phi { ptr, i32 } [ %17, %lpad5.i ], [ %16, %lpad.i50 ] call void @_ZdlPv(ptr noundef nonnull %call.i4951) #29, !noalias !17 br label %ehcleanup78 @@ -1608,18 +1606,18 @@ invoke.cont73: ; preds = %invoke.cont71 %call74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9grpc_core11ChannelArgsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %args, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp62) #25 call void @_ZN9grpc_core11ChannelArgsD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp62) #25 %vtable_.i = getelementptr inbounds nuw i8, ptr %agg.tmp67, i64 8 - %19 = load ptr, ptr %vtable_.i, align 8 - %destroy.i = getelementptr inbounds nuw i8, ptr %19, i64 8 - %20 = load ptr, ptr %destroy.i, align 8 - %21 = load ptr, ptr %agg.tmp67, align 8 - invoke void %20(ptr noundef %21) + %18 = load ptr, ptr %vtable_.i, align 8 + %destroy.i = getelementptr inbounds nuw i8, ptr %18, i64 8 + %19 = load ptr, ptr %destroy.i, align 8 + %20 = load ptr, ptr %agg.tmp67, align 8 + invoke void %19(ptr noundef %20) to label %_ZN9grpc_core13RefCountedPtrINS_8channelz11ChannelNodeEED2Ev.exit unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %invoke.cont73 - %22 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } catch ptr null - %23 = extractvalue { ptr, i32 } %22, 0 - call void @__clang_call_terminate(ptr %23) #27 + %22 = extractvalue { ptr, i32 } %21, 0 + call void @__clang_call_terminate(ptr %22) #27 unreachable _ZN9grpc_core13RefCountedPtrINS_8channelz11ChannelNodeEED2Ev.exit: ; preds = %invoke.cont73 @@ -1628,65 +1626,65 @@ _ZN9grpc_core13RefCountedPtrINS_8channelz11ChannelNodeEED2Ev.exit: ; preds = %in br label %if.end80 lpad51: ; preds = %call.i43.noexc, %if.then30 - %24 = landingpad { ptr, i32 } + %23 = landingpad { ptr, i32 } cleanup br label %lpad51.body lpad51.body: ; preds = %lpad.i, %lpad51 - %eh.lpad-body = phi { ptr, i32 } [ %24, %lpad51 ], [ %16, %lpad.i ] + %eh.lpad-body = phi { ptr, i32 } [ %23, %lpad51 ], [ %15, %lpad.i ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp50) #25 br label %common.resume lpad54: ; preds = %invoke.cont52 - %25 = landingpad { ptr, i32 } + %24 = landingpad { ptr, i32 } cleanup br label %ehcleanup78 lpad68: ; preds = %invoke.cont65 - %26 = landingpad { ptr, i32 } + %25 = landingpad { ptr, i32 } cleanup br label %ehcleanup77.thread lpad72: ; preds = %invoke.cont71 - %27 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } cleanup %vtable_.i60 = getelementptr inbounds nuw i8, ptr %agg.tmp67, i64 8 - %28 = load ptr, ptr %vtable_.i60, align 8 - %destroy.i61 = getelementptr inbounds nuw i8, ptr %28, i64 8 - %29 = load ptr, ptr %destroy.i61, align 8 - %30 = load ptr, ptr %agg.tmp67, align 8 - invoke void %29(ptr noundef %30) + %27 = load ptr, ptr %vtable_.i60, align 8 + %destroy.i61 = getelementptr inbounds nuw i8, ptr %27, i64 8 + %28 = load ptr, ptr %destroy.i61, align 8 + %29 = load ptr, ptr %agg.tmp67, align 8 + invoke void %28(ptr noundef %29) to label %ehcleanup77.thread unwind label %terminate.lpad.i62 terminate.lpad.i62: ; preds = %lpad72 - %31 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } catch ptr null - %32 = extractvalue { ptr, i32 } %31, 0 - call void @__clang_call_terminate(ptr %32) #27 + %31 = extractvalue { ptr, i32 } %30, 0 + call void @__clang_call_terminate(ptr %31) #27 unreachable ehcleanup77.thread: ; preds = %lpad68, %lpad72 - %.pn10 = phi { ptr, i32 } [ %26, %lpad68 ], [ %27, %lpad72 ] + %.pn10 = phi { ptr, i32 } [ %25, %lpad68 ], [ %26, %lpad72 ] call void @_ZN9grpc_core11ChannelArgsD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp63) #25 br label %ehcleanup78 if.then.i66: ; preds = %invoke.cont60, %invoke.cont61, %invoke.cont55 - %33 = landingpad { ptr, i32 } + %32 = landingpad { ptr, i32 } cleanup %refs_.i.i67 = getelementptr inbounds nuw i8, ptr %call.i4951, i64 8 - %34 = atomicrmw sub ptr %refs_.i.i67, i64 1 acq_rel, align 8 - %cmp.i.i.i68 = icmp eq i64 %34, 1 + %33 = atomicrmw sub ptr %refs_.i.i67, i64 1 acq_rel, align 8 + %cmp.i.i.i68 = icmp eq i64 %33, 1 br i1 %cmp.i.i.i68, label %if.then.i.i70, label %ehcleanup78 if.then.i.i70: ; preds = %if.then.i66 %vtable.i.i.i71 = load ptr, ptr %call.i4951, align 8 %vfn.i.i.i72 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i71, i64 8 - %35 = load ptr, ptr %vfn.i.i.i72, align 8 - call void %35(ptr noundef nonnull align 8 dereferenceable(64) %call.i4951) #25 + %34 = load ptr, ptr %vfn.i.i.i72, align 8 + call void %34(ptr noundef nonnull align 8 dereferenceable(64) %call.i4951) #25 br label %ehcleanup78 ehcleanup78: ; preds = %if.then.i.i70, %if.then.i66, %ehcleanup77.thread, %lpad54, %cleanup.action.i - %.pn10.pn.pn = phi { ptr, i32 } [ %25, %lpad54 ], [ %.pn.i, %cleanup.action.i ], [ %.pn10, %ehcleanup77.thread ], [ %33, %if.then.i66 ], [ %33, %if.then.i.i70 ] + %.pn10.pn.pn = phi { ptr, i32 } [ %24, %lpad54 ], [ %.pn.i, %cleanup.action.i ], [ %.pn10, %ehcleanup77.thread ], [ %32, %if.then.i66 ], [ %32, %if.then.i.i70 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %channelz_node_target) #25 br label %common.resume @@ -1699,40 +1697,40 @@ if.end80: ; preds = %if.then22, %_ZN9grp invoke.cont.i.i: ; preds = %if.end80 %vtable_.i.i.i = getelementptr inbounds nuw i8, ptr %agg.tmp2.i.i, i64 8 - %36 = load ptr, ptr %vtable_.i.i.i, align 8, !noalias !23 - %destroy.i.i.i = getelementptr inbounds nuw i8, ptr %36, i64 8 - %37 = load ptr, ptr %destroy.i.i.i, align 8 - %38 = load ptr, ptr %agg.tmp2.i.i, align 8, !noalias !23 - invoke void %37(ptr noundef %38) + %35 = load ptr, ptr %vtable_.i.i.i, align 8, !noalias !23 + %destroy.i.i.i = getelementptr inbounds nuw i8, ptr %35, i64 8 + %36 = load ptr, ptr %destroy.i.i.i, align 8 + %37 = load ptr, ptr %agg.tmp2.i.i, align 8, !noalias !23 + invoke void %36(ptr noundef %37) to label %_ZNK9grpc_core11ChannelArgs9SetObjectINS_9TransportEEES0_PT_.exit unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %invoke.cont.i.i - %39 = landingpad { ptr, i32 } + %38 = landingpad { ptr, i32 } catch ptr null - %40 = extractvalue { ptr, i32 } %39, 0 - call void @__clang_call_terminate(ptr %40) #27 + %39 = extractvalue { ptr, i32 } %38, 0 + call void @__clang_call_terminate(ptr %39) #27 unreachable lpad.i.i: ; preds = %if.end80 - %41 = landingpad { ptr, i32 } + %40 = landingpad { ptr, i32 } cleanup %vtable_.i1.i.i = getelementptr inbounds nuw i8, ptr %agg.tmp2.i.i, i64 8 - %42 = load ptr, ptr %vtable_.i1.i.i, align 8, !noalias !23 - %destroy.i2.i.i = getelementptr inbounds nuw i8, ptr %42, i64 8 - %43 = load ptr, ptr %destroy.i2.i.i, align 8 - %44 = load ptr, ptr %agg.tmp2.i.i, align 8, !noalias !23 - invoke void %43(ptr noundef %44) + %41 = load ptr, ptr %vtable_.i1.i.i, align 8, !noalias !23 + %destroy.i2.i.i = getelementptr inbounds nuw i8, ptr %41, i64 8 + %42 = load ptr, ptr %destroy.i2.i.i, align 8 + %43 = load ptr, ptr %agg.tmp2.i.i, align 8, !noalias !23 + invoke void %42(ptr noundef %43) to label %common.resume unwind label %terminate.lpad.i3.i.i terminate.lpad.i3.i.i: ; preds = %lpad.i.i - %45 = landingpad { ptr, i32 } + %44 = landingpad { ptr, i32 } catch ptr null - %46 = extractvalue { ptr, i32 } %45, 0 - call void @__clang_call_terminate(ptr %46) #27 + %45 = extractvalue { ptr, i32 } %44, 0 + call void @__clang_call_terminate(ptr %45) #27 unreachable common.resume: ; preds = %ehcleanup, %lpad51.body, %ehcleanup78, %lpad83, %lpad86, %lpad.i.i - %common.resume.op = phi { ptr, i32 } [ %41, %lpad.i.i ], [ %49, %lpad86 ], [ %48, %lpad83 ], [ %.pn10.pn.pn, %ehcleanup78 ], [ %eh.lpad-body, %lpad51.body ], [ %.pn, %ehcleanup ] + %common.resume.op = phi { ptr, i32 } [ %40, %lpad.i.i ], [ %48, %lpad86 ], [ %47, %lpad83 ], [ %.pn10.pn.pn, %ehcleanup78 ], [ %eh.lpad-body, %lpad51.body ], [ %.pn, %ehcleanup ] resume { ptr, i32 } %common.resume.op _ZNK9grpc_core11ChannelArgs9SetObjectINS_9TransportEEES0_PT_.exit: ; preds = %invoke.cont.i.i @@ -1747,9 +1745,9 @@ invoke.cont84: ; preds = %_ZNK9grpc_core11Cha to label %invoke.cont87 unwind label %lpad86 invoke.cont87: ; preds = %invoke.cont84 - %47 = load atomic i64, ptr @_ZN9grpc_core17CoreConfiguration7config_E acquire, align 8 - %atomic-temp.i.0.i.i = inttoptr i64 %47 to ptr - %cmp.not.i75 = icmp eq i64 %47, 0 + %46 = load atomic i64, ptr @_ZN9grpc_core17CoreConfiguration7config_E acquire, align 8 + %atomic-temp.i.0.i.i = inttoptr i64 %46 to ptr + %cmp.not.i75 = icmp eq i64 %46, 0 br i1 %cmp.not.i75, label %if.end.i77, label %invoke.cont89 if.end.i77: ; preds = %invoke.cont87 @@ -1770,13 +1768,13 @@ if.then95: ; preds = %invoke.cont93 br label %cleanup lpad83: ; preds = %_ZNK9grpc_core11ChannelArgs9SetObjectINS_9TransportEEES0_PT_.exit - %48 = landingpad { ptr, i32 } + %47 = landingpad { ptr, i32 } cleanup call void @_ZN9grpc_core11ChannelArgsD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp82) #25 br label %common.resume lpad86: ; preds = %if.end.i77, %if.end98, %invoke.cont89, %invoke.cont84 - %49 = landingpad { ptr, i32 } + %48 = landingpad { ptr, i32 } cleanup call void @_ZN9grpc_core23ChannelStackBuilderImplD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %builder) #25 br label %common.resume @@ -1788,12 +1786,12 @@ if.end98: ; preds = %invoke.cont93 cleanup: ; preds = %if.then95, %if.end98 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core19ChannelStackBuilderE, i64 16), ptr %builder, align 8 %stack_.i.i = getelementptr inbounds nuw i8, ptr %builder, i64 64 - %50 = load ptr, ptr %stack_.i.i, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %50, null + %49 = load ptr, ptr %stack_.i.i, align 8 + %tobool.not.i.i.i.i.i = icmp eq ptr %49, null br i1 %tobool.not.i.i.i.i.i, label %_ZN9grpc_core23ChannelStackBuilderImplD2Ev.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %cleanup - call void @_ZdlPv(ptr noundef nonnull %50) #29 + call void @_ZdlPv(ptr noundef nonnull %49) #29 br label %_ZN9grpc_core23ChannelStackBuilderImplD2Ev.exit _ZN9grpc_core23ChannelStackBuilderImplD2Ev.exit: ; preds = %cleanup, %if.then.i.i.i.i.i diff --git a/bench/grpc/optimized/chttp2_transport.cc.ll b/bench/grpc/optimized/chttp2_transport.cc.ll index d6beafec528..8d91073020c 100644 --- a/bench/grpc/optimized/chttp2_transport.cc.ll +++ b/bench/grpc/optimized/chttp2_transport.cc.ll @@ -3512,7 +3512,7 @@ lpad77.loopexit: ; preds = %if.then300.i, %if.t cleanup br label %ehcleanup156 -lpad77.loopexit.split-lp: ; preds = %invoke.cont78, %invoke.cont82, %if.then, %invoke.cont92, %if.end, %for.end103, %if.then.i, %if.then.i105, %if.then.i117, %if.then.i130, %invoke.cont112, %if.then6.i, %if.end10.i, %if.then19.i, %if.end20.i, %call25.i.noexc, %call36.i.noexc, %call54.i.noexc, %call84.i.noexc, %call109.i.noexc, %call.i149.i.noexc, %_ZN9grpc_coremlENS_8DurationEd.exit.thread.i, %call161.i.noexc, %if.end179.i, %if.then188.i, %if.end227.i, %call230.i.noexc, %call239.i.noexc, %call249.i.noexc, %call262.i.noexc, %if.then280.i, %if.then.i323.i, %if.end373.i, %call376.i.noexc, %call385.i.noexc, %208, %.noexc184 +lpad77.loopexit.split-lp: ; preds = %invoke.cont78, %invoke.cont82, %if.then, %invoke.cont92, %if.end, %for.end103, %if.then.i, %if.then.i105, %if.then.i117, %if.then.i130, %invoke.cont112, %if.then6.i, %if.end10.i, %if.then19.i, %if.end20.i, %call25.i.noexc, %call36.i.noexc, %call54.i.noexc, %call84.i.noexc, %call109.i.noexc, %call.i149.i.noexc, %_ZN9grpc_coremlENS_8DurationEd.exit.thread.i, %call161.i.noexc, %if.end179.i, %if.then188.i, %if.end227.i, %call230.i.noexc, %call239.i.noexc, %call249.i.noexc, %call262.i.noexc, %if.then280.i, %if.then.i323.i, %if.end373.i, %call376.i.noexc, %call385.i.noexc, %207, %.noexc184 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %ehcleanup156 @@ -3823,18 +3823,16 @@ _ZN9grpc_coremlENS_8DurationEd.exit.thread.i: ; preds = %_ZN9grpc_coremlENS_ to label %call161.i.noexc unwind label %lpad77.loopexit.split-lp call161.i.noexc: ; preds = %_ZN9grpc_coremlENS_8DurationEd.exit.thread.i - %110 = and i16 %call161.i162, 256 - %tobool.i.i170.not.i = icmp ne i16 %110, 0 - %111 = trunc i16 %call161.i162 to i1 - %retval.0.i174.i = and i1 %tobool.i.i170.not.i, %111 + %110 = and i16 %call161.i162, 257 + %retval.0.i174.i = icmp eq i16 %110, 257 %frombool167.i = zext i1 %retval.0.i174.i to i8 store i8 %frombool167.i, ptr %enable_preferred_rx_crypto_frame_advertisement, align 1 %call169.i163 = invoke i64 @_ZNK9grpc_core11ChannelArgs6GetIntESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args, i64 32, ptr nonnull @.str.99) to label %call169.i.noexc unwind label %lpad77.loopexit.split-lp call169.i.noexc: ; preds = %call161.i.noexc - %112 = and i64 %call169.i163, 4294967296 - %tobool.i.i178.not.i = icmp eq i64 %112, 0 + %111 = and i64 %call169.i163, 4294967296 + %tobool.i.i178.not.i = icmp eq i64 %111, 0 br i1 %tobool.i.i178.not.i, label %if.end179.i, label %if.then173.i if.then173.i: ; preds = %call169.i.noexc @@ -3846,57 +3844,57 @@ if.then173.i: ; preds = %call169.i.noexc if.end179.i: ; preds = %if.then173.i, %call169.i.noexc %conv.sink.i = phi i64 [ %conv.i, %if.then173.i ], [ 32, %call169.i.noexc ] - %113 = getelementptr inbounds nuw i8, ptr %this, i64 1936 - store i64 %conv.sink.i, ptr %113, align 8 + %112 = getelementptr inbounds nuw i8, ptr %this, i64 1936 + store i64 %conv.sink.i, ptr %112, align 8 %call182.i164 = invoke i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args, i64 20, ptr nonnull @.str.100) to label %call182.i.noexc unwind label %lpad77.loopexit.split-lp call182.i.noexc: ; preds = %if.end179.i - %114 = and i16 %call182.i164, 256 - %tobool.i.i184.not.i = icmp eq i16 %114, 0 - %115 = trunc i16 %call182.i164 to i1 - %retval.0.i188.i = or i1 %tobool.i.i184.not.i, %115 + %113 = and i16 %call182.i164, 256 + %tobool.i.i184.not.i = icmp eq i16 %113, 0 + %114 = trunc i16 %call182.i164 to i1 + %retval.0.i188.i = or i1 %tobool.i.i184.not.i, %114 br i1 %retval.0.i188.i, label %if.then188.i, label %if.end227.i if.then188.i: ; preds = %call182.i.noexc - %116 = load ptr, ptr %ep3, align 8 - %call192.i165 = invoke { i64, ptr } @_Z31grpc_endpoint_get_local_addressP13grpc_endpoint(ptr noundef %116) + %115 = load ptr, ptr %ep3, align 8 + %call192.i165 = invoke { i64, ptr } @_Z31grpc_endpoint_get_local_addressP13grpc_endpoint(ptr noundef %115) to label %call192.i.noexc unwind label %lpad77.loopexit.split-lp call192.i.noexc: ; preds = %if.then188.i - %117 = extractvalue { i64, ptr } %call192.i165, 0 - %118 = extractvalue { i64, ptr } %call192.i165, 1 + %116 = extractvalue { i64, ptr } %call192.i165, 0 + %117 = extractvalue { i64, ptr } %call192.i165, 1 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp193.i) #37 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %agg.tmp.i.i) - %call.i189.i = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %117, ptr %118) #37 - %119 = extractvalue { i64, ptr } %call.i189.i, 0 - %120 = extractvalue { i64, ptr } %call.i189.i, 1 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i.i, i64 %119, ptr %120) #37 - %121 = load i64, ptr %agg.tmp.i.i, align 8 - %122 = getelementptr inbounds nuw i8, ptr %agg.tmp.i.i, i64 8 - %123 = load ptr, ptr %122, align 8 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp190.i, i64 %121, ptr %123, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp193.i) + %call.i189.i = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %116, ptr %117) #37 + %118 = extractvalue { i64, ptr } %call.i189.i, 0 + %119 = extractvalue { i64, ptr } %call.i189.i, 1 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i.i, i64 %118, ptr %119) #37 + %120 = load i64, ptr %agg.tmp.i.i, align 8 + %121 = getelementptr inbounds nuw i8, ptr %agg.tmp.i.i, i64 8 + %122 = load ptr, ptr %121, align 8 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp190.i, i64 %120, ptr %122, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp193.i) to label %invoke.cont197.i unwind label %lpad.i142 invoke.cont197.i: ; preds = %call192.i.noexc call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp.i.i) - %124 = load ptr, ptr %peer_string, align 8 - %tobool.not.i.i.i = icmp eq ptr %124, null - %125 = load ptr, ptr %bytes.i.i, align 8 - %cond.i.i.i = select i1 %tobool.not.i.i.i, ptr %bytes5.i.i, ptr %125 - %126 = load i64, ptr %data.i.i, align 8 - %conv.i.i.i = and i64 %126, 255 - %cond.i2.i.i = select i1 %tobool.not.i.i.i, i64 %conv.i.i.i, i64 %126 + %123 = load ptr, ptr %peer_string, align 8 + %tobool.not.i.i.i = icmp eq ptr %123, null + %124 = load ptr, ptr %bytes.i.i, align 8 + %cond.i.i.i = select i1 %tobool.not.i.i.i, ptr %bytes5.i.i, ptr %124 + %125 = load i64, ptr %data.i.i, align 8 + %conv.i.i.i = and i64 %125, 255 + %cond.i2.i.i = select i1 %tobool.not.i.i.i, i64 %conv.i.i.i, i64 %125 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp199.i) #37 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %agg.tmp.i190.i) %call.i194.i = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %cond.i2.i.i, ptr %cond.i.i.i) #37 - %127 = extractvalue { i64, ptr } %call.i194.i, 0 - %128 = extractvalue { i64, ptr } %call.i194.i, 1 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i190.i, i64 %127, ptr %128) #37 - %129 = load i64, ptr %agg.tmp.i190.i, align 8 - %130 = getelementptr inbounds nuw i8, ptr %agg.tmp.i190.i, i64 8 - %131 = load ptr, ptr %130, align 8 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp194.i, i64 %129, ptr %131, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp199.i) + %126 = extractvalue { i64, ptr } %call.i194.i, 0 + %127 = extractvalue { i64, ptr } %call.i194.i, 1 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i190.i, i64 %126, ptr %127) #37 + %128 = load i64, ptr %agg.tmp.i190.i, align 8 + %129 = getelementptr inbounds nuw i8, ptr %agg.tmp.i190.i, i64 8 + %130 = load ptr, ptr %129, align 8 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp194.i, i64 %128, ptr %130, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp199.i) to label %invoke.cont213.i unwind label %lpad200.i invoke.cont213.i: ; preds = %invoke.cont197.i @@ -3905,15 +3903,15 @@ invoke.cont213.i: ; preds = %invoke.cont197.i %pc.sroa.2.0.piece_.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp203.i, i64 8 store ptr @.str.88, ptr %pc.sroa.2.0.piece_.sroa_idx.i.i, align 8 store i64 1, ptr %ref.tmp208.i, align 8 - %132 = getelementptr inbounds nuw i8, ptr %ref.tmp208.i, i64 8 - store ptr @.str.101, ptr %132, align 8 - %133 = load ptr, ptr %peer_string, align 8 - %tobool.not.i.i196.i = icmp eq ptr %133, null - %134 = load ptr, ptr %bytes.i.i, align 8 - %cond.i.i199.i = select i1 %tobool.not.i.i196.i, ptr %bytes5.i.i, ptr %134 - %135 = load i64, ptr %data.i.i, align 8 - %conv.i.i201.i = and i64 %135, 255 - %cond.i2.i202.i = select i1 %tobool.not.i.i196.i, i64 %conv.i.i201.i, i64 %135 + %131 = getelementptr inbounds nuw i8, ptr %ref.tmp208.i, i64 8 + store ptr @.str.101, ptr %131, align 8 + %132 = load ptr, ptr %peer_string, align 8 + %tobool.not.i.i196.i = icmp eq ptr %132, null + %133 = load ptr, ptr %bytes.i.i, align 8 + %cond.i.i199.i = select i1 %tobool.not.i.i196.i, ptr %bytes5.i.i, ptr %133 + %134 = load i64, ptr %data.i.i, align 8 + %conv.i.i201.i = and i64 %134, 255 + %cond.i2.i202.i = select i1 %tobool.not.i.i196.i, i64 %conv.i.i201.i, i64 %134 store i64 %cond.i2.i202.i, ptr %ref.tmp210.i, align 8 %pc.sroa.2.0.piece_.sroa_idx.i205.i = getelementptr inbounds nuw i8, ptr %ref.tmp210.i, i64 8 store ptr %cond.i.i199.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i205.i, align 8 @@ -3932,7 +3930,7 @@ call.i.i206.noexc.i: ; preds = %invoke.cont216.i if.end.i.i208.i: ; preds = %call.i.i206.noexc.i %refs_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i.i206209.i, i64 8 - %136 = atomicrmw add ptr %refs_.i.i.i.i.i, i64 1 monotonic, align 8, !noalias !40 + %135 = atomicrmw add ptr %refs_.i.i.i.i.i, i64 1 monotonic, align 8, !noalias !40 br label %invoke.cont219.i invoke.cont219.i: ; preds = %if.end.i.i208.i, %call.i.i206.noexc.i @@ -3941,24 +3939,24 @@ invoke.cont219.i: ; preds = %if.end.i.i208.i, %c to label %invoke.cont221.i unwind label %lpad220.i invoke.cont221.i: ; preds = %invoke.cont219.i - %137 = load ptr, ptr %ref.tmp189.i, align 8 + %136 = load ptr, ptr %ref.tmp189.i, align 8 store ptr null, ptr %ref.tmp189.i, align 8 - %138 = load ptr, ptr %channelz_socket, align 8 - store ptr %137, ptr %channelz_socket, align 8 - %cmp.not.i.i.i143 = icmp eq ptr %138, null + %137 = load ptr, ptr %channelz_socket, align 8 + store ptr %136, ptr %channelz_socket, align 8 + %cmp.not.i.i.i143 = icmp eq ptr %137, null br i1 %cmp.not.i.i.i143, label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit.i, label %if.then.i.i.i144 if.then.i.i.i144: ; preds = %invoke.cont221.i - %refs_.i.i.i.i = getelementptr inbounds nuw i8, ptr %138, i64 8 - %139 = atomicrmw sub ptr %refs_.i.i.i.i, i64 1 acq_rel, align 8 - %cmp.i.i.i.i.i = icmp eq i64 %139, 1 + %refs_.i.i.i.i = getelementptr inbounds nuw i8, ptr %137, i64 8 + %138 = atomicrmw sub ptr %refs_.i.i.i.i, i64 1 acq_rel, align 8 + %cmp.i.i.i.i.i = icmp eq i64 %138, 1 br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i148, label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEEaSEOS3_.exit.i if.then.i.i.i.i148: ; preds = %if.then.i.i.i144 - %vtable.i.i.i.i.i = load ptr, ptr %138, align 8 + %vtable.i.i.i.i.i = load ptr, ptr %137, align 8 %vfn.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i, i64 8 - %140 = load ptr, ptr %vfn.i.i.i.i.i, align 8 - call void %140(ptr noundef nonnull align 8 dereferenceable(64) %138) #37 + %139 = load ptr, ptr %vfn.i.i.i.i.i, align 8 + call void %139(ptr noundef nonnull align 8 dereferenceable(64) %137) #37 br label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEEaSEOS3_.exit.i _ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEEaSEOS3_.exit.i: ; preds = %if.then.i.i.i.i148, %if.then.i.i.i144 @@ -3968,33 +3966,33 @@ _ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEEaSEOS3_.exit.i: ; preds = if.then.i210.i: ; preds = %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEEaSEOS3_.exit.i %refs_.i.i.i = getelementptr inbounds nuw i8, ptr %.pr.i, i64 8 - %141 = atomicrmw sub ptr %refs_.i.i.i, i64 1 acq_rel, align 8 - %cmp.i.i.i.i145 = icmp eq i64 %141, 1 + %140 = atomicrmw sub ptr %refs_.i.i.i, i64 1 acq_rel, align 8 + %cmp.i.i.i.i145 = icmp eq i64 %140, 1 br i1 %cmp.i.i.i.i145, label %if.then.i.i211.i, label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit.i if.then.i.i211.i: ; preds = %if.then.i210.i %vtable.i.i.i.i146 = load ptr, ptr %.pr.i, align 8 %vfn.i.i.i.i147 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i146, i64 8 - %142 = load ptr, ptr %vfn.i.i.i.i147, align 8 - call void %142(ptr noundef nonnull align 8 dereferenceable(64) %.pr.i) #37 + %141 = load ptr, ptr %vfn.i.i.i.i147, align 8 + call void %141(ptr noundef nonnull align 8 dereferenceable(64) %.pr.i) #37 br label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit.i _ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit.i: ; preds = %if.then.i.i211.i, %if.then.i210.i, %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEEaSEOS3_.exit.i, %invoke.cont221.i - %143 = load ptr, ptr %ref.tmp217.i, align 8 - %cmp.not.i212.i = icmp eq ptr %143, null + %142 = load ptr, ptr %ref.tmp217.i, align 8 + %cmp.not.i212.i = icmp eq ptr %142, null br i1 %cmp.not.i212.i, label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNode8SecurityEED2Ev.exit.i, label %if.then.i213.i if.then.i213.i: ; preds = %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit.i - %refs_.i.i214.i = getelementptr inbounds nuw i8, ptr %143, i64 8 - %144 = atomicrmw sub ptr %refs_.i.i214.i, i64 1 acq_rel, align 8 - %cmp.i.i.i215.i = icmp eq i64 %144, 1 + %refs_.i.i214.i = getelementptr inbounds nuw i8, ptr %142, i64 8 + %143 = atomicrmw sub ptr %refs_.i.i214.i, i64 1 acq_rel, align 8 + %cmp.i.i.i215.i = icmp eq i64 %143, 1 br i1 %cmp.i.i.i215.i, label %if.then.i.i216.i, label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNode8SecurityEED2Ev.exit.i if.then.i.i216.i: ; preds = %if.then.i213.i - %vtable.i.i.i217.i = load ptr, ptr %143, align 8 + %vtable.i.i.i217.i = load ptr, ptr %142, align 8 %vfn.i.i.i218.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i217.i, i64 8 - %145 = load ptr, ptr %vfn.i.i.i218.i, align 8 - call void %145(ptr noundef nonnull align 8 dereferenceable(200) %143) #37 + %144 = load ptr, ptr %vfn.i.i.i218.i, align 8 + call void %144(ptr noundef nonnull align 8 dereferenceable(200) %142) #37 br label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNode8SecurityEED2Ev.exit.i _ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNode8SecurityEED2Ev.exit.i: ; preds = %if.then.i.i216.i, %if.then.i213.i, %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit.i @@ -4006,57 +4004,57 @@ _ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNode8SecurityEED2Ev.exit.i: ; p br label %if.end227.i lpad.i142: ; preds = %call192.i.noexc - %146 = landingpad { ptr, i32 } + %145 = landingpad { ptr, i32 } cleanup br label %eh.resume.i lpad200.i: ; preds = %invoke.cont197.i - %147 = landingpad { ptr, i32 } + %146 = landingpad { ptr, i32 } cleanup br label %ehcleanup224.i lpad206.i: ; preds = %invoke.cont213.i - %148 = landingpad { ptr, i32 } + %147 = landingpad { ptr, i32 } cleanup br label %ehcleanup223.i lpad218.i: ; preds = %invoke.cont216.i - %149 = landingpad { ptr, i32 } + %148 = landingpad { ptr, i32 } cleanup br label %ehcleanup.i lpad220.i: ; preds = %invoke.cont219.i - %150 = landingpad { ptr, i32 } + %149 = landingpad { ptr, i32 } cleanup - %151 = load ptr, ptr %ref.tmp217.i, align 8 - %cmp.not.i219.i = icmp eq ptr %151, null + %150 = load ptr, ptr %ref.tmp217.i, align 8 + %cmp.not.i219.i = icmp eq ptr %150, null br i1 %cmp.not.i219.i, label %ehcleanup.i, label %if.then.i220.i if.then.i220.i: ; preds = %lpad220.i - %refs_.i.i221.i = getelementptr inbounds nuw i8, ptr %151, i64 8 - %152 = atomicrmw sub ptr %refs_.i.i221.i, i64 1 acq_rel, align 8 - %cmp.i.i.i222.i = icmp eq i64 %152, 1 + %refs_.i.i221.i = getelementptr inbounds nuw i8, ptr %150, i64 8 + %151 = atomicrmw sub ptr %refs_.i.i221.i, i64 1 acq_rel, align 8 + %cmp.i.i.i222.i = icmp eq i64 %151, 1 br i1 %cmp.i.i.i222.i, label %if.then.i.i223.i, label %ehcleanup.i if.then.i.i223.i: ; preds = %if.then.i220.i - %vtable.i.i.i224.i = load ptr, ptr %151, align 8 + %vtable.i.i.i224.i = load ptr, ptr %150, align 8 %vfn.i.i.i225.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i224.i, i64 8 - %153 = load ptr, ptr %vfn.i.i.i225.i, align 8 - call void %153(ptr noundef nonnull align 8 dereferenceable(200) %151) #37 + %152 = load ptr, ptr %vfn.i.i.i225.i, align 8 + call void %152(ptr noundef nonnull align 8 dereferenceable(200) %150) #37 br label %ehcleanup.i ehcleanup.i: ; preds = %if.then.i.i223.i, %if.then.i220.i, %lpad220.i, %lpad218.i - %.pn.i = phi { ptr, i32 } [ %149, %lpad218.i ], [ %150, %lpad220.i ], [ %150, %if.then.i220.i ], [ %150, %if.then.i.i223.i ] + %.pn.i = phi { ptr, i32 } [ %148, %lpad218.i ], [ %149, %lpad220.i ], [ %149, %if.then.i220.i ], [ %149, %if.then.i.i223.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp202.i) #37 br label %ehcleanup223.i ehcleanup223.i: ; preds = %ehcleanup.i, %lpad206.i - %.pn.pn.i = phi { ptr, i32 } [ %.pn.i, %ehcleanup.i ], [ %148, %lpad206.i ] + %.pn.pn.i = phi { ptr, i32 } [ %.pn.i, %ehcleanup.i ], [ %147, %lpad206.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp194.i) #37 br label %ehcleanup224.i ehcleanup224.i: ; preds = %ehcleanup223.i, %lpad200.i - %.pn.pn.pn.i = phi { ptr, i32 } [ %.pn.pn.i, %ehcleanup223.i ], [ %147, %lpad200.i ] + %.pn.pn.pn.i = phi { ptr, i32 } [ %.pn.pn.i, %ehcleanup223.i ], [ %146, %lpad200.i ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp199.i) #37 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp190.i) #37 br label %eh.resume.i @@ -4066,20 +4064,20 @@ if.end227.i: ; preds = %_ZN9grpc_core13RefC to label %call230.i.noexc unwind label %lpad77.loopexit.split-lp call230.i.noexc: ; preds = %if.end227.i - %154 = and i16 %call230.i166, 256 - %tobool.i.i230.not.i = icmp eq i16 %154, 0 - %155 = trunc i16 %call230.i166 to i1 - %retval.0.i234.i = or i1 %tobool.i.i230.not.i, %155 + %153 = and i16 %call230.i166, 256 + %tobool.i.i230.not.i = icmp eq i16 %153, 0 + %154 = trunc i16 %call230.i166 to i1 + %retval.0.i234.i = or i1 %tobool.i.i230.not.i, %154 %frombool236.i = zext i1 %retval.0.i234.i to i8 store i8 %frombool236.i, ptr %ack_pings, align 4 %call239.i167 = invoke i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args, i64 16, ptr nonnull @.str.103) to label %call239.i.noexc unwind label %lpad77.loopexit.split-lp call239.i.noexc: ; preds = %call230.i.noexc - %156 = and i16 %call239.i167, 256 - %tobool.i.i238.not.i = icmp eq i16 %156, 0 - %157 = trunc i16 %call239.i167 to i1 - %retval.0.i242.i = or i1 %tobool.i.i238.not.i, %157 + %155 = and i16 %call239.i167, 256 + %tobool.i.i238.not.i = icmp eq i16 %155, 0 + %156 = trunc i16 %call239.i167 to i1 + %retval.0.i242.i = or i1 %tobool.i.i238.not.i, %156 %allow_tarpit.i = getelementptr inbounds nuw i8, ptr %this, i64 2912 %frombool245.i = zext i1 %retval.0.i242.i to i8 store i8 %frombool245.i, ptr %allow_tarpit.i, align 8 @@ -4087,22 +4085,22 @@ call239.i.noexc: ; preds = %call230.i.noexc to label %call249.i.noexc unwind label %lpad77.loopexit.split-lp call249.i.noexc: ; preds = %call239.i.noexc - %158 = extractvalue { i64, i8 } %call249.i168, 0 - %159 = extractvalue { i64, i8 } %call249.i168, 1 - %tobool.i.i246.i = trunc i8 %159 to i1 - %160 = trunc i64 %158 to i32 - %conv258.i = select i1 %tobool.i.i246.i, i32 %160, i32 100 + %157 = extractvalue { i64, i8 } %call249.i168, 0 + %158 = extractvalue { i64, i8 } %call249.i168, 1 + %tobool.i.i246.i = trunc i8 %158 to i1 + %159 = trunc i64 %157 to i32 + %conv258.i = select i1 %tobool.i.i246.i, i32 %159, i32 100 %min_tarpit_duration_ms.i = getelementptr inbounds nuw i8, ptr %this, i64 2904 store i32 %conv258.i, ptr %min_tarpit_duration_ms.i, align 8 %call262.i169 = invoke { i64, i8 } @_ZNK9grpc_core11ChannelArgs24GetDurationFromIntMillisESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args, i64 32, ptr nonnull @.str.105) to label %call262.i.noexc unwind label %lpad77.loopexit.split-lp call262.i.noexc: ; preds = %call249.i.noexc - %161 = extractvalue { i64, i8 } %call262.i169, 0 - %162 = extractvalue { i64, i8 } %call262.i169, 1 - %tobool.i.i253.i = trunc i8 %162 to i1 - %163 = trunc i64 %161 to i32 - %conv271.i = select i1 %tobool.i.i253.i, i32 %163, i32 1000 + %160 = extractvalue { i64, i8 } %call262.i169, 0 + %161 = extractvalue { i64, i8 } %call262.i169, 1 + %tobool.i.i253.i = trunc i8 %161 to i1 + %162 = trunc i64 %160 to i32 + %conv271.i = select i1 %tobool.i.i253.i, i32 %162, i32 1000 %max_tarpit_duration_ms.i = getelementptr inbounds nuw i8, ptr %this, i64 2908 store i32 %conv271.i, ptr %max_tarpit_duration_ms.i, align 4 %call274.i170 = invoke i64 @_ZNK9grpc_core11ChannelArgs6GetIntESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args, i64 22, ptr nonnull @.str.106) @@ -4110,8 +4108,8 @@ call262.i.noexc: ; preds = %call249.i.noexc call274.i.noexc: ; preds = %call262.i.noexc %ref.tmp272.sroa.0.0.extract.trunc.i = trunc i64 %call274.i170 to i32 - %164 = and i64 %call274.i170, 6442450944 - %cmp279.not.i = icmp eq i64 %164, 4294967296 + %163 = and i64 %call274.i170, 6442450944 + %cmp279.not.i = icmp eq i64 %163, 4294967296 br i1 %cmp279.not.i, label %if.end295.i, label %if.then280.i if.then280.i: ; preds = %call274.i.noexc @@ -4120,20 +4118,20 @@ if.then280.i: ; preds = %call274.i.noexc call285.i.noexc: ; preds = %if.then280.i %ref.tmp283.sroa.0.0.extract.trunc.i = trunc i64 %call285.i171 to i32 - %165 = and i64 %call285.i171, 4294967296 - %tobool.i.i267.not.i = icmp eq i64 %165, 0 - %166 = sitofp i32 %ref.tmp283.sroa.0.0.extract.trunc.i to double - %167 = fmul double %166, 8.000000e-01 - %168 = fptosi double %167 to i32 - %169 = call i32 @llvm.smax.i32(i32 %168, i32 8192) - %.sroa.speculated.i = select i1 %tobool.i.i267.not.i, i32 8192, i32 %169 + %164 = and i64 %call285.i171, 4294967296 + %tobool.i.i267.not.i = icmp eq i64 %164, 0 + %165 = sitofp i32 %ref.tmp283.sroa.0.0.extract.trunc.i to double + %166 = fmul double %165, 8.000000e-01 + %167 = fptosi double %166 to i32 + %168 = call i32 @llvm.smax.i32(i32 %167, i32 8192) + %.sroa.speculated.i = select i1 %tobool.i.i267.not.i, i32 8192, i32 %168 br label %if.end295.i if.end295.i: ; preds = %call285.i.noexc, %call274.i.noexc %retval.0.i263.sink.i = phi i32 [ %.sroa.speculated.i, %call285.i.noexc ], [ %ref.tmp272.sroa.0.0.extract.trunc.i, %call274.i.noexc ] store i32 %retval.0.i263.sink.i, ptr %max_header_list_size_soft_limit, align 4 %idxprom.i = zext i1 %is_client to i64 - %170 = getelementptr inbounds nuw i8, ptr %agg.tmp.i310.i, i64 8 + %169 = getelementptr inbounds nuw i8, ptr %agg.tmp.i310.i, i64 8 %.str.114..str.115.i = select i1 %is_client, ptr @.str.114, ptr @.str.115 br label %for.body.i @@ -4142,8 +4140,8 @@ for.body.i: ; preds = %for.inc.i, %if.end2 %arrayidx.i = getelementptr inbounds nuw [6 x %struct.anon.421], ptr @_ZZL17read_channel_argsP21grpc_chttp2_transportRKN9grpc_core11ChannelArgsEbE12settings_map, i64 0, i64 %i.0380.i %availability.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 32 %arrayidx298.i = getelementptr inbounds nuw [2 x i8], ptr %availability.i, i64 0, i64 %idxprom.i - %171 = load i8, ptr %arrayidx298.i, align 1 - %tobool299.i = trunc i8 %171 to i1 + %170 = load i8, ptr %arrayidx298.i, align 1 + %tobool299.i = trunc i8 %170 to i1 %agg.tmp302.sroa.0.0.copyload.i = load i64, ptr %arrayidx.i, align 8 %agg.tmp302.sroa.2.0.channel_arg_name.sroa_idx.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 %agg.tmp302.sroa.2.0.copyload.i = load ptr, ptr %agg.tmp302.sroa.2.0.channel_arg_name.sroa_idx.i, align 8 @@ -4156,8 +4154,8 @@ if.then300.i: ; preds = %for.body.i call303.i.noexc: ; preds = %if.then300.i %ref.tmp301.sroa.0.0.extract.trunc.i = trunc i64 %call303.i172 to i32 %default_value.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 20 - %172 = and i64 %call303.i172, 4294967296 - %tobool.i.i274.not.i = icmp eq i64 %172, 0 + %171 = and i64 %call303.i172, 4294967296 + %tobool.i.i274.not.i = icmp eq i64 %171, 0 %__u.val.i276.i = load i32, ptr %default_value.i, align 4 %retval.0.i277.i = select i1 %tobool.i.i274.not.i, i32 %__u.val.i276.i, i32 %ref.tmp301.sroa.0.0.extract.trunc.i %cmp307.i = icmp sgt i32 %retval.0.i277.i, -1 @@ -4165,35 +4163,35 @@ call303.i.noexc: ; preds = %if.then300.i if.then308.i: ; preds = %call303.i.noexc %min.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 24 - %173 = load i32, ptr %min.i, align 8 + %172 = load i32, ptr %min.i, align 8 %max.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 28 - %174 = load i32, ptr %max.i, align 4 - %cmp.i278.i = icmp slt i32 %retval.0.i277.i, %173 - %max.val.i279.i = call i32 @llvm.smin.i32(i32 %174, i32 %retval.0.i277.i) - %retval.0.i280.i = select i1 %cmp.i278.i, i32 %173, i32 %max.val.i279.i + %173 = load i32, ptr %max.i, align 4 + %cmp.i278.i = icmp slt i32 %retval.0.i277.i, %172 + %max.val.i279.i = call i32 @llvm.smin.i32(i32 %173, i32 %retval.0.i277.i) + %retval.0.i280.i = select i1 %cmp.i278.i, i32 %172, i32 %max.val.i279.i %setting_id.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 16 - %175 = load i32, ptr %setting_id.i, align 8 - %idxprom.i.i = zext i32 %175 to i64 + %174 = load i32, ptr %setting_id.i, align 8 + %idxprom.i.i = zext i32 %174 to i64 %arrayidx.i.i = getelementptr inbounds nuw [8 x %struct.grpc_chttp2_setting_parameters], ptr @grpc_chttp2_settings_parameters, i64 0, i64 %idxprom.i.i %min_value.i.i = getelementptr inbounds nuw i8, ptr %arrayidx.i.i, i64 12 - %176 = load i32, ptr %min_value.i.i, align 4 + %175 = load i32, ptr %min_value.i.i, align 4 %max_value.i.i = getelementptr inbounds nuw i8, ptr %arrayidx.i.i, i64 16 - %177 = load i32, ptr %max_value.i.i, align 16 - %cmp.i.i281.i = icmp ult i32 %retval.0.i280.i, %176 - %max.val.i.i.i = call i32 @llvm.umin.i32(i32 %177, i32 %retval.0.i280.i) - %retval.0.i.i.i = select i1 %cmp.i.i281.i, i32 %176, i32 %max.val.i.i.i + %176 = load i32, ptr %max_value.i.i, align 16 + %cmp.i.i281.i = icmp ult i32 %retval.0.i280.i, %175 + %max.val.i.i.i = call i32 @llvm.umin.i32(i32 %176, i32 %retval.0.i280.i) + %retval.0.i.i.i = select i1 %cmp.i.i281.i, i32 %175, i32 %max.val.i.i.i %cmp.not.i282.i = icmp eq i32 %retval.0.i.i.i, %retval.0.i280.i br i1 %cmp.not.i282.i, label %if.end.i.i141, label %if.then.i283.i if.then.i283.i: ; preds = %if.then308.i - %178 = load ptr, ptr %arrayidx.i.i, align 16 - invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.12, i32 noundef 1215, i32 noundef 1, ptr noundef nonnull @.str.122, ptr noundef %178, i32 noundef %retval.0.i280.i, i32 noundef %retval.0.i.i.i) + %177 = load ptr, ptr %arrayidx.i.i, align 16 + invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.12, i32 noundef 1215, i32 noundef 1, ptr noundef nonnull @.str.122, ptr noundef %177, i32 noundef %retval.0.i280.i, i32 noundef %retval.0.i.i.i) to label %if.end.i.i141 unwind label %lpad77.loopexit if.end.i.i141: ; preds = %if.then.i283.i, %if.then308.i %arrayidx3.i.i = getelementptr inbounds nuw [8 x i32], ptr %arrayidx1.i119, i64 0, i64 %idxprom.i.i - %179 = load i32, ptr %arrayidx3.i.i, align 4 - %cmp4.not.i.i = icmp eq i32 %retval.0.i.i.i, %179 + %178 = load i32, ptr %arrayidx3.i.i, align 4 + %cmp4.not.i.i = icmp eq i32 %retval.0.i.i.i, %178 br i1 %cmp4.not.i.i, label %_ZL20queue_setting_updateP21grpc_chttp2_transport22grpc_chttp2_setting_idj.exit.i, label %if.then5.i.i if.then5.i.i: ; preds = %if.end.i.i141 @@ -4202,7 +4200,7 @@ if.then5.i.i: ; preds = %if.end.i.i141 br label %_ZL20queue_setting_updateP21grpc_chttp2_transport22grpc_chttp2_setting_idj.exit.i _ZL20queue_setting_updateP21grpc_chttp2_transport22grpc_chttp2_setting_idj.exit.i: ; preds = %if.then5.i.i, %if.end.i.i141 - %cmp311.i = icmp eq i32 %175, 2 + %cmp311.i = icmp eq i32 %174, 2 br i1 %cmp311.i, label %if.then312.i, label %for.inc.i if.then312.i: ; preds = %_ZL20queue_setting_updateP21grpc_chttp2_transport22grpc_chttp2_setting_idj.exit.i @@ -4211,8 +4209,8 @@ if.then312.i: ; preds = %_ZL20queue_setting_ if.else314.i: ; preds = %call303.i.noexc %setting_id315.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 16 - %180 = load i32, ptr %setting_id315.i, align 8 - %cmp316.i = icmp eq i32 %180, 5 + %179 = load i32, ptr %setting_id315.i, align 8 + %cmp316.i = icmp eq i32 %179, 5 br i1 %cmp316.i, label %if.then317.i, label %for.inc.i if.then317.i: ; preds = %if.else314.i @@ -4221,8 +4219,8 @@ if.then317.i: ; preds = %if.else314.i call321.i.noexc: ; preds = %if.then317.i %ref.tmp319.sroa.0.0.extract.trunc.i = trunc i64 %call321.i174 to i32 - %181 = and i64 %call321.i174, 4294967296 - %tobool.i.i287.not.i = icmp eq i64 %181, 0 + %180 = and i64 %call321.i174, 4294967296 + %tobool.i.i287.not.i = icmp eq i64 %180, 0 %retval.0.i290.i = select i1 %tobool.i.i287.not.i, i32 %__u.val.i276.i, i32 %ref.tmp319.sroa.0.0.extract.trunc.i %cmp329.i = icmp ult i32 %retval.0.i290.i, 1717986918 %conv328.i = uitofp nneg i32 %retval.0.i290.i to double @@ -4234,28 +4232,28 @@ call321.i.noexc: ; preds = %if.then317.i if.then338.i: ; preds = %call321.i.noexc %min340.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 24 - %182 = load i32, ptr %min340.i, align 8 + %181 = load i32, ptr %min340.i, align 8 %max341.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 28 - %183 = load i32, ptr %max341.i, align 4 - %cmp.i291.i = icmp slt i32 %cond336.i, %182 - %max.val.i292.i = call i32 @llvm.smin.i32(i32 %183, i32 %cond336.i) - %retval.0.i293.i = select i1 %cmp.i291.i, i32 %182, i32 %max.val.i292.i - %184 = load i32, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 172), align 4 - %185 = load i32, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 176), align 16 - %cmp.i.i298.i = icmp ult i32 %retval.0.i293.i, %184 - %max.val.i.i299.i = call i32 @llvm.umin.i32(i32 %185, i32 %retval.0.i293.i) - %retval.0.i.i300.i = select i1 %cmp.i.i298.i, i32 %184, i32 %max.val.i.i299.i + %182 = load i32, ptr %max341.i, align 4 + %cmp.i291.i = icmp slt i32 %cond336.i, %181 + %max.val.i292.i = call i32 @llvm.smin.i32(i32 %182, i32 %cond336.i) + %retval.0.i293.i = select i1 %cmp.i291.i, i32 %181, i32 %max.val.i292.i + %183 = load i32, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 172), align 4 + %184 = load i32, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 176), align 16 + %cmp.i.i298.i = icmp ult i32 %retval.0.i293.i, %183 + %max.val.i.i299.i = call i32 @llvm.umin.i32(i32 %184, i32 %retval.0.i293.i) + %retval.0.i.i300.i = select i1 %cmp.i.i298.i, i32 %183, i32 %max.val.i.i299.i %cmp.not.i301.i = icmp eq i32 %retval.0.i.i300.i, %retval.0.i293.i br i1 %cmp.not.i301.i, label %if.end.i303.i, label %if.then.i302.i if.then.i302.i: ; preds = %if.then338.i - %186 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 160), align 16 - invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.12, i32 noundef 1215, i32 noundef 1, ptr noundef nonnull @.str.122, ptr noundef %186, i32 noundef %retval.0.i293.i, i32 noundef %retval.0.i.i300.i) + %185 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 160), align 16 + invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.12, i32 noundef 1215, i32 noundef 1, ptr noundef nonnull @.str.122, ptr noundef %185, i32 noundef %retval.0.i293.i, i32 noundef %retval.0.i.i300.i) to label %if.end.i303.i unwind label %lpad77.loopexit if.end.i303.i: ; preds = %if.then.i302.i, %if.then338.i - %187 = load i32, ptr %arrayidx3.i120, align 4 - %cmp4.not.i306.i = icmp eq i32 %retval.0.i.i300.i, %187 + %186 = load i32, ptr %arrayidx3.i120, align 4 + %cmp4.not.i306.i = icmp eq i32 %retval.0.i.i300.i, %186 br i1 %cmp4.not.i306.i, label %for.inc.i, label %if.then5.i307.i if.then5.i307.i: ; preds = %if.end.i303.i @@ -4274,12 +4272,12 @@ if.then350.i: ; preds = %call349.i.noexc call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp353.i) #37 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %agg.tmp.i310.i) %call.i314.i = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %agg.tmp302.sroa.0.0.copyload.i, ptr %agg.tmp302.sroa.2.0.copyload.i) #37 - %188 = extractvalue { i64, ptr } %call.i314.i, 0 - %189 = extractvalue { i64, ptr } %call.i314.i, 1 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i310.i, i64 %188, ptr %189) #37 - %190 = load i64, ptr %agg.tmp.i310.i, align 8 - %191 = load ptr, ptr %170, align 8 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp351.i, i64 %190, ptr %191, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp353.i) + %187 = extractvalue { i64, ptr } %call.i314.i, 0 + %188 = extractvalue { i64, ptr } %call.i314.i, 1 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i310.i, i64 %187, ptr %188) #37 + %189 = load i64, ptr %agg.tmp.i310.i, align 8 + %190 = load ptr, ptr %169, align 8 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp351.i, i64 %189, ptr %190, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp353.i) to label %invoke.cont355.i unwind label %lpad354.i invoke.cont355.i: ; preds = %if.then350.i @@ -4294,12 +4292,12 @@ invoke.cont364.i: ; preds = %invoke.cont355.i br label %for.inc.i lpad354.i: ; preds = %if.then350.i - %192 = landingpad { ptr, i32 } + %191 = landingpad { ptr, i32 } cleanup br label %eh.resume.i lpad363.i: ; preds = %invoke.cont355.i - %193 = landingpad { ptr, i32 } + %192 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp351.i) #37 br label %eh.resume.i @@ -4310,26 +4308,26 @@ for.inc.i: ; preds = %invoke.cont364.i, % br i1 %exitcond.not.i, label %for.end.i, label %for.body.i, !llvm.loop !44 for.end.i: ; preds = %for.inc.i - %194 = load i8, ptr %enable_preferred_rx_crypto_frame_advertisement, align 1 - %tobool370.i = trunc i8 %194 to i1 + %193 = load i8, ptr %enable_preferred_rx_crypto_frame_advertisement, align 1 + %tobool370.i = trunc i8 %193 to i1 br i1 %tobool370.i, label %if.then371.i, label %if.end373.i if.then371.i: ; preds = %for.end.i - %195 = load i32, ptr getelementptr inbounds (i8, ptr @grpc_chttp2_settings_parameters, i64 240), align 16 - %196 = load i32, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 236), align 4 - %retval.0.i.i321.i = call i32 @llvm.umax.i32(i32 %195, i32 %196) - %cmp.not.i322.not.i = icmp ult i32 %195, %196 + %194 = load i32, ptr getelementptr inbounds (i8, ptr @grpc_chttp2_settings_parameters, i64 240), align 16 + %195 = load i32, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 236), align 4 + %retval.0.i.i321.i = call i32 @llvm.umax.i32(i32 %194, i32 %195) + %cmp.not.i322.not.i = icmp ult i32 %194, %195 br i1 %cmp.not.i322.not.i, label %if.then.i323.i, label %if.end.i324.i if.then.i323.i: ; preds = %if.then371.i - %197 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 224), align 16 - invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.12, i32 noundef 1215, i32 noundef 1, ptr noundef nonnull @.str.122, ptr noundef %197, i32 noundef %195, i32 noundef %retval.0.i.i321.i) + %196 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @grpc_chttp2_settings_parameters, i64 224), align 16 + invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.12, i32 noundef 1215, i32 noundef 1, ptr noundef nonnull @.str.122, ptr noundef %196, i32 noundef %194, i32 noundef %retval.0.i.i321.i) to label %if.end.i324.i unwind label %lpad77.loopexit.split-lp if.end.i324.i: ; preds = %if.then.i323.i, %if.then371.i %arrayidx3.i326.i = getelementptr inbounds nuw i8, ptr %this, i64 2020 - %198 = load i32, ptr %arrayidx3.i326.i, align 4 - %cmp4.not.i327.i = icmp eq i32 %retval.0.i.i321.i, %198 + %197 = load i32, ptr %arrayidx3.i326.i, align 4 + %cmp4.not.i327.i = icmp eq i32 %retval.0.i.i321.i, %197 br i1 %cmp4.not.i327.i, label %if.end373.i, label %if.then5.i328.i if.then5.i328.i: ; preds = %if.end.i324.i @@ -4343,12 +4341,12 @@ if.end373.i: ; preds = %if.then5.i328.i, %i call376.i.noexc: ; preds = %if.end373.i %ref.tmp374.sroa.0.0.extract.trunc.i = trunc i64 %call376.i178 to i32 - %199 = and i64 %call376.i178, 4294967296 - %tobool.i.i334.not.i = icmp eq i64 %199, 0 - %200 = call i32 @llvm.smin.i32(i32 %ref.tmp374.sroa.0.0.extract.trunc.i, i32 100) - %201 = call i32 @llvm.smax.i32(i32 %200, i32 0) - %202 = trunc nuw nsw i32 %201 to i8 - %conv382.i = select i1 %tobool.i.i334.not.i, i8 1, i8 %202 + %198 = and i64 %call376.i178, 4294967296 + %tobool.i.i334.not.i = icmp eq i64 %198, 0 + %199 = call i32 @llvm.smin.i32(i32 %ref.tmp374.sroa.0.0.extract.trunc.i, i32 100) + %200 = call i32 @llvm.smax.i32(i32 %199, i32 0) + %201 = trunc nuw nsw i32 %200 to i8 + %conv382.i = select i1 %tobool.i.i334.not.i, i8 1, i8 %201 %ping_on_rst_stream_percent.i = getelementptr inbounds nuw i8, ptr %this, i64 3383 store i8 %conv382.i, ptr %ping_on_rst_stream_percent.i, align 1 %call385.i179 = invoke i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args, i64 29, ptr nonnull @.str.117) @@ -4360,15 +4358,15 @@ call385.i.noexc: ; preds = %call376.i.noexc eh.resume.i: ; preds = %lpad363.i, %lpad354.i, %ehcleanup224.i, %lpad.i142 %ref.tmp353.sink.i = phi ptr [ %ref.tmp193.i, %ehcleanup224.i ], [ %ref.tmp193.i, %lpad.i142 ], [ %ref.tmp353.i, %lpad363.i ], [ %ref.tmp353.i, %lpad354.i ] - %.pn95.pn.i = phi { ptr, i32 } [ %.pn.pn.pn.i, %ehcleanup224.i ], [ %146, %lpad.i142 ], [ %193, %lpad363.i ], [ %192, %lpad354.i ] + %.pn95.pn.i = phi { ptr, i32 } [ %.pn.pn.pn.i, %ehcleanup224.i ], [ %145, %lpad.i142 ], [ %192, %lpad363.i ], [ %191, %lpad354.i ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp353.sink.i) #37 br label %ehcleanup156 invoke.cont114: ; preds = %call385.i.noexc - %203 = and i16 %call385.i179, 256 - %tobool.i.i345.not.i = icmp eq i16 %203, 0 - %204 = trunc i16 %call385.i179 to i1 - %retval.0.i349.i = select i1 %tobool.i.i345.not.i, i1 %call.i343.i180, i1 %204 + %202 = and i16 %call385.i179, 256 + %tobool.i.i345.not.i = icmp eq i16 %202, 0 + %203 = trunc i16 %call385.i179 to i1 + %retval.0.i349.i = select i1 %tobool.i.i345.not.i, i1 %call.i343.i180, i1 %203 %frombool393.i = zext i1 %retval.0.i349.i to i8 store i8 %frombool393.i, ptr %max_concurrent_streams_overload_protection, align 2 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp189.i) @@ -4384,8 +4382,8 @@ invoke.cont114: ; preds = %call385.i.noexc call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp351.i) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp353.i) %arrayidx117 = getelementptr inbounds nuw i8, ptr %this, i64 2000 - %205 = load i32, ptr %arrayidx117, align 8 - store i32 %205, ptr %num_incoming_streams_before_settings_ack, align 8 + %204 = load i32, ptr %arrayidx117, align 8 + store i32 %204, ptr %num_incoming_streams_before_settings_ack, align 8 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core7ExecCtxE, i64 16), ptr %exec_ctx, align 8 %closure_list_.i = getelementptr inbounds nuw i8, ptr %exec_ctx, i64 8 %flags_.i = getelementptr inbounds nuw i8, ptr %exec_ctx, i64 40 @@ -4395,45 +4393,45 @@ invoke.cont114: ; preds = %call385.i.noexc store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core9Timestamp12ScopedSourceE, i64 16), ptr %time_cache_.i, align 8 %previous_.i.i.i = getelementptr inbounds nuw i8, ptr %exec_ctx, i64 56 %.not.i.i.i.i = icmp eq ptr @_ZTHN9grpc_core9Timestamp25thread_local_time_source_E, null - br i1 %.not.i.i.i.i, label %_ZTWN9grpc_core9Timestamp25thread_local_time_source_E.exit.thread.i.i.i, label %208 + br i1 %.not.i.i.i.i, label %_ZTWN9grpc_core9Timestamp25thread_local_time_source_E.exit.thread.i.i.i, label %207 _ZTWN9grpc_core9Timestamp25thread_local_time_source_E.exit.thread.i.i.i: ; preds = %invoke.cont114 - %206 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core9Timestamp25thread_local_time_source_E) - %207 = load ptr, ptr %206, align 8 - store ptr %207, ptr %previous_.i.i.i, align 8 + %205 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core9Timestamp25thread_local_time_source_E) + %206 = load ptr, ptr %205, align 8 + store ptr %206, ptr %previous_.i.i.i, align 8 br label %_ZN9grpc_core15ScopedTimeCacheC2Ev.exit.i -208: ; preds = %invoke.cont114 +207: ; preds = %invoke.cont114 invoke void @_ZTHN9grpc_core9Timestamp25thread_local_time_source_E() to label %.noexc184 unwind label %lpad77.loopexit.split-lp -.noexc184: ; preds = %208 - %209 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core9Timestamp25thread_local_time_source_E) - %210 = load ptr, ptr %209, align 8 - store ptr %210, ptr %previous_.i.i.i, align 8 +.noexc184: ; preds = %207 + %208 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core9Timestamp25thread_local_time_source_E) + %209 = load ptr, ptr %208, align 8 + store ptr %209, ptr %previous_.i.i.i, align 8 invoke void @_ZTHN9grpc_core9Timestamp25thread_local_time_source_E() to label %_ZN9grpc_core15ScopedTimeCacheC2Ev.exit.i unwind label %lpad77.loopexit.split-lp _ZN9grpc_core15ScopedTimeCacheC2Ev.exit.i: ; preds = %.noexc184, %_ZTWN9grpc_core9Timestamp25thread_local_time_source_E.exit.thread.i.i.i - %211 = phi ptr [ %206, %_ZTWN9grpc_core9Timestamp25thread_local_time_source_E.exit.thread.i.i.i ], [ %209, %.noexc184 ] - store ptr %time_cache_.i, ptr %211, align 8 + %210 = phi ptr [ %205, %_ZTWN9grpc_core9Timestamp25thread_local_time_source_E.exit.thread.i.i.i ], [ %208, %.noexc184 ] + store ptr %time_cache_.i, ptr %210, align 8 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core15ScopedTimeCacheE, i64 16), ptr %time_cache_.i, align 8 %_M_engaged.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %exec_ctx, i64 72 store i8 0, ptr %_M_engaged.i.i.i.i.i.i, align 8 %.not.i.i.i = icmp eq ptr @_ZTHN9grpc_core7ExecCtx9exec_ctx_E, null - br i1 %.not.i.i.i, label %invoke.cont.i, label %212 + br i1 %.not.i.i.i, label %invoke.cont.i, label %211 -212: ; preds = %_ZN9grpc_core15ScopedTimeCacheC2Ev.exit.i +211: ; preds = %_ZN9grpc_core15ScopedTimeCacheC2Ev.exit.i invoke void @_ZTHN9grpc_core7ExecCtx9exec_ctx_E() to label %invoke.cont.i unwind label %lpad.i182 -invoke.cont.i: ; preds = %212, %_ZN9grpc_core15ScopedTimeCacheC2Ev.exit.i - %213 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core7ExecCtx9exec_ctx_E) - %214 = load ptr, ptr %213, align 8 +invoke.cont.i: ; preds = %211, %_ZN9grpc_core15ScopedTimeCacheC2Ev.exit.i + %212 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core7ExecCtx9exec_ctx_E) + %213 = load ptr, ptr %212, align 8 %last_exec_ctx_.i = getelementptr inbounds nuw i8, ptr %exec_ctx, i64 80 - store ptr %214, ptr %last_exec_ctx_.i, align 8 - %215 = load atomic i8, ptr @_ZN9grpc_core4Fork16support_enabled_E monotonic, align 1 - %tobool.i.i.i.i = trunc i8 %215 to i1 + store ptr %213, ptr %last_exec_ctx_.i, align 8 + %214 = load atomic i8, ptr @_ZN9grpc_core4Fork16support_enabled_E monotonic, align 1 + %tobool.i.i.i.i = trunc i8 %214 to i1 br i1 %tobool.i.i.i.i, label %if.then.i.i183, label %invoke.cont2.i if.then.i.i183: ; preds = %invoke.cont.i @@ -4441,32 +4439,32 @@ if.then.i.i183: ; preds = %invoke.cont.i to label %invoke.cont2.i unwind label %lpad.i182 invoke.cont2.i: ; preds = %if.then.i.i183, %invoke.cont.i - br i1 %.not.i.i.i, label %invoke.cont130, label %216 + br i1 %.not.i.i.i, label %invoke.cont130, label %215 -216: ; preds = %invoke.cont2.i +215: ; preds = %invoke.cont2.i invoke void @_ZTHN9grpc_core7ExecCtx9exec_ctx_E() to label %invoke.cont130 unwind label %lpad.i182 -lpad.i182: ; preds = %216, %if.then.i.i183, %212 - %217 = landingpad { ptr, i32 } +lpad.i182: ; preds = %215, %if.then.i.i183, %211 + %216 = landingpad { ptr, i32 } cleanup store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core9Timestamp12ScopedSourceE, i64 16), ptr %time_cache_.i, align 8 - %218 = load ptr, ptr %previous_.i.i.i, align 8 - br i1 %.not.i.i.i.i, label %_ZN9grpc_core15ScopedTimeCacheD2Ev.exit.i, label %219 + %217 = load ptr, ptr %previous_.i.i.i, align 8 + br i1 %.not.i.i.i.i, label %_ZN9grpc_core15ScopedTimeCacheD2Ev.exit.i, label %218 -219: ; preds = %lpad.i182 +218: ; preds = %lpad.i182 call void @_ZTHN9grpc_core9Timestamp25thread_local_time_source_E() #37 br label %_ZN9grpc_core15ScopedTimeCacheD2Ev.exit.i -_ZN9grpc_core15ScopedTimeCacheD2Ev.exit.i: ; preds = %219, %lpad.i182 - %220 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core9Timestamp25thread_local_time_source_E) - store ptr %218, ptr %220, align 8 +_ZN9grpc_core15ScopedTimeCacheD2Ev.exit.i: ; preds = %218, %lpad.i182 + %219 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core9Timestamp25thread_local_time_source_E) + store ptr %217, ptr %219, align 8 br label %ehcleanup156 -invoke.cont130: ; preds = %invoke.cont2.i, %216 - store ptr %exec_ctx, ptr %213, align 8 - %221 = load ptr, ptr %combiner, align 8 - %222 = atomicrmw add ptr %1, i64 1 monotonic, align 8, !noalias !45 +invoke.cont130: ; preds = %invoke.cont2.i, %215 + store ptr %exec_ctx, ptr %212, align 8 + %220 = load ptr, ptr %combiner, align 8 + %221 = atomicrmw add ptr %1, i64 1 monotonic, align 8, !noalias !45 %init_keepalive_ping_locked125 = getelementptr inbounds nuw i8, ptr %this, i64 3160 %cb1.i.i = getelementptr inbounds nuw i8, ptr %this, i64 3168 store ptr @_ZZN9grpc_core12_GLOBAL__N_120InitTransportClosureIXadL_ZL38init_keepalive_pings_if_enabled_lockedNS_13RefCountedPtrI21grpc_chttp2_transportEEN4absl12lts_202308026StatusEEEEEP12grpc_closureS4_S9_ENUlPvS7_E_8__invokeESA_S7_, ptr %cb1.i.i, align 8 @@ -4475,30 +4473,30 @@ invoke.cont130: ; preds = %invoke.cont2.i, %21 %error_data.i.i = getelementptr inbounds nuw i8, ptr %this, i64 3184 store i64 0, ptr %error_data.i.i, align 8 store i64 0, ptr %agg.tmp129, align 8, !alias.scope !48 - invoke void @_ZN9grpc_core8Combiner3RunEP12grpc_closureN4absl12lts_202308026StatusE(ptr noundef nonnull align 8 dereferenceable(184) %221, ptr noundef nonnull %init_keepalive_ping_locked125, ptr noundef nonnull %agg.tmp129) + invoke void @_ZN9grpc_core8Combiner3RunEP12grpc_closureN4absl12lts_202308026StatusE(ptr noundef nonnull align 8 dereferenceable(184) %220, ptr noundef nonnull %init_keepalive_ping_locked125, ptr noundef nonnull %agg.tmp129) to label %invoke.cont132 unwind label %lpad131 invoke.cont132: ; preds = %invoke.cont130 - %223 = load i64, ptr %agg.tmp129, align 8 - %and.i.i.i188 = and i64 %223, 1 + %222 = load i64, ptr %agg.tmp129, align 8 + %and.i.i.i188 = and i64 %222, 1 %cmp.i.i.i189 = icmp eq i64 %and.i.i.i188, 0 br i1 %cmp.i.i.i189, label %_ZN9grpc_core13RefCountedPtrI21grpc_chttp2_transportED2Ev.exit, label %if.then.i.i190 if.then.i.i190: ; preds = %invoke.cont132 - invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %223) + invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %222) to label %_ZN9grpc_core13RefCountedPtrI21grpc_chttp2_transportED2Ev.exit unwind label %terminate.lpad.i191 terminate.lpad.i191: ; preds = %if.then.i.i190 - %224 = landingpad { ptr, i32 } + %223 = landingpad { ptr, i32 } catch ptr null - %225 = extractvalue { ptr, i32 } %224, 0 - call void @__clang_call_terminate(ptr %225) #36 + %224 = extractvalue { ptr, i32 } %223, 0 + call void @__clang_call_terminate(ptr %224) #36 unreachable _ZN9grpc_core13RefCountedPtrI21grpc_chttp2_transportED2Ev.exit: ; preds = %if.then.i.i190, %invoke.cont132 %enable_bdp_probe_.i = getelementptr inbounds nuw i8, ptr %this, i64 2656 - %226 = load i8, ptr %enable_bdp_probe_.i, align 8 - %tobool.i = trunc i8 %226 to i1 + %225 = load i8, ptr %enable_bdp_probe_.i, align 8 + %tobool.i = trunc i8 %225 to i1 br i1 %tobool.i, label %if.then136, label %if.end142 if.then136: ; preds = %_ZN9grpc_core13RefCountedPtrI21grpc_chttp2_transportED2Ev.exit @@ -4511,12 +4509,12 @@ invoke.cont140: ; preds = %if.then136 to label %if.end142 unwind label %lpad123 lpad123: ; preds = %land.rhs, %if.end148, %if.then146, %invoke.cont143, %if.end142, %invoke.cont140, %if.then136 - %227 = landingpad { ptr, i32 } + %226 = landingpad { ptr, i32 } cleanup br label %ehcleanup155 lpad131: ; preds = %invoke.cont130 - %228 = landingpad { ptr, i32 } + %227 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_202308026StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %agg.tmp129) #37 br label %ehcleanup155 @@ -4530,12 +4528,12 @@ invoke.cont143: ; preds = %if.end142 to label %invoke.cont144 unwind label %lpad123 invoke.cont144: ; preds = %invoke.cont143 - %229 = load ptr, ptr @_ZN9grpc_core12_GLOBAL__N_123test_only_init_callbackE, align 8 - %cmp145.not = icmp eq ptr %229, null + %228 = load ptr, ptr @_ZN9grpc_core12_GLOBAL__N_123test_only_init_callbackE, align 8 + %cmp145.not = icmp eq ptr %228, null br i1 %cmp145.not, label %if.end148, label %if.then146 if.then146: ; preds = %invoke.cont144 - invoke void %229() + invoke void %228() to label %if.end148 unwind label %lpad123 if.end148: ; preds = %if.then146, %invoke.cont144 @@ -4550,35 +4548,35 @@ land.rhs: ; preds = %invoke.cont149 to label %land.end unwind label %lpad123 land.end: ; preds = %land.rhs, %invoke.cont149 - %230 = phi i1 [ false, %invoke.cont149 ], [ %call.i207, %land.rhs ] - %not. = xor i1 %230, true + %229 = phi i1 [ false, %invoke.cont149 ], [ %call.i207, %land.rhs ] + %not. = xor i1 %229, true %conv = zext i1 %not. to i8 store i8 %conv, ptr %closure_barrier_may_cover_write, align 2 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core7ExecCtxE, i64 16), ptr %exec_ctx, align 8 - %231 = load i64, ptr %flags_.i, align 8 - %or.i = or i64 %231, 1 + %230 = load i64, ptr %flags_.i, align 8 + %or.i = or i64 %230, 1 store i64 %or.i, ptr %flags_.i, align 8 %call.i = invoke noundef zeroext i1 @_ZN9grpc_core7ExecCtx5FlushEv(ptr noundef nonnull align 8 dereferenceable(88) %exec_ctx) to label %invoke.cont.i210 unwind label %terminate.lpad.i209 invoke.cont.i210: ; preds = %land.end - %232 = load ptr, ptr %last_exec_ctx_.i, align 8 - br i1 %.not.i.i.i, label %invoke.cont2.i213, label %233 + %231 = load ptr, ptr %last_exec_ctx_.i, align 8 + br i1 %.not.i.i.i, label %invoke.cont2.i213, label %232 -233: ; preds = %invoke.cont.i210 +232: ; preds = %invoke.cont.i210 invoke void @_ZTHN9grpc_core7ExecCtx9exec_ctx_E() to label %invoke.cont2.i213 unwind label %terminate.lpad.i209 -invoke.cont2.i213: ; preds = %233, %invoke.cont.i210 - store ptr %232, ptr %213, align 8 - %234 = load i64, ptr %flags_.i, align 8 - %and.i214 = and i64 %234, 4 +invoke.cont2.i213: ; preds = %232, %invoke.cont.i210 + store ptr %231, ptr %212, align 8 + %233 = load i64, ptr %flags_.i, align 8 + %and.i214 = and i64 %233, 4 %tobool.not.i = icmp eq i64 %and.i214, 0 br i1 %tobool.not.i, label %if.then.i220, label %if.end.i215 if.then.i220: ; preds = %invoke.cont2.i213 - %235 = load atomic i8, ptr @_ZN9grpc_core4Fork16support_enabled_E monotonic, align 1 - %tobool.i.i.i.i221 = trunc i8 %235 to i1 + %234 = load atomic i8, ptr @_ZN9grpc_core4Fork16support_enabled_E monotonic, align 1 + %tobool.i.i.i.i221 = trunc i8 %234 to i1 br i1 %tobool.i.i.i.i221, label %if.then.i.i222, label %if.end.i215 if.then.i.i222: ; preds = %if.then.i220 @@ -4587,47 +4585,47 @@ if.then.i.i222: ; preds = %if.then.i220 if.end.i215: ; preds = %if.then.i.i222, %if.then.i220, %invoke.cont2.i213 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core9Timestamp12ScopedSourceE, i64 16), ptr %time_cache_.i, align 8 - %236 = load ptr, ptr %previous_.i.i.i, align 8 - br i1 %.not.i.i.i.i, label %_ZN9grpc_core7ExecCtxD2Ev.exit, label %237 + %235 = load ptr, ptr %previous_.i.i.i, align 8 + br i1 %.not.i.i.i.i, label %_ZN9grpc_core7ExecCtxD2Ev.exit, label %236 -237: ; preds = %if.end.i215 +236: ; preds = %if.end.i215 call void @_ZTHN9grpc_core9Timestamp25thread_local_time_source_E() #37 br label %_ZN9grpc_core7ExecCtxD2Ev.exit -terminate.lpad.i209: ; preds = %if.then.i.i222, %233, %land.end - %238 = landingpad { ptr, i32 } +terminate.lpad.i209: ; preds = %if.then.i.i222, %232, %land.end + %237 = landingpad { ptr, i32 } catch ptr null - %239 = extractvalue { ptr, i32 } %238, 0 - call void @__clang_call_terminate(ptr %239) #36 + %238 = extractvalue { ptr, i32 } %237, 0 + call void @__clang_call_terminate(ptr %238) #36 unreachable -_ZN9grpc_core7ExecCtxD2Ev.exit: ; preds = %if.end.i215, %237 - %240 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core9Timestamp25thread_local_time_source_E) - store ptr %236, ptr %240, align 8 +_ZN9grpc_core7ExecCtxD2Ev.exit: ; preds = %if.end.i215, %236 + %239 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN9grpc_core9Timestamp25thread_local_time_source_E) + store ptr %235, ptr %239, align 8 ret void ehcleanup155: ; preds = %lpad131, %lpad123 - %.pn20 = phi { ptr, i32 } [ %227, %lpad123 ], [ %228, %lpad131 ] + %.pn20 = phi { ptr, i32 } [ %226, %lpad123 ], [ %227, %lpad131 ] call void @_ZN9grpc_core7ExecCtxD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %exec_ctx) #37 br label %ehcleanup156 ehcleanup156: ; preds = %lpad77.loopexit, %lpad77.loopexit.split-lp, %eh.resume.i, %_ZN9grpc_core15ScopedTimeCacheD2Ev.exit.i, %ehcleanup155 - %.pn20.pn = phi { ptr, i32 } [ %.pn20, %ehcleanup155 ], [ %.pn95.pn.i, %eh.resume.i ], [ %217, %_ZN9grpc_core15ScopedTimeCacheD2Ev.exit.i ], [ %lpad.loopexit, %lpad77.loopexit ], [ %lpad.loopexit.split-lp, %lpad77.loopexit.split-lp ] - %241 = load ptr, ptr %channelz_socket, align 8 - %cmp.not.i223 = icmp eq ptr %241, null + %.pn20.pn = phi { ptr, i32 } [ %.pn20, %ehcleanup155 ], [ %.pn95.pn.i, %eh.resume.i ], [ %216, %_ZN9grpc_core15ScopedTimeCacheD2Ev.exit.i ], [ %lpad.loopexit, %lpad77.loopexit ], [ %lpad.loopexit.split-lp, %lpad77.loopexit.split-lp ] + %240 = load ptr, ptr %channelz_socket, align 8 + %cmp.not.i223 = icmp eq ptr %240, null br i1 %cmp.not.i223, label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit, label %if.then.i224 if.then.i224: ; preds = %ehcleanup156 - %refs_.i.i = getelementptr inbounds nuw i8, ptr %241, i64 8 - %242 = atomicrmw sub ptr %refs_.i.i, i64 1 acq_rel, align 8 - %cmp.i.i.i225 = icmp eq i64 %242, 1 + %refs_.i.i = getelementptr inbounds nuw i8, ptr %240, i64 8 + %241 = atomicrmw sub ptr %refs_.i.i, i64 1 acq_rel, align 8 + %cmp.i.i.i225 = icmp eq i64 %241, 1 br i1 %cmp.i.i.i225, label %if.then.i.i227, label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit if.then.i.i227: ; preds = %if.then.i224 - %vtable.i.i.i = load ptr, ptr %241, align 8 + %vtable.i.i.i = load ptr, ptr %240, align 8 %vfn.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i, i64 8 - %243 = load ptr, ptr %vfn.i.i.i, align 8 - call void %243(ptr noundef nonnull align 8 dereferenceable(64) %241) #37 + %242 = load ptr, ptr %vfn.i.i.i, align 8 + call void %242(ptr noundef nonnull align 8 dereferenceable(64) %240) #37 br label %_ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit _ZN9grpc_core13RefCountedPtrINS_8channelz10SocketNodeEED2Ev.exit: ; preds = %ehcleanup156, %if.then.i224, %if.then.i.i227 @@ -4656,23 +4654,23 @@ ehcleanup163: ; preds = %ehcleanup161, %lpad to label %ehcleanup164 unwind label %terminate.lpad.i228 terminate.lpad.i228: ; preds = %ehcleanup163 - %244 = landingpad { ptr, i32 } + %243 = landingpad { ptr, i32 } catch ptr null - %245 = extractvalue { ptr, i32 } %244, 0 - call void @__clang_call_terminate(ptr %245) #36 + %244 = extractvalue { ptr, i32 } %243, 0 + call void @__clang_call_terminate(ptr %244) #36 unreachable ehcleanup164: ; preds = %ehcleanup163, %lpad39 %.pn20.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %67, %lpad39 ], [ %.pn20.pn.pn.pn.pn.pn.pn.pn, %ehcleanup163 ] call void @_ZN9grpc_core24ConnectivityStateTrackerD1Ev(ptr noundef nonnull align 8 dereferenceable(72) %state_tracker) #37 %capacity_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 576 - %246 = load i64, ptr %capacity_.i.i.i.i.i, align 8 - %tobool.not.i.i.i230 = icmp eq i64 %246, 0 + %245 = load i64, ptr %capacity_.i.i.i.i.i, align 8 + %tobool.not.i.i.i230 = icmp eq i64 %245, 0 br i1 %tobool.not.i.i.i230, label %ehcleanup166, label %invoke.cont13.i.i.i invoke.cont13.i.i.i: ; preds = %ehcleanup164 - %247 = load ptr, ptr %stream_map, align 8 - %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %247, i64 -8 + %246 = load ptr, ptr %stream_map, align 8 + %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %246, i64 -8 call void @_ZdlPv(ptr noundef nonnull %add.ptr.i.i.i.i) #38 br label %ehcleanup166 @@ -4703,15 +4701,15 @@ ehcleanup171: ; preds = %ehcleanup170, %lpad ehcleanup172: ; preds = %ehcleanup171, %lpad4 %.pn20.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn20.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %ehcleanup171 ], [ %61, %lpad4 ] - %248 = load ptr, ptr @_ZN9grpc_core18ShutdownInternallyE, align 8 - invoke void %248() + %247 = load ptr, ptr @_ZN9grpc_core18ShutdownInternallyE, align 8 + invoke void %247() to label %ehcleanup173 unwind label %terminate.lpad.i231 terminate.lpad.i231: ; preds = %ehcleanup172 - %249 = landingpad { ptr, i32 } + %248 = landingpad { ptr, i32 } catch ptr null - %250 = extractvalue { ptr, i32 } %249, 0 - call void @__clang_call_terminate(ptr %250) #36 + %249 = extractvalue { ptr, i32 } %248, 0 + call void @__clang_call_terminate(ptr %249) #36 unreachable ehcleanup173: ; preds = %ehcleanup172 diff --git a/bench/grpc/optimized/client_authority_filter.cc.ll b/bench/grpc/optimized/client_authority_filter.cc.ll index 12b1c63b079..b1828df3590 100644 --- a/bench/grpc/optimized/client_authority_filter.cc.ll +++ b/bench/grpc/optimized/client_authority_filter.cc.ll @@ -922,12 +922,9 @@ declare noundef nonnull align 8 dereferenceable(104) ptr @_ZN9grpc_core11Channel define internal noundef zeroext i1 @_ZN9grpc_core12_GLOBAL__N_126NeedsClientAuthorityFilterERKNS_11ChannelArgsE(ptr noundef nonnull align 8 dereferenceable(8) %args) #3 personality ptr @__gxx_personality_v0 { entry: %call = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %args, i64 36, ptr nonnull @.str.7) - %0 = and i16 %call, 256 - %tobool.i.i.not = icmp ne i16 %0, 0 - %1 = trunc i16 %call to i1 - %retval.0.i = and i1 %tobool.i.i.not, %1 - %lnot = xor i1 %retval.0.i, true - ret i1 %lnot + %0 = and i16 %call, 257 + %retval.0.i = icmp ne i16 %0, 257 + ret i1 %retval.0.i } declare noundef nonnull align 8 dereferenceable(104) ptr @_ZN9grpc_core11ChannelInit18FilterRegistration6BeforeESt16initializer_listIPK19grpc_channel_filterE(ptr noundef nonnull align 8 dereferenceable(104), ptr, i64) local_unnamed_addr #0 diff --git a/bench/grpc/optimized/dns_resolver_ares.cc.ll b/bench/grpc/optimized/dns_resolver_ares.cc.ll index 4281b524577..78de8ef89d2 100644 --- a/bench/grpc/optimized/dns_resolver_ares.cc.ll +++ b/bench/grpc/optimized/dns_resolver_ares.cc.ll @@ -1190,29 +1190,27 @@ invoke.cont27.i.i: ; preds = %invoke.cont21.i.i invoke.cont39.i.i: ; preds = %invoke.cont27.i.i %enable_srv_queries_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 537 - %13 = and i16 %call40.i.i, 256 - %tobool.i.i7.not.i.i = icmp ne i16 %13, 0 - %14 = trunc i16 %call40.i.i to i1 - %retval.0.i11.i.i = and i1 %tobool.i.i7.not.i.i, %14 + %13 = and i16 %call40.i.i, 257 + %retval.0.i11.i.i = icmp eq i16 %13, 257 %frombool47.i.i = zext i1 %retval.0.i11.i.i to i8 store i8 %frombool47.i.i, ptr %enable_srv_queries_.i.i, align 1, !noalias !10 %call55.i.i = invoke i64 @_ZNK9grpc_core11ChannelArgs6GetIntESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args_.i.i.i, i64 27, ptr nonnull @.str.9) to label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_128AresClientChannelDNSResolverENS0_16OrphanableDeleteEED2Ev.exit unwind label %lpad23.i.i, !noalias !10 lpad.i.i: ; preds = %entry - %15 = landingpad { ptr, i32 } + %14 = landingpad { ptr, i32 } cleanup call void @_ZN9grpc_core12ResolverArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %agg.tmp.i.i) #24, !noalias !10 br label %lpad.body.i lpad23.i.i: ; preds = %invoke.cont39.i.i, %invoke.cont27.i.i, %invoke.cont21.i.i - %16 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup call void @_ZN9grpc_core15PollingResolverD2Ev(ptr noundef nonnull align 8 dereferenceable(544) %call.i) #24, !noalias !10 br label %lpad.body.i lpad.body.i: ; preds = %lpad23.i.i, %lpad.i.i - %eh.lpad-body.i = phi { ptr, i32 } [ %16, %lpad23.i.i ], [ %15, %lpad.i.i ] + %eh.lpad-body.i = phi { ptr, i32 } [ %15, %lpad23.i.i ], [ %14, %lpad.i.i ] call void @_ZN9grpc_core12ResolverArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %agg.tmp.i) #24, !noalias !10 call void @_ZdlPv(ptr noundef nonnull %call.i) #27, !noalias !10 resume { ptr, i32 } %eh.lpad-body.i @@ -1220,10 +1218,10 @@ lpad.body.i: ; preds = %lpad23.i.i, %lpad.i _ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_128AresClientChannelDNSResolverENS0_16OrphanableDeleteEED2Ev.exit: ; preds = %invoke.cont39.i.i %query_timeout_ms_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 540 %ref.tmp50.sroa.0.0.extract.trunc.i.i = trunc i64 %call55.i.i to i32 - %17 = and i64 %call55.i.i, 4294967296 - %tobool.i.i16.not.i.i = icmp eq i64 %17, 0 - %18 = call i32 @llvm.smax.i32(i32 %ref.tmp50.sroa.0.0.extract.trunc.i.i, i32 0) - %.sroa.speculated.i.i = select i1 %tobool.i.i16.not.i.i, i32 120000, i32 %18 + %16 = and i64 %call55.i.i, 4294967296 + %tobool.i.i16.not.i.i = icmp eq i64 %16, 0 + %17 = call i32 @llvm.smax.i32(i32 %ref.tmp50.sroa.0.0.extract.trunc.i.i, i32 0) + %.sroa.speculated.i.i = select i1 %tobool.i.i16.not.i.i, i32 120000, i32 %17 store i32 %.sroa.speculated.i.i, ptr %query_timeout_ms_.i.i, align 4, !noalias !10 call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %agg.tmp.i.i), !noalias !10 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp3.i.i), !noalias !10 diff --git a/bench/grpc/optimized/event_engine_client_channel_resolver.cc.ll b/bench/grpc/optimized/event_engine_client_channel_resolver.cc.ll index 82987822178..c852918c3a6 100644 --- a/bench/grpc/optimized/event_engine_client_channel_resolver.cc.ll +++ b/bench/grpc/optimized/event_engine_client_channel_resolver.cc.ll @@ -495,10 +495,8 @@ invoke.cont27.i.i: ; preds = %invoke.cont21.i.i invoke.cont39.i.i: ; preds = %invoke.cont27.i.i %enable_srv_queries_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 537 - %13 = and i16 %call40.i.i, 256 - %tobool.i.i7.not.i.i = icmp ne i16 %13, 0 - %14 = trunc i16 %call40.i.i to i1 - %retval.0.i11.i.i = and i1 %tobool.i.i7.not.i.i, %14 + %13 = and i16 %call40.i.i, 257 + %retval.0.i11.i.i = icmp eq i16 %13, 257 %frombool47.i.i = zext i1 %retval.0.i11.i.i to i8 store i8 %frombool47.i.i, ptr %enable_srv_queries_.i.i, align 1, !noalias !4 %call56.i.i = invoke i64 @_ZNK9grpc_core11ChannelArgs6GetIntESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args_.i.i.i, i64 27, ptr nonnull @.str.9) @@ -507,12 +505,12 @@ invoke.cont39.i.i: ; preds = %invoke.cont27.i.i invoke.cont65.i.i: ; preds = %invoke.cont39.i.i %query_timeout_ms_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 544 %ref.tmp51.sroa.0.0.extract.trunc.i.i = trunc i64 %call56.i.i to i32 - %15 = and i64 %call56.i.i, 4294967296 - %tobool.i.i16.not.i.i = icmp eq i64 %15, 0 - %16 = call i32 @llvm.smax.i32(i32 %ref.tmp51.sroa.0.0.extract.trunc.i.i, i32 0) - %17 = zext nneg i32 %16 to i64 - %18 = mul nuw nsw i64 %17, 1000000 - %mul.i.i.i.i.i = select i1 %tobool.i.i16.not.i.i, i64 120000000000, i64 %18 + %14 = and i64 %call56.i.i, 4294967296 + %tobool.i.i16.not.i.i = icmp eq i64 %14, 0 + %15 = call i32 @llvm.smax.i32(i32 %ref.tmp51.sroa.0.0.extract.trunc.i.i, i32 0) + %16 = zext nneg i32 %15 to i64 + %17 = mul nuw nsw i64 %16, 1000000 + %mul.i.i.i.i.i = select i1 %tobool.i.i16.not.i.i, i64 120000000000, i64 %17 store i64 %mul.i.i.i.i.i, ptr %query_timeout_ms_.i.i, align 8, !noalias !4 %event_engine_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 552 call void @llvm.experimental.noalias.scope.decl(metadata !7) @@ -529,45 +527,45 @@ if.then.i.i.i.i: ; preds = %call.i.i21.noexc.i. br label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_135EventEngineClientChannelDNSResolverENS0_16OrphanableDeleteEED2Ev.exit if.end.i.i.i.i: ; preds = %call.i.i21.noexc.i.i - %19 = load ptr, ptr %call.i.i2122.i.i, align 8, !noalias !14 - store ptr %19, ptr %event_engine_.i.i, align 8, !alias.scope !13, !noalias !4 + %18 = load ptr, ptr %call.i.i2122.i.i, align 8, !noalias !14 + store ptr %18, ptr %event_engine_.i.i, align 8, !alias.scope !13, !noalias !4 %_M_refcount.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 560 %_M_refcount3.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i.i2122.i.i, i64 8 - %20 = load ptr, ptr %_M_refcount3.i.i.i.i.i.i, align 8, !noalias !14 - store ptr %20, ptr %_M_refcount.i.i.i.i.i.i, align 8, !alias.scope !13, !noalias !4 - %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %20, null + %19 = load ptr, ptr %_M_refcount3.i.i.i.i.i.i, align 8, !noalias !14 + store ptr %19, ptr %_M_refcount.i.i.i.i.i.i, align 8, !alias.scope !13, !noalias !4 + %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %19, null br i1 %cmp.not.i.i.i.i.i.i.i, label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_135EventEngineClientChannelDNSResolverENS0_16OrphanableDeleteEED2Ev.exit, label %if.then.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i - %_M_use_count.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %20, i64 8 - %21 = load i8, ptr @__libc_single_threaded, align 1, !noalias !14 - %tobool.i.not.i.i.i.i.i.i.i.i = icmp eq i8 %21, 0 + %_M_use_count.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %19, i64 8 + %20 = load i8, ptr @__libc_single_threaded, align 1, !noalias !14 + %tobool.i.not.i.i.i.i.i.i.i.i = icmp eq i8 %20, 0 br i1 %tobool.i.not.i.i.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i - %22 = load i32, ptr %_M_use_count.i.i.i.i.i.i.i.i, align 4, !noalias !14 - %add.i.i.i.i.i.i.i.i.i = add nsw i32 %22, 1 + %21 = load i32, ptr %_M_use_count.i.i.i.i.i.i.i.i, align 4, !noalias !14 + %add.i.i.i.i.i.i.i.i.i = add nsw i32 %21, 1 store i32 %add.i.i.i.i.i.i.i.i.i, ptr %_M_use_count.i.i.i.i.i.i.i.i, align 4, !noalias !14 br label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_135EventEngineClientChannelDNSResolverENS0_16OrphanableDeleteEED2Ev.exit if.else.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i - %23 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i.i, i32 1 acq_rel, align 4, !noalias !14 + %22 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i.i, i32 1 acq_rel, align 4, !noalias !14 br label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_135EventEngineClientChannelDNSResolverENS0_16OrphanableDeleteEED2Ev.exit lpad.i.i: ; preds = %entry - %24 = landingpad { ptr, i32 } + %23 = landingpad { ptr, i32 } cleanup call void @_ZN9grpc_core12ResolverArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %agg.tmp.i.i) #22, !noalias !4 br label %lpad.body.i lpad23.i.i: ; preds = %invoke.cont65.i.i, %invoke.cont39.i.i, %invoke.cont27.i.i, %invoke.cont21.i.i - %25 = landingpad { ptr, i32 } + %24 = landingpad { ptr, i32 } cleanup call void @_ZN9grpc_core15PollingResolverD2Ev(ptr noundef nonnull align 8 dereferenceable(568) %call.i) #22, !noalias !4 br label %lpad.body.i lpad.body.i: ; preds = %lpad23.i.i, %lpad.i.i - %eh.lpad-body.i = phi { ptr, i32 } [ %25, %lpad23.i.i ], [ %24, %lpad.i.i ] + %eh.lpad-body.i = phi { ptr, i32 } [ %24, %lpad23.i.i ], [ %23, %lpad.i.i ] call void @_ZN9grpc_core12ResolverArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %agg.tmp.i) #22, !noalias !4 call void @_ZdlPv(ptr noundef nonnull %call.i) #24, !noalias !4 resume { ptr, i32 } %eh.lpad-body.i diff --git a/bench/grpc/optimized/fake_security_connector.cc.ll b/bench/grpc/optimized/fake_security_connector.cc.ll index 1408833f552..5ca9d96f8c0 100644 --- a/bench/grpc/optimized/fake_security_connector.cc.ll +++ b/bench/grpc/optimized/fake_security_connector.cc.ll @@ -187,10 +187,8 @@ invoke.cont7.i.i: ; preds = %invoke.cont5.i.i invoke.cont10.i.i: ; preds = %invoke.cont7.i.i %is_lb_channel_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 104 - %8 = and i16 %call11.i.i, 256 - %tobool.i.i.not.i.i = icmp ne i16 %8, 0 - %9 = trunc i16 %call11.i.i to i1 - %retval.0.i.i.i = and i1 %tobool.i.i.not.i.i, %9 + %8 = and i16 %call11.i.i, 257 + %retval.0.i.i.i = icmp eq i16 %8, 257 %frombool.i.i = zext i1 %retval.0.i.i.i to i8 store i8 %frombool.i.i, ptr %is_lb_channel_.i.i, align 8, !noalias !4 %target_name_override_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 112 @@ -198,54 +196,54 @@ invoke.cont10.i.i: ; preds = %invoke.cont7.i.i to label %_ZN9grpc_core13RefCountedPtrIN12_GLOBAL__N_136grpc_fake_channel_security_connectorEED2Ev.exit unwind label %lpad9.i.i, !noalias !4 lpad.i.i: ; preds = %entry - %10 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup - %11 = load ptr, ptr %agg.tmp3.i.i, align 8, !noalias !4 - %cmp.not.i18.i.i = icmp eq ptr %11, null + %10 = load ptr, ptr %agg.tmp3.i.i, align 8, !noalias !4 + %cmp.not.i18.i.i = icmp eq ptr %10, null br i1 %cmp.not.i18.i.i, label %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit25.i.i, label %if.then.i19.i.i if.then.i19.i.i: ; preds = %lpad.i.i - %refs_.i.i20.i.i = getelementptr inbounds nuw i8, ptr %11, i64 8 - %12 = atomicrmw sub ptr %refs_.i.i20.i.i, i64 1 acq_rel, align 8, !noalias !4 - %cmp.i.i.i21.i.i = icmp eq i64 %12, 1 + %refs_.i.i20.i.i = getelementptr inbounds nuw i8, ptr %10, i64 8 + %11 = atomicrmw sub ptr %refs_.i.i20.i.i, i64 1 acq_rel, align 8, !noalias !4 + %cmp.i.i.i21.i.i = icmp eq i64 %11, 1 br i1 %cmp.i.i.i21.i.i, label %if.then.i.i22.i.i, label %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit25.i.i if.then.i.i22.i.i: ; preds = %if.then.i19.i.i - %vtable.i.i.i23.i.i = load ptr, ptr %11, align 8, !noalias !4 + %vtable.i.i.i23.i.i = load ptr, ptr %10, align 8, !noalias !4 %vfn.i.i.i24.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i23.i.i, i64 8 - %13 = load ptr, ptr %vfn.i.i.i24.i.i, align 8, !noalias !4 - call void %13(ptr noundef nonnull align 8 dereferenceable(20) %11) #21, !noalias !4 + %12 = load ptr, ptr %vfn.i.i.i24.i.i, align 8, !noalias !4 + call void %12(ptr noundef nonnull align 8 dereferenceable(20) %10) #21, !noalias !4 br label %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit25.i.i _ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit25.i.i: ; preds = %if.then.i.i22.i.i, %if.then.i19.i.i, %lpad.i.i - %14 = load ptr, ptr %agg.tmp2.i.i, align 8, !noalias !4 - %cmp.not.i26.i.i = icmp eq ptr %14, null + %13 = load ptr, ptr %agg.tmp2.i.i, align 8, !noalias !4 + %cmp.not.i26.i.i = icmp eq ptr %13, null br i1 %cmp.not.i26.i.i, label %_ZN9grpc_core13RefCountedPtrI24grpc_channel_credentialsED2Ev.exit24.i, label %if.then.i27.i.i if.then.i27.i.i: ; preds = %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit25.i.i - %refs_.i.i28.i.i = getelementptr inbounds nuw i8, ptr %14, i64 8 - %15 = atomicrmw sub ptr %refs_.i.i28.i.i, i64 1 acq_rel, align 8, !noalias !4 - %cmp.i.i.i29.i.i = icmp eq i64 %15, 1 + %refs_.i.i28.i.i = getelementptr inbounds nuw i8, ptr %13, i64 8 + %14 = atomicrmw sub ptr %refs_.i.i28.i.i, i64 1 acq_rel, align 8, !noalias !4 + %cmp.i.i.i29.i.i = icmp eq i64 %14, 1 br i1 %cmp.i.i.i29.i.i, label %if.then.i.i30.i.i, label %_ZN9grpc_core13RefCountedPtrI24grpc_channel_credentialsED2Ev.exit24.i if.then.i.i30.i.i: ; preds = %if.then.i27.i.i - %vtable.i.i.i31.i.i = load ptr, ptr %14, align 8, !noalias !4 + %vtable.i.i.i31.i.i = load ptr, ptr %13, align 8, !noalias !4 %vfn.i.i.i32.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i31.i.i, i64 8 - %16 = load ptr, ptr %vfn.i.i.i32.i.i, align 8, !noalias !4 - call void %16(ptr noundef nonnull align 8 dereferenceable(16) %14) #21, !noalias !4 + %15 = load ptr, ptr %vfn.i.i.i32.i.i, align 8, !noalias !4 + call void %15(ptr noundef nonnull align 8 dereferenceable(16) %13) #21, !noalias !4 br label %_ZN9grpc_core13RefCountedPtrI24grpc_channel_credentialsED2Ev.exit24.i lpad4.i.i: ; preds = %invoke.cont5.i.i, %_ZN9grpc_core13RefCountedPtrI24grpc_channel_credentialsED2Ev.exit.i.i - %17 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup br label %ehcleanup.i.i lpad9.i.i: ; preds = %invoke.cont10.i.i, %invoke.cont7.i.i - %18 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup %_M_engaged.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 96 - %19 = load i8, ptr %_M_engaged.i.i.i.i.i.i, align 8, !noalias !4 - %tobool.i.i.i.i.i.i = trunc i8 %19 to i1 + %18 = load i8, ptr %_M_engaged.i.i.i.i.i.i, align 8, !noalias !4 + %tobool.i.i.i.i.i.i = trunc i8 %18 to i1 br i1 %tobool.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %ehcleanup.i.i if.then.i.i.i.i.i.i: ; preds = %lpad9.i.i @@ -254,12 +252,12 @@ if.then.i.i.i.i.i.i: ; preds = %lpad9.i.i br label %ehcleanup.i.i ehcleanup.i.i: ; preds = %if.then.i.i.i.i.i.i, %lpad9.i.i, %lpad4.i.i - %.pn.i.i = phi { ptr, i32 } [ %17, %lpad4.i.i ], [ %18, %lpad9.i.i ], [ %18, %if.then.i.i.i.i.i.i ] + %.pn.i.i = phi { ptr, i32 } [ %16, %lpad4.i.i ], [ %17, %lpad9.i.i ], [ %17, %if.then.i.i.i.i.i.i ] call void @_ZN31grpc_channel_security_connectorD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %call.i) #21, !noalias !4 br label %_ZN9grpc_core13RefCountedPtrI24grpc_channel_credentialsED2Ev.exit24.i _ZN9grpc_core13RefCountedPtrI24grpc_channel_credentialsED2Ev.exit24.i: ; preds = %ehcleanup.i.i, %if.then.i.i30.i.i, %if.then.i27.i.i, %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit25.i.i - %eh.lpad-body.i = phi { ptr, i32 } [ %.pn.i.i, %ehcleanup.i.i ], [ %10, %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit25.i.i ], [ %10, %if.then.i27.i.i ], [ %10, %if.then.i.i30.i.i ] + %eh.lpad-body.i = phi { ptr, i32 } [ %.pn.i.i, %ehcleanup.i.i ], [ %9, %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit25.i.i ], [ %9, %if.then.i27.i.i ], [ %9, %if.then.i.i30.i.i ] call void @_ZdlPv(ptr noundef nonnull %call.i) #22, !noalias !4 resume { ptr, i32 } %eh.lpad-body.i diff --git a/bench/grpc/optimized/fault_injection_service_config_parser.cc.ll b/bench/grpc/optimized/fault_injection_service_config_parser.cc.ll index 5d38c2e767b..470e067c0f3 100644 --- a/bench/grpc/optimized/fault_injection_service_config_parser.cc.ll +++ b/bench/grpc/optimized/fault_injection_service_config_parser.cc.ll @@ -836,10 +836,8 @@ entry: %ref.tmp6 = alloca %"class.std::unique_ptr.60", align 8 %ref.tmp7 = alloca %"class.grpc_core::JsonArgs", align 8 %call = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %args, i64 49, ptr nonnull @.str.18) - %0 = and i16 %call, 256 - %tobool.i.i.not = icmp ne i16 %0, 0 - %1 = trunc i16 %call to i1 - %retval.0.i = and i1 %tobool.i.i.not, %1 + %0 = and i16 %call, 257 + %retval.0.i = icmp eq i16 %0, 257 br i1 %retval.0.i, label %if.end, label %return if.end: ; preds = %entry @@ -847,33 +845,33 @@ if.end: ; preds = %entry tail call void @llvm.experimental.noalias.scope.decl(metadata !5) store ptr null, ptr %ref.tmp6, align 8, !alias.scope !5 %vtable.i = load ptr, ptr @_ZN9grpc_core19NoDestructSingletonINS_11json_detail10AutoLoaderISt10unique_ptrINS_32FaultInjectionMethodParsedConfigESt14default_deleteIS4_EEEEE6value_E, align 8, !noalias !5 - %2 = load ptr, ptr %vtable.i, align 8, !noalias !5 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) @_ZN9grpc_core19NoDestructSingletonINS_11json_detail10AutoLoaderISt10unique_ptrINS_32FaultInjectionMethodParsedConfigESt14default_deleteIS4_EEEEE6value_E, ptr noundef nonnull align 8 dereferenceable(56) %json, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef nonnull align 8 %ref.tmp6, ptr noundef %errors) + %1 = load ptr, ptr %vtable.i, align 8, !noalias !5 + invoke void %1(ptr noundef nonnull align 8 dereferenceable(8) @_ZN9grpc_core19NoDestructSingletonINS_11json_detail10AutoLoaderISt10unique_ptrINS_32FaultInjectionMethodParsedConfigESt14default_deleteIS4_EEEEE6value_E, ptr noundef nonnull align 8 dereferenceable(56) %json, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef nonnull align 8 %ref.tmp6, ptr noundef %errors) to label %_ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit unwind label %lpad.i lpad.i: ; preds = %if.end - %3 = landingpad { ptr, i32 } + %2 = landingpad { ptr, i32 } cleanup - %4 = load ptr, ptr %ref.tmp6, align 8, !alias.scope !5 - %cmp.not.i.i = icmp eq ptr %4, null + %3 = load ptr, ptr %ref.tmp6, align 8, !alias.scope !5 + %cmp.not.i.i = icmp eq ptr %3, null br i1 %cmp.not.i.i, label %_ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit.i, label %_ZNKSt14default_deleteIN9grpc_core32FaultInjectionMethodParsedConfigEEclEPS1_.exit.i.i _ZNKSt14default_deleteIN9grpc_core32FaultInjectionMethodParsedConfigEEclEPS1_.exit.i.i: ; preds = %lpad.i - %vtable.i.i.i = load ptr, ptr %4, align 8 + %vtable.i.i.i = load ptr, ptr %3, align 8 %vfn.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i, i64 8 - %5 = load ptr, ptr %vfn.i.i.i, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(32) %4) #19 + %4 = load ptr, ptr %vfn.i.i.i, align 8 + call void %4(ptr noundef nonnull align 8 dereferenceable(32) %3) #19 br label %_ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit.i _ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit.i: ; preds = %_ZNKSt14default_deleteIN9grpc_core32FaultInjectionMethodParsedConfigEEclEPS1_.exit.i.i, %lpad.i - resume { ptr, i32 } %3 + resume { ptr, i32 } %2 _ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit: ; preds = %if.end - %6 = load ptr, ptr %ref.tmp6, align 8 + %5 = load ptr, ptr %ref.tmp6, align 8 br label %return return: ; preds = %entry, %_ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit - %.sink = phi ptr [ %6, %_ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit ], [ null, %entry ] + %.sink = phi ptr [ %5, %_ZNSt10unique_ptrIN9grpc_core32FaultInjectionMethodParsedConfigESt14default_deleteIS1_EED2Ev.exit ], [ null, %entry ] store ptr %.sink, ptr %agg.result, align 8 ret void } diff --git a/bench/grpc/optimized/google_c2p_resolver.cc.ll b/bench/grpc/optimized/google_c2p_resolver.cc.ll index d4f2a825ed2..c3b7674b46a 100644 --- a/bench/grpc/optimized/google_c2p_resolver.cc.ll +++ b/bench/grpc/optimized/google_c2p_resolver.cc.ll @@ -704,10 +704,8 @@ _ZN4absl12lts_2023080211StripPrefixESt17basic_string_viewIcSt11char_traitsIcEES4 to label %invoke.cont17.i unwind label %lpad7.i invoke.cont17.i: ; preds = %_ZN4absl12lts_2023080211StripPrefixESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i - %14 = and i16 %call18.i, 256 - %tobool.i.i.not.i = icmp ne i16 %14, 0 - %15 = trunc i16 %call18.i to i1 - %retval.0.i.i = and i1 %tobool.i.i.not.i, %15 + %14 = and i16 %call18.i, 257 + %retval.0.i.i = icmp eq i16 %14, 257 br i1 %retval.0.i.i, label %lor.end.i, label %lor.rhs.i lor.rhs.i: ; preds = %invoke.cont17.i @@ -715,12 +713,12 @@ lor.rhs.i: ; preds = %invoke.cont17.i to label %lor.end.i unwind label %lpad7.i lor.end.i: ; preds = %lor.rhs.i, %invoke.cont17.i - %16 = phi i1 [ true, %invoke.cont17.i ], [ %call25.i, %lor.rhs.i ] + %15 = phi i1 [ true, %invoke.cont17.i ], [ %call25.i, %lor.rhs.i ] %call28.i = invoke noundef zeroext i1 @_ZN9grpc_core20XdsFederationEnabledEv() to label %invoke.cont27.i unwind label %lpad7.i invoke.cont27.i: ; preds = %lor.end.i - br i1 %16, label %lor.lhs.false.i, label %if.then.i + br i1 %15, label %lor.lhs.false.i, label %if.then.i lor.lhs.false.i: ; preds = %invoke.cont27.i br i1 %call28.i, label %if.end62.i, label %land.lhs.true.i @@ -733,8 +731,8 @@ land.lhs.true.i: ; preds = %lor.lhs.false.i .noexc16.i: ; preds = %land.lhs.true.i %_M_engaged.i.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp.i.i, i64 32 - %17 = load i8, ptr %_M_engaged.i.i.i.i, align 8 - %tobool.i.i.i.i = trunc i8 %17 to i1 + %16 = load i8, ptr %_M_engaged.i.i.i.i, align 8 + %tobool.i.i.i.i = trunc i8 %16 to i1 br i1 %tobool.i.i.i.i, label %cleanup.done.i.i, label %lor.rhs.i.i lor.rhs.i.i: ; preds = %.noexc16.i @@ -743,8 +741,8 @@ lor.rhs.i.i: ; preds = %.noexc16.i cleanup.action.i.i: ; preds = %lor.rhs.i.i %_M_engaged.i.i1.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp1.i.i, i64 32 - %18 = load i8, ptr %_M_engaged.i.i1.i.i, align 8 - %tobool.i.i2.i.i = trunc i8 %18 to i1 + %17 = load i8, ptr %_M_engaged.i.i1.i.i, align 8 + %tobool.i.i2.i.i = trunc i8 %17 to i1 br i1 %tobool.i.i2.i.i, label %if.then.i.i.i.i.i.i, label %cleanup.done.i.i if.then.i.i.i.i.i.i: ; preds = %cleanup.action.i.i @@ -753,9 +751,9 @@ if.then.i.i.i.i.i.i: ; preds = %cleanup.action.i.i br label %cleanup.done.i.i cleanup.done.i.i: ; preds = %if.then.i.i.i.i.i.i, %cleanup.action.i.i, %.noexc16.i - %19 = phi i1 [ false, %cleanup.action.i.i ], [ true, %if.then.i.i.i.i.i.i ], [ true, %.noexc16.i ] - %20 = load i8, ptr %_M_engaged.i.i.i.i, align 8 - %tobool.i.i.i.i4.i.i = trunc i8 %20 to i1 + %18 = phi i1 [ false, %cleanup.action.i.i ], [ true, %if.then.i.i.i.i.i.i ], [ true, %.noexc16.i ] + %19 = load i8, ptr %_M_engaged.i.i.i.i, align 8 + %tobool.i.i.i.i4.i.i = trunc i8 %19 to i1 br i1 %tobool.i.i.i.i4.i.i, label %if.then.i.i.i.i5.i.i, label %invoke.cont32.i if.then.i.i.i.i5.i.i: ; preds = %cleanup.done.i.i @@ -764,10 +762,10 @@ if.then.i.i.i.i5.i.i: ; preds = %cleanup.done.i.i br label %invoke.cont32.i lpad.i15.i: ; preds = %lor.rhs.i.i - %21 = landingpad { ptr, i32 } + %20 = landingpad { ptr, i32 } cleanup - %22 = load i8, ptr %_M_engaged.i.i.i.i, align 8 - %tobool.i.i.i.i8.i.i = trunc i8 %22 to i1 + %21 = load i8, ptr %_M_engaged.i.i.i.i, align 8 + %tobool.i.i.i.i8.i.i = trunc i8 %21 to i1 br i1 %tobool.i.i.i.i8.i.i, label %if.then.i.i.i.i9.i.i, label %ehcleanup121.i if.then.i.i.i.i9.i.i: ; preds = %lpad.i15.i @@ -778,13 +776,13 @@ if.then.i.i.i.i9.i.i: ; preds = %lpad.i15.i invoke.cont32.i: ; preds = %if.then.i.i.i.i5.i.i, %cleanup.done.i.i call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %ref.tmp.i.i) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %ref.tmp1.i.i) - br i1 %19, label %if.then.i, label %if.end62.i + br i1 %18, label %if.then.i, label %if.end62.i if.then.i: ; preds = %invoke.cont32.i, %invoke.cont27.i store i8 1, ptr %using_dns_.i, align 8 - %23 = load atomic i64, ptr @_ZN9grpc_core17CoreConfiguration7config_E acquire, align 8 - %atomic-temp.i.0.i.i.i = inttoptr i64 %23 to ptr - %cmp.not.i.i = icmp eq i64 %23, 0 + %22 = load atomic i64, ptr @_ZN9grpc_core17CoreConfiguration7config_E acquire, align 8 + %atomic-temp.i.0.i.i.i = inttoptr i64 %22 to ptr + %cmp.not.i.i = icmp eq i64 %22, 0 br i1 %cmp.not.i.i, label %if.end.i.i, label %invoke.cont43.i if.end.i.i: ; preds = %if.then.i @@ -795,8 +793,8 @@ invoke.cont43.i: ; preds = %if.end.i.i, %if.the %retval.0.i18.i = phi ptr [ %atomic-temp.i.0.i.i.i, %if.then.i ], [ %call1.i19.i, %if.end.i.i ] %resolver_registry_.i.i = getelementptr inbounds nuw i8, ptr %retval.0.i18.i, i64 576 store i64 4, ptr %ref.tmp42.i, align 8 - %24 = getelementptr inbounds nuw i8, ptr %ref.tmp42.i, i64 8 - store ptr @.str.7, ptr %24, align 8 + %23 = getelementptr inbounds nuw i8, ptr %ref.tmp42.i, i64 8 + store ptr @.str.7, ptr %23, align 8 store i64 %str.sroa.0.0.i.i, ptr %ref.tmp44.i, align 8 %pc.sroa.2.0.piece_.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp44.i, i64 8 store ptr %str.sroa.4.0.i.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i.i, align 8 @@ -805,59 +803,59 @@ invoke.cont43.i: ; preds = %if.end.i.i, %if.the invoke.cont47.i: ; preds = %invoke.cont43.i %call48.i = call { i64, ptr } @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp41.i) #19 - %25 = extractvalue { i64, ptr } %call48.i, 0 - %26 = extractvalue { i64, ptr } %call48.i, 1 - %27 = load ptr, ptr %pollset_set.i, align 8 - %28 = load ptr, ptr %work_serializer_.i, align 8 - store ptr %28, ptr %agg.tmp51.i, align 8 + %24 = extractvalue { i64, ptr } %call48.i, 0 + %25 = extractvalue { i64, ptr } %call48.i, 1 + %26 = load ptr, ptr %pollset_set.i, align 8 + %27 = load ptr, ptr %work_serializer_.i, align 8 + store ptr %27, ptr %agg.tmp51.i, align 8 %_M_refcount.i.i20.i = getelementptr inbounds nuw i8, ptr %agg.tmp51.i, i64 8 - %29 = load ptr, ptr %_M_refcount.i.i.i2, align 8 - store ptr %29, ptr %_M_refcount.i.i20.i, align 8 - %cmp.not.i.i.i.i = icmp eq ptr %29, null + %28 = load ptr, ptr %_M_refcount.i.i.i2, align 8 + store ptr %28, ptr %_M_refcount.i.i20.i, align 8 + %cmp.not.i.i.i.i = icmp eq ptr %28, null br i1 %cmp.not.i.i.i.i, label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit.i, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %invoke.cont47.i - %_M_use_count.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %29, i64 8 - %30 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i.i = icmp eq i8 %30, 0 + %_M_use_count.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %28, i64 8 + %29 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.not.i.i.i.i.i = icmp eq i8 %29, 0 br i1 %tobool.i.not.i.i.i.i.i, label %if.else.i.i.i.i.i.i, label %if.then.i.i.i.i.i21.i if.then.i.i.i.i.i21.i: ; preds = %if.then.i.i.i.i - %31 = load i32, ptr %_M_use_count.i.i.i.i.i, align 4 - %add.i.i.i.i.i.i = add nsw i32 %31, 1 + %30 = load i32, ptr %_M_use_count.i.i.i.i.i, align 4 + %add.i.i.i.i.i.i = add nsw i32 %30, 1 store i32 %add.i.i.i.i.i.i, ptr %_M_use_count.i.i.i.i.i, align 4 br label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit.i if.else.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i - %32 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i, i32 1 acq_rel, align 4 + %31 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i, i32 1 acq_rel, align 4 br label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit.i _ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit.i: ; preds = %if.else.i.i.i.i.i.i, %if.then.i.i.i.i.i21.i, %invoke.cont47.i - %33 = load i64, ptr %result_handler.i, align 8 - store i64 %33, ptr %agg.tmp53.i, align 8 + %32 = load i64, ptr %result_handler.i, align 8 + store i64 %32, ptr %agg.tmp53.i, align 8 store ptr null, ptr %result_handler.i, align 8 - invoke void @_ZNK9grpc_core16ResolverRegistry14CreateResolverESt17basic_string_viewIcSt11char_traitsIcEERKNS_11ChannelArgsEP16grpc_pollset_setSt10shared_ptrINS_14WorkSerializerEESt10unique_ptrINS_8Resolver13ResultHandlerESt14default_deleteISF_EE(ptr nonnull sret(%"class.std::unique_ptr.59") align 8 %ref.tmp35.i, ptr noundef nonnull align 8 dereferenceable(80) %resolver_registry_.i.i, i64 %25, ptr %26, ptr noundef nonnull align 8 dereferenceable(8) %args.i, ptr noundef %27, ptr noundef nonnull %agg.tmp51.i, ptr noundef nonnull %agg.tmp53.i) + invoke void @_ZNK9grpc_core16ResolverRegistry14CreateResolverESt17basic_string_viewIcSt11char_traitsIcEERKNS_11ChannelArgsEP16grpc_pollset_setSt10shared_ptrINS_14WorkSerializerEESt10unique_ptrINS_8Resolver13ResultHandlerESt14default_deleteISF_EE(ptr nonnull sret(%"class.std::unique_ptr.59") align 8 %ref.tmp35.i, ptr noundef nonnull align 8 dereferenceable(80) %resolver_registry_.i.i, i64 %24, ptr %25, ptr noundef nonnull align 8 dereferenceable(8) %args.i, ptr noundef %26, ptr noundef nonnull %agg.tmp51.i, ptr noundef nonnull %agg.tmp53.i) to label %invoke.cont55.i unwind label %lpad54.i invoke.cont55.i: ; preds = %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit.i - %34 = load ptr, ptr %ref.tmp35.i, align 8 + %33 = load ptr, ptr %ref.tmp35.i, align 8 store ptr null, ptr %ref.tmp35.i, align 8 - %35 = load ptr, ptr %child_resolver_.i, align 8 - store ptr %34, ptr %child_resolver_.i, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %35, null + %34 = load ptr, ptr %child_resolver_.i, align 8 + store ptr %33, ptr %child_resolver_.i, align 8 + %tobool.not.i.i.i.i.i = icmp eq ptr %34, null br i1 %tobool.not.i.i.i.i.i, label %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit.i, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %invoke.cont55.i - %vtable.i.i.i.i.i.i = load ptr, ptr %35, align 8 - %36 = load ptr, ptr %vtable.i.i.i.i.i.i, align 8 - invoke void %36(ptr noundef nonnull align 8 dereferenceable(16) %35) + %vtable.i.i.i.i.i.i = load ptr, ptr %34, align 8 + %35 = load ptr, ptr %vtable.i.i.i.i.i.i, align 8 + invoke void %35(ptr noundef nonnull align 8 dereferenceable(16) %34) to label %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit.i unwind label %terminate.lpad.i.i.i.i.i terminate.lpad.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i - %37 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } catch ptr null - %38 = extractvalue { ptr, i32 } %37, 0 - call void @__clang_call_terminate(ptr %38) #21 + %37 = extractvalue { ptr, i32 } %36, 0 + call void @__clang_call_terminate(ptr %37) #21 unreachable _ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit.i: ; preds = %if.then.i.i.i.i.i @@ -867,108 +865,108 @@ _ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit.i: ; if.then.i23.i: ; preds = %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit.i %vtable.i.i.i = load ptr, ptr %.pr.i, align 8 - %39 = load ptr, ptr %vtable.i.i.i, align 8 - invoke void %39(ptr noundef nonnull align 8 dereferenceable(16) %.pr.i) + %38 = load ptr, ptr %vtable.i.i.i, align 8 + invoke void %38(ptr noundef nonnull align 8 dereferenceable(16) %.pr.i) to label %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit.i unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then.i23.i - %40 = landingpad { ptr, i32 } + %39 = landingpad { ptr, i32 } catch ptr null - %41 = extractvalue { ptr, i32 } %40, 0 - call void @__clang_call_terminate(ptr %41) #21 + %40 = extractvalue { ptr, i32 } %39, 0 + call void @__clang_call_terminate(ptr %40) #21 unreachable _ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit.i: ; preds = %if.then.i23.i, %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit.i, %invoke.cont55.i store ptr null, ptr %ref.tmp35.i, align 8 - %42 = load ptr, ptr %agg.tmp53.i, align 8 - %cmp.not.i25.i = icmp eq ptr %42, null + %41 = load ptr, ptr %agg.tmp53.i, align 8 + %cmp.not.i25.i = icmp eq ptr %41, null br i1 %cmp.not.i25.i, label %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit.i, label %_ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i.i _ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i.i: ; preds = %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit.i - %vtable.i.i26.i = load ptr, ptr %42, align 8 + %vtable.i.i26.i = load ptr, ptr %41, align 8 %vfn.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i26.i, i64 8 - %43 = load ptr, ptr %vfn.i.i.i, align 8 - call void %43(ptr noundef nonnull align 8 dereferenceable(8) %42) #19 + %42 = load ptr, ptr %vfn.i.i.i, align 8 + call void %42(ptr noundef nonnull align 8 dereferenceable(8) %41) #19 br label %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit.i _ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit.i: ; preds = %_ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i.i, %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit.i store ptr null, ptr %agg.tmp53.i, align 8 - %44 = load ptr, ptr %_M_refcount.i.i20.i, align 8 - %cmp.not.i.i.i29.i = icmp eq ptr %44, null + %43 = load ptr, ptr %_M_refcount.i.i20.i, align 8 + %cmp.not.i.i.i29.i = icmp eq ptr %43, null br i1 %cmp.not.i.i.i29.i, label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit.i, label %if.then.i.i.i30.i if.then.i.i.i30.i: ; preds = %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit.i - %_M_use_count.i.i.i.i31.i = getelementptr inbounds nuw i8, ptr %44, i64 8 - %45 = load atomic i64, ptr %_M_use_count.i.i.i.i31.i acquire, align 8 - %cmp.i.i.i.i.i = icmp eq i64 %45, 4294967297 - %46 = trunc i64 %45 to i32 + %_M_use_count.i.i.i.i31.i = getelementptr inbounds nuw i8, ptr %43, i64 8 + %44 = load atomic i64, ptr %_M_use_count.i.i.i.i31.i acquire, align 8 + %cmp.i.i.i.i.i = icmp eq i64 %44, 4294967297 + %45 = trunc i64 %44 to i32 br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i35.i, label %if.end.i.i.i.i.i if.then.i.i.i.i35.i: ; preds = %if.then.i.i.i30.i store i32 0, ptr %_M_use_count.i.i.i.i31.i, align 8 - %_M_weak_count.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %44, i64 12 + %_M_weak_count.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %43, i64 12 store i32 0, ptr %_M_weak_count.i.i.i.i.i, align 4 - %vtable.i.i.i.i.i = load ptr, ptr %44, align 8 + %vtable.i.i.i.i.i = load ptr, ptr %43, align 8 %vfn.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i, i64 16 - %47 = load ptr, ptr %vfn.i.i.i.i.i, align 8 - call void %47(ptr noundef nonnull align 8 dereferenceable(16) %44) #19 + %46 = load ptr, ptr %vfn.i.i.i.i.i, align 8 + call void %46(ptr noundef nonnull align 8 dereferenceable(16) %43) #19 br label %if.end8.sink.split.i.i.i.i.i if.end.i.i.i.i.i: ; preds = %if.then.i.i.i30.i - %48 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.i.not.i.i.i.i.i = icmp eq i8 %48, 0 + %47 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.i.not.i.i.i.i.i = icmp eq i8 %47, 0 br i1 %tobool.i.i.not.i.i.i.i.i, label %if.else.i.i.i.i.i34.i, label %if.then.i.i.i.i.i32.i if.then.i.i.i.i.i32.i: ; preds = %if.end.i.i.i.i.i - %add.i.i.i.i.i33.i = add nsw i32 %46, -1 + %add.i.i.i.i.i33.i = add nsw i32 %45, -1 store i32 %add.i.i.i.i.i33.i, ptr %_M_use_count.i.i.i.i31.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i if.else.i.i.i.i.i34.i: ; preds = %if.end.i.i.i.i.i - %49 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i31.i, i32 -1 acq_rel, align 4 + %48 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i31.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i34.i, %if.then.i.i.i.i.i32.i - %retval.i.0.i.i.i.i.i = phi i32 [ %46, %if.then.i.i.i.i.i32.i ], [ %49, %if.else.i.i.i.i.i34.i ] + %retval.i.0.i.i.i.i.i = phi i32 [ %45, %if.then.i.i.i.i.i32.i ], [ %48, %if.else.i.i.i.i.i34.i ] %cmp6.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i, 1 br i1 %cmp6.i.i.i.i.i, label %if.then7.i.i.i.i.i, label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit.i if.then7.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i - %vtable.i.i.i.i.i.i.i = load ptr, ptr %44, align 8 + %vtable.i.i.i.i.i.i.i = load ptr, ptr %43, align 8 %vfn.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i, i64 16 - %50 = load ptr, ptr %vfn.i.i.i.i.i.i.i, align 8 - call void %50(ptr noundef nonnull align 8 dereferenceable(16) %44) #19 - %_M_weak_count.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %44, i64 12 - %51 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.i.not.i.i.i.i.i.i.i = icmp eq i8 %51, 0 + %49 = load ptr, ptr %vfn.i.i.i.i.i.i.i, align 8 + call void %49(ptr noundef nonnull align 8 dereferenceable(16) %43) #19 + %_M_weak_count.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %43, i64 12 + %50 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.i.not.i.i.i.i.i.i.i = icmp eq i8 %50, 0 br i1 %tobool.i.i.not.i.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i - %52 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i, align 4 - %add.i.i.i.i.i.i.i.i = add nsw i32 %52, -1 + %51 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i, align 4 + %add.i.i.i.i.i.i.i.i = add nsw i32 %51, -1 store i32 %add.i.i.i.i.i.i.i.i, ptr %_M_weak_count.i.i.i.i.i.i.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i if.else.i.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i - %53 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4 + %52 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i - %retval.i.0.i.i.i.i.i.i.i = phi i32 [ %52, %if.then.i.i.i.i.i.i.i.i ], [ %53, %if.else.i.i.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i.i.i = phi i32 [ %51, %if.then.i.i.i.i.i.i.i.i ], [ %52, %if.else.i.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i, 1 br i1 %cmp.i.i.i.i.i.i.i, label %if.end8.sink.split.i.i.i.i.i, label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit.i if.end8.sink.split.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i, %if.then.i.i.i.i35.i - %vtable2.i.i.i.i.i.i.i = load ptr, ptr %44, align 8 + %vtable2.i.i.i.i.i.i.i = load ptr, ptr %43, align 8 %vfn3.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable2.i.i.i.i.i.i.i, i64 24 - %54 = load ptr, ptr %vfn3.i.i.i.i.i.i.i, align 8 - call void %54(ptr noundef nonnull align 8 dereferenceable(16) %44) #19 + %53 = load ptr, ptr %vfn3.i.i.i.i.i.i.i, align 8 + call void %53(ptr noundef nonnull align 8 dereferenceable(16) %43) #19 br label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit.i _ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit.i: ; preds = %if.end8.sink.split.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp41.i) #19 - %55 = load ptr, ptr %child_resolver_.i, align 8 - %cmp.i.i36.not.i = icmp eq ptr %55, null + %54 = load ptr, ptr %child_resolver_.i, align 8 + %cmp.i.i36.not.i = icmp eq ptr %54, null br i1 %cmp.i.i36.not.i, label %if.then60.i, label %invoke.cont if.then60.i: ; preds = %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit.i @@ -979,37 +977,37 @@ invoke.cont61.i: ; preds = %if.then60.i unreachable lpad3.i: ; preds = %invoke.cont.i - %56 = landingpad { ptr, i32 } + %55 = landingpad { ptr, i32 } cleanup br label %ehcleanup126.i lpad5.i: ; preds = %call.i.noexc.i, %invoke.cont4.i - %57 = landingpad { ptr, i32 } + %56 = landingpad { ptr, i32 } cleanup br label %lpad5.body.i lpad5.body.i: ; preds = %lpad5.i, %lpad.i.i - %eh.lpad-body.i = phi { ptr, i32 } [ %57, %lpad5.i ], [ %11, %lpad.i.i ] + %eh.lpad-body.i = phi { ptr, i32 } [ %56, %lpad5.i ], [ %11, %lpad.i.i ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i) #19 br label %ehcleanup125.i lpad7.i: ; preds = %if.end62.i, %if.then60.i, %invoke.cont43.i, %if.end.i.i, %land.lhs.true.i, %lor.end.i, %lor.rhs.i, %_ZN4absl12lts_2023080211StripPrefixESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i - %58 = landingpad { ptr, i32 } + %57 = landingpad { ptr, i32 } cleanup br label %ehcleanup121.i lpad54.i: ; preds = %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit.i - %59 = landingpad { ptr, i32 } + %58 = landingpad { ptr, i32 } cleanup - %60 = load ptr, ptr %agg.tmp53.i, align 8 - %cmp.not.i37.i = icmp eq ptr %60, null + %59 = load ptr, ptr %agg.tmp53.i, align 8 + %cmp.not.i37.i = icmp eq ptr %59, null br i1 %cmp.not.i37.i, label %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit42.i, label %_ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i38.i _ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i38.i: ; preds = %lpad54.i - %vtable.i.i39.i = load ptr, ptr %60, align 8 + %vtable.i.i39.i = load ptr, ptr %59, align 8 %vfn.i.i40.i = getelementptr inbounds nuw i8, ptr %vtable.i.i39.i, i64 8 - %61 = load ptr, ptr %vfn.i.i40.i, align 8 - call void %61(ptr noundef nonnull align 8 dereferenceable(8) %60) #19 + %60 = load ptr, ptr %vfn.i.i40.i, align 8 + call void %60(ptr noundef nonnull align 8 dereferenceable(8) %59) #19 br label %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit42.i _ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit42.i: ; preds = %_ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i38.i, %lpad54.i @@ -1024,8 +1022,8 @@ if.end62.i: ; preds = %invoke.cont32.i, %l invoke.cont65.i: ; preds = %if.end62.i %_M_engaged.i.i45.i = getelementptr inbounds nuw i8, ptr %test_only_metadata_server_override.i, i64 32 - %62 = load i8, ptr %_M_engaged.i.i45.i, align 8 - %tobool.i.i46.i = trunc i8 %62 to i1 + %61 = load i8, ptr %_M_engaged.i.i45.i, align 8 + %tobool.i.i46.i = trunc i8 %61 to i1 br i1 %tobool.i.i46.i, label %land.lhs.true67.i, label %if.end74.i land.lhs.true67.i: ; preds = %invoke.cont65.i @@ -1041,24 +1039,24 @@ if.end74.i: ; preds = %if.then70.i, %land. invoke.cont78.i: ; preds = %if.end74.i store i64 6, ptr %ref.tmp76.i, align 8 - %63 = getelementptr inbounds nuw i8, ptr %ref.tmp76.i, i64 8 - store ptr @.str.10, ptr %63, align 8 - %64 = load ptr, ptr @_ZN9grpc_core12_GLOBAL__N_113kC2PAuthorityE, align 8 - %tobool.not.i.i.i = icmp eq ptr %64, null + %62 = getelementptr inbounds nuw i8, ptr %ref.tmp76.i, i64 8 + store ptr @.str.10, ptr %62, align 8 + %63 = load ptr, ptr @_ZN9grpc_core12_GLOBAL__N_113kC2PAuthorityE, align 8 + %tobool.not.i.i.i = icmp eq ptr %63, null br i1 %tobool.not.i.i.i, label %invoke.cont82.i, label %cond.true.i.i.i cond.true.i.i.i: ; preds = %invoke.cont78.i - %call.i.i.i.i48.i = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %64) #19 + %call.i.i.i.i48.i = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %63) #19 br label %invoke.cont82.i invoke.cont82.i: ; preds = %cond.true.i.i.i, %invoke.cont78.i %retval.sroa.0.0.i.i.i = phi i64 [ %call.i.i.i.i48.i, %cond.true.i.i.i ], [ 0, %invoke.cont78.i ] store i64 %retval.sroa.0.0.i.i.i, ptr %ref.tmp79.i, align 8 - %65 = getelementptr inbounds nuw i8, ptr %ref.tmp79.i, i64 8 - store ptr %64, ptr %65, align 8 + %64 = getelementptr inbounds nuw i8, ptr %ref.tmp79.i, i64 8 + store ptr %63, ptr %64, align 8 store i64 1, ptr %ref.tmp81.i, align 8 - %66 = getelementptr inbounds nuw i8, ptr %ref.tmp81.i, i64 8 - store ptr @.str.5, ptr %66, align 8 + %65 = getelementptr inbounds nuw i8, ptr %ref.tmp81.i, i64 8 + store ptr @.str.5, ptr %65, align 8 store i64 %str.sroa.0.0.i.i, ptr %ref.tmp83.i, align 8 %pc.sroa.2.0.piece_.sroa_idx.i52.i = getelementptr inbounds nuw i8, ptr %ref.tmp83.i, i64 8 store ptr %str.sroa.4.0.i.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i52.i, align 8 @@ -1067,8 +1065,8 @@ invoke.cont82.i: ; preds = %cond.true.i.i.i, %i invoke.cont88.i: ; preds = %if.end74.i store i64 4, ptr %ref.tmp87.i, align 8 - %67 = getelementptr inbounds nuw i8, ptr %ref.tmp87.i, i64 8 - store ptr @.str.11, ptr %67, align 8 + %66 = getelementptr inbounds nuw i8, ptr %ref.tmp87.i, i64 8 + store ptr @.str.11, ptr %66, align 8 store i64 %str.sroa.0.0.i.i, ptr %ref.tmp89.i, align 8 %pc.sroa.2.0.piece_.sroa_idx.i56.i = getelementptr inbounds nuw i8, ptr %ref.tmp89.i, i64 8 store ptr %str.sroa.4.0.i.i, ptr %pc.sroa.2.0.piece_.sroa_idx.i56.i, align 8 @@ -1076,9 +1074,9 @@ invoke.cont88.i: ; preds = %if.end74.i to label %cond.end.i unwind label %lpad77.i cond.end.i: ; preds = %invoke.cont88.i, %invoke.cont82.i - %68 = load atomic i64, ptr @_ZN9grpc_core17CoreConfiguration7config_E acquire, align 8 - %atomic-temp.i.0.i.i57.i = inttoptr i64 %68 to ptr - %cmp.not.i58.i = icmp eq i64 %68, 0 + %67 = load atomic i64, ptr @_ZN9grpc_core17CoreConfiguration7config_E acquire, align 8 + %atomic-temp.i.0.i.i57.i = inttoptr i64 %67 to ptr + %cmp.not.i58.i = icmp eq i64 %67, 0 br i1 %cmp.not.i58.i, label %if.end.i60.i, label %invoke.cont95.i if.end.i60.i: ; preds = %cond.end.i @@ -1089,59 +1087,59 @@ invoke.cont95.i: ; preds = %if.end.i60.i, %cond %retval.0.i59.i = phi ptr [ %atomic-temp.i.0.i.i57.i, %cond.end.i ], [ %call1.i62.i, %if.end.i60.i ] %resolver_registry_.i64.i = getelementptr inbounds nuw i8, ptr %retval.0.i59.i, i64 576 %call100.i = call { i64, ptr } @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv(ptr noundef nonnull align 8 dereferenceable(32) %xds_uri.i) #19 - %69 = extractvalue { i64, ptr } %call100.i, 0 - %70 = extractvalue { i64, ptr } %call100.i, 1 - %71 = load ptr, ptr %pollset_set.i, align 8 - %72 = load ptr, ptr %work_serializer_.i, align 8 - store ptr %72, ptr %agg.tmp103.i, align 8 + %68 = extractvalue { i64, ptr } %call100.i, 0 + %69 = extractvalue { i64, ptr } %call100.i, 1 + %70 = load ptr, ptr %pollset_set.i, align 8 + %71 = load ptr, ptr %work_serializer_.i, align 8 + store ptr %71, ptr %agg.tmp103.i, align 8 %_M_refcount.i.i65.i = getelementptr inbounds nuw i8, ptr %agg.tmp103.i, i64 8 - %73 = load ptr, ptr %_M_refcount.i.i.i2, align 8 - store ptr %73, ptr %_M_refcount.i.i65.i, align 8 - %cmp.not.i.i.i67.i = icmp eq ptr %73, null + %72 = load ptr, ptr %_M_refcount.i.i.i2, align 8 + store ptr %72, ptr %_M_refcount.i.i65.i, align 8 + %cmp.not.i.i.i67.i = icmp eq ptr %72, null br i1 %cmp.not.i.i.i67.i, label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit74.i, label %if.then.i.i.i68.i if.then.i.i.i68.i: ; preds = %invoke.cont95.i - %_M_use_count.i.i.i.i69.i = getelementptr inbounds nuw i8, ptr %73, i64 8 - %74 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i70.i = icmp eq i8 %74, 0 + %_M_use_count.i.i.i.i69.i = getelementptr inbounds nuw i8, ptr %72, i64 8 + %73 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.not.i.i.i.i70.i = icmp eq i8 %73, 0 br i1 %tobool.i.not.i.i.i.i70.i, label %if.else.i.i.i.i.i73.i, label %if.then.i.i.i.i.i71.i if.then.i.i.i.i.i71.i: ; preds = %if.then.i.i.i68.i - %75 = load i32, ptr %_M_use_count.i.i.i.i69.i, align 4 - %add.i.i.i.i.i72.i = add nsw i32 %75, 1 + %74 = load i32, ptr %_M_use_count.i.i.i.i69.i, align 4 + %add.i.i.i.i.i72.i = add nsw i32 %74, 1 store i32 %add.i.i.i.i.i72.i, ptr %_M_use_count.i.i.i.i69.i, align 4 br label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit74.i if.else.i.i.i.i.i73.i: ; preds = %if.then.i.i.i68.i - %76 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i69.i, i32 1 acq_rel, align 4 + %75 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i69.i, i32 1 acq_rel, align 4 br label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit74.i _ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit74.i: ; preds = %if.else.i.i.i.i.i73.i, %if.then.i.i.i.i.i71.i, %invoke.cont95.i - %77 = load i64, ptr %result_handler.i, align 8 - store i64 %77, ptr %agg.tmp105.i, align 8 + %76 = load i64, ptr %result_handler.i, align 8 + store i64 %76, ptr %agg.tmp105.i, align 8 store ptr null, ptr %result_handler.i, align 8 - invoke void @_ZNK9grpc_core16ResolverRegistry14CreateResolverESt17basic_string_viewIcSt11char_traitsIcEERKNS_11ChannelArgsEP16grpc_pollset_setSt10shared_ptrINS_14WorkSerializerEESt10unique_ptrINS_8Resolver13ResultHandlerESt14default_deleteISF_EE(ptr nonnull sret(%"class.std::unique_ptr.59") align 8 %ref.tmp93.i, ptr noundef nonnull align 8 dereferenceable(80) %resolver_registry_.i64.i, i64 %69, ptr %70, ptr noundef nonnull align 8 dereferenceable(8) %args.i, ptr noundef %71, ptr noundef nonnull %agg.tmp103.i, ptr noundef nonnull %agg.tmp105.i) + invoke void @_ZNK9grpc_core16ResolverRegistry14CreateResolverESt17basic_string_viewIcSt11char_traitsIcEERKNS_11ChannelArgsEP16grpc_pollset_setSt10shared_ptrINS_14WorkSerializerEESt10unique_ptrINS_8Resolver13ResultHandlerESt14default_deleteISF_EE(ptr nonnull sret(%"class.std::unique_ptr.59") align 8 %ref.tmp93.i, ptr noundef nonnull align 8 dereferenceable(80) %resolver_registry_.i64.i, i64 %68, ptr %69, ptr noundef nonnull align 8 dereferenceable(8) %args.i, ptr noundef %70, ptr noundef nonnull %agg.tmp103.i, ptr noundef nonnull %agg.tmp105.i) to label %invoke.cont108.i unwind label %lpad107.i invoke.cont108.i: ; preds = %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit74.i - %78 = load ptr, ptr %ref.tmp93.i, align 8 + %77 = load ptr, ptr %ref.tmp93.i, align 8 store ptr null, ptr %ref.tmp93.i, align 8 - %79 = load ptr, ptr %child_resolver_.i, align 8 - store ptr %78, ptr %child_resolver_.i, align 8 - %tobool.not.i.i.i.i75.i = icmp eq ptr %79, null + %78 = load ptr, ptr %child_resolver_.i, align 8 + store ptr %77, ptr %child_resolver_.i, align 8 + %tobool.not.i.i.i.i75.i = icmp eq ptr %78, null br i1 %tobool.not.i.i.i.i75.i, label %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit85.i, label %if.then.i.i.i.i76.i if.then.i.i.i.i76.i: ; preds = %invoke.cont108.i - %vtable.i.i.i.i.i77.i = load ptr, ptr %79, align 8 - %80 = load ptr, ptr %vtable.i.i.i.i.i77.i, align 8 - invoke void %80(ptr noundef nonnull align 8 dereferenceable(16) %79) + %vtable.i.i.i.i.i77.i = load ptr, ptr %78, align 8 + %79 = load ptr, ptr %vtable.i.i.i.i.i77.i, align 8 + invoke void %79(ptr noundef nonnull align 8 dereferenceable(16) %78) to label %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit79.i unwind label %terminate.lpad.i.i.i.i78.i terminate.lpad.i.i.i.i78.i: ; preds = %if.then.i.i.i.i76.i - %81 = landingpad { ptr, i32 } + %80 = landingpad { ptr, i32 } catch ptr null - %82 = extractvalue { ptr, i32 } %81, 0 - call void @__clang_call_terminate(ptr %82) #21 + %81 = extractvalue { ptr, i32 } %80, 0 + call void @__clang_call_terminate(ptr %81) #21 unreachable _ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit79.i: ; preds = %if.then.i.i.i.i76.i @@ -1151,107 +1149,107 @@ _ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit79.i: if.then.i81.i: ; preds = %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit79.i %vtable.i.i82.i = load ptr, ptr %.pr146.i, align 8 - %83 = load ptr, ptr %vtable.i.i82.i, align 8 - invoke void %83(ptr noundef nonnull align 8 dereferenceable(16) %.pr146.i) + %82 = load ptr, ptr %vtable.i.i82.i, align 8 + invoke void %82(ptr noundef nonnull align 8 dereferenceable(16) %.pr146.i) to label %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit85.i unwind label %terminate.lpad.i83.i terminate.lpad.i83.i: ; preds = %if.then.i81.i - %84 = landingpad { ptr, i32 } + %83 = landingpad { ptr, i32 } catch ptr null - %85 = extractvalue { ptr, i32 } %84, 0 - call void @__clang_call_terminate(ptr %85) #21 + %84 = extractvalue { ptr, i32 } %83, 0 + call void @__clang_call_terminate(ptr %84) #21 unreachable _ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit85.i: ; preds = %if.then.i81.i, %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEEaSEOS3_.exit79.i, %invoke.cont108.i store ptr null, ptr %ref.tmp93.i, align 8 - %86 = load ptr, ptr %agg.tmp105.i, align 8 - %cmp.not.i86.i = icmp eq ptr %86, null + %85 = load ptr, ptr %agg.tmp105.i, align 8 + %cmp.not.i86.i = icmp eq ptr %85, null br i1 %cmp.not.i86.i, label %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit91.i, label %_ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i87.i _ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i87.i: ; preds = %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit85.i - %vtable.i.i88.i = load ptr, ptr %86, align 8 + %vtable.i.i88.i = load ptr, ptr %85, align 8 %vfn.i.i89.i = getelementptr inbounds nuw i8, ptr %vtable.i.i88.i, i64 8 - %87 = load ptr, ptr %vfn.i.i89.i, align 8 - call void %87(ptr noundef nonnull align 8 dereferenceable(8) %86) #19 + %86 = load ptr, ptr %vfn.i.i89.i, align 8 + call void %86(ptr noundef nonnull align 8 dereferenceable(8) %85) #19 br label %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit91.i _ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit91.i: ; preds = %_ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i87.i, %_ZNSt10unique_ptrIN9grpc_core8ResolverENS0_16OrphanableDeleteEED2Ev.exit85.i store ptr null, ptr %agg.tmp105.i, align 8 - %88 = load ptr, ptr %_M_refcount.i.i65.i, align 8 - %cmp.not.i.i.i93.i = icmp eq ptr %88, null + %87 = load ptr, ptr %_M_refcount.i.i65.i, align 8 + %cmp.not.i.i.i93.i = icmp eq ptr %87, null br i1 %cmp.not.i.i.i93.i, label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit123.i, label %if.then.i.i.i94.i if.then.i.i.i94.i: ; preds = %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit91.i - %_M_use_count.i.i.i.i95.i = getelementptr inbounds nuw i8, ptr %88, i64 8 - %89 = load atomic i64, ptr %_M_use_count.i.i.i.i95.i acquire, align 8 - %cmp.i.i.i.i96.i = icmp eq i64 %89, 4294967297 - %90 = trunc i64 %89 to i32 + %_M_use_count.i.i.i.i95.i = getelementptr inbounds nuw i8, ptr %87, i64 8 + %88 = load atomic i64, ptr %_M_use_count.i.i.i.i95.i acquire, align 8 + %cmp.i.i.i.i96.i = icmp eq i64 %88, 4294967297 + %89 = trunc i64 %88 to i32 br i1 %cmp.i.i.i.i96.i, label %if.then.i.i.i.i119.i, label %if.end.i.i.i.i97.i if.then.i.i.i.i119.i: ; preds = %if.then.i.i.i94.i store i32 0, ptr %_M_use_count.i.i.i.i95.i, align 8 - %_M_weak_count.i.i.i.i120.i = getelementptr inbounds nuw i8, ptr %88, i64 12 + %_M_weak_count.i.i.i.i120.i = getelementptr inbounds nuw i8, ptr %87, i64 12 store i32 0, ptr %_M_weak_count.i.i.i.i120.i, align 4 - %vtable.i.i.i.i121.i = load ptr, ptr %88, align 8 + %vtable.i.i.i.i121.i = load ptr, ptr %87, align 8 %vfn.i.i.i.i122.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i121.i, i64 16 - %91 = load ptr, ptr %vfn.i.i.i.i122.i, align 8 - call void %91(ptr noundef nonnull align 8 dereferenceable(16) %88) #19 + %90 = load ptr, ptr %vfn.i.i.i.i122.i, align 8 + call void %90(ptr noundef nonnull align 8 dereferenceable(16) %87) #19 br label %if.end8.sink.split.i.i.i.i114.i if.end.i.i.i.i97.i: ; preds = %if.then.i.i.i94.i - %92 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.i.not.i.i.i.i98.i = icmp eq i8 %92, 0 + %91 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.i.not.i.i.i.i98.i = icmp eq i8 %91, 0 br i1 %tobool.i.i.not.i.i.i.i98.i, label %if.else.i.i.i.i.i118.i, label %if.then.i.i.i.i.i99.i if.then.i.i.i.i.i99.i: ; preds = %if.end.i.i.i.i97.i - %add.i.i.i.i.i100.i = add nsw i32 %90, -1 + %add.i.i.i.i.i100.i = add nsw i32 %89, -1 store i32 %add.i.i.i.i.i100.i, ptr %_M_use_count.i.i.i.i95.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i101.i if.else.i.i.i.i.i118.i: ; preds = %if.end.i.i.i.i97.i - %93 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i95.i, i32 -1 acq_rel, align 4 + %92 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i95.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i101.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i101.i: ; preds = %if.else.i.i.i.i.i118.i, %if.then.i.i.i.i.i99.i - %retval.i.0.i.i.i.i102.i = phi i32 [ %90, %if.then.i.i.i.i.i99.i ], [ %93, %if.else.i.i.i.i.i118.i ] + %retval.i.0.i.i.i.i102.i = phi i32 [ %89, %if.then.i.i.i.i.i99.i ], [ %92, %if.else.i.i.i.i.i118.i ] %cmp6.i.i.i.i103.i = icmp eq i32 %retval.i.0.i.i.i.i102.i, 1 br i1 %cmp6.i.i.i.i103.i, label %if.then7.i.i.i.i104.i, label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit123.i if.then7.i.i.i.i104.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i101.i - %vtable.i.i.i.i.i.i105.i = load ptr, ptr %88, align 8 + %vtable.i.i.i.i.i.i105.i = load ptr, ptr %87, align 8 %vfn.i.i.i.i.i.i106.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i105.i, i64 16 - %94 = load ptr, ptr %vfn.i.i.i.i.i.i106.i, align 8 - call void %94(ptr noundef nonnull align 8 dereferenceable(16) %88) #19 - %_M_weak_count.i.i.i.i.i.i107.i = getelementptr inbounds nuw i8, ptr %88, i64 12 - %95 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.i.not.i.i.i.i.i.i108.i = icmp eq i8 %95, 0 + %93 = load ptr, ptr %vfn.i.i.i.i.i.i106.i, align 8 + call void %93(ptr noundef nonnull align 8 dereferenceable(16) %87) #19 + %_M_weak_count.i.i.i.i.i.i107.i = getelementptr inbounds nuw i8, ptr %87, i64 12 + %94 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.i.not.i.i.i.i.i.i108.i = icmp eq i8 %94, 0 br i1 %tobool.i.i.not.i.i.i.i.i.i108.i, label %if.else.i.i.i.i.i.i.i117.i, label %if.then.i.i.i.i.i.i.i109.i if.then.i.i.i.i.i.i.i109.i: ; preds = %if.then7.i.i.i.i104.i - %96 = load i32, ptr %_M_weak_count.i.i.i.i.i.i107.i, align 4 - %add.i.i.i.i.i.i.i110.i = add nsw i32 %96, -1 + %95 = load i32, ptr %_M_weak_count.i.i.i.i.i.i107.i, align 4 + %add.i.i.i.i.i.i.i110.i = add nsw i32 %95, -1 store i32 %add.i.i.i.i.i.i.i110.i, ptr %_M_weak_count.i.i.i.i.i.i107.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i111.i if.else.i.i.i.i.i.i.i117.i: ; preds = %if.then7.i.i.i.i104.i - %97 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i107.i, i32 -1 acq_rel, align 4 + %96 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i107.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i111.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i111.i: ; preds = %if.else.i.i.i.i.i.i.i117.i, %if.then.i.i.i.i.i.i.i109.i - %retval.i.0.i.i.i.i.i.i112.i = phi i32 [ %96, %if.then.i.i.i.i.i.i.i109.i ], [ %97, %if.else.i.i.i.i.i.i.i117.i ] + %retval.i.0.i.i.i.i.i.i112.i = phi i32 [ %95, %if.then.i.i.i.i.i.i.i109.i ], [ %96, %if.else.i.i.i.i.i.i.i117.i ] %cmp.i.i.i.i.i.i113.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i112.i, 1 br i1 %cmp.i.i.i.i.i.i113.i, label %if.end8.sink.split.i.i.i.i114.i, label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit123.i if.end8.sink.split.i.i.i.i114.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i111.i, %if.then.i.i.i.i119.i - %vtable2.i.i.i.i.i.i115.i = load ptr, ptr %88, align 8 + %vtable2.i.i.i.i.i.i115.i = load ptr, ptr %87, align 8 %vfn3.i.i.i.i.i.i116.i = getelementptr inbounds nuw i8, ptr %vtable2.i.i.i.i.i.i115.i, i64 24 - %98 = load ptr, ptr %vfn3.i.i.i.i.i.i116.i, align 8 - call void %98(ptr noundef nonnull align 8 dereferenceable(16) %88) #19 + %97 = load ptr, ptr %vfn3.i.i.i.i.i.i116.i, align 8 + call void %97(ptr noundef nonnull align 8 dereferenceable(16) %87) #19 br label %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit123.i _ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit123.i: ; preds = %if.end8.sink.split.i.i.i.i114.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i111.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i101.i, %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit91.i - %99 = load ptr, ptr %child_resolver_.i, align 8 - %cmp.i.i124.not.i = icmp eq ptr %99, null + %98 = load ptr, ptr %child_resolver_.i, align 8 + %cmp.i.i124.not.i = icmp eq ptr %98, null br i1 %cmp.i.i124.not.i, label %if.then115.i, label %do.end119.i if.then115.i: ; preds = %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit123.i @@ -1262,27 +1260,27 @@ invoke.cont116.i: ; preds = %if.then115.i unreachable lpad77.i: ; preds = %invoke.cont88.i, %invoke.cont82.i - %100 = landingpad { ptr, i32 } + %99 = landingpad { ptr, i32 } cleanup br label %ehcleanup120.i lpad94.i: ; preds = %if.then115.i, %if.end.i60.i - %101 = landingpad { ptr, i32 } + %100 = landingpad { ptr, i32 } cleanup br label %ehcleanup.i lpad107.i: ; preds = %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEEC2ERKS2_.exit74.i - %102 = landingpad { ptr, i32 } + %101 = landingpad { ptr, i32 } cleanup - %103 = load ptr, ptr %agg.tmp105.i, align 8 - %cmp.not.i125.i = icmp eq ptr %103, null + %102 = load ptr, ptr %agg.tmp105.i, align 8 + %cmp.not.i125.i = icmp eq ptr %102, null br i1 %cmp.not.i125.i, label %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit130.i, label %_ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i126.i _ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i126.i: ; preds = %lpad107.i - %vtable.i.i127.i = load ptr, ptr %103, align 8 + %vtable.i.i127.i = load ptr, ptr %102, align 8 %vfn.i.i128.i = getelementptr inbounds nuw i8, ptr %vtable.i.i127.i, i64 8 - %104 = load ptr, ptr %vfn.i.i128.i, align 8 - call void %104(ptr noundef nonnull align 8 dereferenceable(8) %103) #19 + %103 = load ptr, ptr %vfn.i.i128.i, align 8 + call void %103(ptr noundef nonnull align 8 dereferenceable(8) %102) #19 br label %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit130.i _ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit130.i: ; preds = %_ZNKSt14default_deleteIN9grpc_core8Resolver13ResultHandlerEEclEPS2_.exit.i126.i, %lpad107.i @@ -1292,8 +1290,8 @@ _ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2 do.end119.i: ; preds = %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit123.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %xds_uri.i) #19 - %105 = load i8, ptr %_M_engaged.i.i45.i, align 8 - %tobool.i.i.i.i.i = trunc i8 %105 to i1 + %104 = load i8, ptr %_M_engaged.i.i45.i, align 8 + %tobool.i.i.i.i.i = trunc i8 %104 to i1 br i1 %tobool.i.i.i.i.i, label %if.then.i.i.i.i132.i, label %invoke.cont if.then.i.i.i.i132.i: ; preds = %do.end119.i @@ -1302,14 +1300,14 @@ if.then.i.i.i.i132.i: ; preds = %do.end119.i br label %invoke.cont ehcleanup.i: ; preds = %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit130.i, %lpad94.i - %.pn.i = phi { ptr, i32 } [ %101, %lpad94.i ], [ %102, %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit130.i ] + %.pn.i = phi { ptr, i32 } [ %100, %lpad94.i ], [ %101, %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit130.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %xds_uri.i) #19 br label %ehcleanup120.i ehcleanup120.i: ; preds = %ehcleanup.i, %lpad77.i - %.pn.pn.i = phi { ptr, i32 } [ %.pn.i, %ehcleanup.i ], [ %100, %lpad77.i ] - %106 = load i8, ptr %_M_engaged.i.i45.i, align 8 - %tobool.i.i.i.i134.i = trunc i8 %106 to i1 + %.pn.pn.i = phi { ptr, i32 } [ %.pn.i, %ehcleanup.i ], [ %99, %lpad77.i ] + %105 = load i8, ptr %_M_engaged.i.i45.i, align 8 + %tobool.i.i.i.i134.i = trunc i8 %105 to i1 br i1 %tobool.i.i.i.i134.i, label %if.then.i.i.i.i135.i, label %ehcleanup121.i if.then.i.i.i.i135.i: ; preds = %ehcleanup120.i @@ -1318,10 +1316,10 @@ if.then.i.i.i.i135.i: ; preds = %ehcleanup120.i br label %ehcleanup121.i ehcleanup121.i: ; preds = %if.then.i.i.i.i135.i, %ehcleanup120.i, %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit42.i, %lpad7.i, %if.then.i.i.i.i9.i.i, %lpad.i15.i - %.pn.pn.pn.i = phi { ptr, i32 } [ %59, %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit42.i ], [ %58, %lpad7.i ], [ %21, %if.then.i.i.i.i9.i.i ], [ %21, %lpad.i15.i ], [ %.pn.pn.i, %ehcleanup120.i ], [ %.pn.pn.i, %if.then.i.i.i.i135.i ] + %.pn.pn.pn.i = phi { ptr, i32 } [ %58, %_ZNSt10unique_ptrIN9grpc_core8Resolver13ResultHandlerESt14default_deleteIS2_EED2Ev.exit42.i ], [ %57, %lpad7.i ], [ %20, %if.then.i.i.i.i9.i.i ], [ %20, %lpad.i15.i ], [ %.pn.pn.i, %ehcleanup120.i ], [ %.pn.pn.i, %if.then.i.i.i.i135.i ] call void @_ZNSt10unique_ptrIN9grpc_core13MetadataQueryENS0_16OrphanableDeleteEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %ipv6_query_.i) #19 - %107 = load i8, ptr %_M_engaged.i.i.i.i.i.i, align 8 - %tobool.i.i.i.i138.i = trunc i8 %107 to i1 + %106 = load i8, ptr %_M_engaged.i.i.i.i.i.i, align 8 + %tobool.i.i.i.i138.i = trunc i8 %106 to i1 br i1 %tobool.i.i.i.i138.i, label %if.then.i.i.i.i139.i, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit140.i if.then.i.i.i.i139.i: ; preds = %ehcleanup121.i @@ -1340,23 +1338,23 @@ ehcleanup125.i: ; preds = %_ZNSt8optionalINSt7 br label %ehcleanup126.i ehcleanup126.i: ; preds = %ehcleanup125.i, %lpad3.i - %.pn.pn.pn.pn.pn.i = phi { ptr, i32 } [ %.pn.pn.pn.pn.i, %ehcleanup125.i ], [ %56, %lpad3.i ] + %.pn.pn.pn.pn.pn.i = phi { ptr, i32 } [ %.pn.pn.pn.pn.i, %ehcleanup125.i ], [ %55, %lpad3.i ] call void @_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %work_serializer_.i) #19 - %108 = load ptr, ptr %resource_quota_.i, align 8 - %cmp.not.i141.i = icmp eq ptr %108, null + %107 = load ptr, ptr %resource_quota_.i, align 8 + %cmp.not.i141.i = icmp eq ptr %107, null br i1 %cmp.not.i141.i, label %lpad.body, label %if.then.i142.i if.then.i142.i: ; preds = %ehcleanup126.i - %refs_.i.i.i = getelementptr inbounds nuw i8, ptr %108, i64 8 - %109 = atomicrmw sub ptr %refs_.i.i.i, i64 1 acq_rel, align 8 - %cmp.i.i.i143.i = icmp eq i64 %109, 1 + %refs_.i.i.i = getelementptr inbounds nuw i8, ptr %107, i64 8 + %108 = atomicrmw sub ptr %refs_.i.i.i, i64 1 acq_rel, align 8 + %cmp.i.i.i143.i = icmp eq i64 %108, 1 br i1 %cmp.i.i.i143.i, label %if.then.i.i.i, label %lpad.body if.then.i.i.i: ; preds = %if.then.i142.i - %vtable.i.i.i.i = load ptr, ptr %108, align 8 + %vtable.i.i.i.i = load ptr, ptr %107, align 8 %vfn.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i, i64 8 - %110 = load ptr, ptr %vfn.i.i.i.i, align 8 - call void %110(ptr noundef nonnull align 8 dereferenceable(40) %108) #19 + %109 = load ptr, ptr %vfn.i.i.i.i, align 8 + call void %109(ptr noundef nonnull align 8 dereferenceable(40) %107) #19 br label %lpad.body invoke.cont: ; preds = %if.then.i.i.i.i132.i, %do.end119.i, %_ZNSt10shared_ptrIN9grpc_core14WorkSerializerEED2Ev.exit.i @@ -1383,12 +1381,12 @@ invoke.cont: ; preds = %if.then.i.i.i.i132. ret void lpad: ; preds = %.noexc, %entry - %111 = landingpad { ptr, i32 } + %110 = landingpad { ptr, i32 } cleanup br label %lpad.body lpad.body: ; preds = %ehcleanup126.i, %if.then.i142.i, %if.then.i.i.i, %lpad - %eh.lpad-body = phi { ptr, i32 } [ %111, %lpad ], [ %.pn.pn.pn.pn.pn.i, %if.then.i.i.i ], [ %.pn.pn.pn.pn.pn.i, %if.then.i142.i ], [ %.pn.pn.pn.pn.pn.i, %ehcleanup126.i ] + %eh.lpad-body = phi { ptr, i32 } [ %110, %lpad ], [ %.pn.pn.pn.pn.pn.i, %if.then.i.i.i ], [ %.pn.pn.pn.pn.pn.i, %if.then.i142.i ], [ %.pn.pn.pn.pn.pn.i, %ehcleanup126.i ] call void @_ZN9grpc_core12ResolverArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %agg.tmp) #19 call void @_ZdlPv(ptr noundef nonnull %call) #20 resume { ptr, i32 } %eh.lpad-body diff --git a/bench/grpc/optimized/google_default_credentials.cc.ll b/bench/grpc/optimized/google_default_credentials.cc.ll index a35fd5c64f2..7902504df3b 100644 --- a/bench/grpc/optimized/google_default_credentials.cc.ll +++ b/bench/grpc/optimized/google_default_credentials.cc.ll @@ -308,15 +308,11 @@ entry: %ref.tmp48 = alloca %"class.grpc_core::ChannelArgs", align 8 %ref.tmp49 = alloca %"class.grpc_core::ChannelArgs", align 8 %call = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %args, i64 36, ptr nonnull @.str) - %0 = and i16 %call, 256 - %tobool.i.i.not = icmp ne i16 %0, 0 - %1 = trunc i16 %call to i1 - %retval.0.i = and i1 %tobool.i.i.not, %1 + %0 = and i16 %call, 257 + %retval.0.i = icmp eq i16 %0, 257 %call8 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %args, i64 49, ptr nonnull @.str.1) - %2 = and i16 %call8, 256 - %tobool.i.i18.not = icmp ne i16 %2, 0 - %3 = trunc i16 %call8 to i1 - %retval.0.i22 = and i1 %tobool.i.i18.not, %3 + %1 = and i16 %call8, 257 + %retval.0.i22 = icmp eq i16 %1, 257 call void @_ZNK9grpc_core11ChannelArgs9GetStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr nonnull sret(%"class.std::optional.2") align 8 %agg.tmp15, ptr noundef nonnull align 8 dereferenceable(8) %args, i64 30, ptr nonnull @.str.2) call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %uri.i) %agg.tmp1525.sroa.0.0.copyload = load i64, ptr %agg.tmp15, align 8 @@ -347,16 +343,16 @@ _ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_ invoke.cont.i: ; preds = %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit9.i call void @_ZN9grpc_core3URI5ParseESt17basic_string_viewIcSt11char_traitsIcEE(ptr nonnull sret(%"class.absl::lts_20230802::StatusOr") align 8 %uri.i, i64 %agg.tmp1525.sroa.0.0.copyload, ptr %agg.tmp1525.sroa.4.0.copyload) - %4 = load i64, ptr %uri.i, align 8 - %cmp.i.i10.i = icmp eq i64 %4, 0 + %2 = load i64, ptr %uri.i, align 8 + %cmp.i.i10.i = icmp eq i64 %2, 0 br i1 %cmp.i.i10.i, label %invoke.cont21.i, label %if.else.i.i.i common.resume: ; preds = %cleanup.action44, %if.then.i61, %if.then.i.i65, %ehcleanup59, %if.then.i70, %if.then.i.i74, %lpad35, %if.then.i52, %if.then.i.i56, %lpad.i - %common.resume.op = phi { ptr, i32 } [ %5, %lpad.i ], [ %34, %cleanup.action44 ], [ %34, %if.then.i61 ], [ %34, %if.then.i.i65 ], [ %.pn11, %ehcleanup59 ], [ %.pn11, %if.then.i70 ], [ %.pn11, %if.then.i.i74 ], [ %30, %lpad35 ], [ %30, %if.then.i52 ], [ %30, %if.then.i.i56 ] + %common.resume.op = phi { ptr, i32 } [ %3, %lpad.i ], [ %32, %cleanup.action44 ], [ %32, %if.then.i61 ], [ %32, %if.then.i.i65 ], [ %.pn11, %ehcleanup59 ], [ %.pn11, %if.then.i70 ], [ %.pn11, %if.then.i.i74 ], [ %28, %lpad35 ], [ %28, %if.then.i52 ], [ %28, %if.then.i.i56 ] resume { ptr, i32 } %common.resume.op lpad.i: ; preds = %if.then.i.i14.i - %5 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_202308028StatusOrIN9grpc_core3URIEED2Ev(ptr noundef nonnull align 8 dereferenceable(208) %uri.i) #25 br label %common.resume @@ -368,8 +364,8 @@ invoke.cont21.i: ; preds = %invoke.cont.i br i1 %cmp.i.i12.not.i, label %lor.rhs.i, label %cleanup.i lor.rhs.i: ; preds = %invoke.cont21.i - %6 = load i64, ptr %uri.i, align 8 - %cmp.i.i.i.i13.i = icmp eq i64 %6, 0 + %4 = load i64, ptr %uri.i, align 8 + %cmp.i.i.i.i13.i = icmp eq i64 %4, 0 br i1 %cmp.i.i.i.i13.i, label %invoke.cont24.i, label %if.then.i.i14.i if.then.i.i14.i: ; preds = %lor.rhs.i @@ -382,13 +378,13 @@ if.then.i.i14.i: ; preds = %lor.rhs.i invoke.cont24.i: ; preds = %lor.rhs.i %path_.i.i = getelementptr inbounds nuw i8, ptr %uri.i, i64 72 %call28.i = call { i64, ptr } @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv(ptr noundef nonnull align 8 dereferenceable(32) %path_.i.i) #25 - %7 = extractvalue { i64, ptr } %call28.i, 0 - %cmp.not.i21.i = icmp ult i64 %7, 44 + %5 = extractvalue { i64, ptr } %call28.i, 0 + %cmp.not.i21.i = icmp ult i64 %5, 44 br i1 %cmp.not.i21.i, label %cleanup.i, label %land.rhs.i22.i land.rhs.i22.i: ; preds = %invoke.cont24.i - %8 = extractvalue { i64, ptr } %call28.i, 1 - %bcmp.i23.i = call i32 @bcmp(ptr noundef nonnull dereferenceable(44) %8, ptr noundef nonnull dereferenceable(44) @.str.15, i64 44) + %6 = extractvalue { i64, ptr } %call28.i, 1 + %bcmp.i23.i = call i32 @bcmp(ptr noundef nonnull dereferenceable(44) %6, ptr noundef nonnull dereferenceable(44) @.str.15, i64 44) %cmp7.i24.i = icmp ne i32 %bcmp.i23.i, 0 br label %cleanup.i @@ -399,26 +395,26 @@ cleanup.i: ; preds = %land.rhs.i22.i, %in br i1 %cmp.i.i.i.i26.i, label %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.i, label %if.else.i.i.i _ZN4absl12lts_202308026StatusD2Ev.exit.i.i.i: ; preds = %cleanup.i - %9 = getelementptr inbounds nuw i8, ptr %uri.i, i64 8 - call void @_ZN9grpc_core3URID2Ev(ptr noundef nonnull align 8 dereferenceable(200) %9) #25 + %7 = getelementptr inbounds nuw i8, ptr %uri.i, i64 8 + call void @_ZN9grpc_core3URID2Ev(ptr noundef nonnull align 8 dereferenceable(200) %7) #25 br label %_ZN12_GLOBAL__N_118IsXdsNonCfeClusterESt8optionalISt17basic_string_viewIcSt11char_traitsIcEEE.exit if.else.i.i.i: ; preds = %cleanup.i, %invoke.cont.i %retval.132.i = phi i1 [ %retval.1.ph.i, %cleanup.i ], [ true, %invoke.cont.i ] - %10 = phi i64 [ %.pr.i, %cleanup.i ], [ %4, %invoke.cont.i ] - %and.i.i.i1.i.i.i = and i64 %10, 1 + %8 = phi i64 [ %.pr.i, %cleanup.i ], [ %2, %invoke.cont.i ] + %and.i.i.i1.i.i.i = and i64 %8, 1 %cmp.i.i.i2.i.i.i = icmp eq i64 %and.i.i.i1.i.i.i, 0 br i1 %cmp.i.i.i2.i.i.i, label %_ZN12_GLOBAL__N_118IsXdsNonCfeClusterESt8optionalISt17basic_string_viewIcSt11char_traitsIcEEE.exit, label %if.then.i.i3.i.i.i if.then.i.i3.i.i.i: ; preds = %if.else.i.i.i - invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %10) + invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %8) to label %_ZN12_GLOBAL__N_118IsXdsNonCfeClusterESt8optionalISt17basic_string_viewIcSt11char_traitsIcEEE.exit unwind label %terminate.lpad.i4.i.i.i terminate.lpad.i4.i.i.i: ; preds = %if.then.i.i3.i.i.i - %11 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - call void @__clang_call_terminate(ptr %12) #27 + %10 = extractvalue { ptr, i32 } %9, 0 + call void @__clang_call_terminate(ptr %10) #27 unreachable _ZN12_GLOBAL__N_118IsXdsNonCfeClusterESt8optionalISt17basic_string_viewIcSt11char_traitsIcEEE.exit.thread: ; preds = %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit9.i, %lor.rhs.i4.i @@ -428,14 +424,14 @@ _ZN12_GLOBAL__N_118IsXdsNonCfeClusterESt8optionalISt17basic_string_viewIcSt11cha _ZN12_GLOBAL__N_118IsXdsNonCfeClusterESt8optionalISt17basic_string_viewIcSt11char_traitsIcEEE.exit: ; preds = %entry, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i, %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.i, %if.else.i.i.i, %if.then.i.i3.i.i.i %retval.0.i26 = phi i1 [ false, %entry ], [ false, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit.i ], [ %retval.1.ph.i, %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i.i ], [ %retval.132.i, %if.else.i.i.i ], [ %retval.132.i, %if.then.i.i3.i.i.i ] call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %uri.i) - %13 = select i1 %retval.0.i, i1 true, i1 %retval.0.i22 - %spec.select14 = select i1 %13, i1 true, i1 %retval.0.i26 + %11 = select i1 %retval.0.i, i1 true, i1 %retval.0.i22 + %spec.select14 = select i1 %11, i1 true, i1 %retval.0.i26 br i1 %spec.select14, label %land.lhs.true, label %cond.false land.lhs.true: ; preds = %_ZN12_GLOBAL__N_118IsXdsNonCfeClusterESt8optionalISt17basic_string_viewIcSt11char_traitsIcEEE.exit.thread, %_ZN12_GLOBAL__N_118IsXdsNonCfeClusterESt8optionalISt17basic_string_viewIcSt11char_traitsIcEEE.exit %alts_creds_ = getelementptr inbounds nuw i8, ptr %this, i64 16 - %14 = load ptr, ptr %alts_creds_, align 8 - %cmp.i = icmp eq ptr %14, null + %12 = load ptr, ptr %alts_creds_, align 8 + %cmp.i = icmp eq ptr %12, null br i1 %cmp.i, label %if.then, label %cond.true if.then: ; preds = %land.lhs.true @@ -444,81 +440,81 @@ if.then: ; preds = %land.lhs.true br label %return cond.true: ; preds = %land.lhs.true - %15 = load ptr, ptr %call_creds, align 8 - %cmp.not.i = icmp eq ptr %15, null + %13 = load ptr, ptr %call_creds, align 8 + %cmp.not.i = icmp eq ptr %13, null br i1 %cmp.not.i, label %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsEC2ERKS2_.exit, label %if.then.i if.then.i: ; preds = %cond.true - %refs_.i.i = getelementptr inbounds nuw i8, ptr %15, i64 8 - %16 = atomicrmw add ptr %refs_.i.i, i64 1 monotonic, align 8 + %refs_.i.i = getelementptr inbounds nuw i8, ptr %13, i64 8 + %14 = atomicrmw add ptr %refs_.i.i, i64 1 monotonic, align 8 %.pre.i = load ptr, ptr %call_creds, align 8 br label %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsEC2ERKS2_.exit _ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsEC2ERKS2_.exit: ; preds = %cond.true, %if.then.i - %17 = phi ptr [ %.pre.i, %if.then.i ], [ null, %cond.true ] - store ptr %17, ptr %agg.tmp27, align 8 - %vtable = load ptr, ptr %14, align 8 + %15 = phi ptr [ %.pre.i, %if.then.i ], [ null, %cond.true ] + store ptr %15, ptr %agg.tmp27, align 8 + %vtable = load ptr, ptr %12, align 8 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 16 - %18 = load ptr, ptr %vfn, align 8 - invoke void %18(ptr sret(%"class.grpc_core::RefCountedPtr") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull %agg.tmp27, ptr noundef %target, ptr noundef nonnull %args) + %16 = load ptr, ptr %vfn, align 8 + invoke void %16(ptr sret(%"class.grpc_core::RefCountedPtr") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %agg.tmp27, ptr noundef %target, ptr noundef nonnull %args) to label %cleanup.action41 unwind label %cleanup.action44 cond.false: ; preds = %_ZN12_GLOBAL__N_118IsXdsNonCfeClusterESt8optionalISt17basic_string_viewIcSt11char_traitsIcEEE.exit %ssl_creds_ = getelementptr inbounds nuw i8, ptr %this, i64 24 - %19 = load ptr, ptr %ssl_creds_, align 8 - %20 = load ptr, ptr %call_creds, align 8 - %cmp.not.i28 = icmp eq ptr %20, null + %17 = load ptr, ptr %ssl_creds_, align 8 + %18 = load ptr, ptr %call_creds, align 8 + %cmp.not.i28 = icmp eq ptr %18, null br i1 %cmp.not.i28, label %invoke.cont31, label %if.then.i29 if.then.i29: ; preds = %cond.false - %refs_.i.i30 = getelementptr inbounds nuw i8, ptr %20, i64 8 - %21 = atomicrmw add ptr %refs_.i.i30, i64 1 monotonic, align 8 + %refs_.i.i30 = getelementptr inbounds nuw i8, ptr %18, i64 8 + %19 = atomicrmw add ptr %refs_.i.i30, i64 1 monotonic, align 8 %.pre.i31 = load ptr, ptr %call_creds, align 8 br label %invoke.cont31 invoke.cont31: ; preds = %if.then.i29, %cond.false - %22 = phi ptr [ %.pre.i31, %if.then.i29 ], [ null, %cond.false ] - store ptr %22, ptr %agg.tmp30, align 8 - %vtable33 = load ptr, ptr %19, align 8 + %20 = phi ptr [ %.pre.i31, %if.then.i29 ], [ null, %cond.false ] + store ptr %20, ptr %agg.tmp30, align 8 + %vtable33 = load ptr, ptr %17, align 8 %vfn34 = getelementptr inbounds nuw i8, ptr %vtable33, i64 16 - %23 = load ptr, ptr %vfn34, align 8 - invoke void %23(ptr sret(%"class.grpc_core::RefCountedPtr") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull %agg.tmp30, ptr noundef %target, ptr noundef nonnull %args) + %21 = load ptr, ptr %vfn34, align 8 + invoke void %21(ptr sret(%"class.grpc_core::RefCountedPtr") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull %agg.tmp30, ptr noundef %target, ptr noundef nonnull %args) to label %cleanup.action unwind label %lpad35 cleanup.action: ; preds = %invoke.cont31 - %24 = load ptr, ptr %agg.tmp30, align 8 - %cmp.not.i34 = icmp eq ptr %24, null + %22 = load ptr, ptr %agg.tmp30, align 8 + %cmp.not.i34 = icmp eq ptr %22, null br i1 %cmp.not.i34, label %return, label %if.then.i35 if.then.i35: ; preds = %cleanup.action - %refs_.i.i36 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %25 = atomicrmw sub ptr %refs_.i.i36, i64 1 acq_rel, align 8 - %cmp.i.i.i = icmp eq i64 %25, 1 + %refs_.i.i36 = getelementptr inbounds nuw i8, ptr %22, i64 8 + %23 = atomicrmw sub ptr %refs_.i.i36, i64 1 acq_rel, align 8 + %cmp.i.i.i = icmp eq i64 %23, 1 br i1 %cmp.i.i.i, label %if.then.i.i, label %return if.then.i.i: ; preds = %if.then.i35 - %vtable.i.i.i = load ptr, ptr %24, align 8 + %vtable.i.i.i = load ptr, ptr %22, align 8 %vfn.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i, i64 8 - %26 = load ptr, ptr %vfn.i.i.i, align 8 - call void %26(ptr noundef nonnull align 8 dereferenceable(20) %24) #25 + %24 = load ptr, ptr %vfn.i.i.i, align 8 + call void %24(ptr noundef nonnull align 8 dereferenceable(20) %22) #25 br label %return cleanup.action41: ; preds = %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsEC2ERKS2_.exit - %27 = load ptr, ptr %agg.tmp27, align 8 - %cmp.not.i38 = icmp eq ptr %27, null + %25 = load ptr, ptr %agg.tmp27, align 8 + %cmp.not.i38 = icmp eq ptr %25, null br i1 %cmp.not.i38, label %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit46, label %if.then.i39 if.then.i39: ; preds = %cleanup.action41 - %refs_.i.i40 = getelementptr inbounds nuw i8, ptr %27, i64 8 - %28 = atomicrmw sub ptr %refs_.i.i40, i64 1 acq_rel, align 8 - %cmp.i.i.i41 = icmp eq i64 %28, 1 + %refs_.i.i40 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %26 = atomicrmw sub ptr %refs_.i.i40, i64 1 acq_rel, align 8 + %cmp.i.i.i41 = icmp eq i64 %26, 1 br i1 %cmp.i.i.i41, label %if.then.i.i43, label %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit46 if.then.i.i43: ; preds = %if.then.i39 - %vtable.i.i.i44 = load ptr, ptr %27, align 8 + %vtable.i.i.i44 = load ptr, ptr %25, align 8 %vfn.i.i.i45 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i44, i64 8 - %29 = load ptr, ptr %vfn.i.i.i45, align 8 - call void %29(ptr noundef nonnull align 8 dereferenceable(20) %27) #25 + %27 = load ptr, ptr %vfn.i.i.i45, align 8 + call void %27(ptr noundef nonnull align 8 dereferenceable(20) %25) #25 br label %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit46 _ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit46: ; preds = %cleanup.action41, %if.then.i39, %if.then.i.i43 @@ -536,73 +532,73 @@ invoke.cont55: ; preds = %invoke.cont52 br label %return lpad35: ; preds = %invoke.cont31 - %30 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } cleanup - %31 = load ptr, ptr %agg.tmp30, align 8 - %cmp.not.i51 = icmp eq ptr %31, null + %29 = load ptr, ptr %agg.tmp30, align 8 + %cmp.not.i51 = icmp eq ptr %29, null br i1 %cmp.not.i51, label %common.resume, label %if.then.i52 if.then.i52: ; preds = %lpad35 - %refs_.i.i53 = getelementptr inbounds nuw i8, ptr %31, i64 8 - %32 = atomicrmw sub ptr %refs_.i.i53, i64 1 acq_rel, align 8 - %cmp.i.i.i54 = icmp eq i64 %32, 1 + %refs_.i.i53 = getelementptr inbounds nuw i8, ptr %29, i64 8 + %30 = atomicrmw sub ptr %refs_.i.i53, i64 1 acq_rel, align 8 + %cmp.i.i.i54 = icmp eq i64 %30, 1 br i1 %cmp.i.i.i54, label %if.then.i.i56, label %common.resume if.then.i.i56: ; preds = %if.then.i52 - %vtable.i.i.i57 = load ptr, ptr %31, align 8 + %vtable.i.i.i57 = load ptr, ptr %29, align 8 %vfn.i.i.i58 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i57, i64 8 - %33 = load ptr, ptr %vfn.i.i.i58, align 8 - call void %33(ptr noundef nonnull align 8 dereferenceable(20) %31) #25 + %31 = load ptr, ptr %vfn.i.i.i58, align 8 + call void %31(ptr noundef nonnull align 8 dereferenceable(20) %29) #25 br label %common.resume cleanup.action44: ; preds = %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsEC2ERKS2_.exit - %34 = landingpad { ptr, i32 } + %32 = landingpad { ptr, i32 } cleanup - %35 = load ptr, ptr %agg.tmp27, align 8 - %cmp.not.i60 = icmp eq ptr %35, null + %33 = load ptr, ptr %agg.tmp27, align 8 + %cmp.not.i60 = icmp eq ptr %33, null br i1 %cmp.not.i60, label %common.resume, label %if.then.i61 if.then.i61: ; preds = %cleanup.action44 - %refs_.i.i62 = getelementptr inbounds nuw i8, ptr %35, i64 8 - %36 = atomicrmw sub ptr %refs_.i.i62, i64 1 acq_rel, align 8 - %cmp.i.i.i63 = icmp eq i64 %36, 1 + %refs_.i.i62 = getelementptr inbounds nuw i8, ptr %33, i64 8 + %34 = atomicrmw sub ptr %refs_.i.i62, i64 1 acq_rel, align 8 + %cmp.i.i.i63 = icmp eq i64 %34, 1 br i1 %cmp.i.i.i63, label %if.then.i.i65, label %common.resume if.then.i.i65: ; preds = %if.then.i61 - %vtable.i.i.i66 = load ptr, ptr %35, align 8 + %vtable.i.i.i66 = load ptr, ptr %33, align 8 %vfn.i.i.i67 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i66, i64 8 - %37 = load ptr, ptr %vfn.i.i.i67, align 8 - call void %37(ptr noundef nonnull align 8 dereferenceable(20) %35) #25 + %35 = load ptr, ptr %vfn.i.i.i67, align 8 + call void %35(ptr noundef nonnull align 8 dereferenceable(20) %33) #25 br label %common.resume lpad51: ; preds = %_ZN9grpc_core13RefCountedPtrI21grpc_call_credentialsED2Ev.exit46 - %38 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } cleanup br label %ehcleanup59 lpad54: ; preds = %invoke.cont52 - %39 = landingpad { ptr, i32 } + %37 = landingpad { ptr, i32 } cleanup call void @_ZN9grpc_core11ChannelArgsD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp49) #25 br label %ehcleanup59 ehcleanup59: ; preds = %lpad54, %lpad51 - %.pn11 = phi { ptr, i32 } [ %39, %lpad54 ], [ %38, %lpad51 ] - %40 = load ptr, ptr %agg.result, align 8 - %cmp.not.i69 = icmp eq ptr %40, null + %.pn11 = phi { ptr, i32 } [ %37, %lpad54 ], [ %36, %lpad51 ] + %38 = load ptr, ptr %agg.result, align 8 + %cmp.not.i69 = icmp eq ptr %38, null br i1 %cmp.not.i69, label %common.resume, label %if.then.i70 if.then.i70: ; preds = %ehcleanup59 - %refs_.i.i71 = getelementptr inbounds nuw i8, ptr %40, i64 8 - %41 = atomicrmw sub ptr %refs_.i.i71, i64 1 acq_rel, align 8 - %cmp.i.i.i72 = icmp eq i64 %41, 1 + %refs_.i.i71 = getelementptr inbounds nuw i8, ptr %38, i64 8 + %39 = atomicrmw sub ptr %refs_.i.i71, i64 1 acq_rel, align 8 + %cmp.i.i.i72 = icmp eq i64 %39, 1 br i1 %cmp.i.i.i72, label %if.then.i.i74, label %common.resume if.then.i.i74: ; preds = %if.then.i70 - %vtable.i.i.i75 = load ptr, ptr %40, align 8 + %vtable.i.i.i75 = load ptr, ptr %38, align 8 %vfn.i.i.i76 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i75, i64 8 - %42 = load ptr, ptr %vfn.i.i.i76, align 8 - call void %42(ptr noundef nonnull align 8 dereferenceable(32) %40) #25 + %40 = load ptr, ptr %vfn.i.i.i76, align 8 + call void %40(ptr noundef nonnull align 8 dereferenceable(32) %38) #25 br label %common.resume return: ; preds = %if.then.i.i, %if.then.i35, %cleanup.action, %invoke.cont55, %if.then diff --git a/bench/grpc/optimized/health_check_client.cc.ll b/bench/grpc/optimized/health_check_client.cc.ll index 386d823e808..51d77af0e53 100644 --- a/bench/grpc/optimized/health_check_client.cc.ll +++ b/bench/grpc/optimized/health_check_client.cc.ll @@ -4205,10 +4205,8 @@ entry: to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %0 = and i16 %call, 256 - %tobool.i.i.not = icmp ne i16 %0, 0 - %1 = trunc i16 %call to i1 - %retval.0.i = and i1 %tobool.i.i.not, %1 + %0 = and i16 %call, 257 + %retval.0.i = icmp eq i16 %0, 257 br i1 %retval.0.i, label %if.end, label %if.then if.then: ; preds = %invoke.cont @@ -4216,11 +4214,11 @@ if.then: ; preds = %invoke.cont to label %invoke.cont8 unwind label %lpad invoke.cont8: ; preds = %if.then - %2 = load i8, ptr %_M_engaged.i.i.i.i.i, align 8 - %tobool.i.i.i.i.i = trunc i8 %2 to i1 + %1 = load i8, ptr %_M_engaged.i.i.i.i.i, align 8 + %tobool.i.i.i.i.i = trunc i8 %1 to i1 %_M_engaged2.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp6, i64 32 - %3 = load i8, ptr %_M_engaged2.i.i.i.i.i, align 8 - %tobool3.i.i.i.i.i = trunc i8 %3 to i1 + %2 = load i8, ptr %_M_engaged2.i.i.i.i.i, align 8 + %tobool3.i.i.i.i.i = trunc i8 %2 to i1 br i1 %tobool.i.i.i.i.i, label %land.lhs.true.i.i.i.i.i, label %if.else.thread.i.i.i.i.i land.lhs.true.i.i.i.i.i: ; preds = %invoke.cont8 @@ -4244,8 +4242,8 @@ if.then.i.i.i.i.i.i: ; preds = %land.lhs.true.i.i.i br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOS6_.exit _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOS6_.exit: ; preds = %if.then.i.i.i.i.i, %if.else.thread.i.i.i.i.i, %if.then8.i.i.i.i.i, %if.then.i.i.i.i.i.i - %4 = load i8, ptr %_M_engaged2.i.i.i.i.i, align 8 - %tobool.i.i.i.i = trunc i8 %4 to i1 + %3 = load i8, ptr %_M_engaged2.i.i.i.i.i, align 8 + %tobool.i.i.i.i = trunc i8 %3 to i1 br i1 %tobool.i.i.i.i, label %if.then.i.i.i.i, label %if.end if.then.i.i.i.i: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOS6_.exit @@ -4254,13 +4252,13 @@ if.then.i.i.i.i: ; preds = %_ZNSt8optionalINSt7 br label %if.end lpad: ; preds = %if.end18, %if.then12, %if.then, %entry - %5 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } cleanup br label %ehcleanup if.end: ; preds = %if.then.i.i.i.i, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOS6_.exit, %invoke.cont - %6 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core30grpc_health_check_client_traceE, i64 16) monotonic, align 8 - %tobool.i.i.i = trunc i8 %6 to i1 + %5 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core30grpc_health_check_client_traceE, i64 16) monotonic, align 8 + %tobool.i.i.i = trunc i8 %5 to i1 br i1 %tobool.i.i.i, label %if.then12, label %if.end18 if.then12: ; preds = %if.end @@ -4277,7 +4275,7 @@ invoke.cont17: ; preds = %invoke.cont14 br label %if.end18 lpad16: ; preds = %invoke.cont14 - %7 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp13) #22 br label %ehcleanup @@ -4287,11 +4285,11 @@ if.end18: ; preds = %invoke.cont17, %if. to label %_ZNSt10unique_ptrIN9grpc_core13HealthWatcherESt14default_deleteIS1_EED2Ev.exit unwind label %lpad _ZNSt10unique_ptrIN9grpc_core13HealthWatcherESt14default_deleteIS1_EED2Ev.exit: ; preds = %if.end18 - %8 = load ptr, ptr %ref.tmp19, align 8 - store ptr %8, ptr %agg.result, align 8 + %7 = load ptr, ptr %ref.tmp19, align 8 + store ptr %7, ptr %agg.result, align 8 store ptr null, ptr %ref.tmp19, align 8 - %9 = load i8, ptr %_M_engaged.i.i.i.i.i, align 8 - %tobool.i.i.i.i7 = trunc i8 %9 to i1 + %8 = load i8, ptr %_M_engaged.i.i.i.i.i, align 8 + %tobool.i.i.i.i7 = trunc i8 %8 to i1 br i1 %tobool.i.i.i.i7, label %if.then.i.i.i.i8, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit9 if.then.i.i.i.i8: ; preds = %_ZNSt10unique_ptrIN9grpc_core13HealthWatcherESt14default_deleteIS1_EED2Ev.exit @@ -4303,9 +4301,9 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit9: ret void ehcleanup: ; preds = %lpad16, %lpad - %.pn = phi { ptr, i32 } [ %5, %lpad ], [ %7, %lpad16 ] - %10 = load i8, ptr %_M_engaged.i.i.i.i.i, align 8 - %tobool.i.i.i.i11 = trunc i8 %10 to i1 + %.pn = phi { ptr, i32 } [ %4, %lpad ], [ %6, %lpad16 ] + %9 = load i8, ptr %_M_engaged.i.i.i.i.i, align 8 + %tobool.i.i.i.i11 = trunc i8 %9 to i1 br i1 %tobool.i.i.i.i11, label %if.then.i.i.i.i12, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit13 if.then.i.i.i.i12: ; preds = %ehcleanup diff --git a/bench/grpc/optimized/http_server_filter.cc.ll b/bench/grpc/optimized/http_server_filter.cc.ll index 7a32afbb85c..424c67996c6 100644 --- a/bench/grpc/optimized/http_server_filter.cc.ll +++ b/bench/grpc/optimized/http_server_filter.cc.ll @@ -1087,10 +1087,8 @@ entry: %1 = trunc i16 %call to i1 %retval.0.i = or i1 %tobool.i.i.not, %1 %call8 = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %args, i64 88, ptr nonnull @.str.13) - %2 = and i16 %call8, 256 - %tobool.i.i5.not = icmp ne i16 %2, 0 - %3 = trunc i16 %call8 to i1 - %retval.0.i9 = and i1 %tobool.i.i5.not, %3 + %2 = and i16 %call8, 257 + %retval.0.i9 = icmp eq i16 %2, 257 %frombool.i = zext i1 %retval.0.i to i8 %frombool1.i = zext i1 %retval.0.i9 to i8 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core13ChannelFilterE, i64 16), ptr %ref.tmp, align 8 @@ -1101,48 +1099,48 @@ entry: store i8 %frombool.i, ptr %surface_user_agent_.i, align 8 %allow_put_requests_.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 25 store i8 %frombool1.i, ptr %allow_put_requests_.i, align 1 - %4 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 - store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core13ChannelFilterE, i64 16), ptr %4, align 8 + %3 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 + store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core13ChannelFilterE, i64 16), ptr %3, align 8 %event_engine_.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 - %5 = load ptr, ptr %event_engine_.i.i.i, align 8 - store ptr %5, ptr %event_engine_.i.i.i.i.i.i, align 8 + %4 = load ptr, ptr %event_engine_.i.i.i, align 8 + store ptr %4, ptr %event_engine_.i.i.i.i.i.i, align 8 %_M_refcount.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 24 %_M_refcount3.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - %6 = load ptr, ptr %_M_refcount3.i.i.i.i.i.i.i.i, align 8 - store ptr %6, ptr %_M_refcount.i.i.i.i.i.i.i.i, align 8 - %cmp.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %6, null + %5 = load ptr, ptr %_M_refcount3.i.i.i.i.i.i.i.i, align 8 + store ptr %5, ptr %_M_refcount.i.i.i.i.i.i.i.i, align 8 + %cmp.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %5, null br i1 %cmp.not.i.i.i.i.i.i.i.i.i, label %invoke.cont.thread, label %if.then.i.i.i.i.i.i.i.i.i invoke.cont.thread: ; preds = %entry - store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core16HttpServerFilterE, i64 16), ptr %4, align 8 + store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core16HttpServerFilterE, i64 16), ptr %3, align 8 %surface_user_agent_.i.i.i.i10 = getelementptr inbounds nuw i8, ptr %agg.result, i64 32 - %7 = load i16, ptr %surface_user_agent_.i, align 8 - store i16 %7, ptr %surface_user_agent_.i.i.i.i10, align 8 + %6 = load i16, ptr %surface_user_agent_.i, align 8 + store i16 %6, ptr %surface_user_agent_.i.i.i.i10, align 8 store i64 0, ptr %agg.result, align 8 br label %_ZN9grpc_core16HttpServerFilterD2Ev.exit if.then.i.i.i.i.i.i.i.i.i: ; preds = %entry - %_M_use_count.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %6, i64 8 - %8 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.i.not.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %8, 0 + %_M_use_count.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %5, i64 8 + %7 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.i.not.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %7, 0 br i1 %tobool.i.i.not.i.i.i.i.i.i.i.i.i.i, label %if.else.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 if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i - %9 = load i32, ptr %_M_use_count.i.i.i.i.i.i.i.i.i.i, align 4 - %add.i.i.i.i.i.i.i.i.i.i.i = add nsw i32 %9, 1 + %8 = load i32, ptr %_M_use_count.i.i.i.i.i.i.i.i.i.i, align 4 + %add.i.i.i.i.i.i.i.i.i.i.i = add nsw i32 %8, 1 store i32 %add.i.i.i.i.i.i.i.i.i.i.i, ptr %_M_use_count.i.i.i.i.i.i.i.i.i.i, align 4 br label %invoke.cont if.else.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i - %10 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i.i.i.i, i32 1 acq_rel, align 4 + %9 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i.i.i.i, i32 1 acq_rel, align 4 br label %invoke.cont invoke.cont: ; preds = %if.else.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i %.pr = load ptr, ptr %_M_refcount3.i.i.i.i.i.i.i.i, align 8 - store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core16HttpServerFilterE, i64 16), ptr %4, align 8 + store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core16HttpServerFilterE, i64 16), ptr %3, align 8 %surface_user_agent_.i.i.i.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 32 - %11 = load i16, ptr %surface_user_agent_.i, align 8 - store i16 %11, ptr %surface_user_agent_.i.i.i.i, align 8 + %10 = load i16, ptr %surface_user_agent_.i, align 8 + store i16 %10, ptr %surface_user_agent_.i.i.i.i, align 8 store i64 0, ptr %agg.result, align 8 store ptr getelementptr inbounds (i8, ptr @_ZTVN9grpc_core13ChannelFilterE, i64 16), ptr %ref.tmp, align 8 %cmp.not.i.i.i.i.i.i = icmp eq ptr %.pr, null @@ -1150,9 +1148,9 @@ invoke.cont: ; preds = %if.else.i.i.i.i.i.i if.then.i.i.i.i.i.i: ; preds = %invoke.cont %_M_use_count.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pr, i64 8 - %12 = load atomic i64, ptr %_M_use_count.i.i.i.i.i.i.i acquire, align 8 - %cmp.i.i.i.i.i.i.i = icmp eq i64 %12, 4294967297 - %13 = trunc i64 %12 to i32 + %11 = load atomic i64, ptr %_M_use_count.i.i.i.i.i.i.i acquire, align 8 + %cmp.i.i.i.i.i.i.i = icmp eq i64 %11, 4294967297 + %12 = trunc i64 %11 to i32 br i1 %cmp.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i, label %if.end.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i @@ -1161,59 +1159,59 @@ if.then.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i store i32 0, ptr %_M_weak_count.i.i.i.i.i.i.i, align 4 %vtable.i.i.i.i.i.i.i = load ptr, ptr %.pr, align 8 %vfn.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i, i64 16 - %14 = load ptr, ptr %vfn.i.i.i.i.i.i.i, align 8 - call void %14(ptr noundef nonnull align 8 dereferenceable(16) %.pr) #24 + %13 = load ptr, ptr %vfn.i.i.i.i.i.i.i, align 8 + call void %13(ptr noundef nonnull align 8 dereferenceable(16) %.pr) #24 br label %if.end8.sink.split.i.i.i.i.i.i.i if.end.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i - %15 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i.i.i.i = icmp eq i8 %15, 0 + %14 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.not.i.i.i.i.i.i.i = icmp eq i8 %14, 0 br i1 %tobool.i.not.i.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i - %add.i.i.i.i.i.i.i.i = add nsw i32 %13, -1 + %add.i.i.i.i.i.i.i.i = add nsw i32 %12, -1 store i32 %add.i.i.i.i.i.i.i.i, ptr %_M_use_count.i.i.i.i.i.i.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i if.else.i.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i - %16 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4 + %15 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i - %retval.i.0.i.i.i.i.i.i.i = phi i32 [ %13, %if.then.i.i.i.i.i.i.i.i ], [ %16, %if.else.i.i.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i.i.i = phi i32 [ %12, %if.then.i.i.i.i.i.i.i.i ], [ %15, %if.else.i.i.i.i.i.i.i.i ] %cmp6.i.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i, 1 br i1 %cmp6.i.i.i.i.i.i.i, label %if.then7.i.i.i.i.i.i.i, label %_ZN9grpc_core16HttpServerFilterD2Ev.exit if.then7.i.i.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i %vtable.i.i.i.i.i.i.i.i.i = load ptr, ptr %.pr, align 8 %vfn.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i.i.i, i64 16 - %17 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i, align 8 - call void %17(ptr noundef nonnull align 8 dereferenceable(16) %.pr) #24 + %16 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i, align 8 + call void %16(ptr noundef nonnull align 8 dereferenceable(16) %.pr) #24 %_M_weak_count.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pr, i64 12 - %18 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i.i.i.i.i.i = icmp eq i8 %18, 0 + %17 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.not.i.i.i.i.i.i.i.i.i = icmp eq i8 %17, 0 br i1 %tobool.i.not.i.i.i.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.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 = %if.then7.i.i.i.i.i.i.i - %19 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i.i.i, align 4 - %add.i.i.i.i.i.i.i.i.i.i = add nsw i32 %19, -1 + %18 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i.i.i, align 4 + %add.i.i.i.i.i.i.i.i.i.i = add nsw i32 %18, -1 store i32 %add.i.i.i.i.i.i.i.i.i.i, ptr %_M_weak_count.i.i.i.i.i.i.i.i.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i if.else.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i.i.i - %20 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4 + %19 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i - %retval.i.0.i.i.i.i.i.i.i.i.i = phi i32 [ %19, %if.then.i.i.i.i.i.i.i.i.i.i ], [ %20, %if.else.i.i.i.i.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i.i.i.i.i = phi i32 [ %18, %if.then.i.i.i.i.i.i.i.i.i.i ], [ %19, %if.else.i.i.i.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i.i.i, 1 br i1 %cmp.i.i.i.i.i.i.i.i.i, label %if.end8.sink.split.i.i.i.i.i.i.i, label %_ZN9grpc_core16HttpServerFilterD2Ev.exit if.end8.sink.split.i.i.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i %vtable2.i.i.i.i.i.i.i.i.i = load ptr, ptr %.pr, align 8 %vfn3.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable2.i.i.i.i.i.i.i.i.i, i64 24 - %21 = load ptr, ptr %vfn3.i.i.i.i.i.i.i.i.i, align 8 - call void %21(ptr noundef nonnull align 8 dereferenceable(16) %.pr) #24 + %20 = load ptr, ptr %vfn3.i.i.i.i.i.i.i.i.i, align 8 + call void %20(ptr noundef nonnull align 8 dereferenceable(16) %.pr) #24 br label %_ZN9grpc_core16HttpServerFilterD2Ev.exit _ZN9grpc_core16HttpServerFilterD2Ev.exit: ; preds = %invoke.cont.thread, %invoke.cont, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i, %if.end8.sink.split.i.i.i.i.i.i.i diff --git a/bench/grpc/optimized/pick_first.cc.ll b/bench/grpc/optimized/pick_first.cc.ll index ba8f04ddc9b..6b56a722f01 100644 --- a/bench/grpc/optimized/pick_first.cc.ll +++ b/bench/grpc/optimized/pick_first.cc.ll @@ -943,10 +943,8 @@ _ZN9grpc_core19LoadBalancingPolicy4ArgsD2Ev.exit.i.i: ; preds = %if.end8.sink.sp invoke.cont5.i.i: ; preds = %_ZN9grpc_core19LoadBalancingPolicy4ArgsD2Ev.exit.i.i %enable_health_watch_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 56 - %19 = and i16 %call6.i.i, 256 - %tobool.i.i.not.i.i = icmp ne i16 %19, 0 - %20 = trunc i16 %call6.i.i to i1 - %retval.0.i.i.i = and i1 %tobool.i.i.not.i.i, %20 + %19 = and i16 %call6.i.i, 257 + %retval.0.i.i.i = icmp eq i16 %19, 257 %frombool.i.i = zext i1 %retval.0.i.i.i to i8 store i8 %frombool.i.i, ptr %enable_health_watch_.i.i, align 8, !noalias !11 %call17.i.i = invoke i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args_.i.i.i, i64 65, ptr nonnull @.str.7) @@ -954,10 +952,8 @@ invoke.cont5.i.i: ; preds = %_ZN9grpc_core19Load invoke.cont16.i.i: ; preds = %invoke.cont5.i.i %omit_status_message_prefix_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 57 - %21 = and i16 %call17.i.i, 256 - %tobool.i.i10.not.i.i = icmp ne i16 %21, 0 - %22 = trunc i16 %call17.i.i to i1 - %retval.0.i14.i.i = and i1 %tobool.i.i10.not.i.i, %22 + %20 = and i16 %call17.i.i, 257 + %retval.0.i14.i.i = icmp eq i16 %20, 257 %frombool24.i.i = zext i1 %retval.0.i14.i.i to i8 store i8 %frombool24.i.i, ptr %omit_status_message_prefix_.i.i, align 1, !noalias !11 %call30.i.i = invoke i64 @_ZNK9grpc_core11ChannelArgs6GetIntESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %channel_args_.i.i.i, i64 47, ptr nonnull @.str.8) @@ -966,12 +962,12 @@ invoke.cont16.i.i: ; preds = %invoke.cont5.i.i invoke.cont38.i.i: ; preds = %invoke.cont16.i.i %connection_attempt_delay_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 64 %ref.tmp25.sroa.0.0.extract.trunc.i.i = trunc i64 %call30.i.i to i32 - %23 = and i64 %call30.i.i, 4294967296 - %tobool.i.i19.not.i.i = icmp eq i64 %23, 0 - %24 = call i32 @llvm.smin.i32(i32 %ref.tmp25.sroa.0.0.extract.trunc.i.i, i32 2000) - %25 = call i32 @llvm.smax.i32(i32 %24, i32 100) - %26 = zext nneg i32 %25 to i64 - %conv.i.i = select i1 %tobool.i.i19.not.i.i, i64 250, i64 %26 + %21 = and i64 %call30.i.i, 4294967296 + %tobool.i.i19.not.i.i = icmp eq i64 %21, 0 + %22 = call i32 @llvm.smin.i32(i32 %ref.tmp25.sroa.0.0.extract.trunc.i.i, i32 2000) + %23 = call i32 @llvm.smax.i32(i32 %22, i32 100) + %24 = zext nneg i32 %23 to i64 + %conv.i.i = select i1 %tobool.i.i19.not.i.i, i64 250, i64 %24 store i64 %conv.i.i, ptr %connection_attempt_delay_.i.i, align 8, !noalias !11 %latest_update_args_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 72 invoke void @_ZN4absl12lts_202308028StatusOrISt10shared_ptrIN9grpc_core25EndpointAddressesIteratorEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %latest_update_args_.i.i) @@ -987,24 +983,24 @@ invoke.cont38.i.i: ; preds = %invoke.cont16.i.i to label %invoke.cont41.i.i unwind label %lpad2.i.i.i, !noalias !11 lpad2.i.i.i: ; preds = %.noexc.i.i - %27 = landingpad { ptr, i32 } + %25 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %resolution_note.i.i.i) #32, !noalias !11 - %28 = load ptr, ptr %config.i.i.i, align 8, !noalias !11 - %cmp.not.i.i25.i.i = icmp eq ptr %28, null + %26 = load ptr, ptr %config.i.i.i, align 8, !noalias !11 + %cmp.not.i.i25.i.i = icmp eq ptr %26, null br i1 %cmp.not.i.i25.i.i, label %_ZN9grpc_core13RefCountedPtrINS_19LoadBalancingPolicy6ConfigEED2Ev.exit.i.i.i, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %lpad2.i.i.i - %refs_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %28, i64 8 - %29 = atomicrmw sub ptr %refs_.i.i.i.i.i, i64 1 acq_rel, align 8, !noalias !11 - %cmp.i.i.i.i.i.i = icmp eq i64 %29, 1 + %refs_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %26, i64 8 + %27 = atomicrmw sub ptr %refs_.i.i.i.i.i, i64 1 acq_rel, align 8, !noalias !11 + %cmp.i.i.i.i.i.i = icmp eq i64 %27, 1 br i1 %cmp.i.i.i.i.i.i, label %if.then.i.i.i.i.i, label %_ZN9grpc_core13RefCountedPtrINS_19LoadBalancingPolicy6ConfigEED2Ev.exit.i.i.i if.then.i.i.i.i.i: ; preds = %if.then.i.i.i.i - %vtable.i.i.i.i.i.i = load ptr, ptr %28, align 8, !noalias !11 + %vtable.i.i.i.i.i.i = load ptr, ptr %26, align 8, !noalias !11 %vfn.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i, i64 8 - %30 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8, !noalias !11 - call void %30(ptr noundef nonnull align 8 dereferenceable(16) %28) #32, !noalias !11 + %28 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8, !noalias !11 + call void %28(ptr noundef nonnull align 8 dereferenceable(16) %26) #32, !noalias !11 br label %_ZN9grpc_core13RefCountedPtrINS_19LoadBalancingPolicy6ConfigEED2Ev.exit.i.i.i _ZN9grpc_core13RefCountedPtrINS_19LoadBalancingPolicy6ConfigEED2Ev.exit.i.i.i: ; preds = %if.then.i.i.i.i.i, %if.then.i.i.i.i, %lpad2.i.i.i @@ -1028,20 +1024,20 @@ invoke.cont41.i.i: ; preds = %.noexc.i.i %bit_gen_.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 192 %next_.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i, i64 456 store i64 32, ptr %next_.i.i.i.i.i.i.i, align 8, !alias.scope !14, !noalias !11 - %31 = ptrtoint ptr %bit_gen_.i.i to i64 - %and.i.i.i.i.i.i.i.i = and i64 %31, 8 + %29 = ptrtoint ptr %bit_gen_.i.i to i64 + %and.i.i.i.i.i.i.i.i = and i64 %29, 8 %cond.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %bit_gen_.i.i, i64 %and.i.i.i.i.i.i.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %cond.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false), !alias.scope !14, !noalias !11 - %32 = or disjoint i64 %and.i.i.i.i.i.i.i.i, 16 - %scevgep.i.i.i.i.i.i = getelementptr nuw i8, ptr %bit_gen_.i.i, i64 %32 + %30 = or disjoint i64 %and.i.i.i.i.i.i.i.i, 16 + %scevgep.i.i.i.i.i.i = getelementptr nuw i8, ptr %bit_gen_.i.i, i64 %30 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(240) %scevgep.i.i.i.i.i.i, i8 0, i64 240, i1 false), !alias.scope !14, !noalias !11 invoke void @_ZN4absl12lts_2023080215random_internal13randen_engineImE6reseedINS1_17RandenPoolSeedSeqEEEvRT_(ptr noundef nonnull align 8 dereferenceable(288) %bit_gen_.i.i, ptr noundef nonnull align 1 dereferenceable(1) %seeder.i.i.i.i) to label %invoke.cont43.i.i unwind label %lpad42.i.i, !noalias !11 invoke.cont43.i.i: ; preds = %.noexc26.i.i call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %seeder.i.i.i.i), !noalias !11 - %33 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core24grpc_lb_pick_first_traceE, i64 16) monotonic, align 8, !noalias !11 - %tobool.i.i.i.i.i = trunc i8 %33 to i1 + %31 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core24grpc_lb_pick_first_traceE, i64 16) monotonic, align 8, !noalias !11 + %tobool.i.i.i.i.i = trunc i8 %31 to i1 br i1 %tobool.i.i.i.i.i, label %if.then.i.i, label %invoke.cont.i if.then.i.i: ; preds = %invoke.cont43.i.i @@ -1049,18 +1045,18 @@ if.then.i.i: ; preds = %invoke.cont43.i.i to label %invoke.cont.i unwind label %lpad42.i.i, !noalias !11 lpad.i.i: ; preds = %entry - %34 = landingpad { ptr, i32 } + %32 = landingpad { ptr, i32 } cleanup call void @_ZN9grpc_core19LoadBalancingPolicy4ArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp.i.i) #32, !noalias !11 br label %lpad.body.i lpad2.i.i: ; preds = %invoke.cont38.i.i, %invoke.cont16.i.i, %invoke.cont5.i.i, %_ZN9grpc_core19LoadBalancingPolicy4ArgsD2Ev.exit.i.i - %35 = landingpad { ptr, i32 } + %33 = landingpad { ptr, i32 } cleanup br label %ehcleanup.i.i lpad42.i.i: ; preds = %if.then.i.i, %.noexc26.i.i, %invoke.cont41.i.i - %36 = landingpad { ptr, i32 } + %34 = landingpad { ptr, i32 } cleanup call fastcc void @_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_19PickFirst14SubchannelListENS0_16OrphanableDeleteEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %latest_pending_subchannel_list_.i.i) #32, !noalias !11 call fastcc void @_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_19PickFirst14SubchannelListENS0_16OrphanableDeleteEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %subchannel_list_.i.i) #32, !noalias !11 @@ -1068,100 +1064,100 @@ lpad42.i.i: ; preds = %if.then.i.i, %.noex br label %ehcleanup.i.i ehcleanup.i.i: ; preds = %lpad42.i.i, %lpad2.i.i, %_ZN9grpc_core13RefCountedPtrINS_19LoadBalancingPolicy6ConfigEED2Ev.exit.i.i.i - %.pn.i.i = phi { ptr, i32 } [ %36, %lpad42.i.i ], [ %35, %lpad2.i.i ], [ %27, %_ZN9grpc_core13RefCountedPtrINS_19LoadBalancingPolicy6ConfigEED2Ev.exit.i.i.i ] + %.pn.i.i = phi { ptr, i32 } [ %34, %lpad42.i.i ], [ %33, %lpad2.i.i ], [ %25, %_ZN9grpc_core13RefCountedPtrINS_19LoadBalancingPolicy6ConfigEED2Ev.exit.i.i.i ] call void @_ZN9grpc_core19LoadBalancingPolicyD2Ev(ptr noundef nonnull align 8 dereferenceable(480) %call.i) #32, !noalias !11 br label %lpad.body.i invoke.cont.i: ; preds = %if.then.i.i, %invoke.cont43.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp.i.i), !noalias !11 call void @_ZN9grpc_core11ChannelArgsD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %args.i.i) #32, !noalias !11 - %37 = load ptr, ptr %channel_control_helper.i.i, align 8, !noalias !11 - %cmp.not.i.i.i = icmp eq ptr %37, null + %35 = load ptr, ptr %channel_control_helper.i.i, align 8, !noalias !11 + %cmp.not.i.i.i = icmp eq ptr %35, null br i1 %cmp.not.i.i.i, label %_ZNSt10unique_ptrIN9grpc_core19LoadBalancingPolicy20ChannelControlHelperESt14default_deleteIS2_EED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN9grpc_core19LoadBalancingPolicy20ChannelControlHelperEEclEPS2_.exit.i.i.i _ZNKSt14default_deleteIN9grpc_core19LoadBalancingPolicy20ChannelControlHelperEEclEPS2_.exit.i.i.i: ; preds = %invoke.cont.i - %vtable.i.i.i.i = load ptr, ptr %37, align 8, !noalias !11 + %vtable.i.i.i.i = load ptr, ptr %35, align 8, !noalias !11 %vfn.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i, i64 8 - %38 = load ptr, ptr %vfn.i.i.i.i, align 8, !noalias !11 - call void %38(ptr noundef nonnull align 8 dereferenceable(8) %37) #32, !noalias !11 + %36 = load ptr, ptr %vfn.i.i.i.i, align 8, !noalias !11 + call void %36(ptr noundef nonnull align 8 dereferenceable(8) %35) #32, !noalias !11 br label %_ZNSt10unique_ptrIN9grpc_core19LoadBalancingPolicy20ChannelControlHelperESt14default_deleteIS2_EED2Ev.exit.i.i _ZNSt10unique_ptrIN9grpc_core19LoadBalancingPolicy20ChannelControlHelperESt14default_deleteIS2_EED2Ev.exit.i.i: ; preds = %_ZNKSt14default_deleteIN9grpc_core19LoadBalancingPolicy20ChannelControlHelperEEclEPS2_.exit.i.i.i, %invoke.cont.i store ptr null, ptr %channel_control_helper.i.i, align 8, !noalias !11 - %39 = load ptr, ptr %_M_refcount.i.i.i.i, align 8, !noalias !11 - %cmp.not.i.i.i.i.i = icmp eq ptr %39, null + %37 = load ptr, ptr %_M_refcount.i.i.i.i, align 8, !noalias !11 + %cmp.not.i.i.i.i.i = icmp eq ptr %37, null br i1 %cmp.not.i.i.i.i.i, label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_19PickFirstENS0_16OrphanableDeleteEED2Ev.exit, label %if.then.i.i.i.i5.i if.then.i.i.i.i5.i: ; preds = %_ZNSt10unique_ptrIN9grpc_core19LoadBalancingPolicy20ChannelControlHelperESt14default_deleteIS2_EED2Ev.exit.i.i - %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %39, i64 8 - %40 = load atomic i64, ptr %_M_use_count.i.i.i.i.i.i acquire, align 8, !noalias !11 - %cmp.i.i.i.i.i6.i = icmp eq i64 %40, 4294967297 - %41 = trunc i64 %40 to i32 + %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %37, i64 8 + %38 = load atomic i64, ptr %_M_use_count.i.i.i.i.i.i acquire, align 8, !noalias !11 + %cmp.i.i.i.i.i6.i = icmp eq i64 %38, 4294967297 + %39 = trunc i64 %38 to i32 br i1 %cmp.i.i.i.i.i6.i, label %if.then.i.i.i.i.i8.i, label %if.end.i.i.i.i.i.i if.then.i.i.i.i.i8.i: ; preds = %if.then.i.i.i.i5.i store i32 0, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !11 - %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %39, i64 12 + %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %37, i64 12 store i32 0, ptr %_M_weak_count.i.i.i.i.i.i, align 4, !noalias !11 - %vtable.i.i.i.i.i9.i = load ptr, ptr %39, align 8, !noalias !11 + %vtable.i.i.i.i.i9.i = load ptr, ptr %37, align 8, !noalias !11 %vfn.i.i.i.i.i10.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i9.i, i64 16 - %42 = load ptr, ptr %vfn.i.i.i.i.i10.i, align 8, !noalias !11 - call void %42(ptr noundef nonnull align 8 dereferenceable(16) %39) #32, !noalias !11 + %40 = load ptr, ptr %vfn.i.i.i.i.i10.i, align 8, !noalias !11 + call void %40(ptr noundef nonnull align 8 dereferenceable(16) %37) #32, !noalias !11 br label %if.end8.sink.split.i.i.i.i.i.i if.end.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i5.i - %43 = load i8, ptr @__libc_single_threaded, align 1, !noalias !11 - %tobool.i.not.i.i.i.i.i.i = icmp eq i8 %43, 0 + %41 = load i8, ptr @__libc_single_threaded, align 1, !noalias !11 + %tobool.i.not.i.i.i.i.i.i = icmp eq i8 %41, 0 br i1 %tobool.i.not.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i7.i if.then.i.i.i.i.i.i7.i: ; preds = %if.end.i.i.i.i.i.i - %add.i.i.i.i.i.i.i = add nsw i32 %41, -1 + %add.i.i.i.i.i.i.i = add nsw i32 %39, -1 store i32 %add.i.i.i.i.i.i.i, ptr %_M_use_count.i.i.i.i.i.i, align 4, !noalias !11 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i if.else.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i - %44 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i, i32 -1 acq_rel, align 4, !noalias !11 + %42 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i, i32 -1 acq_rel, align 4, !noalias !11 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i7.i - %retval.i.0.i.i.i.i.i.i = phi i32 [ %41, %if.then.i.i.i.i.i.i7.i ], [ %44, %if.else.i.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i.i = phi i32 [ %39, %if.then.i.i.i.i.i.i7.i ], [ %42, %if.else.i.i.i.i.i.i.i ] %cmp6.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i, 1 br i1 %cmp6.i.i.i.i.i.i, label %if.then7.i.i.i.i.i.i, label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_19PickFirstENS0_16OrphanableDeleteEED2Ev.exit if.then7.i.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i - %vtable.i.i.i.i.i.i.i.i = load ptr, ptr %39, align 8, !noalias !11 + %vtable.i.i.i.i.i.i.i.i = load ptr, ptr %37, align 8, !noalias !11 %vfn.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i.i, i64 16 - %45 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i, align 8, !noalias !11 - call void %45(ptr noundef nonnull align 8 dereferenceable(16) %39) #32, !noalias !11 - %_M_weak_count.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %39, i64 12 - %46 = load i8, ptr @__libc_single_threaded, align 1, !noalias !11 - %tobool.i.not.i.i.i.i.i.i.i.i = icmp eq i8 %46, 0 + %43 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i, align 8, !noalias !11 + call void %43(ptr noundef nonnull align 8 dereferenceable(16) %37) #32, !noalias !11 + %_M_weak_count.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %37, i64 12 + %44 = load i8, ptr @__libc_single_threaded, align 1, !noalias !11 + %tobool.i.not.i.i.i.i.i.i.i.i = icmp eq i8 %44, 0 br i1 %tobool.i.not.i.i.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i.i - %47 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i.i, align 4, !noalias !11 - %add.i.i.i.i.i.i.i.i.i = add nsw i32 %47, -1 + %45 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i.i, align 4, !noalias !11 + %add.i.i.i.i.i.i.i.i.i = add nsw i32 %45, -1 store i32 %add.i.i.i.i.i.i.i.i.i, ptr %_M_weak_count.i.i.i.i.i.i.i.i, align 4, !noalias !11 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i if.else.i.i.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i.i - %48 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4, !noalias !11 + %46 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4, !noalias !11 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i - %retval.i.0.i.i.i.i.i.i.i.i = phi i32 [ %47, %if.then.i.i.i.i.i.i.i.i.i ], [ %48, %if.else.i.i.i.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i.i.i.i = phi i32 [ %45, %if.then.i.i.i.i.i.i.i.i.i ], [ %46, %if.else.i.i.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i.i, 1 br i1 %cmp.i.i.i.i.i.i.i.i, label %if.end8.sink.split.i.i.i.i.i.i, label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_19PickFirstENS0_16OrphanableDeleteEED2Ev.exit if.end8.sink.split.i.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i8.i - %vtable2.i.i.i.i.i.i.i.i = load ptr, ptr %39, align 8, !noalias !11 + %vtable2.i.i.i.i.i.i.i.i = load ptr, ptr %37, align 8, !noalias !11 %vfn3.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable2.i.i.i.i.i.i.i.i, i64 24 - %49 = load ptr, ptr %vfn3.i.i.i.i.i.i.i.i, align 8, !noalias !11 - call void %49(ptr noundef nonnull align 8 dereferenceable(16) %39) #32, !noalias !11 + %47 = load ptr, ptr %vfn3.i.i.i.i.i.i.i.i, align 8, !noalias !11 + call void %47(ptr noundef nonnull align 8 dereferenceable(16) %37) #32, !noalias !11 br label %_ZNSt10unique_ptrIN9grpc_core12_GLOBAL__N_19PickFirstENS0_16OrphanableDeleteEED2Ev.exit lpad.body.i: ; preds = %ehcleanup.i.i, %lpad.i.i - %eh.lpad-body.i = phi { ptr, i32 } [ %.pn.i.i, %ehcleanup.i.i ], [ %34, %lpad.i.i ] + %eh.lpad-body.i = phi { ptr, i32 } [ %.pn.i.i, %ehcleanup.i.i ], [ %32, %lpad.i.i ] call void @_ZN9grpc_core19LoadBalancingPolicy4ArgsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp.i) #32, !noalias !11 call void @_ZdlPv(ptr noundef nonnull %call.i) #33, !noalias !11 resume { ptr, i32 } %eh.lpad-body.i diff --git a/bench/grpc/optimized/retry_service_config.cc.ll b/bench/grpc/optimized/retry_service_config.cc.ll index 862ef18590c..708e38f93f4 100644 --- a/bench/grpc/optimized/retry_service_config.cc.ll +++ b/bench/grpc/optimized/retry_service_config.cc.ll @@ -2266,10 +2266,8 @@ define linkonce_odr noundef zeroext i1 @_ZNK9grpc_core15JsonChannelArgs9IsEnable entry: %args_ = getelementptr inbounds nuw i8, ptr %this, i64 8 %call = tail call i16 @_ZNK9grpc_core11ChannelArgs7GetBoolESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(8) %args_, i64 %key.coerce0, ptr %key.coerce1) - %0 = and i16 %call, 256 - %tobool.i.i.not = icmp ne i16 %0, 0 - %1 = trunc i16 %call to i1 - %retval.0.i = and i1 %tobool.i.i.not, %1 + %0 = and i16 %call, 257 + %retval.0.i = icmp eq i16 %0, 257 ret i1 %retval.0.i } diff --git a/bench/grpc/optimized/tcp_connect_handshaker.cc.ll b/bench/grpc/optimized/tcp_connect_handshaker.cc.ll index fa6d38a46ff..830ccd0fed0 100644 --- a/bench/grpc/optimized/tcp_connect_handshaker.cc.ll +++ b/bench/grpc/optimized/tcp_connect_handshaker.cc.ll @@ -1130,10 +1130,8 @@ if.end24: ; preds = %invoke.cont7 to label %invoke.cont28 unwind label %lpad invoke.cont28: ; preds = %if.end24 - %23 = and i16 %call29, 256 - %tobool.i.i25.not = icmp ne i16 %23, 0 - %24 = trunc i16 %call29 to i1 - %retval.0.i = and i1 %tobool.i.i25.not, %24 + %23 = and i16 %call29, 257 + %retval.0.i = icmp eq i16 %23, 257 %bind_endpoint_to_pollset_ = getelementptr inbounds nuw i8, ptr %this, i64 88 %frombool = zext i1 %retval.0.i to i8 store i8 %frombool, ptr %bind_endpoint_to_pollset_, align 8 @@ -1149,9 +1147,9 @@ _ZN9grpc_core13RefCountedPtrINS_10HandshakerEED2Ev.exit: ; preds = %invoke.cont3 call void @_ZN9grpc_core11ChannelArgsD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp35) #18 call void @_ZN9grpc_core11ChannelArgsD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp36) #18 %refs_.i.i = getelementptr inbounds nuw i8, ptr %this, i64 8 - %25 = atomicrmw add ptr %refs_.i.i, i64 1 monotonic, align 8, !noalias !15 + %24 = atomicrmw add ptr %refs_.i.i, i64 1 monotonic, align 8, !noalias !15 %interested_parties_ = getelementptr inbounds nuw i8, ptr %this, i64 56 - %26 = load ptr, ptr %interested_parties_, align 8 + %25 = load ptr, ptr %interested_parties_, align 8 store ptr getelementptr inbounds (i8, ptr @_ZTVN17grpc_event_engine12experimental25ChannelArgsEndpointConfigE, i64 16), ptr %ref.tmp52, align 8 %args_.i = getelementptr inbounds nuw i8, ptr %ref.tmp52, i64 8 invoke void @_ZN9grpc_core11ChannelArgsC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %args_.i, ptr noundef nonnull align 8 dereferenceable(8) %args2) @@ -1162,7 +1160,7 @@ invoke.cont54: ; preds = %_ZN9grpc_core13RefC %connected_ = getelementptr inbounds nuw i8, ptr %this, i64 224 %deadline = getelementptr inbounds nuw i8, ptr %args, i64 40 %agg.tmp56.sroa.0.0.copyload = load i64, ptr %deadline, align 8 - %call60 = invoke noundef i64 @_Z23grpc_tcp_client_connectP12grpc_closurePP13grpc_endpointP16grpc_pollset_setRKN17grpc_event_engine12experimental14EndpointConfigEPK21grpc_resolved_addressN9grpc_core9TimestampE(ptr noundef nonnull %connected_, ptr noundef nonnull %endpoint_to_destroy_, ptr noundef %26, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp52, ptr noundef nonnull %addr_, i64 %agg.tmp56.sroa.0.0.copyload) + %call60 = invoke noundef i64 @_Z23grpc_tcp_client_connectP12grpc_closurePP13grpc_endpointP16grpc_pollset_setRKN17grpc_event_engine12experimental14EndpointConfigEPK21grpc_resolved_addressN9grpc_core9TimestampE(ptr noundef nonnull %connected_, ptr noundef nonnull %endpoint_to_destroy_, ptr noundef %25, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp52, ptr noundef nonnull %addr_, i64 %agg.tmp56.sroa.0.0.copyload) to label %invoke.cont59 unwind label %lpad58 invoke.cont59: ; preds = %invoke.cont54 @@ -1171,49 +1169,49 @@ invoke.cont59: ; preds = %invoke.cont54 br label %cleanup cleanup: ; preds = %_ZNSt6vectorIN4absl12lts_202308026StatusESaIS2_EED2Ev.exit, %invoke.cont59 - %27 = load i64, ptr %uri, align 8 - %cmp.i.i.i.i36 = icmp eq i64 %27, 0 + %26 = load i64, ptr %uri, align 8 + %cmp.i.i.i.i36 = icmp eq i64 %26, 0 br i1 %cmp.i.i.i.i36, label %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i, label %if.else.i.i _ZN4absl12lts_202308026StatusD2Ev.exit.i.i: ; preds = %cleanup - %28 = getelementptr inbounds nuw i8, ptr %uri, i64 8 - call void @_ZN9grpc_core3URID2Ev(ptr noundef nonnull align 8 dereferenceable(200) %28) #18 + %27 = getelementptr inbounds nuw i8, ptr %uri, i64 8 + call void @_ZN9grpc_core3URID2Ev(ptr noundef nonnull align 8 dereferenceable(200) %27) #18 br label %_ZN4absl12lts_202308028StatusOrIN9grpc_core3URIEED2Ev.exit if.else.i.i: ; preds = %cleanup - %and.i.i.i1.i.i = and i64 %27, 1 + %and.i.i.i1.i.i = and i64 %26, 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_202308028StatusOrIN9grpc_core3URIEED2Ev.exit, label %if.then.i.i3.i.i if.then.i.i3.i.i: ; preds = %if.else.i.i - invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %27) + invoke void @_ZN4absl12lts_202308026Status15UnrefNonInlinedEm(i64 noundef %26) to label %_ZN4absl12lts_202308028StatusOrIN9grpc_core3URIEED2Ev.exit unwind label %terminate.lpad.i4.i.i terminate.lpad.i4.i.i: ; preds = %if.then.i.i3.i.i - %29 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } catch ptr null - %30 = extractvalue { ptr, i32 } %29, 0 - call void @__clang_call_terminate(ptr %30) #20 + %29 = extractvalue { ptr, i32 } %28, 0 + call void @__clang_call_terminate(ptr %29) #20 unreachable _ZN4absl12lts_202308028StatusOrIN9grpc_core3URIEED2Ev.exit: ; preds = %_ZN4absl12lts_202308026StatusD2Ev.exit.i.i, %if.else.i.i, %if.then.i.i3.i.i ret void lpad41: ; preds = %invoke.cont39 - %31 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } cleanup call void @_ZN9grpc_core11ChannelArgsD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp36) #18 br label %ehcleanup62 lpad58: ; preds = %invoke.cont54 - %32 = landingpad { ptr, i32 } + %31 = landingpad { ptr, i32 } cleanup store ptr getelementptr inbounds (i8, ptr @_ZTVN17grpc_event_engine12experimental25ChannelArgsEndpointConfigE, i64 16), ptr %ref.tmp52, align 8 call void @_ZN9grpc_core11ChannelArgsD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %args_.i) #18 br label %ehcleanup62 ehcleanup62: ; preds = %ehcleanup, %lpad58, %lpad41, %lpad - %.pn9 = phi { ptr, i32 } [ %32, %lpad58 ], [ %18, %lpad ], [ %31, %lpad41 ], [ %.pn, %ehcleanup ] + %.pn9 = phi { ptr, i32 } [ %31, %lpad58 ], [ %18, %lpad ], [ %30, %lpad41 ], [ %.pn, %ehcleanup ] call void @_ZN4absl12lts_202308028StatusOrIN9grpc_core3URIEED2Ev(ptr noundef nonnull align 8 dereferenceable(208) %uri) #18 resume { ptr, i32 } %.pn9 } diff --git a/bench/llvm/optimized/APINotesReader.cpp.ll b/bench/llvm/optimized/APINotesReader.cpp.ll index 2caf6ec80d3..2c99742fc08 100644 --- a/bench/llvm/optimized/APINotesReader.cpp.ll +++ b/bench/llvm/optimized/APINotesReader.cpp.ll @@ -13141,8 +13141,8 @@ _ZN5clang9api_notes12_GLOBAL__N_116ReadVersionTupleERPKh.exit.i.i: ; preds = %16 %192 = and i8 %191, 3 %193 = zext nneg i8 %192 to i64 %194 = add nuw nsw i64 %193, 4294967295 - %.sroa.059.0.insert.insert.i.i.i = or i64 %194, 4294967296 - store i64 %.sroa.059.0.insert.insert.i.i.i, ptr %127, align 8, !alias.scope !548, !noalias !545 + %.sroa.057.0.insert.insert.i.i.i = or i64 %194, 4294967296 + store i64 %.sroa.057.0.insert.insert.i.i.i, ptr %127, align 8, !alias.scope !548, !noalias !545 br label %195 195: ; preds = %190, %188 @@ -13170,14 +13170,14 @@ _ZN5clang9api_notes12_GLOBAL__N_116ReadVersionTupleERPKh.exit.i.i: ; preds = %16 202: ; preds = %.sink.split.i.i.i, %195 call void @llvm.assume(i1 true) [ "align"(ptr %196, i64 1) ] - %.0.copyload.i.i.i48.i.i.i = load i16, ptr %196, align 1 + %.0.copyload.i.i.i46.i.i.i = load i16, ptr %196, align 1 %203 = getelementptr inbounds nuw i8, ptr %177, i64 4 store ptr %203, ptr %15, align 8, !noalias !551 - %.not40.i.i.i = icmp eq i16 %.0.copyload.i.i.i48.i.i.i, 0 + %.not40.i.i.i = icmp eq i16 %.0.copyload.i.i.i46.i.i.i, 0 br i1 %.not40.i.i.i, label %214, label %204 204: ; preds = %202 - %205 = zext i16 %.0.copyload.i.i.i48.i.i.i to i64 + %205 = zext i16 %.0.copyload.i.i.i46.i.i.i to i64 %206 = add nuw nsw i64 %205, 4294967295 %207 = and i64 %206, 4294967295 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #17 @@ -13204,14 +13204,14 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9 214: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit.i.i.i, %202 %215 = phi ptr [ %213, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit.i.i.i ], [ %203, %202 ] call void @llvm.assume(i1 true) [ "align"(ptr %215, i64 1) ] - %.0.copyload.i.i.i49.i.i.i = load i16, ptr %215, align 1 + %.0.copyload.i.i.i47.i.i.i = load i16, ptr %215, align 1 %216 = getelementptr inbounds nuw i8, ptr %215, i64 2 store ptr %216, ptr %15, align 8, !noalias !551 - %.not41.i.i.i = icmp eq i16 %.0.copyload.i.i.i49.i.i.i, 0 + %.not41.i.i.i = icmp eq i16 %.0.copyload.i.i.i47.i.i.i, 0 br i1 %.not41.i.i.i, label %228, label %217 217: ; preds = %214 - %218 = zext i16 %.0.copyload.i.i.i49.i.i.i to i64 + %218 = zext i16 %.0.copyload.i.i.i47.i.i.i to i64 %219 = add nuw nsw i64 %218, 4294967295 %220 = and i64 %219, 4294967295 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #17 @@ -13222,14 +13222,14 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9 223: ; preds = %217 %224 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(40) %129, ptr noundef nonnull align 8 dereferenceable(32) %9) #17 - br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i + br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit48.i.i.i 225: ; preds = %217 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(40) %129, ptr noundef nonnull align 8 dereferenceable(32) %9) #17 store i8 1, ptr %123, align 8, !alias.scope !548, !noalias !545 - br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i + br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit48.i.i.i -_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i: ; preds = %225, %223 +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit48.i.i.i: ; preds = %225, %223 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #17 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #17 %226 = load ptr, ptr %15, align 8, !noalias !551 @@ -13237,17 +13237,17 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9 store ptr %227, ptr %15, align 8, !noalias !551 br label %228 -228: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i, %214 - %229 = phi ptr [ %227, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i ], [ %216, %214 ] +228: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit48.i.i.i, %214 + %229 = phi ptr [ %227, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit48.i.i.i ], [ %216, %214 ] call void @llvm.assume(i1 true) [ "align"(ptr %229, i64 1) ] - %.0.copyload.i.i.i51.i.i.i = load i16, ptr %229, align 1 + %.0.copyload.i.i.i49.i.i.i = load i16, ptr %229, align 1 %230 = getelementptr inbounds nuw i8, ptr %229, i64 2 store ptr %230, ptr %15, align 8, !noalias !551 - %.not42.i.i.i = icmp eq i16 %.0.copyload.i.i.i51.i.i.i, 0 + %.not42.i.i.i = icmp eq i16 %.0.copyload.i.i.i49.i.i.i, 0 br i1 %.not42.i.i.i, label %242, label %231 231: ; preds = %228 - %232 = zext i16 %.0.copyload.i.i.i51.i.i.i to i64 + %232 = zext i16 %.0.copyload.i.i.i49.i.i.i to i64 %233 = add nuw nsw i64 %232, 4294967295 %234 = and i64 %233, 4294967295 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #17 @@ -13258,14 +13258,14 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9 237: ; preds = %231 %238 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(40) %130, ptr noundef nonnull align 8 dereferenceable(32) %11) #17 - br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit52.i.i.i + br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i 239: ; preds = %231 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(40) %130, ptr noundef nonnull align 8 dereferenceable(32) %11) #17 store i8 1, ptr %124, align 8, !alias.scope !548, !noalias !545 - br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit52.i.i.i + br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i -_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit52.i.i.i: ; preds = %239, %237 +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i: ; preds = %239, %237 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #17 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #17 %240 = load ptr, ptr %15, align 8, !noalias !551 @@ -13273,17 +13273,17 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9 store ptr %241, ptr %15, align 8, !noalias !551 br label %242 -242: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit52.i.i.i, %228 - %243 = phi ptr [ %241, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit52.i.i.i ], [ %230, %228 ] +242: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i, %228 + %243 = phi ptr [ %241, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit50.i.i.i ], [ %230, %228 ] call void @llvm.assume(i1 true) [ "align"(ptr %243, i64 1) ] - %.0.copyload.i.i.i53.i.i.i = load i16, ptr %243, align 1 + %.0.copyload.i.i.i51.i.i.i = load i16, ptr %243, align 1 %244 = getelementptr inbounds nuw i8, ptr %243, i64 2 store ptr %244, ptr %15, align 8, !noalias !551 - %.not43.i.i.i = icmp eq i16 %.0.copyload.i.i.i53.i.i.i, 0 + %.not43.i.i.i = icmp eq i16 %.0.copyload.i.i.i51.i.i.i, 0 br i1 %.not43.i.i.i, label %_ZN5clang9api_notes12_GLOBAL__N_112TagTableInfo15readUnversionedENS0_18SingleDeclTableKeyERPKh.exit.i.i, label %245 245: ; preds = %242 - %246 = zext i16 %.0.copyload.i.i.i53.i.i.i to i64 + %246 = zext i16 %.0.copyload.i.i.i51.i.i.i to i64 %247 = add nuw nsw i64 %246, 4294967295 %248 = and i64 %247, 4294967295 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #17 @@ -13294,14 +13294,14 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9 251: ; preds = %245 %252 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(40) %131, ptr noundef nonnull align 8 dereferenceable(32) %13) #17 - br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit54.i.i.i + br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit52.i.i.i 253: ; preds = %245 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(40) %131, ptr noundef nonnull align 8 dereferenceable(32) %13) #17 store i8 1, ptr %125, align 8, !alias.scope !548, !noalias !545 - br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit54.i.i.i + br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit52.i.i.i -_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit54.i.i.i: ; preds = %253, %251 +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit52.i.i.i: ; preds = %253, %251 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #17 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #17 %254 = load ptr, ptr %15, align 8, !noalias !551 @@ -13309,7 +13309,7 @@ _ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9 store ptr %255, ptr %15, align 8, !noalias !551 br label %_ZN5clang9api_notes12_GLOBAL__N_112TagTableInfo15readUnversionedENS0_18SingleDeclTableKeyERPKh.exit.i.i -_ZN5clang9api_notes12_GLOBAL__N_112TagTableInfo15readUnversionedENS0_18SingleDeclTableKeyERPKh.exit.i.i: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit54.i.i.i, %242 +_ZN5clang9api_notes12_GLOBAL__N_112TagTableInfo15readUnversionedENS0_18SingleDeclTableKeyERPKh.exit.i.i: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSIS5_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS6_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES9_ISt6__and_IJSt9is_scalarIS5_ESA_IS5_NSt5decayISD_E4typeEEEEESt16is_constructibleIS5_JSD_EESt13is_assignableIRS5_SD_EEERS6_E4typeEOSD_.exit52.i.i.i, %242 call fastcc void @_ZN5clang9api_notes12_GLOBAL__N_118ReadCommonTypeInfoERPKhRNS0_14CommonTypeInfoE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(152) %16) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7), !noalias !545 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8), !noalias !545 diff --git a/bench/llvm/optimized/APINotesWriter.cpp.ll b/bench/llvm/optimized/APINotesWriter.cpp.ll index 69a4bb90572..6e7d0073e92 100644 --- a/bench/llvm/optimized/APINotesWriter.cpp.ll +++ b/bench/llvm/optimized/APINotesWriter.cpp.ll @@ -13733,7 +13733,7 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapIjjNS_12DenseMapInfoIjvEENS_6detail12DenseMap br label %246 246: ; preds = %.lr.ph, %_ZN4llvmeqERKNS_12VersionTupleES2_.exit.thread - %.01868 = phi ptr [ %239, %.lr.ph ], [ %304, %_ZN4llvmeqERKNS_12VersionTupleES2_.exit.thread ] + %.01868 = phi ptr [ %239, %.lr.ph ], [ %306, %_ZN4llvmeqERKNS_12VersionTupleES2_.exit.thread ] %247 = load i64, ptr %.01868, align 4 %248 = trunc i64 %247 to i32 %249 = icmp eq i32 %248, %243 @@ -13779,133 +13779,143 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapIjjNS_12DenseMapInfoIjvEENS_6detail12DenseMap %275 = phi i8 [ %263, %265 ], [ %273, %269 ], [ %263, %259 ] %276 = and i8 %275, 16 %.not.i32 = icmp eq i8 %276, 0 - br i1 %.not.i32, label %277, label %286 + br i1 %.not.i32, label %277, label %288 277: ; preds = %274 %278 = getelementptr inbounds nuw i8, ptr %5, i64 152 %279 = load i8, ptr %278, align 8 %280 = and i8 %279, 16 - %281 = and i8 %275, -49 - %282 = and i8 %279, 48 - %.0.i.i.i = icmp eq i8 %282, 48 - %283 = select i1 %.0.i.i.i, i8 32, i8 0 - %284 = or disjoint i8 %280, %281 - %285 = or disjoint i8 %284, %283 - store i8 %285, ptr %262, align 8 - br label %286 - -286: ; preds = %277, %274 - %287 = phi i8 [ %285, %277 ], [ %275, %274 ] - %288 = and i8 %287, 64 - %.not7.i = icmp eq i8 %288, 0 - br i1 %.not7.i, label %289, label %_ZN5clang9api_notes11ContextInfooRERKS1_.exit - -289: ; preds = %286 - %290 = getelementptr inbounds nuw i8, ptr %5, i64 152 - %291 = load i8, ptr %290, align 8 - %292 = lshr i8 %291, 6 - %.lobit1.i.i = and i8 %292, 1 - %.not.i19.i = icmp ne i8 %.lobit1.i.i, 0 - %293 = shl nuw nsw i8 %.lobit1.i.i, 6 - %294 = and i8 %287, 63 - %295 = icmp slt i8 %291, 0 - %.0.i.i20.i = and i1 %295, %.not.i19.i - %296 = select i1 %.0.i.i20.i, i8 -128, i8 0 - %297 = or disjoint i8 %296, %293 - %298 = or disjoint i8 %297, %294 - store i8 %298, ptr %262, align 8 + %.not.i.i = icmp eq i8 %280, 0 + %281 = lshr i8 %279, 5 + %narrow.i.i = select i1 %.not.i.i, i8 0, i8 %281 + %.sroa.0.0.i.i = zext nneg i8 %narrow.i.i to i16 + %282 = zext i8 %279 to i16 + %.sroa.2.0.i.i = shl nuw nsw i16 %282, 4 + %.sroa.0.0.insert.insert.i12.i = or disjoint i16 %.sroa.2.0.i.i, %.sroa.0.0.i.i + %283 = and i8 %275, -49 + %284 = and i16 %.sroa.0.0.insert.insert.i12.i, 257 + %.0.i.i.i = icmp eq i16 %284, 257 + %285 = select i1 %.0.i.i.i, i8 32, i8 0 + %286 = or disjoint i8 %283, %285 + %287 = or disjoint i8 %286, %280 + store i8 %287, ptr %262, align 8 + br label %288 + +288: ; preds = %277, %274 + %289 = phi i8 [ %287, %277 ], [ %275, %274 ] + %290 = and i8 %289, 64 + %.not7.i = icmp eq i8 %290, 0 + br i1 %.not7.i, label %291, label %_ZN5clang9api_notes11ContextInfooRERKS1_.exit + +291: ; preds = %288 + %292 = getelementptr inbounds nuw i8, ptr %5, i64 152 + %293 = load i8, ptr %292, align 8 + %.lobit.i13.i = lshr i8 %293, 7 + %294 = lshr i8 %293, 6 + %.sroa.2.0.insert.ext.i14.i = zext nneg i8 %294 to i16 + %.sroa.2.0.insert.shift.i15.i = shl nuw nsw i16 %.sroa.2.0.insert.ext.i14.i, 8 + %.sroa.0.0.insert.ext.i16.i = zext nneg i8 %.lobit.i13.i to i16 + %295 = and i8 %293, 64 + %296 = and i8 %289, 63 + %.sroa.2.0.insert.shift.i15.masked.i = and i16 %.sroa.2.0.insert.shift.i15.i, 256 + %297 = or disjoint i16 %.sroa.2.0.insert.shift.i15.masked.i, %.sroa.0.0.insert.ext.i16.i + %.0.i.i18.i = icmp eq i16 %297, 257 + %298 = select i1 %.0.i.i18.i, i8 -128, i8 0 + %299 = or disjoint i8 %295, %296 + %300 = or disjoint i8 %299, %298 + store i8 %300, ptr %262, align 8 br label %_ZN5clang9api_notes11ContextInfooRERKS1_.exit -_ZN5clang9api_notes11ContextInfooRERKS1_.exit: ; preds = %286, %289 - %299 = phi i8 [ %298, %289 ], [ %287, %286 ] - %300 = getelementptr inbounds nuw i8, ptr %5, i64 152 - %301 = load i8, ptr %300, align 8 - %302 = and i8 %301, 8 - %303 = or i8 %302, %299 - store i8 %303, ptr %262, align 8 - br label %336 +_ZN5clang9api_notes11ContextInfooRERKS1_.exit: ; preds = %288, %291 + %301 = phi i8 [ %300, %291 ], [ %289, %288 ] + %302 = getelementptr inbounds nuw i8, ptr %5, i64 152 + %303 = load i8, ptr %302, align 8 + %304 = and i8 %303, 8 + %305 = or i8 %304, %301 + store i8 %305, ptr %262, align 8 + br label %338 _ZN4llvmeqERKNS_12VersionTupleES2_.exit.thread: ; preds = %246, %250, %254 - %304 = getelementptr inbounds nuw i8, ptr %.01868, i64 176 - %.not.not = icmp eq ptr %304, %241 + %306 = getelementptr inbounds nuw i8, ptr %.01868, i64 176 + %.not.not = icmp eq ptr %306, %241 br i1 %.not.not, label %.critedge, label %246 .critedge: ; preds = %_ZN4llvmeqERKNS_12VersionTupleES2_.exit.thread, %237 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(176) %13, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) - %305 = getelementptr inbounds nuw i8, ptr %13, i64 16 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(153) %305, ptr noundef nonnull align 8 dereferenceable(153) %5) #16 - %306 = getelementptr inbounds nuw i8, ptr %13, i64 48 - %307 = getelementptr inbounds nuw i8, ptr %5, i64 32 - %308 = load i8, ptr %307, align 8 - store i8 %308, ptr %306, align 8 - %309 = getelementptr inbounds nuw i8, ptr %13, i64 56 - %310 = getelementptr inbounds nuw i8, ptr %5, i64 40 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %309, ptr noundef nonnull align 8 dereferenceable(32) %310) #16 - %311 = getelementptr inbounds nuw i8, ptr %5, i64 104 - %312 = getelementptr inbounds nuw i8, ptr %13, i64 120 - store i8 0, ptr %312, align 8 - %313 = load i8, ptr %311, align 8 - %314 = trunc i8 %313 to i1 - br i1 %314, label %315, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_.exit.i.i.i - -315: ; preds = %.critedge - %316 = getelementptr inbounds nuw i8, ptr %13, i64 88 - %317 = getelementptr inbounds nuw i8, ptr %5, i64 72 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(40) %316, ptr noundef nonnull align 8 dereferenceable(40) %317) #16 - store i8 1, ptr %312, align 8 + %307 = getelementptr inbounds nuw i8, ptr %13, i64 16 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(153) %307, ptr noundef nonnull align 8 dereferenceable(153) %5) #16 + %308 = getelementptr inbounds nuw i8, ptr %13, i64 48 + %309 = getelementptr inbounds nuw i8, ptr %5, i64 32 + %310 = load i8, ptr %309, align 8 + store i8 %310, ptr %308, align 8 + %311 = getelementptr inbounds nuw i8, ptr %13, i64 56 + %312 = getelementptr inbounds nuw i8, ptr %5, i64 40 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %311, ptr noundef nonnull align 8 dereferenceable(32) %312) #16 + %313 = getelementptr inbounds nuw i8, ptr %5, i64 104 + %314 = getelementptr inbounds nuw i8, ptr %13, i64 120 + store i8 0, ptr %314, align 8 + %315 = load i8, ptr %313, align 8 + %316 = trunc i8 %315 to i1 + br i1 %316, label %317, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_.exit.i.i.i + +317: ; preds = %.critedge + %318 = getelementptr inbounds nuw i8, ptr %13, i64 88 + %319 = getelementptr inbounds nuw i8, ptr %5, i64 72 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(40) %318, ptr noundef nonnull align 8 dereferenceable(40) %319) #16 + store i8 1, ptr %314, align 8 br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_.exit.i.i.i -_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_.exit.i.i.i: ; preds = %315, %.critedge - %318 = getelementptr inbounds nuw i8, ptr %5, i64 144 - %319 = getelementptr inbounds nuw i8, ptr %13, i64 160 - store i8 0, ptr %319, align 8 - %320 = load i8, ptr %318, align 8 - %321 = trunc i8 %320 to i1 - br i1 %321, label %322, label %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEEC2IRS1_RKS4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_.exit - -322: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_.exit.i.i.i - %323 = getelementptr inbounds nuw i8, ptr %13, i64 128 - %324 = getelementptr inbounds nuw i8, ptr %5, i64 112 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(40) %323, ptr noundef nonnull align 8 dereferenceable(40) %324) #16 - store i8 1, ptr %319, align 8 +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_.exit.i.i.i: ; preds = %317, %.critedge + %320 = getelementptr inbounds nuw i8, ptr %5, i64 144 + %321 = getelementptr inbounds nuw i8, ptr %13, i64 160 + store i8 0, ptr %321, align 8 + %322 = load i8, ptr %320, align 8 + %323 = trunc i8 %322 to i1 + br i1 %323, label %324, label %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEEC2IRS1_RKS4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_.exit + +324: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_.exit.i.i.i + %325 = getelementptr inbounds nuw i8, ptr %13, i64 128 + %326 = getelementptr inbounds nuw i8, ptr %5, i64 112 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(40) %325, ptr noundef nonnull align 8 dereferenceable(40) %326) #16 + store i8 1, ptr %321, align 8 br label %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEEC2IRS1_RKS4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_.exit -_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEEC2IRS1_RKS4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_.exit: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_.exit.i.i.i, %322 - %325 = getelementptr inbounds nuw i8, ptr %13, i64 168 - %326 = getelementptr inbounds nuw i8, ptr %5, i64 152 - %327 = load i8, ptr %326, align 8 - store i8 %327, ptr %325, align 8 +_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEEC2IRS1_RKS4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_.exit: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_.exit.i.i.i, %324 + %327 = getelementptr inbounds nuw i8, ptr %13, i64 168 + %328 = getelementptr inbounds nuw i8, ptr %5, i64 152 + %329 = load i8, ptr %328, align 8 + store i8 %329, ptr %327, align 8 call void @_ZN4llvm23SmallVectorTemplateBaseISt4pairINS_12VersionTupleEN5clang9api_notes11ContextInfoEELb0EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(16) %238, ptr noundef nonnull align 8 dereferenceable(176) %13) - %328 = load i8, ptr %319, align 8 - %329 = trunc i8 %328 to i1 - br i1 %329, label %330, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i.i.i - -330: ; preds = %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEEC2IRS1_RKS4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_.exit - %331 = getelementptr inbounds nuw i8, ptr %13, i64 128 - store i8 0, ptr %319, align 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(40) %331) #16 + %330 = load i8, ptr %321, align 8 + %331 = trunc i8 %330 to i1 + br i1 %331, label %332, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i.i.i + +332: ; preds = %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEEC2IRS1_RKS4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_.exit + %333 = getelementptr inbounds nuw i8, ptr %13, i64 128 + store i8 0, ptr %321, align 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(40) %333) #16 br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i.i.i -_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i.i.i: ; preds = %330, %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEEC2IRS1_RKS4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_.exit - %332 = load i8, ptr %312, align 8 - %333 = trunc i8 %332 to i1 - br i1 %333, label %334, label %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEED2Ev.exit +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i.i.i: ; preds = %332, %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEEC2IRS1_RKS4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_.exit + %334 = load i8, ptr %314, align 8 + %335 = trunc i8 %334 to i1 + br i1 %335, label %336, label %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEED2Ev.exit -334: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i.i.i - %335 = getelementptr inbounds nuw i8, ptr %13, i64 88 - store i8 0, ptr %312, align 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(40) %335) #16 +336: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i.i.i + %337 = getelementptr inbounds nuw i8, ptr %13, i64 88 + store i8 0, ptr %314, align 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(40) %337) #16 br label %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEED2Ev.exit -_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEED2Ev.exit: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i.i.i, %334 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %309) #16 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(153) %305) #16 - br label %336 +_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEED2Ev.exit: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.i.i.i, %336 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #16 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(153) %307) #16 + br label %338 -336: ; preds = %_ZN5clang9api_notes11ContextInfooRERKS1_.exit, %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEED2Ev.exit - %337 = getelementptr inbounds nuw i8, ptr %.sroa.037.0, i64 16 - %338 = load i32, ptr %337, align 8 - ret i32 %338 +338: ; preds = %_ZN5clang9api_notes11ContextInfooRERKS1_.exit, %_ZNSt4pairIN4llvm12VersionTupleEN5clang9api_notes11ContextInfoEED2Ev.exit + %339 = getelementptr inbounds nuw i8, ptr %.sroa.037.0, i64 16 + %340 = load i32, ptr %339, align 8 + ret i32 %340 } ; Function Attrs: mustprogress nounwind uwtable @@ -21308,31 +21318,38 @@ define linkonce_odr hidden noundef nonnull align 8 dereferenceable(72) ptr @_ZN5 %25 = load i8, ptr %24, align 8 %26 = and i8 %25, 4 %.not8 = icmp eq i8 %26, 0 - br i1 %.not8, label %27, label %35 + br i1 %.not8, label %27, label %37 27: ; preds = %23 %28 = load i8, ptr %3, align 8 %29 = and i8 %28, 4 - %30 = and i8 %25, -13 - %31 = and i8 %28, 12 - %.0.i.i = icmp eq i8 %31, 12 - %32 = select i1 %.0.i.i, i8 8, i8 0 - %33 = or disjoint i8 %29, %30 - %34 = or disjoint i8 %33, %32 - store i8 %34, ptr %24, align 8 - br label %35 - -35: ; preds = %27, %23 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %37 = tail call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %36) #16 - br i1 %37, label %38, label %41 - -38: ; preds = %35 - %39 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %40 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(32) %39) #16 - br label %41 + %.not.i = icmp eq i8 %29, 0 + %30 = lshr i8 %28, 3 + %narrow.i = select i1 %.not.i, i8 0, i8 %30 + %.sroa.0.0.i = zext nneg i8 %narrow.i to i16 + %31 = zext i8 %28 to i16 + %.sroa.2.0.i = shl nuw nsw i16 %31, 6 + %.sroa.0.0.insert.insert.i = or disjoint i16 %.sroa.2.0.i, %.sroa.0.0.i + %32 = and i8 %25, -13 + %33 = and i16 %.sroa.0.0.insert.insert.i, 257 + %.0.i.i = icmp eq i16 %33, 257 + %34 = select i1 %.0.i.i, i8 8, i8 0 + %35 = or disjoint i8 %32, %34 + %36 = or disjoint i8 %35, %29 + store i8 %36, ptr %24, align 8 + br label %37 + +37: ; preds = %27, %23 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %39 = tail call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %38) #16 + br i1 %39, label %40, label %43 + +40: ; preds = %37 + %41 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %42 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %41) #16 + br label %43 -41: ; preds = %38, %35 +43: ; preds = %40, %37 ret ptr %0 } diff --git a/bench/llvm/optimized/ELF.cpp.ll b/bench/llvm/optimized/ELF.cpp.ll index 7861c6003d1..f98450addf9 100644 --- a/bench/llvm/optimized/ELF.cpp.ll +++ b/bench/llvm/optimized/ELF.cpp.ll @@ -7424,7 +7424,7 @@ define weak_odr void @_ZNK4llvm6object7ELFFileINS0_7ELFTypeILNS_10endiannessE1EL store ptr @.str.1579, ptr %0, align 8 %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %16, align 8 - br label %54 + br label %49 17: ; preds = %6 %18 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #19 @@ -7437,7 +7437,7 @@ define weak_odr void @_ZNK4llvm6object7ELFFileINS0_7ELFTypeILNS_10endiannessE1EL %22 = getelementptr inbounds nuw i8, ptr %21, i64 40 %23 = load i8, ptr %22, align 8 %24 = trunc i8 %23 to i1 - br i1 %24, label %36, label %_ZN4llvm5ErrorD2Ev.exit + br i1 %24, label %.critedge, label %_ZN4llvm5ErrorD2Ev.exit _ZN4llvm5ErrorD2Ev.exit: ; preds = %17, %19 store ptr @.str.1580, ptr %9, align 8, !alias.scope !416 @@ -7462,50 +7462,40 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %17, %19 %35 = or i8 %34, 1 store i8 %35, ptr %33, align 8 store ptr %31, ptr %0, align 8, !alias.scope !433 - br label %54 - -36: ; preds = %19 - %37 = getelementptr inbounds nuw i8, ptr %21, i64 32 - %38 = load i8, ptr %37, align 8 - %39 = trunc i8 %38 to i1 - br i1 %39, label %40, label %.critedge + br label %49 -40: ; preds = %36 - %41 = and i16 %5, 256 - %.not28 = icmp ne i16 %41, 0 - %42 = trunc i16 %5 to i1 - %.0.i = and i1 %.not28, %42 - br i1 %.0.i, label %.critedge, label %43 - -43: ; preds = %40 - %44 = and i32 %2, 32768 - %.not10 = icmp eq i32 %44, 0 - %45 = zext i1 %.not10 to i8 - br label %.critedge - -.critedge: ; preds = %40, %36, %43 - %storemerge = phi i8 [ %45, %43 ], [ 0, %36 ], [ 0, %40 ] +.critedge: ; preds = %19 + %36 = getelementptr inbounds nuw i8, ptr %21, i64 32 + %37 = load i8, ptr %36, align 8 + %38 = trunc i8 %37 to i1 + %39 = and i16 %5, 257 + %.0.i = icmp ne i16 %39, 257 + %or.cond30.not = select i1 %38, i1 %.0.i, i1 false + %40 = and i32 %2, 32768 + %.not10 = icmp eq i32 %40, 0 + %narrow = and i1 %or.cond30.not, %.not10 + %storemerge = zext i1 %narrow to i8 store i8 %storemerge, ptr %3, align 1 - %46 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #19 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %48 = load i8, ptr %47, align 8 - %49 = and i8 %48, -2 - store i8 %49, ptr %47, align 8 - store ptr %46, ptr %0, align 8 - %.not.i.i = icmp eq ptr %46, null - br i1 %.not.i.i, label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, label %50 + %41 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #19 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %43 = load i8, ptr %42, align 8 + %44 = and i8 %43, -2 + store i8 %44, ptr %42, align 8 + store ptr %41, ptr %0, align 8 + %.not.i.i = icmp eq ptr %41, null + br i1 %.not.i.i, label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, label %45 -50: ; preds = %.critedge - %51 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %46) #19 +45: ; preds = %.critedge + %46 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %41) #19 br label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit -_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit: ; preds = %.critedge, %50 - %52 = phi i64 [ %51, %50 ], [ 0, %.critedge ] - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %52, ptr %53, align 8 - br label %54 +_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit: ; preds = %.critedge, %45 + %47 = phi i64 [ %46, %45 ], [ 0, %.critedge ] + %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %47, ptr %48, align 8 + br label %49 -54: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, %_ZN4llvm5ErrorD2Ev.exit, %12 +49: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, %_ZN4llvm5ErrorD2Ev.exit, %12 ret void } @@ -21500,7 +21490,7 @@ define weak_odr void @_ZNK4llvm6object7ELFFileINS0_7ELFTypeILNS_10endiannessE0EL store ptr @.str.1579, ptr %0, align 8 %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %16, align 8 - br label %54 + br label %49 17: ; preds = %6 %18 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #19 @@ -21513,7 +21503,7 @@ define weak_odr void @_ZNK4llvm6object7ELFFileINS0_7ELFTypeILNS_10endiannessE0EL %22 = getelementptr inbounds nuw i8, ptr %21, i64 40 %23 = load i8, ptr %22, align 8 %24 = trunc i8 %23 to i1 - br i1 %24, label %36, label %_ZN4llvm5ErrorD2Ev.exit + br i1 %24, label %.critedge, label %_ZN4llvm5ErrorD2Ev.exit _ZN4llvm5ErrorD2Ev.exit: ; preds = %17, %19 store ptr @.str.1580, ptr %9, align 8, !alias.scope !3095 @@ -21538,50 +21528,40 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %17, %19 %35 = or i8 %34, 1 store i8 %35, ptr %33, align 8 store ptr %31, ptr %0, align 8, !alias.scope !3112 - br label %54 - -36: ; preds = %19 - %37 = getelementptr inbounds nuw i8, ptr %21, i64 32 - %38 = load i8, ptr %37, align 8 - %39 = trunc i8 %38 to i1 - br i1 %39, label %40, label %.critedge + br label %49 -40: ; preds = %36 - %41 = and i16 %5, 256 - %.not28 = icmp ne i16 %41, 0 - %42 = trunc i16 %5 to i1 - %.0.i = and i1 %.not28, %42 - br i1 %.0.i, label %.critedge, label %43 - -43: ; preds = %40 - %44 = and i32 %2, 32768 - %.not10 = icmp eq i32 %44, 0 - %45 = zext i1 %.not10 to i8 - br label %.critedge - -.critedge: ; preds = %40, %36, %43 - %storemerge = phi i8 [ %45, %43 ], [ 0, %36 ], [ 0, %40 ] +.critedge: ; preds = %19 + %36 = getelementptr inbounds nuw i8, ptr %21, i64 32 + %37 = load i8, ptr %36, align 8 + %38 = trunc i8 %37 to i1 + %39 = and i16 %5, 257 + %.0.i = icmp ne i16 %39, 257 + %or.cond30.not = select i1 %38, i1 %.0.i, i1 false + %40 = and i32 %2, 32768 + %.not10 = icmp eq i32 %40, 0 + %narrow = and i1 %or.cond30.not, %.not10 + %storemerge = zext i1 %narrow to i8 store i8 %storemerge, ptr %3, align 1 - %46 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #19 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %48 = load i8, ptr %47, align 8 - %49 = and i8 %48, -2 - store i8 %49, ptr %47, align 8 - store ptr %46, ptr %0, align 8 - %.not.i.i = icmp eq ptr %46, null - br i1 %.not.i.i, label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, label %50 + %41 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #19 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %43 = load i8, ptr %42, align 8 + %44 = and i8 %43, -2 + store i8 %44, ptr %42, align 8 + store ptr %41, ptr %0, align 8 + %.not.i.i = icmp eq ptr %41, null + br i1 %.not.i.i, label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, label %45 -50: ; preds = %.critedge - %51 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %46) #19 +45: ; preds = %.critedge + %46 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %41) #19 br label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit -_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit: ; preds = %.critedge, %50 - %52 = phi i64 [ %51, %50 ], [ 0, %.critedge ] - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %52, ptr %53, align 8 - br label %54 +_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit: ; preds = %.critedge, %45 + %47 = phi i64 [ %46, %45 ], [ 0, %.critedge ] + %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %47, ptr %48, align 8 + br label %49 -54: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, %_ZN4llvm5ErrorD2Ev.exit, %12 +49: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, %_ZN4llvm5ErrorD2Ev.exit, %12 ret void } @@ -35241,7 +35221,7 @@ define weak_odr void @_ZNK4llvm6object7ELFFileINS0_7ELFTypeILNS_10endiannessE1EL store ptr @.str.1579, ptr %0, align 8 %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %16, align 8 - br label %54 + br label %49 17: ; preds = %6 %18 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #19 @@ -35254,7 +35234,7 @@ define weak_odr void @_ZNK4llvm6object7ELFFileINS0_7ELFTypeILNS_10endiannessE1EL %22 = getelementptr inbounds nuw i8, ptr %21, i64 40 %23 = load i8, ptr %22, align 8 %24 = trunc i8 %23 to i1 - br i1 %24, label %36, label %_ZN4llvm5ErrorD2Ev.exit + br i1 %24, label %.critedge, label %_ZN4llvm5ErrorD2Ev.exit _ZN4llvm5ErrorD2Ev.exit: ; preds = %17, %19 store ptr @.str.1580, ptr %9, align 8, !alias.scope !5751 @@ -35279,50 +35259,40 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %17, %19 %35 = or i8 %34, 1 store i8 %35, ptr %33, align 8 store ptr %31, ptr %0, align 8, !alias.scope !5768 - br label %54 - -36: ; preds = %19 - %37 = getelementptr inbounds nuw i8, ptr %21, i64 32 - %38 = load i8, ptr %37, align 8 - %39 = trunc i8 %38 to i1 - br i1 %39, label %40, label %.critedge + br label %49 -40: ; preds = %36 - %41 = and i16 %5, 256 - %.not28 = icmp ne i16 %41, 0 - %42 = trunc i16 %5 to i1 - %.0.i = and i1 %.not28, %42 - br i1 %.0.i, label %.critedge, label %43 - -43: ; preds = %40 - %44 = and i32 %2, 32768 - %.not10 = icmp eq i32 %44, 0 - %45 = zext i1 %.not10 to i8 - br label %.critedge - -.critedge: ; preds = %40, %36, %43 - %storemerge = phi i8 [ %45, %43 ], [ 0, %36 ], [ 0, %40 ] +.critedge: ; preds = %19 + %36 = getelementptr inbounds nuw i8, ptr %21, i64 32 + %37 = load i8, ptr %36, align 8 + %38 = trunc i8 %37 to i1 + %39 = and i16 %5, 257 + %.0.i = icmp ne i16 %39, 257 + %or.cond30.not = select i1 %38, i1 %.0.i, i1 false + %40 = and i32 %2, 32768 + %.not10 = icmp eq i32 %40, 0 + %narrow = and i1 %or.cond30.not, %.not10 + %storemerge = zext i1 %narrow to i8 store i8 %storemerge, ptr %3, align 1 - %46 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #19 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %48 = load i8, ptr %47, align 8 - %49 = and i8 %48, -2 - store i8 %49, ptr %47, align 8 - store ptr %46, ptr %0, align 8 - %.not.i.i = icmp eq ptr %46, null - br i1 %.not.i.i, label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, label %50 + %41 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #19 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %43 = load i8, ptr %42, align 8 + %44 = and i8 %43, -2 + store i8 %44, ptr %42, align 8 + store ptr %41, ptr %0, align 8 + %.not.i.i = icmp eq ptr %41, null + br i1 %.not.i.i, label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, label %45 -50: ; preds = %.critedge - %51 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %46) #19 +45: ; preds = %.critedge + %46 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %41) #19 br label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit -_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit: ; preds = %.critedge, %50 - %52 = phi i64 [ %51, %50 ], [ 0, %.critedge ] - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %52, ptr %53, align 8 - br label %54 +_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit: ; preds = %.critedge, %45 + %47 = phi i64 [ %46, %45 ], [ 0, %.critedge ] + %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %47, ptr %48, align 8 + br label %49 -54: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, %_ZN4llvm5ErrorD2Ev.exit, %12 +49: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, %_ZN4llvm5ErrorD2Ev.exit, %12 ret void } @@ -49322,7 +49292,7 @@ define weak_odr void @_ZNK4llvm6object7ELFFileINS0_7ELFTypeILNS_10endiannessE0EL store ptr @.str.1579, ptr %0, align 8 %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %16, align 8 - br label %54 + br label %49 17: ; preds = %6 %18 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #19 @@ -49335,7 +49305,7 @@ define weak_odr void @_ZNK4llvm6object7ELFFileINS0_7ELFTypeILNS_10endiannessE0EL %22 = getelementptr inbounds nuw i8, ptr %21, i64 40 %23 = load i8, ptr %22, align 8 %24 = trunc i8 %23 to i1 - br i1 %24, label %36, label %_ZN4llvm5ErrorD2Ev.exit + br i1 %24, label %.critedge, label %_ZN4llvm5ErrorD2Ev.exit _ZN4llvm5ErrorD2Ev.exit: ; preds = %17, %19 store ptr @.str.1580, ptr %9, align 8, !alias.scope !8597 @@ -49360,50 +49330,40 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %17, %19 %35 = or i8 %34, 1 store i8 %35, ptr %33, align 8 store ptr %31, ptr %0, align 8, !alias.scope !8614 - br label %54 - -36: ; preds = %19 - %37 = getelementptr inbounds nuw i8, ptr %21, i64 32 - %38 = load i8, ptr %37, align 8 - %39 = trunc i8 %38 to i1 - br i1 %39, label %40, label %.critedge + br label %49 -40: ; preds = %36 - %41 = and i16 %5, 256 - %.not28 = icmp ne i16 %41, 0 - %42 = trunc i16 %5 to i1 - %.0.i = and i1 %.not28, %42 - br i1 %.0.i, label %.critedge, label %43 - -43: ; preds = %40 - %44 = and i32 %2, 32768 - %.not10 = icmp eq i32 %44, 0 - %45 = zext i1 %.not10 to i8 - br label %.critedge - -.critedge: ; preds = %40, %36, %43 - %storemerge = phi i8 [ %45, %43 ], [ 0, %36 ], [ 0, %40 ] +.critedge: ; preds = %19 + %36 = getelementptr inbounds nuw i8, ptr %21, i64 32 + %37 = load i8, ptr %36, align 8 + %38 = trunc i8 %37 to i1 + %39 = and i16 %5, 257 + %.0.i = icmp ne i16 %39, 257 + %or.cond30.not = select i1 %38, i1 %.0.i, i1 false + %40 = and i32 %2, 32768 + %.not10 = icmp eq i32 %40, 0 + %narrow = and i1 %or.cond30.not, %.not10 + %storemerge = zext i1 %narrow to i8 store i8 %storemerge, ptr %3, align 1 - %46 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #19 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %48 = load i8, ptr %47, align 8 - %49 = and i8 %48, -2 - store i8 %49, ptr %47, align 8 - store ptr %46, ptr %0, align 8 - %.not.i.i = icmp eq ptr %46, null - br i1 %.not.i.i, label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, label %50 + %41 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #19 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %43 = load i8, ptr %42, align 8 + %44 = and i8 %43, -2 + store i8 %44, ptr %42, align 8 + store ptr %41, ptr %0, align 8 + %.not.i.i = icmp eq ptr %41, null + br i1 %.not.i.i, label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, label %45 -50: ; preds = %.critedge - %51 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %46) #19 +45: ; preds = %.critedge + %46 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %41) #19 br label %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit -_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit: ; preds = %.critedge, %50 - %52 = phi i64 [ %51, %50 ], [ 0, %.critedge ] - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %52, ptr %53, align 8 - br label %54 +_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit: ; preds = %.critedge, %45 + %47 = phi i64 [ %46, %45 ], [ 0, %.critedge ] + %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %47, ptr %48, align 8 + br label %49 -54: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, %_ZN4llvm5ErrorD2Ev.exit, %12 +49: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEEC2IPKcEEOT_PNSt9enable_ifIXsr3stdE16is_convertible_vIS6_S1_EEvE4typeE.exit, %_ZN4llvm5ErrorD2Ev.exit, %12 ret void } diff --git a/bench/llvm/optimized/ExprEngineObjC.cpp.ll b/bench/llvm/optimized/ExprEngineObjC.cpp.ll index f8b80a1fa24..7ee1fcf5eb0 100644 --- a/bench/llvm/optimized/ExprEngineObjC.cpp.ll +++ b/bench/llvm/optimized/ExprEngineObjC.cpp.ll @@ -333,118 +333,116 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit50: ; pre %.sroa.6.0 = extractvalue { ptr, i8 } %.pn, 1 %.sroa.055.0 = extractvalue { ptr, i8 } %.pn, 0 %48 = call i16 @_ZNK5clang4ento12ProgramState6isNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %18, ptr %.fca.0.extract19, i8 %.fca.1.extract20) #10 - %49 = and i16 %48, 256 - %50 = icmp ne i16 %49, 0 - %51 = trunc i16 %48 to i1 - %52 = and i1 %50, %51 + %49 = and i16 %48, 257 + %50 = icmp eq i16 %49, 257 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %8, i8 0, i64 20, i1 false) - %53 = getelementptr inbounds nuw i8, ptr %8, i64 24 - %54 = getelementptr inbounds nuw i8, ptr %8, i64 40 - call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(48) %53, ptr noundef nonnull %54, i64 noundef 4) #10 + %51 = getelementptr inbounds nuw i8, ptr %8, i64 24 + %52 = getelementptr inbounds nuw i8, ptr %8, i64 40 + call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(48) %51, ptr noundef nonnull %52, i64 noundef 4) #10 store ptr %18, ptr %9, align 8 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %18) #10 store ptr %.sroa.055.0, ptr %10, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 store i8 %.sroa.6.0, ptr %.sroa.6.0..sroa_idx, align 8 call void @_ZN5clang4ento10ExprEngine12evalLocationERNS0_15ExplodedNodeSetEPKNS_4StmtES6_PNS0_12ExplodedNodeEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEENS0_4SValEb(ptr noundef nonnull align 8 dereferenceable(796) %0, ptr noundef nonnull align 8 dereferenceable(72) %8, ptr noundef nonnull %1, ptr noundef nonnull %14, ptr noundef nonnull %2, ptr noundef nonnull %9, ptr noundef nonnull byval(%"class.clang::ento::SVal") align 8 %10, i1 noundef zeroext false) #10 - %55 = load ptr, ptr %9, align 8 - %.not.i.i51 = icmp eq ptr %55, null - br i1 %.not.i.i51, label %57, label %56 + %53 = load ptr, ptr %9, align 8 + %.not.i.i51 = icmp eq ptr %53, null + br i1 %.not.i.i51, label %55, label %54 -56: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit50 - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %55) #10 - br label %57 +54: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit50 + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %53) #10 + br label %55 -57: ; preds = %56, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit50 +55: ; preds = %54, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit50 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %11, i8 0, i64 20, i1 false) - %58 = getelementptr inbounds nuw i8, ptr %11, i64 24 - %59 = getelementptr inbounds nuw i8, ptr %11, i64 40 - call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(48) %58, ptr noundef nonnull %59, i64 noundef 4) #10 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 616 - %61 = load ptr, ptr %60, align 8 - %62 = getelementptr inbounds nuw i8, ptr %12, i64 8 - store ptr %61, ptr %62, align 8 - %63 = getelementptr inbounds nuw i8, ptr %12, i64 16 - store i8 1, ptr %63, align 8 - %64 = getelementptr inbounds nuw i8, ptr %12, i64 17 - store i8 0, ptr %64, align 1 - %65 = getelementptr inbounds nuw i8, ptr %12, i64 24 - store ptr %11, ptr %65, align 8 + %56 = getelementptr inbounds nuw i8, ptr %11, i64 24 + %57 = getelementptr inbounds nuw i8, ptr %11, i64 40 + call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(48) %56, ptr noundef nonnull %57, i64 noundef 4) #10 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 616 + %59 = load ptr, ptr %58, align 8 + %60 = getelementptr inbounds nuw i8, ptr %12, i64 8 + store ptr %59, ptr %60, align 8 + %61 = getelementptr inbounds nuw i8, ptr %12, i64 16 + store i8 1, ptr %61, align 8 + %62 = getelementptr inbounds nuw i8, ptr %12, i64 17 + store i8 0, ptr %62, align 1 + %63 = getelementptr inbounds nuw i8, ptr %12, i64 24 + store ptr %11, ptr %63, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) store ptr %2, ptr %5, align 8 - %66 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %67 = load i64, ptr %66, align 8 - %68 = and i64 %67, 1 - %.not1.i.i.i = icmp eq i64 %68, 0 - br i1 %.not1.i.i.i, label %69, label %_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit - -69: ; preds = %57 - %70 = call noundef zeroext i1 @_ZN4llvm9SetVectorIPN5clang4ento12ExplodedNodeENS_11SmallVectorIS4_Lj4EEENS_8DenseSetIS4_NS_12DenseMapInfoIS4_vEEEELj4EE6insertERKS4_(ptr noundef nonnull align 8 dereferenceable(72) %11, ptr noundef nonnull align 8 dereferenceable(8) %5) - %.pre64.pre = load ptr, ptr %60, align 8 + %64 = getelementptr inbounds nuw i8, ptr %2, i64 72 + %65 = load i64, ptr %64, align 8 + %66 = and i64 %65, 1 + %.not1.i.i.i = icmp eq i64 %66, 0 + br i1 %.not1.i.i.i, label %67, label %_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit + +67: ; preds = %55 + %68 = call noundef zeroext i1 @_ZN4llvm9SetVectorIPN5clang4ento12ExplodedNodeENS_11SmallVectorIS4_Lj4EEENS_8DenseSetIS4_NS_12DenseMapInfoIS4_vEEEELj4EE6insertERKS4_(ptr noundef nonnull align 8 dereferenceable(72) %11, ptr noundef nonnull align 8 dereferenceable(8) %5) + %.pre64.pre = load ptr, ptr %58, align 8 br label %_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit -_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit: ; preds = %57, %69 - %.pre64 = phi ptr [ %61, %57 ], [ %.pre64.pre, %69 ] +_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit: ; preds = %55, %67 + %.pre64 = phi ptr [ %59, %55 ], [ %.pre64.pre, %67 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) store ptr getelementptr inbounds inrange(-16, 40) (i8, ptr @_ZTVN5clang4ento15StmtNodeBuilderE, i64 16), ptr %12, align 8 - %71 = getelementptr inbounds nuw i8, ptr %12, i64 32 - store ptr null, ptr %71, align 8 - br i1 %52, label %77, label %72 - -72: ; preds = %_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit - %73 = getelementptr inbounds nuw i8, ptr %0, i64 600 + %69 = getelementptr inbounds nuw i8, ptr %12, i64 32 + store ptr null, ptr %69, align 8 + br i1 %50, label %75, label %70 + +70: ; preds = %_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit + %71 = getelementptr inbounds nuw i8, ptr %0, i64 600 + %72 = load ptr, ptr %71, align 8 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 584 %74 = load ptr, ptr %73, align 8 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 584 - %76 = load ptr, ptr %75, align 8 - call fastcc void @_ZL29populateObjCForDestinationSetRN5clang4ento15ExplodedNodeSetERNS0_11SValBuilderEPKNS_21ObjCForCollectionStmtEPKNS_4StmtENS0_4SValERNS0_13SymbolManagerEPKNS0_18NodeBuilderContextERNS0_15StmtNodeBuilderEb(ptr noundef nonnull align 8 dereferenceable(72) %8, ptr noundef nonnull align 8 dereferenceable(412) %74, ptr noundef nonnull %1, ptr noundef nonnull %14, ptr %.sroa.055.0, i8 %.sroa.6.0, ptr noundef nonnull align 8 dereferenceable(72) %76, ptr noundef %.pre64, ptr noundef nonnull align 8 dereferenceable(40) %12, i1 noundef zeroext true) - %.pre = load ptr, ptr %60, align 8 - br label %77 - -77: ; preds = %72, %_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit - %78 = phi ptr [ %.pre, %72 ], [ %.pre64, %_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit ] - %79 = getelementptr inbounds nuw i8, ptr %0, i64 600 + call fastcc void @_ZL29populateObjCForDestinationSetRN5clang4ento15ExplodedNodeSetERNS0_11SValBuilderEPKNS_21ObjCForCollectionStmtEPKNS_4StmtENS0_4SValERNS0_13SymbolManagerEPKNS0_18NodeBuilderContextERNS0_15StmtNodeBuilderEb(ptr noundef nonnull align 8 dereferenceable(72) %8, ptr noundef nonnull align 8 dereferenceable(412) %72, ptr noundef nonnull %1, ptr noundef nonnull %14, ptr %.sroa.055.0, i8 %.sroa.6.0, ptr noundef nonnull align 8 dereferenceable(72) %74, ptr noundef %.pre64, ptr noundef nonnull align 8 dereferenceable(40) %12, i1 noundef zeroext true) + %.pre = load ptr, ptr %58, align 8 + br label %75 + +75: ; preds = %70, %_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit + %76 = phi ptr [ %.pre, %70 ], [ %.pre64, %_ZN5clang4ento15StmtNodeBuilderC2EPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetERKNS0_18NodeBuilderContextEPNS0_11NodeBuilderE.exit ] + %77 = getelementptr inbounds nuw i8, ptr %0, i64 600 + %78 = load ptr, ptr %77, align 8 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 584 %80 = load ptr, ptr %79, align 8 - %81 = getelementptr inbounds nuw i8, ptr %0, i64 584 + call fastcc void @_ZL29populateObjCForDestinationSetRN5clang4ento15ExplodedNodeSetERNS0_11SValBuilderEPKNS_21ObjCForCollectionStmtEPKNS_4StmtENS0_4SValERNS0_13SymbolManagerEPKNS0_18NodeBuilderContextERNS0_15StmtNodeBuilderEb(ptr noundef nonnull align 8 dereferenceable(72) %8, ptr noundef nonnull align 8 dereferenceable(412) %78, ptr noundef nonnull %1, ptr noundef nonnull %14, ptr %.sroa.055.0, i8 %.sroa.6.0, ptr noundef nonnull align 8 dereferenceable(72) %80, ptr noundef %76, ptr noundef nonnull align 8 dereferenceable(40) %12, i1 noundef zeroext false) + %81 = getelementptr inbounds nuw i8, ptr %0, i64 24 %82 = load ptr, ptr %81, align 8 - call fastcc void @_ZL29populateObjCForDestinationSetRN5clang4ento15ExplodedNodeSetERNS0_11SValBuilderEPKNS_21ObjCForCollectionStmtEPKNS_4StmtENS0_4SValERNS0_13SymbolManagerEPKNS0_18NodeBuilderContextERNS0_15StmtNodeBuilderEb(ptr noundef nonnull align 8 dereferenceable(72) %8, ptr noundef nonnull align 8 dereferenceable(412) %80, ptr noundef nonnull %1, ptr noundef nonnull %14, ptr %.sroa.055.0, i8 %.sroa.6.0, ptr noundef nonnull align 8 dereferenceable(72) %82, ptr noundef %78, ptr noundef nonnull align 8 dereferenceable(40) %12, i1 noundef zeroext false) - %83 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 240 %84 = load ptr, ptr %83, align 8 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 240 - %86 = load ptr, ptr %85, align 8 - call void @_ZN5clang4ento14CheckerManager18runCheckersForStmtEbRNS0_15ExplodedNodeSetERKS2_PKNS_4StmtERNS0_10ExprEngineEb(ptr noundef nonnull align 8 dereferenceable(1552) %86, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(72) %3, ptr noundef nonnull align 8 dereferenceable(72) %11, ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(796) %0, i1 noundef zeroext false) #10 + call void @_ZN5clang4ento14CheckerManager18runCheckersForStmtEbRNS0_15ExplodedNodeSetERKS2_PKNS_4StmtERNS0_10ExprEngineEb(ptr noundef nonnull align 8 dereferenceable(1552) %84, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(72) %3, ptr noundef nonnull align 8 dereferenceable(72) %11, ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(796) %0, i1 noundef zeroext false) #10 call void @_ZN5clang4ento15StmtNodeBuilderD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #10 - %87 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %58) #10 - %88 = load ptr, ptr %58, align 8 - %89 = icmp eq ptr %88, %59 - br i1 %89, label %_ZN5clang4ento15ExplodedNodeSetD2Ev.exit, label %90 + %85 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %56) #10 + %86 = load ptr, ptr %56, align 8 + %87 = icmp eq ptr %86, %57 + br i1 %87, label %_ZN5clang4ento15ExplodedNodeSetD2Ev.exit, label %88 -90: ; preds = %77 - call void @free(ptr noundef %88) #10 +88: ; preds = %75 + call void @free(ptr noundef %86) #10 br label %_ZN5clang4ento15ExplodedNodeSetD2Ev.exit -_ZN5clang4ento15ExplodedNodeSetD2Ev.exit: ; preds = %77, %90 - %91 = load ptr, ptr %11, align 8 - %92 = getelementptr inbounds nuw i8, ptr %11, i64 16 - %93 = load i32, ptr %92, align 8 - %94 = zext i32 %93 to i64 - %95 = shl nuw nsw i64 %94, 3 - call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %91, i64 noundef %95, i64 noundef 8) #10 - %96 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %53) #10 - %97 = load ptr, ptr %53, align 8 - %98 = icmp eq ptr %97, %54 - br i1 %98, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit54, label %99 - -99: ; preds = %_ZN5clang4ento15ExplodedNodeSetD2Ev.exit - call void @free(ptr noundef %97) #10 +_ZN5clang4ento15ExplodedNodeSetD2Ev.exit: ; preds = %75, %88 + %89 = load ptr, ptr %11, align 8 + %90 = getelementptr inbounds nuw i8, ptr %11, i64 16 + %91 = load i32, ptr %90, align 8 + %92 = zext i32 %91 to i64 + %93 = shl nuw nsw i64 %92, 3 + call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %89, i64 noundef %93, i64 noundef 8) #10 + %94 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %51) #10 + %95 = load ptr, ptr %51, align 8 + %96 = icmp eq ptr %95, %52 + br i1 %96, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit54, label %97 + +97: ; preds = %_ZN5clang4ento15ExplodedNodeSetD2Ev.exit + call void @free(ptr noundef %95) #10 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit54 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit54: ; preds = %_ZN5clang4ento15ExplodedNodeSetD2Ev.exit, %99 - %100 = load ptr, ptr %8, align 8 - %101 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %102 = load i32, ptr %101, align 8 - %103 = zext i32 %102 to i64 - %104 = shl nuw nsw i64 %103, 3 - call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %100, i64 noundef %104, i64 noundef 8) #10 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit54: ; preds = %_ZN5clang4ento15ExplodedNodeSetD2Ev.exit, %97 + %98 = load ptr, ptr %8, align 8 + %99 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %100 = load i32, ptr %99, align 8 + %101 = zext i32 %100 to i64 + %102 = shl nuw nsw i64 %101, 3 + call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %98, i64 noundef %102, i64 noundef 8) #10 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %18) #10 ret void } diff --git a/bench/llvm/optimized/FuchsiaHandleChecker.cpp.ll b/bench/llvm/optimized/FuchsiaHandleChecker.cpp.ll index e0ba84b3e7f..6da0fc3b1d3 100644 --- a/bench/llvm/optimized/FuchsiaHandleChecker.cpp.ll +++ b/bench/llvm/optimized/FuchsiaHandleChecker.cpp.ll @@ -10253,117 +10253,115 @@ _ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12Progr br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i: ; preds = %77, %_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit.i - %78 = and i16 %74, 256 - %79 = icmp ne i16 %78, 0 - %80 = trunc i16 %74 to i1 - %81 = and i1 %79, %80 - br i1 %81, label %82, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i - -82: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i - %83 = load ptr, ptr %66, align 8, !noalias !232 - call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_19HStateMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %12, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.0, ptr noundef %83), !noalias !232 - %84 = load ptr, ptr %12, align 8, !noalias !232 + %78 = and i16 %74, 257 + %79 = icmp eq i16 %78, 257 + br i1 %79, label %80, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i + +80: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i + %81 = load ptr, ptr %66, align 8, !noalias !232 + call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_19HStateMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %12, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.0, ptr noundef %81), !noalias !232 + %82 = load ptr, ptr %12, align 8, !noalias !232 store ptr %.sroa.0.0, ptr %12, align 8, !noalias !232 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.0) #21, !noalias !232 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i: ; preds = %82, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i - %.sroa.0.1 = phi ptr [ %84, %82 ], [ %.sroa.0.0, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i ] - %85 = getelementptr inbounds nuw i8, ptr %65, i64 56 - %86 = getelementptr i8, ptr %65, i64 64 - %.val21.i = load ptr, ptr %86, align 8, !noalias !232 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i: ; preds = %80, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i + %.sroa.0.1 = phi ptr [ %82, %80 ], [ %.sroa.0.0, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i ] + %83 = getelementptr inbounds nuw i8, ptr %65, i64 56 + %84 = getelementptr i8, ptr %65, i64 64 + %.val21.i = load ptr, ptr %84, align 8, !noalias !232 %.not.i = icmp eq ptr %.val21.i, null - br i1 %.not.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i, label %87 + br i1 %.not.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i, label %85 -87: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i +85: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i %.not.i.i29.i = icmp eq ptr %.sroa.0.1, null - br i1 %.not.i.i29.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit30.thread.i, label %88 + br i1 %.not.i.i29.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit30.thread.i, label %86 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit30.thread.i: ; preds = %87 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit30.thread.i: ; preds = %85 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7), !noalias !232 store ptr null, ptr %7, align 8, !noalias !232 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i32.i -88: ; preds = %87 +86: ; preds = %85 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.1) #21, !noalias !232 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7), !noalias !232 store ptr %.sroa.0.1, ptr %7, align 8, !noalias !232 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.1) #21, !noalias !232 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i32.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i32.i: ; preds = %88, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit30.thread.i - %89 = load ptr, ptr %20, align 8, !noalias !232 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 96 - %91 = load ptr, ptr %90, align 8, !noalias !232 - %92 = call i16 %91(ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull %7, ptr noundef nonnull %.val21.i) #21, !noalias !232 - %93 = load ptr, ptr %7, align 8, !noalias !232 - %.not.i.i2.i33.i = icmp eq ptr %93, null - br i1 %.not.i.i2.i33.i, label %_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit34.i, label %94 - -94: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i32.i - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %93) #21, !noalias !232 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i32.i: ; preds = %86, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit30.thread.i + %87 = load ptr, ptr %20, align 8, !noalias !232 + %88 = getelementptr inbounds nuw i8, ptr %87, i64 96 + %89 = load ptr, ptr %88, align 8, !noalias !232 + %90 = call i16 %89(ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull %7, ptr noundef nonnull %.val21.i) #21, !noalias !232 + %91 = load ptr, ptr %7, align 8, !noalias !232 + %.not.i.i2.i33.i = icmp eq ptr %91, null + br i1 %.not.i.i2.i33.i, label %_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit34.i, label %92 + +92: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i32.i + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %91) #21, !noalias !232 br label %_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit34.i -_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit34.i: ; preds = %94, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i32.i +_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit34.i: ; preds = %92, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i32.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !232 - br i1 %.not.i.i29.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit36.i, label %95 + br i1 %.not.i.i29.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit36.i, label %93 -95: ; preds = %_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit34.i +93: ; preds = %_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit34.i call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.1) #21, !noalias !232 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit36.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit36.i: ; preds = %95, %_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit34.i - %96 = and i16 %92, 256 - %97 = icmp ne i16 %96, 0 - %98 = trunc i16 %92 to i1 - %99 = and i1 %97, %98 - br i1 %99, label %100, label %107 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit36.i: ; preds = %93, %_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit34.i + %94 = and i16 %90, 257 + %95 = icmp eq i16 %94, 257 + br i1 %95, label %96, label %103 -100: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit36.i - %.val20.i = load i32, ptr %85, align 8, !noalias !232 - %101 = icmp eq i32 %.val20.i, 0 - br i1 %101, label %102, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i +96: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit36.i + %.val20.i = load i32, ptr %83, align 8, !noalias !232 + %97 = icmp eq i32 %.val20.i, 0 + br i1 %97, label %98, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i -102: ; preds = %100 - %103 = load ptr, ptr %66, align 8, !noalias !232 - br i1 %.not.i.i29.i, label %105, label %104 +98: ; preds = %96 + %99 = load ptr, ptr %66, align 8, !noalias !232 + br i1 %.not.i.i29.i, label %101, label %100 -104: ; preds = %102 +100: ; preds = %98 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.1) #21, !noalias !232 - br label %105 + br label %101 -105: ; preds = %102, %104 - call fastcc void @_ZNK5clang4ento12ProgramState3setIN12_GLOBAL__N_19HStateMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeENSB_10value_typeE(ptr dead_on_unwind noalias writable align 8 %13, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.1, ptr noundef %103, i32 1, ptr null), !noalias !232 - %106 = load ptr, ptr %13, align 8, !noalias !232 +101: ; preds = %98, %100 + call fastcc void @_ZNK5clang4ento12ProgramState3setIN12_GLOBAL__N_19HStateMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeENSB_10value_typeE(ptr dead_on_unwind noalias writable align 8 %13, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.1, ptr noundef %99, i32 1, ptr null), !noalias !232 + %102 = load ptr, ptr %13, align 8, !noalias !232 store ptr %.sroa.0.1, ptr %13, align 8, !noalias !232 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.1) #21, !noalias !232 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.sink.split.i -107: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit36.i - %108 = xor i1 %98, true - %109 = and i1 %97, %108 - br i1 %109, label %110, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i - -110: ; preds = %107 - %.val19.i = load i32, ptr %85, align 8, !noalias !232 - %111 = icmp eq i32 %.val19.i, 0 - br i1 %111, label %112, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i - -112: ; preds = %110 - %113 = load ptr, ptr %66, align 8, !noalias !232 - call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_19HStateMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %14, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.1, ptr noundef %113), !noalias !232 - %114 = load ptr, ptr %14, align 8, !noalias !232 +103: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit36.i + %104 = trunc i16 %90 to i1 + %105 = and i16 %90, 256 + %106 = icmp eq i16 %105, 0 + %.not14.i = or i1 %106, %104 + br i1 %.not14.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i, label %107 + +107: ; preds = %103 + %.val19.i = load i32, ptr %83, align 8, !noalias !232 + %108 = icmp eq i32 %.val19.i, 0 + br i1 %108, label %109, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i + +109: ; preds = %107 + %110 = load ptr, ptr %66, align 8, !noalias !232 + call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_19HStateMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %14, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.1, ptr noundef %110), !noalias !232 + %111 = load ptr, ptr %14, align 8, !noalias !232 store ptr %.sroa.0.1, ptr %14, align 8, !noalias !232 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.sink.split.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.sink.split.i: ; preds = %112, %105 - %.sroa.0.3 = phi ptr [ %106, %105 ], [ %114, %112 ] +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.sink.split.i: ; preds = %109, %101 + %.sroa.0.3 = phi ptr [ %102, %101 ], [ %111, %109 ] call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.1) #21, !noalias !232 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.sink.split.i, %110, %107, %100, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i - %.sroa.0.2 = phi ptr [ %.sroa.0.1, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i ], [ %.sroa.0.3, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.sink.split.i ], [ %.sroa.0.1, %100 ], [ %.sroa.0.1, %110 ], [ %.sroa.0.1, %107 ] - %115 = call fastcc noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_111HandleStateEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %10), !noalias !232 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.i: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.sink.split.i, %107, %103, %96, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i + %.sroa.0.2 = phi ptr [ %.sroa.0.1, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit28.i ], [ %.sroa.0.3, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit44.sink.split.i ], [ %.sroa.0.1, %96 ], [ %.sroa.0.1, %103 ], [ %.sroa.0.1, %107 ] + %112 = call fastcc noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_111HandleStateEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %10), !noalias !232 br label %38 _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %58, %53, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111HandleStateENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit23.i diff --git a/bench/llvm/optimized/MIGChecker.cpp.ll b/bench/llvm/optimized/MIGChecker.cpp.ll index c1d46aaa106..e995806be0f 100644 --- a/bench/llvm/optimized/MIGChecker.cpp.ll +++ b/bench/llvm/optimized/MIGChecker.cpp.ll @@ -7428,13 +7428,13 @@ define internal fastcc void @_ZNK12_GLOBAL__N_110MIGChecker14checkReturnAuxEPKN5 %14 = getelementptr inbounds nuw i8, ptr %13, i64 16 %15 = load ptr, ptr %14, align 8 %16 = tail call noundef zeroext i1 %15(ptr noundef nonnull align 8 dereferenceable(48) %12) #19 - br i1 %16, label %17, label %125 + br i1 %16, label %17, label %122 17: ; preds = %3 %18 = tail call fastcc noundef zeroext i1 @_ZL11isInMIGCallRN5clang4ento14CheckerContextE(ptr noundef nonnull align 8 dereferenceable(81) %2) %19 = icmp ne ptr %1, null %or.cond = and i1 %19, %18 - br i1 %or.cond, label %20, label %125 + br i1 %or.cond, label %20, label %122 20: ; preds = %17 %21 = load ptr, ptr %9, align 8 @@ -7569,102 +7569,100 @@ _ZN5clang4ento11SValBuilder10makeIntValEmNS_8QualTypeE.exit.i: ; preds = %_ZN5cl _ZL12mayBeSuccessN5clang4ento4SValERNS0_14CheckerContextE.exit: ; preds = %_ZN5clang4ento11SValBuilder10makeIntValEmNS_8QualTypeE.exit.i, %78 %79 = call i16 @_ZNK5clang4ento12ProgramState6isNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %41, ptr %.fca.0.extract.i, i8 %.fca.1.extract.i) #19 - %80 = and i16 %79, 256 - %81 = icmp ne i16 %80, 0 - %82 = trunc i16 %79 to i1 - %83 = and i1 %81, %82 + %80 = and i16 %79, 257 + %.not42 = icmp eq i16 %80, 257 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %41) #19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) - br i1 %83, label %84, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30 - -84: ; preds = %_ZL12mayBeSuccessN5clang4ento4SValERNS0_14CheckerContextE.exit - %85 = load ptr, ptr %9, align 8 - %86 = getelementptr inbounds nuw i8, ptr %2, i64 48 - %.0.copyload.i.i.i.i6.i = load i64, ptr %86, align 8 - %87 = and i64 %.0.copyload.i.i.i.i6.i, -8 - %88 = inttoptr i64 %87 to ptr + br i1 %.not42, label %81, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30 + +81: ; preds = %_ZL12mayBeSuccessN5clang4ento4SValERNS0_14CheckerContextE.exit + %82 = load ptr, ptr %9, align 8 + %83 = getelementptr inbounds nuw i8, ptr %2, i64 48 + %.0.copyload.i.i.i.i6.i = load i64, ptr %83, align 8 + %84 = and i64 %.0.copyload.i.i.i.i6.i, -8 + %85 = inttoptr i64 %84 to ptr call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) - %89 = getelementptr inbounds nuw i8, ptr %85, i64 56 - %.pr.i.i = load ptr, ptr %89, align 8 + %86 = getelementptr inbounds nuw i8, ptr %82, i64 56 + %.pr.i.i = load ptr, ptr %86, align 8 store ptr %.pr.i.i, ptr %6, align 8 %.not.i.i.i.i = icmp eq ptr %.pr.i.i, null - br i1 %.not.i.i.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i, label %90 + br i1 %.not.i.i.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i, label %87 -90: ; preds = %84 +87: ; preds = %81 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.pr.i.i) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i: ; preds = %90, %84 - %91 = call noundef ptr @_ZN5clang4ento14CheckerContext17addTransitionImplEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEbPNS0_12ExplodedNodeEPKNS_15ProgramPointTagE(ptr noundef nonnull align 8 dereferenceable(81) %2, ptr noundef nonnull %6, i1 noundef zeroext true, ptr noundef nonnull %85, ptr noundef %88) - %92 = load ptr, ptr %6, align 8 - %.not.i.i3.i.i = icmp eq ptr %92, null - br i1 %.not.i.i3.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit, label %93 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i: ; preds = %87, %81 + %88 = call noundef ptr @_ZN5clang4ento14CheckerContext17addTransitionImplEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEbPNS0_12ExplodedNodeEPKNS_15ProgramPointTagE(ptr noundef nonnull align 8 dereferenceable(81) %2, ptr noundef nonnull %6, i1 noundef zeroext true, ptr noundef nonnull %82, ptr noundef %85) + %89 = load ptr, ptr %6, align 8 + %.not.i.i3.i.i = icmp eq ptr %89, null + br i1 %.not.i.i3.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit, label %90 -93: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %92) #19 +90: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %89) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %93, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %90, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - %.not = icmp eq ptr %91, null - br i1 %.not, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30, label %94 + %.not = icmp eq ptr %88, null + br i1 %.not, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30, label %91 -94: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit - %95 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %96 = call noalias noundef nonnull dereferenceable(1016) ptr @_Znwm(i64 noundef 1016) #18, !noalias !100 +91: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit + %92 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %93 = call noalias noundef nonnull dereferenceable(1016) ptr @_Znwm(i64 noundef 1016) #18, !noalias !100 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5), !noalias !100 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, i8 0, i64 64, i1 false), !noalias !100 store i32 1, ptr %5, align 8, !noalias !100 - %97 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %98 = getelementptr inbounds nuw i8, ptr %5, i64 40 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %97, i8 0, i64 28, i1 false), !noalias !100 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %98, i8 0, i64 17, i1 false), !noalias !100 - call void @_ZN5clang4ento22PathSensitiveBugReportC2ERKNS0_7BugTypeEN4llvm9StringRefES6_PKNS0_12ExplodedNodeENS0_22PathDiagnosticLocationEPKNS_4DeclE(ptr noundef nonnull align 8 dereferenceable(1016) %96, ptr noundef nonnull align 8 dereferenceable(97) %95, ptr nonnull @.str.39, i64 154, ptr nonnull @.str.39, i64 154, ptr noundef nonnull %91, ptr noundef nonnull byval(%"class.clang::ento::PathDiagnosticLocation") align 8 %5, ptr noundef null) #19, !noalias !100 + %94 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %95 = getelementptr inbounds nuw i8, ptr %5, i64 40 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %94, i8 0, i64 28, i1 false), !noalias !100 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %95, i8 0, i64 17, i1 false), !noalias !100 + call void @_ZN5clang4ento22PathSensitiveBugReportC2ERKNS0_7BugTypeEN4llvm9StringRefES6_PKNS0_12ExplodedNodeENS0_22PathDiagnosticLocationEPKNS_4DeclE(ptr noundef nonnull align 8 dereferenceable(1016) %93, ptr noundef nonnull align 8 dereferenceable(97) %92, ptr nonnull @.str.39, i64 154, ptr nonnull @.str.39, i64 154, ptr noundef nonnull %88, ptr noundef nonnull byval(%"class.clang::ento::PathDiagnosticLocation") align 8 %5, ptr noundef null) #19, !noalias !100 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5), !noalias !100 - %99 = call i64 @_ZNK5clang4Stmt14getSourceRangeEv(ptr noundef nonnull align 8 dereferenceable(8) %1) #22 - %100 = getelementptr inbounds nuw i8, ptr %96, i64 88 - %101 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %100) #19 - %102 = add i64 %101, 1 - %103 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE8capacityEv(ptr noundef nonnull align 8 dereferenceable(16) %100) #19 - %.not.i.i.i.i26 = icmp ugt i64 %102, %103 - br i1 %.not.i.i.i.i26, label %104, label %_ZN5clang4ento9BugReport8addRangeENS_11SourceRangeE.exit - -104: ; preds = %94 - %105 = getelementptr inbounds nuw i8, ptr %96, i64 104 - call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %100, ptr noundef nonnull %105, i64 noundef %102, i64 noundef 8) #19 + %96 = call i64 @_ZNK5clang4Stmt14getSourceRangeEv(ptr noundef nonnull align 8 dereferenceable(8) %1) #22 + %97 = getelementptr inbounds nuw i8, ptr %93, i64 88 + %98 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %97) #19 + %99 = add i64 %98, 1 + %100 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE8capacityEv(ptr noundef nonnull align 8 dereferenceable(16) %97) #19 + %.not.i.i.i.i26 = icmp ugt i64 %99, %100 + br i1 %.not.i.i.i.i26, label %101, label %_ZN5clang4ento9BugReport8addRangeENS_11SourceRangeE.exit + +101: ; preds = %91 + %102 = getelementptr inbounds nuw i8, ptr %93, i64 104 + call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %97, ptr noundef nonnull %102, i64 noundef %99, i64 noundef 8) #19 br label %_ZN5clang4ento9BugReport8addRangeENS_11SourceRangeE.exit -_ZN5clang4ento9BugReport8addRangeENS_11SourceRangeE.exit: ; preds = %94, %104 - %106 = load ptr, ptr %100, align 8 - %107 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %100) #19 - %108 = getelementptr inbounds %"class.clang::SourceRange", ptr %106, i64 %107 - store i64 %99, ptr %108, align 1 - %109 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %100) #19 - %110 = add i64 %109, 1 - call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %100, i64 noundef %110) #19 - %111 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %112 = load ptr, ptr %111, align 8 - %113 = call noundef zeroext i1 @_ZN5clang4ento11bugreporter20trackExpressionValueEPKNS0_12ExplodedNodeEPKNS_4ExprERNS0_22PathSensitiveBugReportENS1_15TrackingOptionsE(ptr noundef nonnull %91, ptr noundef %112, ptr noundef nonnull align 8 dereferenceable(1016) %96, i64 0) #19 +_ZN5clang4ento9BugReport8addRangeENS_11SourceRangeE.exit: ; preds = %91, %101 + %103 = load ptr, ptr %97, align 8 + %104 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %97) #19 + %105 = getelementptr inbounds %"class.clang::SourceRange", ptr %103, i64 %104 + store i64 %96, ptr %105, align 1 + %106 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %97) #19 + %107 = add i64 %106, 1 + call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %97, i64 noundef %107) #19 + %108 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %109 = load ptr, ptr %108, align 8 + %110 = call noundef zeroext i1 @_ZN5clang4ento11bugreporter20trackExpressionValueEPKNS0_12ExplodedNodeEPKNS_4ExprERNS0_22PathSensitiveBugReportENS1_15TrackingOptionsE(ptr noundef nonnull %88, ptr noundef %109, ptr noundef nonnull align 8 dereferenceable(1016) %93, i64 0) #19 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) - %114 = getelementptr inbounds nuw i8, ptr %2, i64 16 - store i8 1, ptr %114, align 8 - %115 = load ptr, ptr %2, align 8 - %116 = getelementptr inbounds nuw i8, ptr %115, i64 656 - %117 = ptrtoint ptr %96 to i64 - store i64 %117, ptr %4, align 8 - %118 = load ptr, ptr %116, align 8 - %119 = getelementptr inbounds nuw i8, ptr %118, i64 16 - %120 = load ptr, ptr %119, align 8 - call void %120(ptr noundef nonnull align 8 dereferenceable(120) %116, ptr noundef nonnull %4) #19 - %121 = load ptr, ptr %4, align 8 - %.not.i.i27 = icmp eq ptr %121, null + %111 = getelementptr inbounds nuw i8, ptr %2, i64 16 + store i8 1, ptr %111, align 8 + %112 = load ptr, ptr %2, align 8 + %113 = getelementptr inbounds nuw i8, ptr %112, i64 656 + %114 = ptrtoint ptr %93 to i64 + store i64 %114, ptr %4, align 8 + %115 = load ptr, ptr %113, align 8 + %116 = getelementptr inbounds nuw i8, ptr %115, i64 16 + %117 = load ptr, ptr %116, align 8 + call void %117(ptr noundef nonnull align 8 dereferenceable(120) %113, ptr noundef nonnull %4) #19 + %118 = load ptr, ptr %4, align 8 + %.not.i.i27 = icmp eq ptr %118, null br i1 %.not.i.i27, label %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit, label %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i _ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i: ; preds = %_ZN5clang4ento9BugReport8addRangeENS_11SourceRangeE.exit - %122 = load ptr, ptr %121, align 8 - %123 = getelementptr inbounds nuw i8, ptr %122, i64 8 - %124 = load ptr, ptr %123, align 8 - call void %124(ptr noundef nonnull align 8 dereferenceable(488) %121) #19 + %119 = load ptr, ptr %118, align 8 + %120 = getelementptr inbounds nuw i8, ptr %119, i64 8 + %121 = load ptr, ptr %120, align 8 + call void %121(ptr noundef nonnull align 8 dereferenceable(488) %118) #19 br label %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit _ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit: ; preds = %_ZN5clang4ento9BugReport8addRangeENS_11SourceRangeE.exit, %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i @@ -7673,9 +7671,9 @@ _ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit, %_ZL12mayBeSuccessN5clang4ento4SValERNS0_14CheckerContextE.exit.thread, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit, %_ZL12mayBeSuccessN5clang4ento4SValERNS0_14CheckerContextE.exit, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_117ReleasedParameterEEENS0_17ProgramStateTraitIT_E9data_typeEv.exit, %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %23) #19 - br label %125 + br label %122 -125: ; preds = %17, %3, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30 +122: ; preds = %17, %3, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30 ret void } diff --git a/bench/llvm/optimized/MallocChecker.cpp.ll b/bench/llvm/optimized/MallocChecker.cpp.ll index 848eafa9aea..0e0255178b2 100644 --- a/bench/llvm/optimized/MallocChecker.cpp.ll +++ b/bench/llvm/optimized/MallocChecker.cpp.ll @@ -16629,14 +16629,12 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = % call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %20) #25 %32 = load ptr, ptr %.0.i.i.ph.i, align 8 store ptr %32, ptr %2, align 8 - %33 = and i16 %29, 256 - %34 = icmp ne i16 %33, 0 - %35 = trunc i16 %29 to i1 - %36 = and i1 %34, %35 + %33 = and i16 %29, 257 + %34 = icmp eq i16 %33, 257 br label %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_115FreeReturnValueEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.thread _ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_115FreeReturnValueEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.thread: ; preds = %3, %7, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_115FreeReturnValueEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit - %.0 = phi i1 [ %36, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit ], [ false, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_115FreeReturnValueEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit ], [ false, %7 ], [ false, %3 ] + %.0 = phi i1 [ %34, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit ], [ false, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_115FreeReturnValueEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit ], [ false, %7 ], [ false, %3 ] ret i1 %.0 } @@ -40647,7 +40645,7 @@ _ZNK4llvm14iterator_rangeINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7 store i16 %110, ptr %109, align 8, !alias.scope !787, !noalias !751 br label %_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i -_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i.loopexit: ; preds = %180, %177 +_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i.loopexit: ; preds = %178, %175 br label %_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i _ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i: ; preds = %_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i.loopexit, %_ZNK4llvm14iterator_rangeINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EEE3endEv.exit.i @@ -40758,7 +40756,7 @@ _ZNK4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_1 call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(176) %22, ptr noundef nonnull %149, i64 noundef 20) #25, !noalias !751 %150 = getelementptr inbounds nuw i8, ptr %24, i64 8 %151 = getelementptr inbounds nuw i8, ptr %24, i64 16 - br label %187 + br label %185 _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i: ; preds = %_ZNK4llvm20iterator_facade_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESt26bidirectional_iterator_tagSN_lPSN_SO_EneERKSP_.exit.i, %_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i %152 = load ptr, ptr %18, align 8, !noalias !751 @@ -40793,250 +40791,246 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i: ; p _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i: ; preds = %170, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8), !noalias !751 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.0) #25, !noalias !751 - %171 = and i16 %168, 256 - %172 = icmp ne i16 %171, 0 - %173 = trunc i16 %168 to i1 - %174 = and i1 %172, %173 - br i1 %174, label %175, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30.i + %171 = and i16 %168, 257 + %172 = icmp eq i16 %171, 257 + br i1 %172, label %173, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30.i -175: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i +173: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_111RegionStateEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %20, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.0, ptr noundef %160), !noalias !751 - %176 = load ptr, ptr %20, align 8, !noalias !751 + %174 = load ptr, ptr %20, align 8, !noalias !751 store ptr %.sroa.0.0, ptr %20, align 8, !noalias !751 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.0) #25, !noalias !751 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30.i: ; preds = %175, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i - %.sroa.0.1 = phi ptr [ %176, %175 ], [ %.sroa.0.0, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i ] - br label %177 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30.i: ; preds = %173, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i + %.sroa.0.1 = phi ptr [ %174, %173 ], [ %.sroa.0.0, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i ] + br label %175 -177: ; preds = %180, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30.i - %178 = call fastcc noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %18), !noalias !751 - %179 = call noundef zeroext i1 @_ZNK4llvm15SmallVectorBaseIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(176) %18) #25, !noalias !751 - br i1 %179, label %_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i.loopexit, label %180 - -180: ; preds = %177 - %181 = load ptr, ptr %18, align 8, !noalias !751 - %182 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %18) #25, !noalias !751 - %183 = getelementptr inbounds i64, ptr %181, i64 %182 - %184 = getelementptr inbounds i8, ptr %183, i64 -8 - %185 = load i64, ptr %184, align 8, !noalias !751 - %186 = and i64 %185, 3 - %.not.i.i.i31.i = icmp eq i64 %186, 1 - br i1 %.not.i.i.i31.i, label %_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i.loopexit, label %177, !llvm.loop !39 - -187: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit51.i, %_ZNK4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE5beginEv.exit.i +175: ; preds = %178, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit30.i + %176 = call fastcc noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %18), !noalias !751 + %177 = call noundef zeroext i1 @_ZNK4llvm15SmallVectorBaseIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(176) %18) #25, !noalias !751 + br i1 %177, label %_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i.loopexit, label %178 + +178: ; preds = %175 + %179 = load ptr, ptr %18, align 8, !noalias !751 + %180 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %18) #25, !noalias !751 + %181 = getelementptr inbounds i64, ptr %179, i64 %180 + %182 = getelementptr inbounds i8, ptr %181, i64 -8 + %183 = load i64, ptr %182, align 8, !noalias !751 + %184 = and i64 %183, 3 + %.not.i.i.i31.i = icmp eq i64 %184, 1 + br i1 %.not.i.i.i31.i, label %_ZN4llvm21iterator_adaptor_baseINS_15mapped_iteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateENS_16ImutKeyValueInfoIS7_S9_EEE8iteratorEZNS_16make_first_rangeIRSC_EEDaOT_EUlRKSt4pairIS7_S9_EE_RKS7_EESD_St26bidirectional_iterator_tagSN_lPSN_SO_EppEv.exit.i.loopexit, label %175, !llvm.loop !39 + +185: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit51.i, %_ZNK4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE5beginEv.exit.i %.sroa.0.2 = phi ptr [ %.sroa.0.0, %_ZNK4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE5beginEv.exit.i ], [ %.sroa.0.3, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit51.i ] - %188 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %21) #25, !noalias !751 - %189 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %22) #25, !noalias !751 - %.not.i.i.i.i.i32.i = icmp eq i64 %188, %189 - br i1 %.not.i.i.i.i.i32.i, label %190, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i39.i - -190: ; preds = %187 - %191 = load ptr, ptr %21, align 8, !noalias !751 - %192 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %21) #25, !noalias !751 - %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %192, 0 + %186 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %21) #25, !noalias !751 + %187 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %22) #25, !noalias !751 + %.not.i.i.i.i.i32.i = icmp eq i64 %186, %187 + br i1 %.not.i.i.i.i.i32.i, label %188, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i39.i + +188: ; preds = %185 + %189 = load ptr, ptr %21, align 8, !noalias !751 + %190 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %21) #25, !noalias !751 + %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %190, 0 br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread15.i, label %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.i -_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.i: ; preds = %190 - %193 = load ptr, ptr %22, align 8, !noalias !751 - %.idx.i.i.i.i.i.i = shl nsw i64 %192, 3 - %bcmp.i.i.i.i.i.i.i.i.i.i = call i32 @bcmp(ptr %191, ptr %193, i64 %.idx.i.i.i.i.i.i), !noalias !751 +_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.i: ; preds = %188 + %191 = load ptr, ptr %22, align 8, !noalias !751 + %.idx.i.i.i.i.i.i = shl nsw i64 %190, 3 + %bcmp.i.i.i.i.i.i.i.i.i.i = call i32 @bcmp(ptr %189, ptr %191, i64 %.idx.i.i.i.i.i.i), !noalias !751 %.not7.i.i.i.i.i.i.i.i.i.not.i = icmp eq i32 %bcmp.i.i.i.i.i.i.i.i.i.i, 0 br i1 %.not7.i.i.i.i.i.i.i.i.i.not.i, label %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread15.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i39.i -_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread15.i: ; preds = %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.i, %190 - %194 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %22) #25, !noalias !751 - %195 = load ptr, ptr %22, align 8, !noalias !751 - %196 = icmp eq ptr %195, %149 - br i1 %196, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit.i, label %197 +_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread15.i: ; preds = %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.i, %188 + %192 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %22) #25, !noalias !751 + %193 = load ptr, ptr %22, align 8, !noalias !751 + %194 = icmp eq ptr %193, %149 + br i1 %194, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit.i, label %195 -197: ; preds = %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread15.i - call void @free(ptr noundef %195) #25, !noalias !751 +195: ; preds = %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread15.i + call void @free(ptr noundef %193) #25, !noalias !751 br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit.i -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit.i: ; preds = %197, %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread15.i - %198 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %21) #25, !noalias !751 - %199 = load ptr, ptr %21, align 8, !noalias !751 - %200 = icmp eq ptr %199, %140 - br i1 %200, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit33.i, label %201 +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit.i: ; preds = %195, %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread15.i + %196 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %21) #25, !noalias !751 + %197 = load ptr, ptr %21, align 8, !noalias !751 + %198 = icmp eq ptr %197, %140 + br i1 %198, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit33.i, label %199 -201: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit.i - call void @free(ptr noundef %199) #25, !noalias !751 +199: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit.i + call void @free(ptr noundef %197) #25, !noalias !751 br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit33.i -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit33.i: ; preds = %201, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit.i +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit33.i: ; preds = %199, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit.i store ptr %.sroa.0.2, ptr %0, align 8, !alias.scope !751 %.not.i.i.i34.i = icmp eq ptr %.sroa.05.0.i, null - br i1 %.not.i.i.i34.i, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i, label %202 + br i1 %.not.i.i.i34.i, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i, label %200 -202: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit33.i - %203 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i, i64 76 - %204 = load i32, ptr %203, align 4, !noalias !751 - %205 = add i32 %204, -1 - store i32 %205, ptr %203, align 4, !noalias !751 - %206 = icmp eq i32 %205, 0 - br i1 %206, label %207, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i +200: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit33.i + %201 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i, i64 76 + %202 = load i32, ptr %201, align 4, !noalias !751 + %203 = add i32 %202, -1 + store i32 %203, ptr %201, align 4, !noalias !751 + %204 = icmp eq i32 %203, 0 + br i1 %204, label %205, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i -207: ; preds = %202 +205: ; preds = %200 call fastcc void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(80) %.sroa.05.0.i), !noalias !751 br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i: ; preds = %207, %202, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit33.i +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i: ; preds = %205, %200, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit33.i %.not.i.i.i35.i = icmp eq ptr %.sroa.010.0.i, null - br i1 %.not.i.i.i35.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit, label %208 + br i1 %.not.i.i.i35.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit, label %206 -208: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i - %209 = getelementptr inbounds nuw i8, ptr %.sroa.010.0.i, i64 108 - %210 = load i32, ptr %209, align 4, !noalias !751 - %211 = add i32 %210, -1 - store i32 %211, ptr %209, align 4, !noalias !751 - %212 = icmp eq i32 %211, 0 - br i1 %212, label %213, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit +206: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i + %207 = getelementptr inbounds nuw i8, ptr %.sroa.010.0.i, i64 108 + %208 = load i32, ptr %207, align 4, !noalias !751 + %209 = add i32 %208, -1 + store i32 %209, ptr %207, align 4, !noalias !751 + %210 = icmp eq i32 %209, 0 + br i1 %210, label %211, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit -213: ; preds = %208 +211: ; preds = %206 call fastcc void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(112) %.sroa.010.0.i), !noalias !751 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i39.i: ; preds = %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.i, %187 - %214 = load ptr, ptr %21, align 8, !noalias !751 - %215 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %21) #25, !noalias !751 - %216 = getelementptr inbounds i64, ptr %214, i64 %215 - %217 = getelementptr inbounds i8, ptr %216, i64 -8 - %218 = load i64, ptr %217, align 8, !noalias !751 - %219 = and i64 %218, -4 - %220 = inttoptr i64 %219 to ptr - %221 = getelementptr inbounds nuw i8, ptr %220, i64 48 - %.sroa.03.0.copyload.i = load ptr, ptr %221, align 8, !noalias !751 - %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %220, i64 56 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i39.i: ; preds = %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.i, %185 + %212 = load ptr, ptr %21, align 8, !noalias !751 + %213 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %21) #25, !noalias !751 + %214 = getelementptr inbounds i64, ptr %212, i64 %213 + %215 = getelementptr inbounds i8, ptr %214, i64 -8 + %216 = load i64, ptr %215, align 8, !noalias !751 + %217 = and i64 %216, -4 + %218 = inttoptr i64 %217 to ptr + %219 = getelementptr inbounds nuw i8, ptr %218, i64 48 + %.sroa.03.0.copyload.i = load ptr, ptr %219, align 8, !noalias !751 + %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %218, i64 56 %.sroa.3.0.copyload.i = load ptr, ptr %.sroa.3.0..sroa_idx.i, align 8, !noalias !751 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %220, i64 64 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %218, i64 64 %.sroa.4.0.copyload.i = load i32, ptr %.sroa.4.0..sroa_idx.i, align 8, !noalias !751 - %222 = getelementptr inbounds nuw i8, ptr %.sroa.0.2, i64 8 + %220 = getelementptr inbounds nuw i8, ptr %.sroa.0.2, i64 8 + %221 = load ptr, ptr %220, align 8, !noalias !751 + %222 = getelementptr inbounds nuw i8, ptr %221, i64 104 %223 = load ptr, ptr %222, align 8, !noalias !751 - %224 = getelementptr inbounds nuw i8, ptr %223, i64 104 - %225 = load ptr, ptr %224, align 8, !noalias !751 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.2) #25, !noalias !751 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7), !noalias !751 store ptr %.sroa.0.2, ptr %7, align 8, !noalias !751 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.2) #25, !noalias !751 + %224 = load ptr, ptr %223, align 8, !noalias !751 + %225 = getelementptr inbounds nuw i8, ptr %224, i64 96 %226 = load ptr, ptr %225, align 8, !noalias !751 - %227 = getelementptr inbounds nuw i8, ptr %226, i64 96 - %228 = load ptr, ptr %227, align 8, !noalias !751 - %229 = call i16 %228(ptr noundef nonnull align 8 dereferenceable(56) %225, ptr noundef nonnull %7, ptr noundef %.sroa.03.0.copyload.i) #25, !noalias !751 - %230 = load ptr, ptr %7, align 8, !noalias !751 - %.not.i.i2.i40.i = icmp eq ptr %230, null - br i1 %.not.i.i2.i40.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i, label %231 - -231: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i39.i - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %230) #25, !noalias !751 + %227 = call i16 %226(ptr noundef nonnull align 8 dereferenceable(56) %223, ptr noundef nonnull %7, ptr noundef %.sroa.03.0.copyload.i) #25, !noalias !751 + %228 = load ptr, ptr %7, align 8, !noalias !751 + %.not.i.i2.i40.i = icmp eq ptr %228, null + br i1 %.not.i.i2.i40.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i, label %229 + +229: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i39.i + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %228) #25, !noalias !751 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i: ; preds = %231, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i39.i +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i: ; preds = %229, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i39.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !751 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.2) #25, !noalias !751 - %232 = and i16 %229, 256 - %233 = icmp ne i16 %232, 0 - %234 = trunc i16 %229 to i1 - %235 = and i1 %233, %234 - br i1 %235, label %236, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit51.i - -236: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i - %237 = call noundef ptr @_ZNK5clang4ento12ProgramState7FindGDMEPv(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.2, ptr noundef nonnull @_ZZN5clang4ento17ProgramStateTraitIN12_GLOBAL__N_111RegionStateEE8GDMIndexEvE5Index) #25, !noalias !751 - %.not.i.i44.i = icmp eq ptr %237, null - br i1 %.not.i.i44.i, label %258, label %238 - -238: ; preds = %236 - %239 = load ptr, ptr %237, align 8, !noalias !803 - %.not.i.i.i.i.i45.i = icmp eq ptr %239, null - br i1 %.not.i.i.i.i.i45.i, label %258, label %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i - -_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i: ; preds = %238 - %240 = getelementptr inbounds nuw i8, ptr %239, i64 108 - %241 = load i32, ptr %240, align 4, !noalias !803 - %242 = add i32 %241, 1 - store i32 %242, ptr %240, align 4, !noalias !803 + %230 = and i16 %227, 257 + %231 = icmp eq i16 %230, 257 + br i1 %231, label %232, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit51.i + +232: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i + %233 = call noundef ptr @_ZNK5clang4ento12ProgramState7FindGDMEPv(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.2, ptr noundef nonnull @_ZZN5clang4ento17ProgramStateTraitIN12_GLOBAL__N_111RegionStateEE8GDMIndexEvE5Index) #25, !noalias !751 + %.not.i.i44.i = icmp eq ptr %233, null + br i1 %.not.i.i44.i, label %254, label %234 + +234: ; preds = %232 + %235 = load ptr, ptr %233, align 8, !noalias !803 + %.not.i.i.i.i.i45.i = icmp eq ptr %235, null + br i1 %.not.i.i.i.i.i45.i, label %254, label %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i + +_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i: ; preds = %234 + %236 = getelementptr inbounds nuw i8, ptr %235, i64 108 + %237 = load i32, ptr %236, align 4, !noalias !803 + %238 = add i32 %237, 1 + store i32 %238, ptr %236, align 4, !noalias !803 br label %.preheader.i.i.i.i -.preheader.i.i.i.i: ; preds = %245, %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i - %.0111.i.i.i.i.i = phi ptr [ %.1.i.i.i.i.i, %245 ], [ %239, %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i ] - %243 = getelementptr inbounds nuw i8, ptr %.0111.i.i.i.i.i, i64 48 - %.val12.i.i.i.i.i = load ptr, ptr %243, align 8, !noalias !751 - %244 = icmp eq ptr %.sroa.3.0.copyload.i, %.val12.i.i.i.i.i - br i1 %244, label %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE4findERKS6_.exit.i.i.i.i, label %245 +.preheader.i.i.i.i: ; preds = %241, %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i + %.0111.i.i.i.i.i = phi ptr [ %.1.i.i.i.i.i, %241 ], [ %235, %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i ] + %239 = getelementptr inbounds nuw i8, ptr %.0111.i.i.i.i.i, i64 48 + %.val12.i.i.i.i.i = load ptr, ptr %239, align 8, !noalias !751 + %240 = icmp eq ptr %.sroa.3.0.copyload.i, %.val12.i.i.i.i.i + br i1 %240, label %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE4findERKS6_.exit.i.i.i.i, label %241 -245: ; preds = %.preheader.i.i.i.i - %246 = icmp ult ptr %.sroa.3.0.copyload.i, %.val12.i.i.i.i.i - %.1.in.v.i.i.i.i.i = select i1 %246, i64 8, i64 16 +241: ; preds = %.preheader.i.i.i.i + %242 = icmp ult ptr %.sroa.3.0.copyload.i, %.val12.i.i.i.i.i + %.1.in.v.i.i.i.i.i = select i1 %242, i64 8, i64 16 %.1.in.i.i.i.i.i = getelementptr i8, ptr %.0111.i.i.i.i.i, i64 %.1.in.v.i.i.i.i.i %.1.i.i.i.i.i = load ptr, ptr %.1.in.i.i.i.i.i, align 8, !noalias !751 %.not.i.i.i.i.i = icmp eq ptr %.1.i.i.i.i.i, null br i1 %.not.i.i.i.i.i, label %.loopexit.i.i, label %.preheader.i.i.i.i, !llvm.loop !58 _ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE4findERKS6_.exit.i.i.i.i: ; preds = %.preheader.i.i.i.i - %247 = getelementptr inbounds nuw i8, ptr %.0111.i.i.i.i.i, i64 56 + %243 = getelementptr inbounds nuw i8, ptr %.0111.i.i.i.i.i, i64 56 br label %.loopexit.i.i -.loopexit.i.i: ; preds = %245, %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE4findERKS6_.exit.i.i.i.i - %.0.i.i.ph.i.i = phi ptr [ %247, %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE4findERKS6_.exit.i.i.i.i ], [ null, %245 ] - store i32 %241, ptr %240, align 4, !noalias !751 - %248 = icmp eq i32 %241, 0 - br i1 %248, label %249, label %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i +.loopexit.i.i: ; preds = %241, %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE4findERKS6_.exit.i.i.i.i + %.0.i.i.ph.i.i = phi ptr [ %243, %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE4findERKS6_.exit.i.i.i.i ], [ null, %241 ] + store i32 %237, ptr %236, align 4, !noalias !751 + %244 = icmp eq i32 %237, 0 + br i1 %244, label %245, label %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i -249: ; preds = %.loopexit.i.i - call fastcc void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(112) %239), !noalias !751 +245: ; preds = %.loopexit.i.i + call fastcc void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_18RefStateEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(112) %235), !noalias !751 br label %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i -_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i: ; preds = %249, %.loopexit.i.i +_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i: ; preds = %245, %.loopexit.i.i %.not.i = icmp eq ptr %.0.i.i.ph.i.i, null - br i1 %.not.i, label %258, label %250 - -250: ; preds = %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i - %251 = getelementptr i8, ptr %.0.i.i.ph.i.i, i64 8 - %.val19.i = load i32, ptr %251, align 8, !noalias !751 - %252 = icmp eq i32 %.val19.i, 2 - br i1 %252, label %253, label %258 - -253: ; preds = %250 - switch i32 %.sroa.4.0.copyload.i, label %258 [ - i32 0, label %254 - i32 2, label %256 + br i1 %.not.i, label %254, label %246 + +246: ; preds = %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i + %247 = getelementptr i8, ptr %.0.i.i.ph.i.i, i64 8 + %.val19.i = load i32, ptr %247, align 8, !noalias !751 + %248 = icmp eq i32 %.val19.i, 2 + br i1 %248, label %249, label %254 + +249: ; preds = %246 + switch i32 %.sroa.4.0.copyload.i, label %254 [ + i32 0, label %250 + i32 2, label %252 ] -254: ; preds = %253 - %255 = getelementptr inbounds nuw i8, ptr %.0.i.i.ph.i.i, i64 16 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull readonly align 8 dereferenceable(32) %255, i64 32, i1 false), !noalias !751 +250: ; preds = %249 + %251 = getelementptr inbounds nuw i8, ptr %.0.i.i.ph.i.i, i64 16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull readonly align 8 dereferenceable(32) %251, i64 32, i1 false), !noalias !751 %.val20.i = load ptr, ptr %.0.i.i.ph.i.i, align 8, !noalias !751 store ptr %.val20.i, ptr %24, align 8, !alias.scope !806, !noalias !751 store i32 0, ptr %150, align 8, !alias.scope !806, !noalias !751 call fastcc void @_ZNK5clang4ento12ProgramState3setIN12_GLOBAL__N_111RegionStateEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeENSB_10value_typeE(ptr dead_on_unwind noalias nonnull writable align 8 %23, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.2, ptr noundef %.sroa.3.0.copyload.i, ptr noundef nonnull byval(%"class.(anonymous namespace)::RefState") align 8 %24), !noalias !751 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit47.sink.split.i -256: ; preds = %253 +252: ; preds = %249 call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_111RegionStateEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %25, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.2, ptr noundef %.sroa.3.0.copyload.i), !noalias !751 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit47.sink.split.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit47.sink.split.i: ; preds = %256, %254 - %.sink21 = phi ptr [ %25, %256 ], [ %23, %254 ] - %257 = load ptr, ptr %.sink21, align 8, !noalias !751 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit47.sink.split.i: ; preds = %252, %250 + %.sink21 = phi ptr [ %25, %252 ], [ %23, %250 ] + %253 = load ptr, ptr %.sink21, align 8, !noalias !751 store ptr %.sroa.0.2, ptr %.sink21, align 8, !noalias !751 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.2) #25, !noalias !751 - br label %258 + br label %254 -258: ; preds = %236, %238, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i, %250, %253, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit47.sink.split.i - %.sroa.0.4 = phi ptr [ %.sroa.0.2, %236 ], [ %.sroa.0.2, %238 ], [ %.sroa.0.2, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i ], [ %.sroa.0.2, %253 ], [ %257, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit47.sink.split.i ], [ %.sroa.0.2, %250 ] +254: ; preds = %232, %234, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i, %246, %249, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit47.sink.split.i + %.sroa.0.4 = phi ptr [ %.sroa.0.2, %232 ], [ %.sroa.0.2, %234 ], [ %.sroa.0.2, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_111RegionStateEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.i ], [ %.sroa.0.2, %249 ], [ %253, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit47.sink.split.i ], [ %.sroa.0.2, %246 ] call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_112ReallocPairsEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %26, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.4, ptr noundef %.sroa.03.0.copyload.i), !noalias !751 - %259 = load ptr, ptr %26, align 8, !noalias !751 + %255 = load ptr, ptr %26, align 8, !noalias !751 store ptr %.sroa.0.4, ptr %26, align 8, !noalias !751 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.0.4) #25, !noalias !751 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit51.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit51.i: ; preds = %258, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i - %.sroa.0.3 = phi ptr [ %259, %258 ], [ %.sroa.0.2, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i ] - %260 = call fastcc noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %21), !noalias !751 - br label %187 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit51.i: ; preds = %254, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i + %.sroa.0.3 = phi ptr [ %255, %254 ], [ %.sroa.0.2, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit43.i ] + %256 = call fastcc noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %21), !noalias !751 + br label %185 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %213, %208, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %211, %206, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111ReallocPairENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %17) call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %18) call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %19) diff --git a/bench/llvm/optimized/PointerArithChecker.cpp.ll b/bench/llvm/optimized/PointerArithChecker.cpp.ll index 90c611804b0..2ce04a50584 100644 --- a/bench/llvm/optimized/PointerArithChecker.cpp.ll +++ b/bench/llvm/optimized/PointerArithChecker.cpp.ll @@ -897,128 +897,124 @@ _ZNK5clang4Type13isIntegerTypeEv.exit.i: ; preds = %_ZN4llvm18Intrusive %.fca.0.extract13.i = extractvalue { ptr, i8 } %74, 0 %.fca.1.extract14.i = extractvalue { ptr, i8 } %74, 1 %75 = call i16 @_ZNK5clang4ento12ProgramState6isNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr %.fca.0.extract13.i, i8 %.fca.1.extract14.i) #19 - %76 = and i16 %75, 256 - %77 = icmp ne i16 %76, 0 - %78 = trunc i16 %75 to i1 - %79 = and i1 %77, %78 - br i1 %79, label %.critedge5.i, label %80 - -80: ; preds = %63 - %81 = load i32, ptr %1, align 8 - %82 = lshr i32 %81, 18 - %83 = and i32 %82, 63 - %84 = add nsw i32 %83, -7 - %85 = icmp ult i32 %84, -2 - call fastcc void @_ZNK12_GLOBAL__N_119PointerArithChecker24reportPointerArithMisuseEPKN5clang4ExprERNS1_4ento14CheckerContextEb(ptr noundef nonnull align 8 dereferenceable(336) %0, ptr noundef nonnull %11, ptr noundef nonnull align 8 dereferenceable(81) %2, i1 noundef zeroext %85) + %76 = and i16 %75, 257 + %77 = icmp eq i16 %76, 257 + br i1 %77, label %.critedge5.i, label %78 + +78: ; preds = %63 + %79 = load i32, ptr %1, align 8 + %80 = lshr i32 %79, 18 + %81 = and i32 %80, 63 + %82 = add nsw i32 %81, -7 + %83 = icmp ult i32 %82, -2 + call fastcc void @_ZNK12_GLOBAL__N_119PointerArithChecker24reportPointerArithMisuseEPKN5clang4ExprERNS1_4ento14CheckerContextEb(ptr noundef nonnull align 8 dereferenceable(336) %0, ptr noundef nonnull %11, ptr noundef nonnull align 8 dereferenceable(81) %2, i1 noundef zeroext %83) br label %.critedge.i -.critedge.i: ; preds = %80, %51, %_ZNK5clang4Type13isIntegerTypeEv.exit.i, %45, %40, %32 - %86 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %.sroa.0.0.copyload.i43.i = load i64, ptr %86, align 8 - %87 = and i64 %.sroa.0.0.copyload.i43.i, -16 - %88 = inttoptr i64 %87 to ptr - %89 = load ptr, ptr %88, align 16 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 8 - %.sroa.0.0.copyload.i.i.i.i45.i = load i64, ptr %90, align 8 - %91 = and i64 %.sroa.0.0.copyload.i.i.i.i45.i, -16 - %92 = inttoptr i64 %91 to ptr - %93 = load ptr, ptr %92, align 16 - %94 = getelementptr inbounds nuw i8, ptr %93, i64 16 - %95 = load i8, ptr %94, align 16 - %96 = icmp ne i8 %95, 13 - %.not13.i46.i = icmp eq ptr %93, null - %.not.i47.i = or i1 %.not13.i46.i, %96 - br i1 %.not.i47.i, label %97, label %_ZNK5clang4Type13isIntegerTypeEv.exit53.i - -97: ; preds = %.critedge.i - %98 = icmp ne i8 %95, 46 - %.not10.i50.i = or i1 %.not13.i46.i, %98 - br i1 %.not10.i50.i, label %112, label %99 - -99: ; preds = %97 - %100 = call noundef ptr @_ZNK5clang7TagType7getDeclEv(ptr noundef nonnull align 16 dereferenceable(32) %93) #19 - %101 = getelementptr inbounds nuw i8, ptr %100, i64 74 - %102 = load i8, ptr %101, align 2 - %103 = and i8 %102, 1 - %104 = icmp ne i8 %103, 0 - %105 = getelementptr inbounds nuw i8, ptr %100, i64 128 - %.0.copyload.i.i.i.i.i.i.i.i51.i = load i64, ptr %105, align 8 +.critedge.i: ; preds = %78, %51, %_ZNK5clang4Type13isIntegerTypeEv.exit.i, %45, %40, %32 + %84 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %.sroa.0.0.copyload.i43.i = load i64, ptr %84, align 8 + %85 = and i64 %.sroa.0.0.copyload.i43.i, -16 + %86 = inttoptr i64 %85 to ptr + %87 = load ptr, ptr %86, align 16 + %88 = getelementptr inbounds nuw i8, ptr %87, i64 8 + %.sroa.0.0.copyload.i.i.i.i45.i = load i64, ptr %88, align 8 + %89 = and i64 %.sroa.0.0.copyload.i.i.i.i45.i, -16 + %90 = inttoptr i64 %89 to ptr + %91 = load ptr, ptr %90, align 16 + %92 = getelementptr inbounds nuw i8, ptr %91, i64 16 + %93 = load i8, ptr %92, align 16 + %94 = icmp ne i8 %93, 13 + %.not13.i46.i = icmp eq ptr %91, null + %.not.i47.i = or i1 %.not13.i46.i, %94 + br i1 %.not.i47.i, label %95, label %_ZNK5clang4Type13isIntegerTypeEv.exit53.i + +95: ; preds = %.critedge.i + %96 = icmp ne i8 %93, 46 + %.not10.i50.i = or i1 %.not13.i46.i, %96 + br i1 %.not10.i50.i, label %110, label %97 + +97: ; preds = %95 + %98 = call noundef ptr @_ZNK5clang7TagType7getDeclEv(ptr noundef nonnull align 16 dereferenceable(32) %91) #19 + %99 = getelementptr inbounds nuw i8, ptr %98, i64 74 + %100 = load i8, ptr %99, align 2 + %101 = and i8 %100, 1 + %102 = icmp ne i8 %101, 0 + %103 = getelementptr inbounds nuw i8, ptr %98, i64 128 + %.0.copyload.i.i.i.i.i.i.i.i51.i = load i64, ptr %103, align 8 %.not.i.i.i.i.i52.i = icmp ugt i64 %.0.copyload.i.i.i.i.i.i.i.i51.i, 7 - %106 = select i1 %104, i1 true, i1 %.not.i.i.i.i.i52.i - br i1 %106, label %107, label %.critedge5.i + %104 = select i1 %102, i1 true, i1 %.not.i.i.i.i.i52.i + br i1 %104, label %105, label %.critedge5.i -107: ; preds = %99 - %108 = call noundef ptr @_ZNK5clang7TagType7getDeclEv(ptr noundef nonnull align 16 dereferenceable(32) %93) #19 - %109 = getelementptr inbounds nuw i8, ptr %108, i64 72 - %110 = load i40, ptr %109, align 8 - %111 = icmp sgt i40 %110, -1 - br i1 %111, label %118, label %.critedge5.i +105: ; preds = %97 + %106 = call noundef ptr @_ZNK5clang7TagType7getDeclEv(ptr noundef nonnull align 16 dereferenceable(32) %91) #19 + %107 = getelementptr inbounds nuw i8, ptr %106, i64 72 + %108 = load i40, ptr %107, align 8 + %109 = icmp sgt i40 %108, -1 + br i1 %109, label %116, label %.critedge5.i -112: ; preds = %97 - %113 = icmp eq i8 %95, 10 - br i1 %113, label %118, label %.critedge5.i +110: ; preds = %95 + %111 = icmp eq i8 %93, 10 + br i1 %111, label %116, label %.critedge5.i _ZNK5clang4Type13isIntegerTypeEv.exit53.i: ; preds = %.critedge.i - %114 = load i32, ptr %94, align 16 - %115 = lshr i32 %114, 19 - %116 = and i32 %115, 511 - %117 = add nsw i32 %116, -429 - %spec.select.i48.i = icmp ult i32 %117, 20 - br i1 %spec.select.i48.i, label %118, label %.critedge5.i - -118: ; preds = %_ZNK5clang4Type13isIntegerTypeEv.exit53.i, %112, %107 + %112 = load i32, ptr %92, align 16 + %113 = lshr i32 %112, 19 + %114 = and i32 %113, 511 + %115 = add nsw i32 %114, -429 + %spec.select.i48.i = icmp ult i32 %115, 20 + br i1 %spec.select.i48.i, label %116, label %.critedge5.i + +116: ; preds = %_ZNK5clang4Type13isIntegerTypeEv.exit53.i, %110, %105 %.sroa.0.0.copyload.i54.i = load i64, ptr %19, align 8 - %119 = and i64 %.sroa.0.0.copyload.i54.i, -16 - %120 = inttoptr i64 %119 to ptr - %121 = load ptr, ptr %120, align 16 - %122 = getelementptr inbounds nuw i8, ptr %121, i64 8 - %.sroa.0.0.copyload.i.i.i.i56.i = load i64, ptr %122, align 8 - %123 = and i64 %.sroa.0.0.copyload.i.i.i.i56.i, -16 - %124 = inttoptr i64 %123 to ptr - %125 = load ptr, ptr %124, align 16 - %126 = getelementptr inbounds nuw i8, ptr %125, i64 16 - %127 = load i8, ptr %126, align 16 - %128 = icmp eq i8 %127, 41 - br i1 %128, label %129, label %.critedge5.i - -129: ; preds = %118 - %130 = load ptr, ptr %14, align 8 - %131 = getelementptr inbounds nuw i8, ptr %130, i64 56 - %132 = load ptr, ptr %131, align 8 - %.sroa.1.0..sroa_idx.i.i.i57.i = getelementptr inbounds nuw i8, ptr %130, i64 24 + %117 = and i64 %.sroa.0.0.copyload.i54.i, -16 + %118 = inttoptr i64 %117 to ptr + %119 = load ptr, ptr %118, align 16 + %120 = getelementptr inbounds nuw i8, ptr %119, i64 8 + %.sroa.0.0.copyload.i.i.i.i56.i = load i64, ptr %120, align 8 + %121 = and i64 %.sroa.0.0.copyload.i.i.i.i56.i, -16 + %122 = inttoptr i64 %121 to ptr + %123 = load ptr, ptr %122, align 16 + %124 = getelementptr inbounds nuw i8, ptr %123, i64 16 + %125 = load i8, ptr %124, align 16 + %126 = icmp eq i8 %125, 41 + br i1 %126, label %127, label %.critedge5.i + +127: ; preds = %116 + %128 = load ptr, ptr %14, align 8 + %129 = getelementptr inbounds nuw i8, ptr %128, i64 56 + %130 = load ptr, ptr %129, align 8 + %.sroa.1.0..sroa_idx.i.i.i57.i = getelementptr inbounds nuw i8, ptr %128, i64 24 %.sroa.1.0.copyload.i.i.i58.i = load i64, ptr %.sroa.1.0..sroa_idx.i.i.i57.i, align 8 - %133 = and i64 %.sroa.1.0.copyload.i.i.i58.i, -8 - %134 = inttoptr i64 %133 to ptr + %131 = and i64 %.sroa.1.0.copyload.i.i.i58.i, -8 + %132 = inttoptr i64 %131 to ptr call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - %135 = getelementptr inbounds nuw i8, ptr %132, i64 16 - call void @_ZN5clang4ento16EnvironmentEntryC1EPKNS_4StmtEPKNS_15LocationContextE(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %11, ptr noundef %134) #19 - %136 = getelementptr inbounds nuw i8, ptr %132, i64 8 + %133 = getelementptr inbounds nuw i8, ptr %130, i64 16 + call void @_ZN5clang4ento16EnvironmentEntryC1EPKNS_4StmtEPKNS_15LocationContextE(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %11, ptr noundef %132) #19 + %134 = getelementptr inbounds nuw i8, ptr %130, i64 8 + %135 = load ptr, ptr %134, align 8 + %136 = getelementptr inbounds nuw i8, ptr %135, i64 240 %137 = load ptr, ptr %136, align 8 - %138 = getelementptr inbounds nuw i8, ptr %137, i64 240 - %139 = load ptr, ptr %138, align 8 - %140 = call { ptr, i8 } @_ZNK5clang4ento11Environment7getSValERKNS0_16EnvironmentEntryERNS0_11SValBuilderE(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(412) %139) #19 + %138 = call { ptr, i8 } @_ZNK5clang4ento11Environment7getSValERKNS0_16EnvironmentEntryERNS0_11SValBuilderE(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(412) %137) #19 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - %.fca.0.extract.i = extractvalue { ptr, i8 } %140, 0 - %.fca.1.extract.i = extractvalue { ptr, i8 } %140, 1 - %141 = call i16 @_ZNK5clang4ento12ProgramState6isNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr %.fca.0.extract.i, i8 %.fca.1.extract.i) #19 - %142 = and i16 %141, 256 - %143 = icmp ne i16 %142, 0 - %144 = trunc i16 %141 to i1 - %145 = and i1 %143, %144 - br i1 %145, label %.critedge5.i, label %146 - -146: ; preds = %129 + %.fca.0.extract.i = extractvalue { ptr, i8 } %138, 0 + %.fca.1.extract.i = extractvalue { ptr, i8 } %138, 1 + %139 = call i16 @_ZNK5clang4ento12ProgramState6isNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr %.fca.0.extract.i, i8 %.fca.1.extract.i) #19 + %140 = and i16 %139, 257 + %141 = icmp eq i16 %140, 257 + br i1 %141, label %.critedge5.i, label %142 + +142: ; preds = %127 call fastcc void @_ZNK12_GLOBAL__N_119PointerArithChecker24reportPointerArithMisuseEPKN5clang4ExprERNS1_4ento14CheckerContextEb(ptr noundef nonnull align 8 dereferenceable(336) %0, ptr noundef nonnull %13, ptr noundef nonnull align 8 dereferenceable(81) %2, i1 noundef zeroext false) br label %.critedge5.i -.critedge5.i: ; preds = %146, %129, %118, %_ZNK5clang4Type13isIntegerTypeEv.exit53.i, %112, %107, %99, %63 - br i1 %.not.i.i.i, label %_ZNK12_GLOBAL__N_119PointerArithChecker12checkPreStmtEPKN5clang14BinaryOperatorERNS1_4ento14CheckerContextE.exit, label %147 +.critedge5.i: ; preds = %142, %127, %116, %_ZNK5clang4Type13isIntegerTypeEv.exit53.i, %110, %105, %97, %63 + br i1 %.not.i.i.i, label %_ZNK12_GLOBAL__N_119PointerArithChecker12checkPreStmtEPKN5clang14BinaryOperatorERNS1_4ento14CheckerContextE.exit, label %143 -147: ; preds = %.critedge5.i +143: ; preds = %.critedge5.i call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %17) #19 br label %_ZNK12_GLOBAL__N_119PointerArithChecker12checkPreStmtEPKN5clang14BinaryOperatorERNS1_4ento14CheckerContextE.exit -_ZNK12_GLOBAL__N_119PointerArithChecker12checkPreStmtEPKN5clang14BinaryOperatorERNS1_4ento14CheckerContextE.exit: ; preds = %3, %.critedge5.i, %147 +_ZNK12_GLOBAL__N_119PointerArithChecker12checkPreStmtEPKN5clang14BinaryOperatorERNS1_4ento14CheckerContextE.exit: ; preds = %3, %.critedge5.i, %143 ret void } diff --git a/bench/llvm/optimized/RetainCountChecker.cpp.ll b/bench/llvm/optimized/RetainCountChecker.cpp.ll index 6075f48d4f9..dc35ede6ef7 100644 --- a/bench/llvm/optimized/RetainCountChecker.cpp.ll +++ b/bench/llvm/optimized/RetainCountChecker.cpp.ll @@ -2731,170 +2731,168 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i: ; pre _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i, %62 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) - %63 = and i16 %60, 256 - %64 = icmp ne i16 %63, 0 - %65 = trunc i16 %60 to i1 - %66 = and i1 %64, %65 + %63 = and i16 %60, 257 + %64 = icmp eq i16 %63, 257 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %30) #19 - br i1 %66, label %.critedge.thread, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit39 + br i1 %64, label %.critedge.thread, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit39 _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit39: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %30) #19 - %67 = call noundef ptr @_ZNK5clang4ento12ProgramState7FindGDMEPv(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull @_ZZN5clang4ento17ProgramStateTraitIN12_GLOBAL__N_111RefBindingsEE8GDMIndexEvE5Index) #19 - %.not.i.i.i40 = icmp eq ptr %67, null - br i1 %.not.i.i.i40, label %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit.thread, label %68 + %65 = call noundef ptr @_ZNK5clang4ento12ProgramState7FindGDMEPv(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull @_ZZN5clang4ento17ProgramStateTraitIN12_GLOBAL__N_111RefBindingsEE8GDMIndexEvE5Index) #19 + %.not.i.i.i40 = icmp eq ptr %65, null + br i1 %.not.i.i.i40, label %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit.thread, label %66 -68: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit39 - %69 = load ptr, ptr %67, align 8, !noalias !57 - %.not.i.i.i.i.i.i = icmp eq ptr %69, null +66: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit39 + %67 = load ptr, ptr %65, align 8, !noalias !57 + %.not.i.i.i.i.i.i = icmp eq ptr %67, null br i1 %.not.i.i.i.i.i.i, label %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit.thread, label %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprENS0_18retaincountchecker6RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i -_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprENS0_18retaincountchecker6RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i: ; preds = %68 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 84 - %71 = load i32, ptr %70, align 4, !noalias !57 - %72 = add i32 %71, 1 - store i32 %72, ptr %70, align 4, !noalias !57 +_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprENS0_18retaincountchecker6RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i: ; preds = %66 + %68 = getelementptr inbounds nuw i8, ptr %67, i64 84 + %69 = load i32, ptr %68, align 4, !noalias !57 + %70 = add i32 %69, 1 + store i32 %70, ptr %68, align 4, !noalias !57 br label %.preheader.i.i.i -.preheader.i.i.i: ; preds = %76, %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprENS0_18retaincountchecker6RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i - %.01112.i.i.i.i.i = phi ptr [ %.1.i.i.i.i.i, %76 ], [ %69, %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprENS0_18retaincountchecker6RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i ] - %73 = getelementptr inbounds nuw i8, ptr %.01112.i.i.i.i.i, i64 48 - %74 = load ptr, ptr %73, align 8 - %75 = icmp eq ptr %33, %74 - br i1 %75, label %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE4findERKS6_.exit.i.i.i.i, label %76 +.preheader.i.i.i: ; preds = %74, %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprENS0_18retaincountchecker6RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i + %.01112.i.i.i.i.i = phi ptr [ %.1.i.i.i.i.i, %74 ], [ %67, %_ZN5clang4ento24ProgramStatePartialTraitIN4llvm12ImmutableMapIPKNS0_7SymExprENS0_18retaincountchecker6RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEvE8MakeDataEPKPv.exit.i.i ] + %71 = getelementptr inbounds nuw i8, ptr %.01112.i.i.i.i.i, i64 48 + %72 = load ptr, ptr %71, align 8 + %73 = icmp eq ptr %33, %72 + br i1 %73, label %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE4findERKS6_.exit.i.i.i.i, label %74 -76: ; preds = %.preheader.i.i.i - %77 = icmp ult ptr %33, %74 - %.1.in.v.i.i.i.i.i = select i1 %77, i64 8, i64 16 +74: ; preds = %.preheader.i.i.i + %75 = icmp ult ptr %33, %72 + %.1.in.v.i.i.i.i.i = select i1 %75, i64 8, i64 16 %.1.in.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.01112.i.i.i.i.i, i64 %.1.in.v.i.i.i.i.i %.1.i.i.i.i.i = load ptr, ptr %.1.in.i.i.i.i.i, align 8 %.not.i.i.i.i.i = icmp eq ptr %.1.i.i.i.i.i, null br i1 %.not.i.i.i.i.i, label %.loopexit.i.i, label %.preheader.i.i.i, !llvm.loop !7 _ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE4findERKS6_.exit.i.i.i.i: ; preds = %.preheader.i.i.i - %78 = getelementptr inbounds nuw i8, ptr %.01112.i.i.i.i.i, i64 56 + %76 = getelementptr inbounds nuw i8, ptr %.01112.i.i.i.i.i, i64 56 br label %.loopexit.i.i -.loopexit.i.i: ; preds = %76, %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE4findERKS6_.exit.i.i.i.i - %.0.i.i.ph.i.i = phi ptr [ %78, %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE4findERKS6_.exit.i.i.i.i ], [ null, %76 ] - store i32 %71, ptr %70, align 4 - %79 = icmp eq i32 %71, 0 - br i1 %79, label %80, label %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit +.loopexit.i.i: ; preds = %74, %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE4findERKS6_.exit.i.i.i.i + %.0.i.i.ph.i.i = phi ptr [ %76, %_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE4findERKS6_.exit.i.i.i.i ], [ null, %74 ] + store i32 %69, ptr %68, align 4 + %77 = icmp eq i32 %69, 0 + br i1 %77, label %78, label %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit -80: ; preds = %.loopexit.i.i - call void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(88) %69) +78: ; preds = %.loopexit.i.i + call void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(88) %67) br label %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit -_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit: ; preds = %.loopexit.i.i, %80 +_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit: ; preds = %.loopexit.i.i, %78 br i1 %.not.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit42, label %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit.thread -_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit.thread: ; preds = %68, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit39, %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit - %.0.i.i14.i.i103 = phi ptr [ %.0.i.i.ph.i.i, %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit ], [ null, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit39 ], [ null, %68 ] +_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit.thread: ; preds = %66, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit39, %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit + %.0.i.i14.i.i103 = phi ptr [ %.0.i.i.ph.i.i, %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit ], [ null, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit39 ], [ null, %66 ] call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %30) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit42 _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit42: ; preds = %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit, %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit.thread %.0.i.i14.i.i104 = phi ptr [ %.0.i.i.ph.i.i, %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit ], [ %.0.i.i14.i.i103, %_ZN5clang4ento18retaincountchecker13getRefBindingEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit.thread ] %.not30 = icmp eq ptr %.0.i.i14.i.i104, null - br i1 %.not30, label %109, label %81 - -81: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit42 - %82 = getelementptr inbounds nuw i8, ptr %.0.i.i14.i.i104, i64 16 - %83 = load i16, ptr %82, align 8 - %84 = and i16 %83, 768 - %.not31 = icmp eq i16 %84, 0 - br i1 %.not31, label %85, label %.critedge - -85: ; preds = %81 - %86 = load ptr, ptr %14, align 8 - %.sroa.1.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %86, i64 24 + br i1 %.not30, label %107, label %79 + +79: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit42 + %80 = getelementptr inbounds nuw i8, ptr %.0.i.i14.i.i104, i64 16 + %81 = load i16, ptr %80, align 8 + %82 = and i16 %81, 768 + %.not31 = icmp eq i16 %82, 0 + br i1 %.not31, label %83, label %.critedge + +83: ; preds = %79 + %84 = load ptr, ptr %14, align 8 + %.sroa.1.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %84, i64 24 %.sroa.1.0.copyload.i.i = load i64, ptr %.sroa.1.0..sroa_idx.i.i, align 8 - %87 = and i64 %.sroa.1.0.copyload.i.i, -8 - %88 = inttoptr i64 %87 to ptr - %89 = call noundef ptr @_ZNK5clang15LocationContext13getStackFrameEv(ptr noundef nonnull align 8 dereferenceable(48) %88) #19 - %90 = call noundef zeroext i1 @_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE(ptr noundef %89) - br i1 %90, label %.critedge, label %91 + %85 = and i64 %.sroa.1.0.copyload.i.i, -8 + %86 = inttoptr i64 %85 to ptr + %87 = call noundef ptr @_ZNK5clang15LocationContext13getStackFrameEv(ptr noundef nonnull align 8 dereferenceable(48) %86) #19 + %88 = call noundef zeroext i1 @_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE(ptr noundef %87) + br i1 %88, label %.critedge, label %89 -91: ; preds = %85 - br i1 %.not.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit44, label %92 +89: ; preds = %83 + br i1 %.not.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit44, label %90 -92: ; preds = %91 +90: ; preds = %89 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %30) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit44 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit44: ; preds = %91, %92 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit44: ; preds = %89, %90 call void @llvm.experimental.noalias.scope.decl(metadata !60) - %93 = load i16, ptr %82, align 8, !noalias !60 - %94 = load i32, ptr %.0.i.i14.i.i104, align 8, !noalias !60 - %95 = getelementptr inbounds nuw i8, ptr %.0.i.i14.i.i104, i64 4 - %96 = load i32, ptr %95, align 4, !noalias !60 - %97 = getelementptr inbounds nuw i8, ptr %.0.i.i14.i.i104, i64 8 - %.sroa.0.0.copyload.i.i = load i64, ptr %97, align 8, !noalias !60 - store i32 %94, ptr %8, align 8, !alias.scope !60 - %98 = getelementptr inbounds nuw i8, ptr %8, i64 4 - store i32 %96, ptr %98, align 4, !alias.scope !60 - %99 = getelementptr inbounds nuw i8, ptr %8, i64 8 - store i64 %.sroa.0.0.copyload.i.i, ptr %99, align 8, !alias.scope !60 - %100 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %101 = load i16, ptr %100, align 8, !alias.scope !60 - %102 = and i16 %101, -1024 - %103 = and i16 %93, 255 - %104 = or disjoint i16 %103, %102 - %105 = or disjoint i16 %104, 256 - store i16 %105, ptr %100, align 8, !alias.scope !60 + %91 = load i16, ptr %80, align 8, !noalias !60 + %92 = load i32, ptr %.0.i.i14.i.i104, align 8, !noalias !60 + %93 = getelementptr inbounds nuw i8, ptr %.0.i.i14.i.i104, i64 4 + %94 = load i32, ptr %93, align 4, !noalias !60 + %95 = getelementptr inbounds nuw i8, ptr %.0.i.i14.i.i104, i64 8 + %.sroa.0.0.copyload.i.i = load i64, ptr %95, align 8, !noalias !60 + store i32 %92, ptr %8, align 8, !alias.scope !60 + %96 = getelementptr inbounds nuw i8, ptr %8, i64 4 + store i32 %94, ptr %96, align 4, !alias.scope !60 + %97 = getelementptr inbounds nuw i8, ptr %8, i64 8 + store i64 %.sroa.0.0.copyload.i.i, ptr %97, align 8, !alias.scope !60 + %98 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %99 = load i16, ptr %98, align 8, !alias.scope !60 + %100 = and i16 %99, -1024 + %101 = and i16 %91, 255 + %102 = or disjoint i16 %101, %100 + %103 = or disjoint i16 %102, 256 + store i16 %103, ptr %98, align 8, !alias.scope !60 call fastcc void @_ZL13setRefBindingN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEEPKNS2_7SymExprENS2_18retaincountchecker6RefValE(ptr dead_on_unwind noalias nonnull writable align 8 %7, ptr %30, ptr noundef nonnull %33, ptr noundef nonnull byval(%"class.clang::ento::retaincountchecker::RefVal") align 8 %8) - %106 = call noundef ptr @_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE(ptr noundef nonnull align 8 dereferenceable(81) %2, ptr noundef nonnull %7, ptr noundef null) - %107 = load ptr, ptr %7, align 8 - %.not.i.i45 = icmp eq ptr %107, null - br i1 %.not.i.i45, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit46, label %108 + %104 = call noundef ptr @_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE(ptr noundef nonnull align 8 dereferenceable(81) %2, ptr noundef nonnull %7, ptr noundef null) + %105 = load ptr, ptr %7, align 8 + %.not.i.i45 = icmp eq ptr %105, null + br i1 %.not.i.i45, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit46, label %106 -108: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit44 - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %107) #19 +106: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit44 + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %105) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit46 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit46: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit44, %108 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit46: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit44, %106 br i1 %.not.i.i, label %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit, label %.critedge.thread.sink.split -109: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit42 - %110 = load ptr, ptr %14, align 8 - %.sroa.1.0..sroa_idx.i.i49 = getelementptr inbounds nuw i8, ptr %110, i64 24 +107: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit42 + %108 = load ptr, ptr %14, align 8 + %.sroa.1.0..sroa_idx.i.i49 = getelementptr inbounds nuw i8, ptr %108, i64 24 %.sroa.1.0.copyload.i.i50 = load i64, ptr %.sroa.1.0..sroa_idx.i.i49, align 8 - %111 = and i64 %.sroa.1.0.copyload.i.i50, -8 - %112 = inttoptr i64 %111 to ptr - %113 = call noundef ptr @_ZNK5clang15LocationContext13getStackFrameEv(ptr noundef nonnull align 8 dereferenceable(48) %112) #19 - %114 = getelementptr inbounds nuw i8, ptr %113, i64 24 + %109 = and i64 %.sroa.1.0.copyload.i.i50, -8 + %110 = inttoptr i64 %109 to ptr + %111 = call noundef ptr @_ZNK5clang15LocationContext13getStackFrameEv(ptr noundef nonnull align 8 dereferenceable(48) %110) #19 + %112 = getelementptr inbounds nuw i8, ptr %111, i64 24 + %113 = load ptr, ptr %112, align 8 + %114 = getelementptr inbounds nuw i8, ptr %113, i64 8 %115 = load ptr, ptr %114, align 8 - %116 = getelementptr inbounds nuw i8, ptr %115, i64 8 - %117 = load ptr, ptr %116, align 8 - %.not.i.i.i51 = icmp eq ptr %117, null - br i1 %.not.i.i.i51, label %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread, label %118 - -118: ; preds = %109 - %119 = getelementptr inbounds nuw i8, ptr %117, i64 28 - %120 = load i32, ptr %119, align 4 - %121 = and i32 %120, 127 - %122 = icmp eq i32 %121, 15 - br i1 %122, label %_ZN4llvm16dyn_cast_or_nullIN5clang14ObjCMethodDeclEKNS1_4DeclEEEDaPT0_.exit.i, label %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread - -_ZN4llvm16dyn_cast_or_nullIN5clang14ObjCMethodDeclEKNS1_4DeclEEEDaPT0_.exit.i: ; preds = %118 - %123 = getelementptr inbounds nuw i8, ptr %117, i64 56 - %124 = load i24, ptr %123, align 8 - %125 = and i24 %124, 524288 - %.not.i = icmp eq i24 %125, 0 + %.not.i.i.i51 = icmp eq ptr %115, null + br i1 %.not.i.i.i51, label %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread, label %116 + +116: ; preds = %107 + %117 = getelementptr inbounds nuw i8, ptr %115, i64 28 + %118 = load i32, ptr %117, align 4 + %119 = and i32 %118, 127 + %120 = icmp eq i32 %119, 15 + br i1 %120, label %_ZN4llvm16dyn_cast_or_nullIN5clang14ObjCMethodDeclEKNS1_4DeclEEEDaPT0_.exit.i, label %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread + +_ZN4llvm16dyn_cast_or_nullIN5clang14ObjCMethodDeclEKNS1_4DeclEEEDaPT0_.exit.i: ; preds = %116 + %121 = getelementptr inbounds nuw i8, ptr %115, i64 56 + %122 = load i24, ptr %121, align 8 + %123 = and i24 %122, 524288 + %.not.i = icmp eq i24 %123, 0 br i1 %.not.i, label %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread, label %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit _ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit: ; preds = %_ZN4llvm16dyn_cast_or_nullIN5clang14ObjCMethodDeclEKNS1_4DeclEEEDaPT0_.exit.i - %126 = call noundef zeroext i1 @_ZNK5clang19AnalysisDeclContext21isBodyAutosynthesizedEv(ptr noundef nonnull align 8 dereferenceable(248) %115) #19 - br i1 %126, label %127, label %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread + %124 = call noundef zeroext i1 @_ZNK5clang19AnalysisDeclContext21isBodyAutosynthesizedEv(ptr noundef nonnull align 8 dereferenceable(248) %113) #19 + br i1 %124, label %125, label %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread -127: ; preds = %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit - br i1 %.not.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53, label %128 +125: ; preds = %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit + br i1 %.not.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53, label %126 -128: ; preds = %127 +126: ; preds = %125 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %30) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53: ; preds = %127, %128 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53: ; preds = %125, %126 store i32 0, ptr %10, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 4 store i32 0, ptr %.sroa.3.0..sroa_idx, align 4 @@ -2903,68 +2901,68 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53: ; pre %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 16 store i16 %.0, ptr %.sroa.7.0..sroa_idx, align 8 call fastcc void @_ZL13setRefBindingN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEEPKNS2_7SymExprENS2_18retaincountchecker6RefValE(ptr dead_on_unwind noalias nonnull writable align 8 %9, ptr %30, ptr noundef nonnull %33, ptr noundef nonnull byval(%"class.clang::ento::retaincountchecker::RefVal") align 8 %10) - %129 = call noundef ptr @_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE(ptr noundef nonnull align 8 dereferenceable(81) %2, ptr noundef nonnull %9, ptr noundef null) - %130 = load ptr, ptr %9, align 8 - %.not.i.i54 = icmp eq ptr %130, null - br i1 %.not.i.i54, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit55, label %131 + %127 = call noundef ptr @_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE(ptr noundef nonnull align 8 dereferenceable(81) %2, ptr noundef nonnull %9, ptr noundef null) + %128 = load ptr, ptr %9, align 8 + %.not.i.i54 = icmp eq ptr %128, null + br i1 %.not.i.i54, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit55, label %129 -131: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53 - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %130) #19 +129: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53 + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %128) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit55 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit55: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53, %131 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit55: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit53, %129 br i1 %.not.i.i, label %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit, label %.critedge.thread.sink.split -_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread: ; preds = %109, %118, %_ZN4llvm16dyn_cast_or_nullIN5clang14ObjCMethodDeclEKNS1_4DeclEEEDaPT0_.exit.i, %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit - br i1 %.not.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit59, label %132 +_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread: ; preds = %107, %116, %_ZN4llvm16dyn_cast_or_nullIN5clang14ObjCMethodDeclEKNS1_4DeclEEEDaPT0_.exit.i, %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit + br i1 %.not.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit59, label %130 -132: ; preds = %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread +130: ; preds = %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %30) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit59 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit59: ; preds = %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread, %132 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit59: ; preds = %_ZN5clang4ento18retaincountchecker21isSynthesizedAccessorEPKNS_17StackFrameContextE.exit.thread, %130 store i32 0, ptr %12, align 8, !alias.scope !63 - %133 = getelementptr inbounds nuw i8, ptr %12, i64 4 - store i32 0, ptr %133, align 4, !alias.scope !63 - %134 = getelementptr inbounds nuw i8, ptr %12, i64 8 - store i64 %46, ptr %134, align 8, !alias.scope !63 - %135 = getelementptr inbounds nuw i8, ptr %12, i64 16 - %136 = load i16, ptr %135, align 8, !alias.scope !63 - %137 = and i16 %136, -1024 - %138 = or disjoint i16 %.0, %137 - %139 = or disjoint i16 %138, 256 - store i16 %139, ptr %135, align 8, !alias.scope !63 + %131 = getelementptr inbounds nuw i8, ptr %12, i64 4 + store i32 0, ptr %131, align 4, !alias.scope !63 + %132 = getelementptr inbounds nuw i8, ptr %12, i64 8 + store i64 %46, ptr %132, align 8, !alias.scope !63 + %133 = getelementptr inbounds nuw i8, ptr %12, i64 16 + %134 = load i16, ptr %133, align 8, !alias.scope !63 + %135 = and i16 %134, -1024 + %136 = or disjoint i16 %.0, %135 + %137 = or disjoint i16 %136, 256 + store i16 %137, ptr %133, align 8, !alias.scope !63 call fastcc void @_ZL13setRefBindingN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEEPKNS2_7SymExprENS2_18retaincountchecker6RefValE(ptr dead_on_unwind noalias nonnull writable align 8 %11, ptr %30, ptr noundef nonnull %33, ptr noundef nonnull byval(%"class.clang::ento::retaincountchecker::RefVal") align 8 %12) - %140 = load ptr, ptr %11, align 8 + %138 = load ptr, ptr %11, align 8 store ptr %30, ptr %11, align 8 - br i1 %.not.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit64, label %141 + br i1 %.not.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit64, label %139 -141: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit59 +139: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit59 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %30) #19 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %30) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit64 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit64: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit59, %141 - store ptr %140, ptr %13, align 8 - %.not.i.i65 = icmp eq ptr %140, null - br i1 %.not.i.i65, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66, label %142 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit64: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit59, %139 + store ptr %138, ptr %13, align 8 + %.not.i.i65 = icmp eq ptr %138, null + br i1 %.not.i.i65, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66, label %140 -142: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit64 - call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %140) #19 +140: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit64 + call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %138) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit64, %142 - %143 = call noundef ptr @_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE(ptr noundef nonnull align 8 dereferenceable(81) %2, ptr noundef nonnull %13, ptr noundef null) - %144 = load ptr, ptr %13, align 8 - %.not.i.i67 = icmp eq ptr %144, null - br i1 %.not.i.i67, label %.critedge, label %145 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit64, %140 + %141 = call noundef ptr @_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE(ptr noundef nonnull align 8 dereferenceable(81) %2, ptr noundef nonnull %13, ptr noundef null) + %142 = load ptr, ptr %13, align 8 + %.not.i.i67 = icmp eq ptr %142, null + br i1 %.not.i.i67, label %.critedge, label %143 -145: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66 - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %144) #19 +143: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66 + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %142) #19 br label %.critedge -.critedge: ; preds = %34, %145, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66, %81, %85, %51, %_ZN4llvm15isa_and_nonnullIJN5clang4ento14ObjCIvarRegionEEPKNS2_9MemRegionEEEbRKT0_.exit, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit - %.sroa.084.0 = phi ptr [ %30, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit ], [ %30, %85 ], [ %30, %81 ], [ %30, %51 ], [ %30, %_ZN4llvm15isa_and_nonnullIJN5clang4ento14ObjCIvarRegionEEPKNS2_9MemRegionEEEbRKT0_.exit ], [ %140, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66 ], [ %140, %145 ], [ %30, %34 ] +.critedge: ; preds = %34, %143, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66, %79, %83, %51, %_ZN4llvm15isa_and_nonnullIJN5clang4ento14ObjCIvarRegionEEPKNS2_9MemRegionEEEbRKT0_.exit, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit + %.sroa.084.0 = phi ptr [ %30, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit ], [ %30, %83 ], [ %30, %79 ], [ %30, %51 ], [ %30, %_ZN4llvm15isa_and_nonnullIJN5clang4ento14ObjCIvarRegionEEPKNS2_9MemRegionEEEbRKT0_.exit ], [ %138, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit66 ], [ %138, %143 ], [ %30, %34 ] %.not.i.i69 = icmp eq ptr %.sroa.084.0, null br i1 %.not.i.i69, label %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit, label %.critedge.thread @@ -7442,7 +7440,7 @@ define dso_local void @_ZNK5clang4ento18retaincountchecker18RetainCountChecker10 call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(176) %9, ptr noundef nonnull %31, i64 noundef 20) #19 br label %_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit -_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit.loopexit: ; preds = %96, %99 +_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit.loopexit: ; preds = %94, %97 br label %_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit _ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit: ; preds = %_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit.loopexit, %19 @@ -7489,7 +7487,7 @@ _ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS _ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit7: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit, %46 %47 = load ptr, ptr %2, align 8 - br i1 %.0, label %106, label %122 + br i1 %.0, label %104, label %120 _ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread: ; preds = %_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit, %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit %48 = load ptr, ptr %8, align 8 @@ -7541,164 +7539,162 @@ _ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12Progr br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %_ZN5clang4ento17ConstraintManager6isNullEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprE.exit, %67 - %68 = and i16 %64, 256 - %69 = icmp ne i16 %68, 0 - %70 = trunc i16 %64 to i1 - %71 = and i1 %69, %70 - br i1 %71, label %72, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14 + %68 = and i16 %64, 257 + %69 = icmp eq i16 %68, 257 + br i1 %69, label %70, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14 -72: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit +70: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit store ptr %.sroa.026.1, ptr %11, align 8 %.not.i.i.i10 = icmp eq ptr %.sroa.026.1, null - br i1 %.not.i.i.i10, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit.thread, label %74 + br i1 %.not.i.i.i10, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit.thread, label %72 -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit.thread: ; preds = %72 +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit.thread: ; preds = %70 call void @_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEE7Factory6removeESA_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::ImmutableMap.595") align 8 %10, ptr noundef nonnull align 8 dereferenceable(81) %25, ptr noundef nonnull %11, ptr noundef nonnull align 8 dereferenceable(8) %55) - %73 = load ptr, ptr %10, align 8 + %71 = load ptr, ptr %10, align 8 store ptr null, ptr %10, align 8 br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit -74: ; preds = %72 - %75 = getelementptr inbounds nuw i8, ptr %.sroa.026.1, i64 84 - %76 = load i32, ptr %75, align 4 - %77 = add i32 %76, 1 - store i32 %77, ptr %75, align 4 +72: ; preds = %70 + %73 = getelementptr inbounds nuw i8, ptr %.sroa.026.1, i64 84 + %74 = load i32, ptr %73, align 4 + %75 = add i32 %74, 1 + store i32 %75, ptr %73, align 4 call void @_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEE7Factory6removeESA_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::ImmutableMap.595") align 8 %10, ptr noundef nonnull align 8 dereferenceable(81) %25, ptr noundef nonnull %11, ptr noundef nonnull align 8 dereferenceable(8) %55) - %78 = load ptr, ptr %10, align 8 + %76 = load ptr, ptr %10, align 8 store ptr null, ptr %10, align 8 - %79 = load i32, ptr %75, align 4 - %80 = add i32 %79, -1 - store i32 %80, ptr %75, align 4 - %81 = icmp eq i32 %80, 0 - br i1 %81, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit + %77 = load i32, ptr %73, align 4 + %78 = add i32 %77, -1 + store i32 %78, ptr %73, align 4 + %79 = icmp eq i32 %78, 0 + br i1 %79, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit: ; preds = %74 +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit: ; preds = %72 call void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.026.1) %.pr.pre = load ptr, ptr %10, align 8 %.not.i.i.i12 = icmp eq ptr %.pr.pre, null - br i1 %.not.i.i.i12, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit, label %82 + br i1 %.not.i.i.i12, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit, label %80 -82: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit - %83 = getelementptr inbounds nuw i8, ptr %.pr.pre, i64 84 - %84 = load i32, ptr %83, align 4 - %85 = add i32 %84, -1 - store i32 %85, ptr %83, align 4 - %86 = icmp eq i32 %85, 0 - br i1 %86, label %87, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit +80: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit + %81 = getelementptr inbounds nuw i8, ptr %.pr.pre, i64 84 + %82 = load i32, ptr %81, align 4 + %83 = add i32 %82, -1 + store i32 %83, ptr %81, align 4 + %84 = icmp eq i32 %83, 0 + br i1 %84, label %85, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit -87: ; preds = %82 +85: ; preds = %80 call void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(88) %.pr.pre) br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit: ; preds = %74, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit.thread, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit, %82, %87 - %88 = phi ptr [ %73, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit.thread ], [ %78, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit ], [ %78, %82 ], [ %78, %87 ], [ %78, %74 ] - %89 = load ptr, ptr %11, align 8 - %.not.i.i.i13 = icmp eq ptr %89, null - br i1 %.not.i.i.i13, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14, label %90 - -90: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit - %91 = getelementptr inbounds nuw i8, ptr %89, i64 84 - %92 = load i32, ptr %91, align 4 - %93 = add i32 %92, -1 - store i32 %93, ptr %91, align 4 - %94 = icmp eq i32 %93, 0 - br i1 %94, label %95, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14 - -95: ; preds = %90 - call void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(88) %89) - br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14 +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit: ; preds = %72, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit.thread, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit, %80, %85 + %86 = phi ptr [ %71, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit.thread ], [ %76, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEaSEOSA_.exit ], [ %76, %80 ], [ %76, %85 ], [ %76, %72 ] + %87 = load ptr, ptr %11, align 8 + %.not.i.i.i13 = icmp eq ptr %87, null + br i1 %.not.i.i.i13, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14, label %88 -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14: ; preds = %95, %90, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit - %.sroa.026.2 = phi ptr [ %.sroa.026.1, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit ], [ %88, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit ], [ %88, %90 ], [ %88, %95 ] - %.1 = phi i1 [ %.0, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit ], [ true, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit ], [ true, %90 ], [ true, %95 ] - br label %96 +88: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit + %89 = getelementptr inbounds nuw i8, ptr %87, i64 84 + %90 = load i32, ptr %89, align 4 + %91 = add i32 %90, -1 + store i32 %91, ptr %89, align 4 + %92 = icmp eq i32 %91, 0 + br i1 %92, label %93, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14 -96: ; preds = %99, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14 - %97 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %8) - %98 = call noundef zeroext i1 @_ZNK4llvm15SmallVectorBaseIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(176) %8) #19 - br i1 %98, label %_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit.loopexit, label %99 +93: ; preds = %88 + call void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(88) %87) + br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14 -99: ; preds = %96 - %100 = load ptr, ptr %8, align 8 - %101 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %8) #19 - %102 = getelementptr inbounds i64, ptr %100, i64 %101 - %103 = getelementptr inbounds i8, ptr %102, i64 -8 - %104 = load i64, ptr %103, align 8 - %105 = and i64 %104, 3 - %.not.i.i15 = icmp eq i64 %105, 1 - br i1 %.not.i.i15, label %_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit.loopexit, label %96, !llvm.loop !195 - -106: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit7 +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14: ; preds = %93, %88, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit + %.sroa.026.2 = phi ptr [ %.sroa.026.1, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit ], [ %86, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit ], [ %86, %88 ], [ %86, %93 ] + %.1 = phi i1 [ %.0, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit ], [ true, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit ], [ true, %88 ], [ true, %93 ] + br label %94 + +94: ; preds = %97, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit14 + %95 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %8) + %96 = call noundef zeroext i1 @_ZNK4llvm15SmallVectorBaseIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(176) %8) #19 + br i1 %96, label %_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit.loopexit, label %97 + +97: ; preds = %94 + %98 = load ptr, ptr %8, align 8 + %99 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %8) #19 + %100 = getelementptr inbounds i64, ptr %98, i64 %99 + %101 = getelementptr inbounds i8, ptr %100, i64 -8 + %102 = load i64, ptr %101, align 8 + %103 = and i64 %102, 3 + %.not.i.i15 = icmp eq i64 %103, 1 + br i1 %.not.i.i15, label %_ZN4llvm21iterator_adaptor_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprENS4_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS7_S9_EEEEEENS_26ImutAVLTreeInOrderIteratorISB_EESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSJ_RSJ_EppEv.exit.loopexit, label %94, !llvm.loop !195 + +104: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit7 store ptr %.sroa.026.1, ptr %13, align 8 %.not.i.i.i16 = icmp eq ptr %.sroa.026.1, null - br i1 %.not.i.i.i16, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEC2ERKSA_.exit17, label %107 + br i1 %.not.i.i.i16, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEC2ERKSA_.exit17, label %105 -107: ; preds = %106 - %108 = getelementptr inbounds nuw i8, ptr %.sroa.026.1, i64 84 - %109 = load i32, ptr %108, align 4 - %110 = add i32 %109, 1 - store i32 %110, ptr %108, align 4 +105: ; preds = %104 + %106 = getelementptr inbounds nuw i8, ptr %.sroa.026.1, i64 84 + %107 = load i32, ptr %106, align 4 + %108 = add i32 %107, 1 + store i32 %108, ptr %106, align 4 br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEC2ERKSA_.exit17 -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEC2ERKSA_.exit17: ; preds = %106, %107 +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEC2ERKSA_.exit17: ; preds = %104, %105 call fastcc void @_ZNK5clang4ento12ProgramState3setIN12_GLOBAL__N_111RefBindingsEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E9data_typeE(ptr dead_on_unwind noalias writable align 8 %12, ptr noundef nonnull align 8 dereferenceable(48) %47, ptr noundef %13) - %111 = load ptr, ptr %12, align 8 - %112 = load ptr, ptr %2, align 8 - store ptr %112, ptr %12, align 8 - store ptr %111, ptr %2, align 8 - %.not.i.i18 = icmp eq ptr %112, null - br i1 %.not.i.i18, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit19, label %113 - -113: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEC2ERKSA_.exit17 - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %112) #19 + %109 = load ptr, ptr %12, align 8 + %110 = load ptr, ptr %2, align 8 + store ptr %110, ptr %12, align 8 + store ptr %109, ptr %2, align 8 + %.not.i.i18 = icmp eq ptr %110, null + br i1 %.not.i.i18, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit19, label %111 + +111: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEC2ERKSA_.exit17 + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %110) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit19 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit19: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEC2ERKSA_.exit17, %113 - br i1 %.not.i.i.i16, label %.thread43, label %115 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit19: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEEC2ERKSA_.exit17, %111 + br i1 %.not.i.i.i16, label %.thread43, label %113 .thread43: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit19 - %114 = load ptr, ptr %2, align 8 - store ptr %114, ptr %0, align 8 + %112 = load ptr, ptr %2, align 8 + store ptr %112, ptr %0, align 8 store ptr null, ptr %2, align 8 br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit23 -115: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit19 - %116 = getelementptr inbounds nuw i8, ptr %.sroa.026.1, i64 84 - %117 = load i32, ptr %116, align 4 - %118 = add i32 %117, -1 - store i32 %118, ptr %116, align 4 - %119 = icmp eq i32 %118, 0 - br i1 %119, label %120, label %.thread41 +113: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit19 + %114 = getelementptr inbounds nuw i8, ptr %.sroa.026.1, i64 84 + %115 = load i32, ptr %114, align 4 + %116 = add i32 %115, -1 + store i32 %116, ptr %114, align 4 + %117 = icmp eq i32 %116, 0 + br i1 %117, label %118, label %.thread41 -120: ; preds = %115 +118: ; preds = %113 call void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.026.1) br label %.thread41 -.thread41: ; preds = %115, %120 - %121 = load ptr, ptr %2, align 8 - store ptr %121, ptr %0, align 8 +.thread41: ; preds = %113, %118 + %119 = load ptr, ptr %2, align 8 + store ptr %119, ptr %0, align 8 store ptr null, ptr %2, align 8 - br label %123 + br label %121 -122: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit7 +120: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEE8iteratorD2Ev.exit7 store ptr %47, ptr %0, align 8 store ptr null, ptr %2, align 8 %.not.i.i.i22 = icmp eq ptr %.sroa.026.1, null - br i1 %.not.i.i.i22, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit23, label %123 + br i1 %.not.i.i.i22, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit23, label %121 -123: ; preds = %.thread41, %122 - %124 = getelementptr inbounds nuw i8, ptr %.sroa.026.1, i64 84 - %125 = load i32, ptr %124, align 4 - %126 = add i32 %125, -1 - store i32 %126, ptr %124, align 4 - %127 = icmp eq i32 %126, 0 - br i1 %127, label %128, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit23 +121: ; preds = %.thread41, %120 + %122 = getelementptr inbounds nuw i8, ptr %.sroa.026.1, i64 84 + %123 = load i32, ptr %122, align 4 + %124 = add i32 %123, -1 + store i32 %124, ptr %122, align 4 + %125 = icmp eq i32 %124, 0 + br i1 %125, label %126, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit23 -128: ; preds = %123 +126: ; preds = %121 call void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprENS3_18retaincountchecker6RefValEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(88) %.sroa.026.1) br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit23 -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit23: ; preds = %.thread43, %.thread, %122, %123, %128 +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprENS2_18retaincountchecker6RefValENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit23: ; preds = %.thread43, %.thread, %120, %121, %126 ret void } diff --git a/bench/llvm/optimized/RetainCountDiagnostics.cpp.ll b/bench/llvm/optimized/RetainCountDiagnostics.cpp.ll index 9db486f0724..ebf1298c319 100644 --- a/bench/llvm/optimized/RetainCountDiagnostics.cpp.ll +++ b/bench/llvm/optimized/RetainCountDiagnostics.cpp.ll @@ -3197,62 +3197,58 @@ _ZNK5clang4Type10isVoidTypeEv.exit.thread: ; preds = %520, %_ZNK5clang4Ty %.fca.1.extract = extractvalue { ptr, i8 } %534, 1 %535 = load ptr, ptr %0, align 8 %536 = call i16 @_ZNK5clang4ento12ProgramState6isNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %535, ptr %.fca.0.extract, i8 %.fca.1.extract) #18 - %537 = and i16 %536, 256 - %538 = icmp ne i16 %537, 0 - %539 = trunc i16 %536 to i1 - %540 = and i1 %538, %539 - br i1 %540, label %541, label %553 - -541: ; preds = %_ZNK5clang4Type10isVoidTypeEv.exit.thread - %542 = load ptr, ptr %485, align 8 - %543 = load ptr, ptr %487, align 8 - %544 = ptrtoint ptr %542 to i64 - %545 = ptrtoint ptr %543 to i64 - %546 = sub i64 %544, %545 - %547 = icmp ult i64 %546, 33 - br i1 %547, label %548, label %550 - -548: ; preds = %541 - %549 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull @.str.66, i64 noundef 33) #18 + %537 = and i16 %536, 257 + %538 = icmp eq i16 %537, 257 + br i1 %538, label %539, label %551 + +539: ; preds = %_ZNK5clang4Type10isVoidTypeEv.exit.thread + %540 = load ptr, ptr %485, align 8 + %541 = load ptr, ptr %487, align 8 + %542 = ptrtoint ptr %540 to i64 + %543 = ptrtoint ptr %541 to i64 + %544 = sub i64 %542, %543 + %545 = icmp ult i64 %544, 33 + br i1 %545, label %546, label %548 + +546: ; preds = %539 + %547 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull @.str.66, i64 noundef 33) #18 br label %_ZNSt8optionalIN5clang4ento12CallEventRefINS1_9CallEventEEEED2Ev.exit160 -550: ; preds = %541 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(33) %543, ptr noundef nonnull align 1 dereferenceable(33) @.str.66, i64 33, i1 false) - %551 = load ptr, ptr %487, align 8 - %552 = getelementptr inbounds nuw i8, ptr %551, i64 33 - store ptr %552, ptr %487, align 8 +548: ; preds = %539 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(33) %541, ptr noundef nonnull align 1 dereferenceable(33) @.str.66, i64 33, i1 false) + %549 = load ptr, ptr %487, align 8 + %550 = getelementptr inbounds nuw i8, ptr %549, i64 33 + store ptr %550, ptr %487, align 8 br label %_ZNSt8optionalIN5clang4ento12CallEventRefINS1_9CallEventEEEED2Ev.exit160 -553: ; preds = %_ZNK5clang4Type10isVoidTypeEv.exit.thread - %554 = load ptr, ptr %0, align 8 - %555 = call i16 @_ZNK5clang4ento12ProgramState9isNonNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %554, ptr %.fca.0.extract, i8 %.fca.1.extract) #18 - %556 = and i16 %555, 256 - %557 = icmp ne i16 %556, 0 - %558 = trunc i16 %555 to i1 - %559 = and i1 %557, %558 - br i1 %559, label %560, label %_ZNSt8optionalIN5clang4ento12CallEventRefINS1_9CallEventEEEED2Ev.exit160 - -560: ; preds = %553 - %561 = load ptr, ptr %485, align 8 - %562 = load ptr, ptr %487, align 8 - %563 = ptrtoint ptr %561 to i64 - %564 = ptrtoint ptr %562 to i64 - %565 = sub i64 %563, %564 - %566 = icmp ult i64 %565, 37 - br i1 %566, label %567, label %569 - -567: ; preds = %560 - %568 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull @.str.67, i64 noundef 37) #18 +551: ; preds = %_ZNK5clang4Type10isVoidTypeEv.exit.thread + %552 = load ptr, ptr %0, align 8 + %553 = call i16 @_ZNK5clang4ento12ProgramState9isNonNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %552, ptr %.fca.0.extract, i8 %.fca.1.extract) #18 + %554 = and i16 %553, 257 + %555 = icmp eq i16 %554, 257 + br i1 %555, label %556, label %_ZNSt8optionalIN5clang4ento12CallEventRefINS1_9CallEventEEEED2Ev.exit160 + +556: ; preds = %551 + %557 = load ptr, ptr %485, align 8 + %558 = load ptr, ptr %487, align 8 + %559 = ptrtoint ptr %557 to i64 + %560 = ptrtoint ptr %558 to i64 + %561 = sub i64 %559, %560 + %562 = icmp ult i64 %561, 37 + br i1 %562, label %563, label %565 + +563: ; preds = %556 + %564 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull @.str.67, i64 noundef 37) #18 br label %_ZNSt8optionalIN5clang4ento12CallEventRefINS1_9CallEventEEEED2Ev.exit160 -569: ; preds = %560 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(37) %562, ptr noundef nonnull align 1 dereferenceable(37) @.str.67, i64 37, i1 false) - %570 = load ptr, ptr %487, align 8 - %571 = getelementptr inbounds nuw i8, ptr %570, i64 37 - store ptr %571, ptr %487, align 8 +565: ; preds = %556 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(37) %558, ptr noundef nonnull align 1 dereferenceable(37) @.str.67, i64 37, i1 false) + %566 = load ptr, ptr %487, align 8 + %567 = getelementptr inbounds nuw i8, ptr %566, i64 37 + store ptr %567, ptr %487, align 8 br label %_ZNSt8optionalIN5clang4ento12CallEventRefINS1_9CallEventEEEED2Ev.exit160 -_ZNSt8optionalIN5clang4ento12CallEventRefINS1_9CallEventEEEED2Ev.exit160: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit140, %553, %_ZNK5clang4Type10isVoidTypeEv.exit, %_ZN4llvm11raw_ostreamlsEPKc.exit149, %548, %550, %567, %569 +_ZNSt8optionalIN5clang4ento12CallEventRefINS1_9CallEventEEEED2Ev.exit160: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit140, %551, %_ZNK5clang4Type10isVoidTypeEv.exit, %_ZN4llvm11raw_ostreamlsEPKc.exit149, %546, %548, %563, %565 call void @_ZNK5clang4ento9CallEvent7ReleaseEv(ptr noundef nonnull align 8 dereferenceable(72) %185) ret void } diff --git a/bench/llvm/optimized/SMTConstraintManager.cpp.ll b/bench/llvm/optimized/SMTConstraintManager.cpp.ll index 9b27b47b7d2..58386e33cb4 100644 --- a/bench/llvm/optimized/SMTConstraintManager.cpp.ll +++ b/bench/llvm/optimized/SMTConstraintManager.cpp.ll @@ -2122,28 +2122,28 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit10: ; pre br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit12 _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit12: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit10, %27 - %28 = and i16 %20, 256 - %29 = icmp ne i16 %28, 0 - %30 = trunc i16 %20 to i1 - %31 = and i1 %29, %30 - %32 = trunc i16 %.sroa.3.0.extract.shift to i1 - %33 = trunc i16 %25 to i1 - %34 = xor i1 %33, true - %35 = and i1 %34, %32 - %or.cond = select i1 %31, i1 %35, i1 false - br i1 %or.cond, label %43, label %36 - -36: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit12 - %37 = xor i1 %30, true - %38 = and i1 %29, %37 - %39 = and i16 %.sroa.3.0.extract.shift, %25 - %40 = shl nuw i16 %39, 8 - %41 = and i16 %40, 256 - %42 = select i1 %38, i16 %41, i16 0 - br label %43 - -43: ; preds = %36, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit12 - %.sroa.019.0.insert.insert = phi i16 [ 257, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit12 ], [ %42, %36 ] + %28 = and i16 %20, 257 + %29 = icmp eq i16 %28, 257 + %30 = trunc i16 %.sroa.3.0.extract.shift to i1 + %31 = trunc i16 %25 to i1 + %32 = xor i1 %31, true + %33 = and i1 %32, %30 + %or.cond = select i1 %29, i1 %33, i1 false + br i1 %or.cond, label %42, label %34 + +34: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit12 + %35 = trunc i16 %20 to i1 + %36 = and i16 %20, 256 + %37 = icmp eq i16 %36, 0 + %.not26 = or i1 %37, %35 + %38 = and i16 %.sroa.3.0.extract.shift, %25 + %39 = shl nuw i16 %38, 8 + %40 = and i16 %39, 256 + %41 = select i1 %.not26, i16 0, i16 %40 + br label %42 + +42: ; preds = %34, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit12 + %.sroa.019.0.insert.insert = phi i16 [ 257, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit12 ], [ %41, %34 ] ret i16 %.sroa.019.0.insert.insert } @@ -2320,32 +2320,30 @@ define linkonce_odr hidden void @_ZN5clang4ento20SMTConstraintManager10assumeExp _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit: ; preds = %5, %8 %9 = call i16 @_ZNK5clang4ento20SMTConstraintManager10checkModelEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS0_7SymExprERKPKNS2_7SMTExprE(ptr noundef nonnull align 8 dereferenceable(112) %1, ptr noundef nonnull %6, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(8) %4) - %10 = and i16 %9, 256 - %11 = icmp ne i16 %10, 0 - %12 = trunc i16 %9 to i1 - %13 = and i1 %11, %12 - %14 = load ptr, ptr %6, align 8 - %.not.i.i3 = icmp eq ptr %14, null - br i1 %.not.i.i3, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit, label %15 - -15: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %14) #19 + %10 = and i16 %9, 257 + %11 = icmp eq i16 %10, 257 + %12 = load ptr, ptr %6, align 8 + %.not.i.i3 = icmp eq ptr %12, null + br i1 %.not.i.i3, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit, label %13 + +13: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %12) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit, %15 - br i1 %13, label %16, label %19 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit, %13 + br i1 %11, label %14, label %17 -16: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit - %17 = load ptr, ptr %2, align 8 - %18 = load ptr, ptr %4, align 8 - call fastcc void @_ZNK5clang4ento12ProgramState3addIN12_GLOBAL__N_113ConstraintSMTEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %0, ptr noundef nonnull align 8 dereferenceable(48) %17, ptr %3, ptr %18) - br label %20 +14: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit + %15 = load ptr, ptr %2, align 8 + %16 = load ptr, ptr %4, align 8 + call fastcc void @_ZNK5clang4ento12ProgramState3addIN12_GLOBAL__N_113ConstraintSMTEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %0, ptr noundef nonnull align 8 dereferenceable(48) %15, ptr %3, ptr %16) + br label %18 -19: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit +17: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit store ptr null, ptr %0, align 8 - br label %20 + br label %18 -20: ; preds = %19, %16 +18: ; preds = %17, %14 ret void } diff --git a/bench/llvm/optimized/ScalarEvolutionExpander.cpp.ll b/bench/llvm/optimized/ScalarEvolutionExpander.cpp.ll index 28ed40da758..782d4bb5b55 100644 --- a/bench/llvm/optimized/ScalarEvolutionExpander.cpp.ll +++ b/bench/llvm/optimized/ScalarEvolutionExpander.cpp.ll @@ -2845,7 +2845,7 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPKNS_4SCEVEPNS_11InstructionEENS_10T 337: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPKNS_4SCEVEPNS_11InstructionEENS_10TrackingVHINS_5ValueEEENS_12DenseMapInfoIS8_vEENS_6detail12DenseMapPairIS8_SB_EEEES8_SB_SD_SG_E4findERKS8_.exit %338 = getelementptr inbounds nuw i8, ptr %.0.i.pn.i, i64 32 %339 = load ptr, ptr %338, align 8 - br label %431 + br label %430 340: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPKNS_4SCEVEPNS_11InstructionEENS_10TrackingVHINS_5ValueEEENS_12DenseMapInfoIS8_vEENS_6detail12DenseMapPairIS8_SB_EEEES8_SB_SD_SG_E4findERKS8_.exit call void @_ZN4llvm12SCEVExpander20SCEVInsertPointGuardC2ERNS_13IRBuilderBaseEPS0_(ptr noundef nonnull align 8 dereferenceable(48) %7, ptr noundef nonnull align 8 dereferenceable(128) %10, ptr noundef nonnull %0) @@ -2877,8 +2877,8 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPKNS_4SCEVEPNS_11InstructionEENS_10T %354 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %355 -355: ; preds = %.lr.ph203, %416 - %.074201 = phi ptr [ %349, %.lr.ph203 ], [ %417, %416 ] +355: ; preds = %.lr.ph203, %415 + %.074201 = phi ptr [ %349, %.lr.ph203 ], [ %416, %415 ] %356 = load ptr, ptr %.074201, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) @@ -2981,7 +2981,7 @@ _ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorENS_11InstructionEEEDcPT0_.exit. %404 = add nsw i32 %403, -68 %switch.and.i.i.i.i.i.i.i.i = and i32 %404, -5 %switch.selectcmp.i.i.i.i.i.i.i.i.not = icmp eq i32 %switch.and.i.i.i.i.i.i.i.i, 0 - br i1 %switch.selectcmp.i.i.i.i.i.i.i.i.not, label %405, label %416 + br i1 %switch.selectcmp.i.i.i.i.i.i.i.i.not, label %405, label %415 405: ; preds = %_ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorENS_11InstructionEEEDcPT0_.exit.thread %406 = getelementptr inbounds i8, ptr %356, i64 -32 @@ -2991,73 +2991,71 @@ _ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorENS_11InstructionEEEDcPT0_.exit. %410 = call noundef ptr @_ZN4llvm8Constant12getNullValueEPNS_4TypeE(ptr noundef %409) #18 %411 = load ptr, ptr %354, align 8 %412 = call i16 @_ZN4llvm23isImpliedByDomConditionENS_7CmpInst9PredicateEPKNS_5ValueES4_PKNS_11InstructionERKNS_10DataLayoutE(i32 noundef 39, ptr noundef nonnull %407, ptr noundef %410, ptr noundef nonnull %356, ptr noundef nonnull align 8 dereferenceable(512) %411) #18 - %413 = and i16 %412, 256 - %.not162 = icmp ne i16 %413, 0 - %414 = trunc i16 %412 to i1 - %.0.i = and i1 %.not162, %414 - br i1 %.0.i, label %415, label %416 + %413 = and i16 %412, 257 + %.0.i = icmp eq i16 %413, 257 + br i1 %.0.i, label %414, label %415 -415: ; preds = %405 +414: ; preds = %405 call void @_ZN4llvm11Instruction9setNonNegEb(ptr noundef nonnull align 8 dereferenceable(72) %356, i1 noundef zeroext true) #18 - br label %416 + br label %415 -416: ; preds = %_ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorENS_11InstructionEEEDcPT0_.exit.thread, %415, %405 - %417 = getelementptr inbounds nuw i8, ptr %.074201, i64 8 - %.not82 = icmp eq ptr %417, %351 +415: ; preds = %_ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorENS_11InstructionEEEDcPT0_.exit.thread, %414, %405 + %416 = getelementptr inbounds nuw i8, ptr %.074201, i64 8 + %.not82 = icmp eq ptr %416, %351 br i1 %.not82, label %.loopexit, label %355 -.loopexit: ; preds = %416, %348, %345 - %.073 = phi ptr [ %347, %345 ], [ %344, %348 ], [ %344, %416 ] +.loopexit: ; preds = %415, %348, %345 + %.073 = phi ptr [ %347, %345 ], [ %344, %348 ], [ %344, %415 ] store ptr %1, ptr %9, align 8 - %418 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store ptr %284, ptr %418, align 8 - %419 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPKNS_4SCEVEPNS_11InstructionEENS_10TrackingVHINS_5ValueEEENS_12DenseMapInfoIS8_vEENS_6detail12DenseMapPairIS8_SB_EEEES8_SB_SD_SG_E16FindAndConstructEOS8_(ptr noundef nonnull align 1 dereferenceable(1) %281, ptr noundef nonnull align 8 dereferenceable(16) %9) - %420 = getelementptr inbounds nuw i8, ptr %419, i64 16 - %421 = getelementptr inbounds nuw i8, ptr %419, i64 32 - %422 = load ptr, ptr %421, align 8 - %423 = icmp eq ptr %422, %.073 - br i1 %423, label %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit, label %424 - -424: ; preds = %.loopexit - %magicptr.i.i.i.i = ptrtoint ptr %422 to i64 - switch i64 %magicptr.i.i.i.i, label %425 [ + %417 = getelementptr inbounds nuw i8, ptr %9, i64 8 + store ptr %284, ptr %417, align 8 + %418 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPKNS_4SCEVEPNS_11InstructionEENS_10TrackingVHINS_5ValueEEENS_12DenseMapInfoIS8_vEENS_6detail12DenseMapPairIS8_SB_EEEES8_SB_SD_SG_E16FindAndConstructEOS8_(ptr noundef nonnull align 1 dereferenceable(1) %281, ptr noundef nonnull align 8 dereferenceable(16) %9) + %419 = getelementptr inbounds nuw i8, ptr %418, i64 16 + %420 = getelementptr inbounds nuw i8, ptr %418, i64 32 + %421 = load ptr, ptr %420, align 8 + %422 = icmp eq ptr %421, %.073 + br i1 %422, label %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit, label %423 + +423: ; preds = %.loopexit + %magicptr.i.i.i.i = ptrtoint ptr %421 to i64 + switch i64 %magicptr.i.i.i.i, label %424 [ i64 0, label %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i i64 -4096, label %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i i64 -8192, label %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i ] -425: ; preds = %424 - call void @_ZN4llvm15ValueHandleBase17RemoveFromUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %420) #18 +424: ; preds = %423 + call void @_ZN4llvm15ValueHandleBase17RemoveFromUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %419) #18 br label %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i -_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i: ; preds = %425, %424, %424, %424 - store ptr %.073, ptr %421, align 8 +_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i: ; preds = %424, %423, %423, %423 + store ptr %.073, ptr %420, align 8 %magicptr8.i.i.i.i = ptrtoint ptr %.073 to i64 - switch i64 %magicptr8.i.i.i.i, label %426 [ + switch i64 %magicptr8.i.i.i.i, label %425 [ i64 0, label %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit i64 -4096, label %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit i64 -8192, label %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit ] -426: ; preds = %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i - call void @_ZN4llvm15ValueHandleBase12AddToUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %420) #18 +425: ; preds = %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i + call void @_ZN4llvm15ValueHandleBase12AddToUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %419) #18 br label %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit -_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit: ; preds = %.loopexit, %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i, %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i, %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i, %426 - %427 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(64) %8) #18 - %428 = load ptr, ptr %8, align 8 - %429 = icmp eq ptr %428, %343 - br i1 %429, label %_ZN4llvm11SmallVectorIPNS_11InstructionELj6EED2Ev.exit, label %430 +_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit: ; preds = %.loopexit, %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i, %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i, %_ZN4llvm15ValueHandleBase7isValidEPNS_5ValueE.exit.thread.i.i.i.i, %425 + %426 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(64) %8) #18 + %427 = load ptr, ptr %8, align 8 + %428 = icmp eq ptr %427, %343 + br i1 %428, label %_ZN4llvm11SmallVectorIPNS_11InstructionELj6EED2Ev.exit, label %429 -430: ; preds = %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit - call void @free(ptr noundef %428) #18 +429: ; preds = %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit + call void @free(ptr noundef %427) #18 br label %_ZN4llvm11SmallVectorIPNS_11InstructionELj6EED2Ev.exit -_ZN4llvm11SmallVectorIPNS_11InstructionELj6EED2Ev.exit: ; preds = %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit, %430 +_ZN4llvm11SmallVectorIPNS_11InstructionELj6EED2Ev.exit: ; preds = %_ZN4llvm10TrackingVHINS_5ValueEEaSEPS1_.exit, %429 call void @_ZN4llvm12SCEVExpander20SCEVInsertPointGuardD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #18 - br label %431 + br label %430 -431: ; preds = %_ZN4llvm11SmallVectorIPNS_11InstructionELj6EED2Ev.exit, %337 +430: ; preds = %_ZN4llvm11SmallVectorIPNS_11InstructionELj6EED2Ev.exit, %337 %.0 = phi ptr [ %339, %337 ], [ %.073, %_ZN4llvm11SmallVectorIPNS_11InstructionELj6EED2Ev.exit ] ret ptr %.0 } diff --git a/bench/llvm/optimized/SelectionDAG.cpp.ll b/bench/llvm/optimized/SelectionDAG.cpp.ll index 23f0f33eb99..6dd341b8e5e 100644 --- a/bench/llvm/optimized/SelectionDAG.cpp.ll +++ b/bench/llvm/optimized/SelectionDAG.cpp.ll @@ -41348,7 +41348,7 @@ _ZNSt8functionIFbPN4llvm14ConstantSDNodeEEED2Ev.exit: ; preds = %_ZN4llvm3ISD19m 41: ; preds = %_ZNSt8functionIFbPN4llvm14ConstantSDNodeEEED2Ev.exit %42 = getelementptr inbounds nuw i8, ptr %1, i64 24 %43 = load i32, ptr %42, align 8 - switch i32 %43, label %368 [ + switch i32 %43, label %367 [ i32 186, label %44 i32 205, label %53 i32 204, label %53 @@ -41370,10 +41370,10 @@ _ZNSt8functionIFbPN4llvm14ConstantSDNodeEEED2Ev.exit: ; preds = %_ZN4llvm3ISD19m i32 59, label %280 i32 56, label %288 i32 57, label %300 - i32 58, label %315 - i32 213, label %328 - i32 212, label %328 - i32 367, label %333 + i32 58, label %314 + i32 213, label %327 + i32 212, label %327 + i32 367, label %332 ] 44: ; preds = %41 @@ -41523,7 +41523,7 @@ _ZN4llvm5APIntD2Ev.exit.thread: ; preds = %94, %83, %102, %_ZN _ZN4llvm5APIntD2Ev.exit159: ; preds = %110, %107, %_ZN4llvm5APIntD2Ev.exit.thread call void @_ZN4llvm9KnownBitsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #32 - br i1 %switch, label %_ZN4llvm9KnownBitsD2Ev.exit, label %368 + br i1 %switch, label %_ZN4llvm9KnownBitsD2Ev.exit, label %367 111: ; preds = %41, %41 %112 = getelementptr inbounds nuw i8, ptr %1, i64 40 @@ -41865,14 +41865,14 @@ _ZN4llvm5APIntD2Ev.exit171.thread: ; preds = %263, %252, %271, %_ _ZN4llvm5APIntD2Ev.exit172: ; preds = %279, %276, %_ZN4llvm5APIntD2Ev.exit171.thread call void @_ZN4llvm9KnownBitsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #32 - br i1 %switch155, label %_ZN4llvm9KnownBitsD2Ev.exit, label %368 + br i1 %switch155, label %_ZN4llvm9KnownBitsD2Ev.exit, label %367 280: ; preds = %41, %41 %281 = getelementptr inbounds nuw i8, ptr %1, i64 28 %.sroa.0.0.copyload.i173 = load i16, ptr %281, align 4 %282 = and i16 %.sroa.0.0.copyload.i173, 4 %.not202 = icmp eq i16 %282, 0 - br i1 %.not202, label %368, label %283 + br i1 %.not202, label %367, label %283 283: ; preds = %280 %284 = getelementptr inbounds nuw i8, ptr %1, i64 40 @@ -41888,7 +41888,7 @@ _ZN4llvm5APIntD2Ev.exit172: ; preds = %279, %276, %_ZN4llv %289 = getelementptr inbounds nuw i8, ptr %1, i64 28 %.sroa.0.0.copyload.i174 = load i16, ptr %289, align 4 %290 = trunc i16 %.sroa.0.0.copyload.i174 to i1 - br i1 %290, label %291, label %368 + br i1 %290, label %291, label %367 291: ; preds = %288 %292 = getelementptr inbounds nuw i8, ptr %1, i64 40 @@ -41907,7 +41907,7 @@ _ZN4llvm5APIntD2Ev.exit172: ; preds = %279, %276, %_ZN4llv %.sroa.226.0..sroa_idx = getelementptr inbounds nuw i8, ptr %298, i64 8 %.sroa.226.0.copyload = load i32, ptr %.sroa.226.0..sroa_idx, align 8 %299 = call noundef zeroext i1 @_ZNK4llvm12SelectionDAG16isKnownNeverZeroENS_7SDValueEj(ptr noundef nonnull align 8 dereferenceable(904) %0, ptr %.sroa.025.0.copyload, i32 %.sroa.226.0.copyload, i32 noundef %295) - br i1 %299, label %_ZN4llvm9KnownBitsD2Ev.exit, label %368 + br i1 %299, label %_ZN4llvm9KnownBitsD2Ev.exit, label %367 300: ; preds = %41 %301 = getelementptr inbounds nuw i8, ptr %1, i64 40 @@ -41939,171 +41939,169 @@ _ZN4llvm5APIntD2Ev.exit172: ; preds = %279, %276, %_ZN4llv %312 = call i16 @_ZN4llvm9KnownBits2neERKS0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %21) #32 call void @_ZN4llvm9KnownBitsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #32 call void @_ZN4llvm9KnownBitsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #32 - %313 = and i16 %312, 256 - %.not201 = icmp ne i16 %313, 0 - %314 = trunc i16 %312 to i1 - %spec.select = and i1 %.not201, %314 + %313 = and i16 %312, 257 + %spec.select = icmp eq i16 %313, 257 br label %_ZN4llvm9KnownBitsD2Ev.exit -315: ; preds = %41 - %316 = getelementptr inbounds nuw i8, ptr %1, i64 28 - %.sroa.0.0.copyload.i175 = load i16, ptr %316, align 4 - %317 = and i16 %.sroa.0.0.copyload.i175, 2 - %.not = icmp eq i16 %317, 0 - br i1 %.not, label %318, label %.critedge2 +314: ; preds = %41 + %315 = getelementptr inbounds nuw i8, ptr %1, i64 28 + %.sroa.0.0.copyload.i175 = load i16, ptr %315, align 4 + %316 = and i16 %.sroa.0.0.copyload.i175, 2 + %.not = icmp eq i16 %316, 0 + br i1 %.not, label %317, label %.critedge2 -318: ; preds = %315 - %319 = trunc i16 %.sroa.0.0.copyload.i175 to i1 - br i1 %319, label %.critedge2, label %368 +317: ; preds = %314 + %318 = trunc i16 %.sroa.0.0.copyload.i175 to i1 + br i1 %318, label %.critedge2, label %367 -.critedge2: ; preds = %315, %318 - %320 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %321 = load ptr, ptr %320, align 8 - %322 = getelementptr inbounds nuw i8, ptr %321, i64 40 - %.sroa.010.0.copyload = load ptr, ptr %322, align 8 - %.sroa.211.0..sroa_idx = getelementptr inbounds nuw i8, ptr %321, i64 48 +.critedge2: ; preds = %314, %317 + %319 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %320 = load ptr, ptr %319, align 8 + %321 = getelementptr inbounds nuw i8, ptr %320, i64 40 + %.sroa.010.0.copyload = load ptr, ptr %321, align 8 + %.sroa.211.0..sroa_idx = getelementptr inbounds nuw i8, ptr %320, i64 48 %.sroa.211.0.copyload = load i32, ptr %.sroa.211.0..sroa_idx, align 8 - %323 = add nuw nsw i32 %3, 1 - %324 = call noundef zeroext i1 @_ZNK4llvm12SelectionDAG16isKnownNeverZeroENS_7SDValueEj(ptr noundef nonnull align 8 dereferenceable(904) %0, ptr %.sroa.010.0.copyload, i32 %.sroa.211.0.copyload, i32 noundef %323) - br i1 %324, label %325, label %368 - -325: ; preds = %.critedge2 - %326 = load ptr, ptr %320, align 8 - %.sroa.07.0.copyload = load ptr, ptr %326, align 8 - %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %326, i64 8 + %322 = add nuw nsw i32 %3, 1 + %323 = call noundef zeroext i1 @_ZNK4llvm12SelectionDAG16isKnownNeverZeroENS_7SDValueEj(ptr noundef nonnull align 8 dereferenceable(904) %0, ptr %.sroa.010.0.copyload, i32 %.sroa.211.0.copyload, i32 noundef %322) + br i1 %323, label %324, label %367 + +324: ; preds = %.critedge2 + %325 = load ptr, ptr %319, align 8 + %.sroa.07.0.copyload = load ptr, ptr %325, align 8 + %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %325, i64 8 %.sroa.28.0.copyload = load i32, ptr %.sroa.28.0..sroa_idx, align 8 - %327 = call noundef zeroext i1 @_ZNK4llvm12SelectionDAG16isKnownNeverZeroENS_7SDValueEj(ptr noundef nonnull align 8 dereferenceable(904) %0, ptr %.sroa.07.0.copyload, i32 %.sroa.28.0.copyload, i32 noundef %323) - br i1 %327, label %_ZN4llvm9KnownBitsD2Ev.exit, label %368 - -328: ; preds = %41, %41 - %329 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %330 = load ptr, ptr %329, align 8 - %.sroa.04.0.copyload = load ptr, ptr %330, align 8 - %.sroa.25.0..sroa_idx = getelementptr inbounds nuw i8, ptr %330, i64 8 + %326 = call noundef zeroext i1 @_ZNK4llvm12SelectionDAG16isKnownNeverZeroENS_7SDValueEj(ptr noundef nonnull align 8 dereferenceable(904) %0, ptr %.sroa.07.0.copyload, i32 %.sroa.28.0.copyload, i32 noundef %322) + br i1 %326, label %_ZN4llvm9KnownBitsD2Ev.exit, label %367 + +327: ; preds = %41, %41 + %328 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %329 = load ptr, ptr %328, align 8 + %.sroa.04.0.copyload = load ptr, ptr %329, align 8 + %.sroa.25.0..sroa_idx = getelementptr inbounds nuw i8, ptr %329, i64 8 %.sroa.25.0.copyload = load i32, ptr %.sroa.25.0..sroa_idx, align 8 - %331 = add nuw nsw i32 %3, 1 - %332 = call noundef zeroext i1 @_ZNK4llvm12SelectionDAG16isKnownNeverZeroENS_7SDValueEj(ptr noundef nonnull align 8 dereferenceable(904) %0, ptr %.sroa.04.0.copyload, i32 %.sroa.25.0.copyload, i32 noundef %331) + %330 = add nuw nsw i32 %3, 1 + %331 = call noundef zeroext i1 @_ZNK4llvm12SelectionDAG16isKnownNeverZeroENS_7SDValueEj(ptr noundef nonnull align 8 dereferenceable(904) %0, ptr %.sroa.04.0.copyload, i32 %.sroa.25.0.copyload, i32 noundef %330) br label %_ZN4llvm9KnownBitsD2Ev.exit -333: ; preds = %41 - %334 = getelementptr inbounds nuw i8, ptr %0, i64 40 +332: ; preds = %41 + %333 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %334 = load ptr, ptr %333, align 8 %335 = load ptr, ptr %334, align 8 - %336 = load ptr, ptr %335, align 8 - %337 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %336 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %337 = load ptr, ptr %336, align 8 %338 = load ptr, ptr %337, align 8 - %339 = load ptr, ptr %338, align 8 - %340 = getelementptr inbounds nuw i8, ptr %339, i64 88 - %341 = load ptr, ptr %340, align 8 - %342 = getelementptr inbounds nuw i8, ptr %341, i64 24 - %343 = call noundef i64 @_ZNK4llvm7SDValue24getScalarValueSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(12) %6) - %344 = trunc i64 %343 to i32 - call void @_ZN4llvm14getVScaleRangeEPKNS_8FunctionEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::ConstantRange") align 8 %23, ptr noundef nonnull %336, i32 noundef %344) #32 - %345 = getelementptr inbounds nuw i8, ptr %25, i64 8 - %346 = getelementptr inbounds nuw i8, ptr %341, i64 32 - %347 = load i32, ptr %346, align 8 - store i32 %347, ptr %345, align 8 - %348 = icmp ult i32 %347, 65 - br i1 %348, label %349, label %351 - -349: ; preds = %333 - %350 = load i64, ptr %342, align 8 - store i64 %350, ptr %25, align 8 + %339 = getelementptr inbounds nuw i8, ptr %338, i64 88 + %340 = load ptr, ptr %339, align 8 + %341 = getelementptr inbounds nuw i8, ptr %340, i64 24 + %342 = call noundef i64 @_ZNK4llvm7SDValue24getScalarValueSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(12) %6) + %343 = trunc i64 %342 to i32 + call void @_ZN4llvm14getVScaleRangeEPKNS_8FunctionEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::ConstantRange") align 8 %23, ptr noundef nonnull %335, i32 noundef %343) #32 + %344 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %345 = getelementptr inbounds nuw i8, ptr %340, i64 32 + %346 = load i32, ptr %345, align 8 + store i32 %346, ptr %344, align 8 + %347 = icmp ult i32 %346, 65 + br i1 %347, label %348, label %350 + +348: ; preds = %332 + %349 = load i64, ptr %341, align 8 + store i64 %349, ptr %25, align 8 br label %_ZN4llvm5APIntC2ERKS0_.exit -351: ; preds = %333 - call void @_ZN4llvm5APInt12initSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %25, ptr noundef nonnull align 8 dereferenceable(12) %342) #32 +350: ; preds = %332 + call void @_ZN4llvm5APInt12initSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %25, ptr noundef nonnull align 8 dereferenceable(12) %341) #32 br label %_ZN4llvm5APIntC2ERKS0_.exit -_ZN4llvm5APIntC2ERKS0_.exit: ; preds = %349, %351 +_ZN4llvm5APIntC2ERKS0_.exit: ; preds = %348, %350 call void @_ZN4llvm13ConstantRangeC1ENS_5APIntE(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull %25) #32 call void @_ZNK4llvm13ConstantRange8multiplyERKS0_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::ConstantRange") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %24) #32 call void @_ZN4llvm13ConstantRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #32 - %352 = load i32, ptr %345, align 8 - %353 = icmp ugt i32 %352, 64 - br i1 %353, label %354, label %_ZN4llvm5APIntD2Ev.exit177 + %351 = load i32, ptr %344, align 8 + %352 = icmp ugt i32 %351, 64 + br i1 %352, label %353, label %_ZN4llvm5APIntD2Ev.exit177 -354: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit - %355 = load ptr, ptr %25, align 8 - %356 = icmp eq ptr %355, null - br i1 %356, label %_ZN4llvm5APIntD2Ev.exit177, label %357 +353: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit + %354 = load ptr, ptr %25, align 8 + %355 = icmp eq ptr %354, null + br i1 %355, label %_ZN4llvm5APIntD2Ev.exit177, label %356 -357: ; preds = %354 - call void @_ZdaPv(ptr noundef nonnull %355) #35 +356: ; preds = %353 + call void @_ZdaPv(ptr noundef nonnull %354) #35 br label %_ZN4llvm5APIntD2Ev.exit177 -_ZN4llvm5APIntD2Ev.exit177: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit, %354, %357 +_ZN4llvm5APIntD2Ev.exit177: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit, %353, %356 call void @_ZN4llvm13ConstantRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #32 - %358 = getelementptr inbounds nuw i8, ptr %22, i64 8 - %359 = load i32, ptr %358, align 8 - call void @_ZN4llvm5APIntC2Ejmbb(ptr noundef nonnull align 8 dereferenceable(12) %26, i32 noundef %359, i64 noundef 0, i1 noundef zeroext false, i1 noundef zeroext true) - %360 = call noundef zeroext i1 @_ZNK4llvm13ConstantRange8containsERKNS_5APIntE(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(12) %26) #32 - %361 = getelementptr inbounds nuw i8, ptr %26, i64 8 - %362 = load i32, ptr %361, align 8 - %363 = icmp ugt i32 %362, 64 - br i1 %363, label %364, label %_ZN4llvm5APIntD2Ev.exit178 - -364: ; preds = %_ZN4llvm5APIntD2Ev.exit177 - %365 = load ptr, ptr %26, align 8 - %366 = icmp eq ptr %365, null - br i1 %366, label %_ZN4llvm5APIntD2Ev.exit178, label %367 - -367: ; preds = %364 - call void @_ZdaPv(ptr noundef nonnull %365) #35 + %357 = getelementptr inbounds nuw i8, ptr %22, i64 8 + %358 = load i32, ptr %357, align 8 + call void @_ZN4llvm5APIntC2Ejmbb(ptr noundef nonnull align 8 dereferenceable(12) %26, i32 noundef %358, i64 noundef 0, i1 noundef zeroext false, i1 noundef zeroext true) + %359 = call noundef zeroext i1 @_ZNK4llvm13ConstantRange8containsERKNS_5APIntE(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(12) %26) #32 + %360 = getelementptr inbounds nuw i8, ptr %26, i64 8 + %361 = load i32, ptr %360, align 8 + %362 = icmp ugt i32 %361, 64 + br i1 %362, label %363, label %_ZN4llvm5APIntD2Ev.exit178 + +363: ; preds = %_ZN4llvm5APIntD2Ev.exit177 + %364 = load ptr, ptr %26, align 8 + %365 = icmp eq ptr %364, null + br i1 %365, label %_ZN4llvm5APIntD2Ev.exit178, label %366 + +366: ; preds = %363 + call void @_ZdaPv(ptr noundef nonnull %364) #35 br label %_ZN4llvm5APIntD2Ev.exit178 -_ZN4llvm5APIntD2Ev.exit178: ; preds = %_ZN4llvm5APIntD2Ev.exit177, %364, %367 +_ZN4llvm5APIntD2Ev.exit178: ; preds = %_ZN4llvm5APIntD2Ev.exit177, %363, %366 call void @_ZN4llvm13ConstantRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #32 - br i1 %360, label %_ZN4llvm5APIntD2Ev.exit178._crit_edge, label %_ZN4llvm9KnownBitsD2Ev.exit + br i1 %359, label %_ZN4llvm5APIntD2Ev.exit178._crit_edge, label %_ZN4llvm9KnownBitsD2Ev.exit _ZN4llvm5APIntD2Ev.exit178._crit_edge: ; preds = %_ZN4llvm5APIntD2Ev.exit178 %.sroa.0.0.copyload.pre = load ptr, ptr %6, align 8 %.sroa.2.0.copyload.pre = load i32, ptr %28, align 8 - br label %368 + br label %367 -368: ; preds = %_ZN4llvm5APIntD2Ev.exit178._crit_edge, %_ZN4llvm5APIntD2Ev.exit172, %_ZN4llvm5APIntD2Ev.exit159, %318, %325, %.critedge2, %288, %297, %280, %41 - %.sroa.2.0.copyload = phi i32 [ %.sroa.2.0.copyload.pre, %_ZN4llvm5APIntD2Ev.exit178._crit_edge ], [ %2, %_ZN4llvm5APIntD2Ev.exit172 ], [ %2, %_ZN4llvm5APIntD2Ev.exit159 ], [ %2, %318 ], [ %2, %325 ], [ %2, %.critedge2 ], [ %2, %288 ], [ %2, %297 ], [ %2, %280 ], [ %2, %41 ] - %.sroa.0.0.copyload = phi ptr [ %.sroa.0.0.copyload.pre, %_ZN4llvm5APIntD2Ev.exit178._crit_edge ], [ %1, %_ZN4llvm5APIntD2Ev.exit172 ], [ %1, %_ZN4llvm5APIntD2Ev.exit159 ], [ %1, %318 ], [ %1, %325 ], [ %1, %.critedge2 ], [ %1, %288 ], [ %1, %297 ], [ %1, %280 ], [ %1, %41 ] +367: ; preds = %_ZN4llvm5APIntD2Ev.exit178._crit_edge, %_ZN4llvm5APIntD2Ev.exit172, %_ZN4llvm5APIntD2Ev.exit159, %317, %324, %.critedge2, %288, %297, %280, %41 + %.sroa.2.0.copyload = phi i32 [ %.sroa.2.0.copyload.pre, %_ZN4llvm5APIntD2Ev.exit178._crit_edge ], [ %2, %_ZN4llvm5APIntD2Ev.exit172 ], [ %2, %_ZN4llvm5APIntD2Ev.exit159 ], [ %2, %317 ], [ %2, %324 ], [ %2, %.critedge2 ], [ %2, %288 ], [ %2, %297 ], [ %2, %280 ], [ %2, %41 ] + %.sroa.0.0.copyload = phi ptr [ %.sroa.0.0.copyload.pre, %_ZN4llvm5APIntD2Ev.exit178._crit_edge ], [ %1, %_ZN4llvm5APIntD2Ev.exit172 ], [ %1, %_ZN4llvm5APIntD2Ev.exit159 ], [ %1, %317 ], [ %1, %324 ], [ %1, %.critedge2 ], [ %1, %288 ], [ %1, %297 ], [ %1, %280 ], [ %1, %41 ] call void @_ZNK4llvm12SelectionDAG16computeKnownBitsENS_7SDValueEj(ptr dead_on_unwind nonnull writable sret(%"struct.llvm::KnownBits") align 8 %27, ptr noundef nonnull align 8 dereferenceable(904) %0, ptr %.sroa.0.0.copyload, i32 %.sroa.2.0.copyload, i32 noundef %3) - %369 = getelementptr inbounds nuw i8, ptr %27, i64 16 - %370 = getelementptr inbounds nuw i8, ptr %27, i64 24 - %371 = load i32, ptr %370, align 8 - %372 = icmp ult i32 %371, 65 - br i1 %372, label %_ZNK4llvm9KnownBits9isNonZeroEv.exit180, label %375 - -_ZNK4llvm9KnownBits9isNonZeroEv.exit180: ; preds = %368 - %373 = load i64, ptr %369, align 8 - %374 = icmp ne i64 %373, 0 + %368 = getelementptr inbounds nuw i8, ptr %27, i64 16 + %369 = getelementptr inbounds nuw i8, ptr %27, i64 24 + %370 = load i32, ptr %369, align 8 + %371 = icmp ult i32 %370, 65 + br i1 %371, label %_ZNK4llvm9KnownBits9isNonZeroEv.exit180, label %374 + +_ZNK4llvm9KnownBits9isNonZeroEv.exit180: ; preds = %367 + %372 = load i64, ptr %368, align 8 + %373 = icmp ne i64 %372, 0 br label %_ZN4llvm5APIntD2Ev.exit.i -375: ; preds = %368 - %376 = call noundef i32 @_ZNK4llvm5APInt25countLeadingZerosSlowCaseEv(ptr noundef nonnull align 8 dereferenceable(12) %369) #34 - %377 = icmp ne i32 %376, %371 - %378 = load ptr, ptr %369, align 8 - %379 = icmp eq ptr %378, null - br i1 %379, label %_ZN4llvm5APIntD2Ev.exit.i, label %380 +374: ; preds = %367 + %375 = call noundef i32 @_ZNK4llvm5APInt25countLeadingZerosSlowCaseEv(ptr noundef nonnull align 8 dereferenceable(12) %368) #34 + %376 = icmp ne i32 %375, %370 + %377 = load ptr, ptr %368, align 8 + %378 = icmp eq ptr %377, null + br i1 %378, label %_ZN4llvm5APIntD2Ev.exit.i, label %379 -380: ; preds = %375 - call void @_ZdaPv(ptr noundef nonnull %378) #35 +379: ; preds = %374 + call void @_ZdaPv(ptr noundef nonnull %377) #35 br label %_ZN4llvm5APIntD2Ev.exit.i -_ZN4llvm5APIntD2Ev.exit.i: ; preds = %_ZNK4llvm9KnownBits9isNonZeroEv.exit180, %380, %375 - %381 = phi i1 [ %377, %380 ], [ %377, %375 ], [ %374, %_ZNK4llvm9KnownBits9isNonZeroEv.exit180 ] - %382 = getelementptr inbounds nuw i8, ptr %27, i64 8 - %383 = load i32, ptr %382, align 8 - %384 = icmp ugt i32 %383, 64 - br i1 %384, label %385, label %_ZN4llvm9KnownBitsD2Ev.exit +_ZN4llvm5APIntD2Ev.exit.i: ; preds = %_ZNK4llvm9KnownBits9isNonZeroEv.exit180, %379, %374 + %380 = phi i1 [ %376, %379 ], [ %376, %374 ], [ %373, %_ZNK4llvm9KnownBits9isNonZeroEv.exit180 ] + %381 = getelementptr inbounds nuw i8, ptr %27, i64 8 + %382 = load i32, ptr %381, align 8 + %383 = icmp ugt i32 %382, 64 + br i1 %383, label %384, label %_ZN4llvm9KnownBitsD2Ev.exit -385: ; preds = %_ZN4llvm5APIntD2Ev.exit.i - %386 = load ptr, ptr %27, align 8 - %387 = icmp eq ptr %386, null - br i1 %387, label %_ZN4llvm9KnownBitsD2Ev.exit, label %388 +384: ; preds = %_ZN4llvm5APIntD2Ev.exit.i + %385 = load ptr, ptr %27, align 8 + %386 = icmp eq ptr %385, null + br i1 %386, label %_ZN4llvm9KnownBitsD2Ev.exit, label %387 -388: ; preds = %385 - call void @_ZdaPv(ptr noundef nonnull %386) #35 +387: ; preds = %384 + call void @_ZdaPv(ptr noundef nonnull %385) #35 br label %_ZN4llvm9KnownBitsD2Ev.exit -_ZN4llvm9KnownBitsD2Ev.exit: ; preds = %308, %388, %385, %_ZN4llvm5APIntD2Ev.exit.i, %_ZN4llvm5APIntD2Ev.exit172.thread, %_ZN4llvm5APIntD2Ev.exit159.thread, %_ZN4llvm5APIntD2Ev.exit178, %325, %291, %297, %_ZN4llvm5APIntD2Ev.exit172, %215, %221, %111, %117, %_ZN4llvm5APIntD2Ev.exit159, %53, %59, %44, %50, %_ZNSt8functionIFbPN4llvm14ConstantSDNodeEEED2Ev.exit, %4, %328, %304, %283, %235, %224, %214, %157, %.critedge - %.0 = phi i1 [ true, %_ZN4llvm5APIntD2Ev.exit178 ], [ %332, %328 ], [ %307, %304 ], [ %287, %283 ], [ %236, %235 ], [ true, %_ZN4llvm5APIntD2Ev.exit172 ], [ %228, %224 ], [ %.5, %214 ], [ %.3, %157 ], [ %71, %.critedge ], [ true, %_ZN4llvm5APIntD2Ev.exit159 ], [ false, %4 ], [ true, %_ZNSt8functionIFbPN4llvm14ConstantSDNodeEEED2Ev.exit ], [ true, %44 ], [ %52, %50 ], [ false, %53 ], [ %62, %59 ], [ true, %111 ], [ %119, %117 ], [ false, %215 ], [ %223, %221 ], [ true, %297 ], [ true, %291 ], [ true, %325 ], [ true, %_ZN4llvm5APIntD2Ev.exit159.thread ], [ true, %_ZN4llvm5APIntD2Ev.exit172.thread ], [ %381, %_ZN4llvm5APIntD2Ev.exit.i ], [ %381, %385 ], [ %381, %388 ], [ %spec.select, %308 ] +_ZN4llvm9KnownBitsD2Ev.exit: ; preds = %308, %387, %384, %_ZN4llvm5APIntD2Ev.exit.i, %_ZN4llvm5APIntD2Ev.exit172.thread, %_ZN4llvm5APIntD2Ev.exit159.thread, %_ZN4llvm5APIntD2Ev.exit178, %324, %291, %297, %_ZN4llvm5APIntD2Ev.exit172, %215, %221, %111, %117, %_ZN4llvm5APIntD2Ev.exit159, %53, %59, %44, %50, %_ZNSt8functionIFbPN4llvm14ConstantSDNodeEEED2Ev.exit, %4, %327, %304, %283, %235, %224, %214, %157, %.critedge + %.0 = phi i1 [ true, %_ZN4llvm5APIntD2Ev.exit178 ], [ %331, %327 ], [ %307, %304 ], [ %287, %283 ], [ %236, %235 ], [ true, %_ZN4llvm5APIntD2Ev.exit172 ], [ %228, %224 ], [ %.5, %214 ], [ %.3, %157 ], [ %71, %.critedge ], [ true, %_ZN4llvm5APIntD2Ev.exit159 ], [ false, %4 ], [ true, %_ZNSt8functionIFbPN4llvm14ConstantSDNodeEEED2Ev.exit ], [ true, %44 ], [ %52, %50 ], [ false, %53 ], [ %62, %59 ], [ true, %111 ], [ %119, %117 ], [ false, %215 ], [ %223, %221 ], [ true, %297 ], [ true, %291 ], [ true, %324 ], [ true, %_ZN4llvm5APIntD2Ev.exit159.thread ], [ true, %_ZN4llvm5APIntD2Ev.exit172.thread ], [ %380, %_ZN4llvm5APIntD2Ev.exit.i ], [ %380, %384 ], [ %380, %387 ], [ %spec.select, %308 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/SimpleStreamChecker.cpp.ll b/bench/llvm/optimized/SimpleStreamChecker.cpp.ll index c908d016776..fa573b0e930 100644 --- a/bench/llvm/optimized/SimpleStreamChecker.cpp.ll +++ b/bench/llvm/optimized/SimpleStreamChecker.cpp.ll @@ -3661,8 +3661,8 @@ _ZNK4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_1 call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(176) %11, ptr noundef nonnull %35, i64 noundef 20) #17 br label %36 -36: ; preds = %105, %_ZNK4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEE5beginEv.exit.i - %.sroa.045.0.i = phi ptr [ %16, %_ZNK4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEE5beginEv.exit.i ], [ %.sroa.045.1.i, %105 ] +36: ; preds = %102, %_ZNK4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEE5beginEv.exit.i + %.sroa.045.0.i = phi ptr [ %16, %_ZNK4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEE5beginEv.exit.i ], [ %.sroa.045.1.i, %102 ] %37 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %10) #17 %38 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(176) %11) #17 %.not.i.i.i.i.i19.i = icmp eq i64 %37, %38 @@ -3757,7 +3757,7 @@ _ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12 _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i: ; preds = %67, %_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE.exit.i.i %.not.i = icmp eq ptr %64, null - br i1 %.not.i, label %_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i, label %107 + br i1 %.not.i, label %_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i, label %104 _ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.thread.i: ; preds = %_ZNK4llvm20iterator_facade_baseINS_20ImutAVLValueIteratorINS_12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS7_S9_EEEEEESt26bidirectional_iterator_tagKSt4pairIS7_S9_ElPSH_RSH_EneERKSD_.exit.i, %36 %68 = load ptr, ptr %10, align 8 @@ -3814,137 +3814,135 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i26.i: _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.i: ; preds = %88, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i.i26.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.045.0.i) #17 - %89 = and i16 %86, 256 - %90 = icmp ne i16 %89, 0 - %91 = trunc i16 %86 to i1 - %92 = and i1 %90, %91 + %89 = and i16 %86, 257 + %.not65.i = icmp eq i16 %89, 257 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.045.0.i) #17 - br i1 %92, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread.i, label %93 + br i1 %.not65.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread.i, label %90 -93: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.i - %94 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #17 - %95 = add i64 %94, 1 - %96 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE8capacityEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #17 - %.not.i.i.i30.i = icmp ugt i64 %95, %96 - br i1 %.not.i.i.i30.i, label %97, label %_ZN4llvm23SmallVectorTemplateBaseIPKN5clang4ento7SymExprELb1EE9push_backES5_.exit.i +90: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.i + %91 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #17 + %92 = add i64 %91, 1 + %93 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE8capacityEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #17 + %.not.i.i.i30.i = icmp ugt i64 %92, %93 + br i1 %.not.i.i.i30.i, label %94, label %_ZN4llvm23SmallVectorTemplateBaseIPKN5clang4ento7SymExprELb1EE9push_backES5_.exit.i -97: ; preds = %93 - call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull %18, i64 noundef %95, i64 noundef 8) #17 +94: ; preds = %90 + call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull %18, i64 noundef %92, i64 noundef 8) #17 br label %_ZN4llvm23SmallVectorTemplateBaseIPKN5clang4ento7SymExprELb1EE9push_backES5_.exit.i -_ZN4llvm23SmallVectorTemplateBaseIPKN5clang4ento7SymExprELb1EE9push_backES5_.exit.i: ; preds = %97, %93 - %98 = load ptr, ptr %9, align 8 +_ZN4llvm23SmallVectorTemplateBaseIPKN5clang4ento7SymExprELb1EE9push_backES5_.exit.i: ; preds = %94, %90 + %95 = load ptr, ptr %9, align 8 + %96 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #17 + %97 = getelementptr inbounds ptr, ptr %95, i64 %96 + %98 = ptrtoint ptr %.sroa.040.0.copyload.i to i64 + store i64 %98, ptr %97, align 1 %99 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #17 - %100 = getelementptr inbounds ptr, ptr %98, i64 %99 - %101 = ptrtoint ptr %.sroa.040.0.copyload.i to i64 - store i64 %101, ptr %100, align 1 - %102 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #17 - %103 = add i64 %102, 1 - call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %103) #17 + %100 = add i64 %99, 1 + call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %100) #17 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread.i _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPKN5clang4ento7SymExprELb1EE9push_backES5_.exit.i, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.i, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread61.i, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit25.i - br i1 %76, label %105, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit32.i + br i1 %76, label %102, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit32.i _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit32.i: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread.i call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_19StreamMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %12, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.045.0.i, ptr noundef %.sroa.040.0.copyload.i) - %104 = load ptr, ptr %12, align 8 + %101 = load ptr, ptr %12, align 8 store ptr %.sroa.045.0.i, ptr %12, align 8 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.045.0.i) #17 - br label %105 + br label %102 -105: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit32.i, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread.i - %.sroa.045.1.i = phi ptr [ %104, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit32.i ], [ %.sroa.045.0.i, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread.i ] - %106 = call fastcc noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %10) +102: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit32.i, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread.i + %.sroa.045.1.i = phi ptr [ %101, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit32.i ], [ %.sroa.045.0.i, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit29.thread.i ] + %103 = call fastcc noundef nonnull align 8 dereferenceable(176) ptr @_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateEEEEppEv(ptr noundef nonnull align 8 dereferenceable(176) %10) br label %36 -107: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i - %108 = load ptr, ptr %9, align 8 - %109 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #17 - %110 = getelementptr inbounds ptr, ptr %108, i64 %109 - %.not15.i.i = icmp eq i64 %109, 0 +104: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i + %105 = load ptr, ptr %9, align 8 + %106 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #17 + %107 = getelementptr inbounds ptr, ptr %105, i64 %106 + %.not15.i.i = icmp eq i64 %106, 0 br i1 %.not15.i.i, label %_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i, label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %107 - %111 = getelementptr inbounds nuw i8, ptr %0, i64 264 - %112 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %113 = getelementptr inbounds nuw i8, ptr %5, i64 40 - %114 = getelementptr inbounds nuw i8, ptr %2, i64 16 - br label %115 - -115: ; preds = %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i, %.lr.ph.i.i - %.016.i.i = phi ptr [ %108, %.lr.ph.i.i ], [ %128, %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i ] - %116 = load ptr, ptr %.016.i.i, align 8 - %117 = call noalias noundef nonnull dereferenceable(1016) ptr @_Znwm(i64 noundef 1016) #16, !noalias !69 +.lr.ph.i.i: ; preds = %104 + %108 = getelementptr inbounds nuw i8, ptr %0, i64 264 + %109 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %110 = getelementptr inbounds nuw i8, ptr %5, i64 40 + %111 = getelementptr inbounds nuw i8, ptr %2, i64 16 + br label %112 + +112: ; preds = %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i, %.lr.ph.i.i + %.016.i.i = phi ptr [ %105, %.lr.ph.i.i ], [ %125, %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i ] + %113 = load ptr, ptr %.016.i.i, align 8 + %114 = call noalias noundef nonnull dereferenceable(1016) ptr @_Znwm(i64 noundef 1016) #16, !noalias !69 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5), !noalias !69 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, i8 0, i64 64, i1 false), !noalias !69 store i32 1, ptr %5, align 8, !noalias !69 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %112, i8 0, i64 28, i1 false), !noalias !69 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %113, i8 0, i64 17, i1 false), !noalias !69 - call void @_ZN5clang4ento22PathSensitiveBugReportC2ERKNS0_7BugTypeEN4llvm9StringRefES6_PKNS0_12ExplodedNodeENS0_22PathDiagnosticLocationEPKNS_4DeclE(ptr noundef nonnull align 8 dereferenceable(1016) %117, ptr noundef nonnull align 8 dereferenceable(97) %111, ptr nonnull @.str.7, i64 52, ptr nonnull @.str.7, i64 52, ptr noundef nonnull %64, ptr noundef nonnull byval(%"class.clang::ento::PathDiagnosticLocation") align 8 %5, ptr noundef null) #17, !noalias !69 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %109, i8 0, i64 28, i1 false), !noalias !69 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %110, i8 0, i64 17, i1 false), !noalias !69 + call void @_ZN5clang4ento22PathSensitiveBugReportC2ERKNS0_7BugTypeEN4llvm9StringRefES6_PKNS0_12ExplodedNodeENS0_22PathDiagnosticLocationEPKNS_4DeclE(ptr noundef nonnull align 8 dereferenceable(1016) %114, ptr noundef nonnull align 8 dereferenceable(97) %108, ptr nonnull @.str.7, i64 52, ptr nonnull @.str.7, i64 52, ptr noundef nonnull %64, ptr noundef nonnull byval(%"class.clang::ento::PathDiagnosticLocation") align 8 %5, ptr noundef null) #17, !noalias !69 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5), !noalias !69 - call void @_ZN5clang4ento22PathSensitiveBugReport15markInterestingEPKNS0_7SymExprENS0_11bugreporter12TrackingKindE(ptr noundef nonnull align 8 dereferenceable(1016) %117, ptr noundef %116, i32 noundef 0) #17 + call void @_ZN5clang4ento22PathSensitiveBugReport15markInterestingEPKNS0_7SymExprENS0_11bugreporter12TrackingKindE(ptr noundef nonnull align 8 dereferenceable(1016) %114, ptr noundef %113, i32 noundef 0) #17 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) - store i8 1, ptr %114, align 8 - %118 = load ptr, ptr %2, align 8 - %119 = getelementptr inbounds nuw i8, ptr %118, i64 656 - %120 = ptrtoint ptr %117 to i64 - store i64 %120, ptr %4, align 8 - %121 = load ptr, ptr %119, align 8 - %122 = getelementptr inbounds nuw i8, ptr %121, i64 16 - %123 = load ptr, ptr %122, align 8 - call void %123(ptr noundef nonnull align 8 dereferenceable(120) %119, ptr noundef nonnull %4) #17 - %124 = load ptr, ptr %4, align 8 - %.not.i.i.i33.i = icmp eq ptr %124, null + store i8 1, ptr %111, align 8 + %115 = load ptr, ptr %2, align 8 + %116 = getelementptr inbounds nuw i8, ptr %115, i64 656 + %117 = ptrtoint ptr %114 to i64 + store i64 %117, ptr %4, align 8 + %118 = load ptr, ptr %116, align 8 + %119 = getelementptr inbounds nuw i8, ptr %118, i64 16 + %120 = load ptr, ptr %119, align 8 + call void %120(ptr noundef nonnull align 8 dereferenceable(120) %116, ptr noundef nonnull %4) #17 + %121 = load ptr, ptr %4, align 8 + %.not.i.i.i33.i = icmp eq ptr %121, null br i1 %.not.i.i.i33.i, label %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i.i -_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i.i: ; preds = %115 - %125 = load ptr, ptr %124, align 8 - %126 = getelementptr inbounds nuw i8, ptr %125, i64 8 - %127 = load ptr, ptr %126, align 8 - call void %127(ptr noundef nonnull align 8 dereferenceable(488) %124) #17 +_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i.i: ; preds = %112 + %122 = load ptr, ptr %121, align 8 + %123 = getelementptr inbounds nuw i8, ptr %122, i64 8 + %124 = load ptr, ptr %123, align 8 + call void %124(ptr noundef nonnull align 8 dereferenceable(488) %121) #17 br label %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i -_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i: ; preds = %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i.i, %115 +_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i: ; preds = %_ZNKSt14default_deleteIN5clang4ento9BugReportEEclEPS2_.exit.i.i.i.i, %112 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) - %128 = getelementptr inbounds nuw i8, ptr %.016.i.i, i64 8 - %.not.i.i = icmp eq ptr %128, %110 - br i1 %.not.i.i, label %_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i, label %115 + %125 = getelementptr inbounds nuw i8, ptr %.016.i.i, i64 8 + %.not.i.i = icmp eq ptr %125, %107 + br i1 %.not.i.i, label %_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i, label %112 -_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i: ; preds = %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i, %107, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i +_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i: ; preds = %_ZNSt10unique_ptrIN5clang4ento22PathSensitiveBugReportESt14default_deleteIS2_EED2Ev.exit.i.i, %104, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i %.not.i.i.i34.i = icmp eq ptr %.sroa.044.0.i, null - br i1 %.not.i.i.i34.i, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i, label %129 + br i1 %.not.i.i.i34.i, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i, label %126 -129: ; preds = %_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i - %130 = getelementptr inbounds nuw i8, ptr %.sroa.044.0.i, i64 68 - %131 = load i32, ptr %130, align 4 - %132 = add i32 %131, -1 - store i32 %132, ptr %130, align 4 - %133 = icmp eq i32 %132, 0 - br i1 %133, label %134, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i +126: ; preds = %_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i + %127 = getelementptr inbounds nuw i8, ptr %.sroa.044.0.i, i64 68 + %128 = load i32, ptr %127, align 4 + %129 = add i32 %128, -1 + store i32 %129, ptr %127, align 4 + %130 = icmp eq i32 %129, 0 + br i1 %130, label %131, label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i -134: ; preds = %129 +131: ; preds = %126 call fastcc void @_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateEEEE7destroyEv(ptr noundef nonnull align 8 dereferenceable(72) %.sroa.044.0.i) br label %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i -_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i: ; preds = %134, %129, %_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i - %135 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %9) #17 - %136 = load ptr, ptr %9, align 8 - %137 = icmp eq ptr %136, %18 - br i1 %137, label %_ZN4llvm11SmallVectorIPKN5clang4ento7SymExprELj2EED2Ev.exit.i, label %138 +_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i: ; preds = %131, %126, %_ZNK12_GLOBAL__N_119SimpleStreamChecker11reportLeaksEN4llvm8ArrayRefIPKN5clang4ento7SymExprEEERNS4_14CheckerContextEPNS4_12ExplodedNodeE.exit.i + %132 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %9) #17 + %133 = load ptr, ptr %9, align 8 + %134 = icmp eq ptr %133, %18 + br i1 %134, label %_ZN4llvm11SmallVectorIPKN5clang4ento7SymExprELj2EED2Ev.exit.i, label %135 -138: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i - call void @free(ptr noundef %136) #17 +135: ; preds = %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i + call void @free(ptr noundef %133) #17 br label %_ZN4llvm11SmallVectorIPKN5clang4ento7SymExprELj2EED2Ev.exit.i -_ZN4llvm11SmallVectorIPKN5clang4ento7SymExprELj2EED2Ev.exit.i: ; preds = %138, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i - br i1 %.not.i.i21.i, label %_ZNK12_GLOBAL__N_119SimpleStreamChecker16checkDeadSymbolsERN5clang4ento12SymbolReaperERNS2_14CheckerContextE.exit, label %139 +_ZN4llvm11SmallVectorIPKN5clang4ento7SymExprELj2EED2Ev.exit.i: ; preds = %135, %_ZN4llvm12ImmutableMapIPKN5clang4ento7SymExprEN12_GLOBAL__N_111StreamStateENS_16ImutKeyValueInfoIS5_S7_EEED2Ev.exit.i + br i1 %.not.i.i21.i, label %_ZNK12_GLOBAL__N_119SimpleStreamChecker16checkDeadSymbolsERN5clang4ento12SymbolReaperERNS2_14CheckerContextE.exit, label %136 -139: ; preds = %_ZN4llvm11SmallVectorIPKN5clang4ento7SymExprELj2EED2Ev.exit.i +136: ; preds = %_ZN4llvm11SmallVectorIPKN5clang4ento7SymExprELj2EED2Ev.exit.i call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.045.0.i) #17 br label %_ZNK12_GLOBAL__N_119SimpleStreamChecker16checkDeadSymbolsERN5clang4ento12SymbolReaperERNS2_14CheckerContextE.exit -_ZNK12_GLOBAL__N_119SimpleStreamChecker16checkDeadSymbolsERN5clang4ento12SymbolReaperERNS2_14CheckerContextE.exit: ; preds = %_ZN4llvm11SmallVectorIPKN5clang4ento7SymExprELj2EED2Ev.exit.i, %139 +_ZNK12_GLOBAL__N_119SimpleStreamChecker16checkDeadSymbolsERN5clang4ento12SymbolReaperERNS2_14CheckerContextE.exit: ; preds = %_ZN4llvm11SmallVectorIPKN5clang4ento7SymExprELj2EED2Ev.exit.i, %136 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %11) diff --git a/bench/llvm/optimized/StackSafetyAnalysis.cpp.ll b/bench/llvm/optimized/StackSafetyAnalysis.cpp.ll index 78aaced06ee..cf0ac4b642b 100644 --- a/bench/llvm/optimized/StackSafetyAnalysis.cpp.ll +++ b/bench/llvm/optimized/StackSafetyAnalysis.cpp.ll @@ -13539,54 +13539,50 @@ _ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exi %72 = call noundef ptr @_ZN4llvm15ScalarEvolution12getMinusSCEVEPKNS_4SCEVES3_NS1_11NoWrapFlagsEj(ptr noundef nonnull align 8 dereferenceable(1392) %67, ptr noundef %70, ptr noundef %71, i32 noundef 0, i32 noundef 0) #25 %73 = load ptr, ptr %53, align 8 %74 = call i16 @_ZN4llvm15ScalarEvolution19evaluatePredicateAtENS_7CmpInst9PredicateEPKNS_4SCEVES5_PKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(1392) %73, i32 noundef 39, ptr noundef %55, ptr noundef %66, ptr noundef %10) #25 - %75 = and i16 %74, 256 - %.not43 = icmp ne i16 %75, 0 - %76 = trunc i16 %74 to i1 - %.0.i28 = and i1 %.not43, %76 - br i1 %.0.i28, label %77, label %82 - -77: ; preds = %57 - %78 = load ptr, ptr %53, align 8 - %79 = call i16 @_ZN4llvm15ScalarEvolution19evaluatePredicateAtENS_7CmpInst9PredicateEPKNS_4SCEVES5_PKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(1392) %78, i32 noundef 41, ptr noundef %55, ptr noundef %72, ptr noundef %10) #25 - %80 = and i16 %79, 256 - %.not44 = icmp ne i16 %80, 0 - %81 = trunc i16 %79 to i1 - %.0.i32 = and i1 %.not44, %81 - br label %82 - -82: ; preds = %77, %57 - %83 = phi i1 [ false, %57 ], [ %.0.i32, %77 ] - %84 = getelementptr inbounds nuw i8, ptr %5, i64 24 - %85 = load i32, ptr %84, align 8 - %86 = icmp ugt i32 %85, 64 - br i1 %86, label %87, label %_ZN4llvm5APIntD2Ev.exit.i + %75 = and i16 %74, 257 + %.0.i28 = icmp eq i16 %75, 257 + br i1 %.0.i28, label %76, label %80 + +76: ; preds = %57 + %77 = load ptr, ptr %53, align 8 + %78 = call i16 @_ZN4llvm15ScalarEvolution19evaluatePredicateAtENS_7CmpInst9PredicateEPKNS_4SCEVES5_PKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(1392) %77, i32 noundef 41, ptr noundef %55, ptr noundef %72, ptr noundef %10) #25 + %79 = and i16 %78, 257 + %.0.i32 = icmp eq i16 %79, 257 + br label %80 + +80: ; preds = %76, %57 + %81 = phi i1 [ false, %57 ], [ %.0.i32, %76 ] + %82 = getelementptr inbounds nuw i8, ptr %5, i64 24 + %83 = load i32, ptr %82, align 8 + %84 = icmp ugt i32 %83, 64 + br i1 %84, label %85, label %_ZN4llvm5APIntD2Ev.exit.i -87: ; preds = %82 - %88 = load ptr, ptr %68, align 8 - %89 = icmp eq ptr %88, null - br i1 %89, label %_ZN4llvm5APIntD2Ev.exit.i, label %90 +85: ; preds = %80 + %86 = load ptr, ptr %68, align 8 + %87 = icmp eq ptr %86, null + br i1 %87, label %_ZN4llvm5APIntD2Ev.exit.i, label %88 -90: ; preds = %87 - call void @_ZdaPv(ptr noundef nonnull %88) #26 +88: ; preds = %85 + call void @_ZdaPv(ptr noundef nonnull %86) #26 br label %_ZN4llvm5APIntD2Ev.exit.i -_ZN4llvm5APIntD2Ev.exit.i: ; preds = %90, %87, %82 - %91 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %92 = load i32, ptr %91, align 8 - %93 = icmp ugt i32 %92, 64 - br i1 %93, label %94, label %_ZN4llvm13ConstantRangeD2Ev.exit +_ZN4llvm5APIntD2Ev.exit.i: ; preds = %88, %85, %80 + %89 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %90 = load i32, ptr %89, align 8 + %91 = icmp ugt i32 %90, 64 + br i1 %91, label %92, label %_ZN4llvm13ConstantRangeD2Ev.exit -94: ; preds = %_ZN4llvm5APIntD2Ev.exit.i - %95 = load ptr, ptr %5, align 8 - %96 = icmp eq ptr %95, null - br i1 %96, label %_ZN4llvm13ConstantRangeD2Ev.exit, label %97 +92: ; preds = %_ZN4llvm5APIntD2Ev.exit.i + %93 = load ptr, ptr %5, align 8 + %94 = icmp eq ptr %93, null + br i1 %94, label %_ZN4llvm13ConstantRangeD2Ev.exit, label %95 -97: ; preds = %94 - call void @_ZdaPv(ptr noundef nonnull %95) #26 +95: ; preds = %92 + call void @_ZdaPv(ptr noundef nonnull %93) #26 br label %_ZN4llvm13ConstantRangeD2Ev.exit -_ZN4llvm13ConstantRangeD2Ev.exit: ; preds = %_ZNK4llvm4Type22getPointerAddressSpaceEv.exit.i25, %97, %94, %_ZN4llvm5APIntD2Ev.exit.i, %52, %_ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exit27, %6, %4 - %.0 = phi i1 [ true, %4 ], [ false, %6 ], [ false, %_ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exit27 ], [ false, %52 ], [ %83, %_ZN4llvm5APIntD2Ev.exit.i ], [ %83, %94 ], [ %83, %97 ], [ false, %_ZNK4llvm4Type22getPointerAddressSpaceEv.exit.i25 ] +_ZN4llvm13ConstantRangeD2Ev.exit: ; preds = %_ZNK4llvm4Type22getPointerAddressSpaceEv.exit.i25, %95, %92, %_ZN4llvm5APIntD2Ev.exit.i, %52, %_ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exit27, %6, %4 + %.0 = phi i1 [ true, %4 ], [ false, %6 ], [ false, %_ZN12_GLOBAL__N_124StackSafetyLocalAnalysis16getSCEVAsPointerEPN4llvm5ValueE.exit27 ], [ false, %52 ], [ %81, %_ZN4llvm5APIntD2Ev.exit.i ], [ %81, %92 ], [ %81, %95 ], [ false, %_ZNK4llvm4Type22getPointerAddressSpaceEv.exit.i25 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/TrustNonnullChecker.cpp.ll b/bench/llvm/optimized/TrustNonnullChecker.cpp.ll index d2cf7850112..cb0c93110f1 100644 --- a/bench/llvm/optimized/TrustNonnullChecker.cpp.ll +++ b/bench/llvm/optimized/TrustNonnullChecker.cpp.ll @@ -1256,109 +1256,107 @@ _ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventER %92 = getelementptr inbounds nuw i8, ptr %91, i64 56 %93 = load ptr, ptr %92, align 8 %94 = tail call i16 @_ZNK5clang4ento12ProgramState9isNonNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %93, ptr %.fca.0.extract.i.i, i8 %.fca.1.extract.i.i) #19 - %95 = and i16 %94, 256 - %96 = icmp ne i16 %95, 0 - %97 = trunc i16 %94 to i1 - %98 = and i1 %96, %97 - br i1 %98, label %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.thread15.i, label %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit.i + %95 = and i16 %94, 257 + %96 = icmp eq i16 %95, 257 + br i1 %96, label %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.thread15.i, label %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit.i _ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.thread15.i: ; preds = %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.i, %82, %54 - %99 = tail call { ptr, i8 } @_ZNK5clang4ento9CallEvent14getReturnValueEv(ptr noundef nonnull align 8 dereferenceable(72) %1) #19 - %.fca.1.extract.i = extractvalue { ptr, i8 } %99, 1 - %100 = add i8 %.fca.1.extract.i, -2 - %spec.select.i.i.i.i.i.i = icmp ult i8 %100, 3 - br i1 %spec.select.i.i.i.i.i.i, label %101, label %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit.i - -101: ; preds = %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.thread15.i - %.fca.0.extract.i = extractvalue { ptr, i8 } %99, 0 + %97 = tail call { ptr, i8 } @_ZNK5clang4ento9CallEvent14getReturnValueEv(ptr noundef nonnull align 8 dereferenceable(72) %1) #19 + %.fca.1.extract.i = extractvalue { ptr, i8 } %97, 1 + %98 = add i8 %.fca.1.extract.i, -2 + %spec.select.i.i.i.i.i.i = icmp ult i8 %98, 3 + br i1 %spec.select.i.i.i.i.i.i, label %99, label %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit.i + +99: ; preds = %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.thread15.i + %.fca.0.extract.i = extractvalue { ptr, i8 } %97, 0 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) - %102 = getelementptr inbounds nuw i8, ptr %41, i64 8 + %100 = getelementptr inbounds nuw i8, ptr %41, i64 8 + %101 = load ptr, ptr %100, align 8, !noalias !14 + %102 = getelementptr inbounds nuw i8, ptr %101, i64 104 %103 = load ptr, ptr %102, align 8, !noalias !14 - %104 = getelementptr inbounds nuw i8, ptr %103, i64 104 - %105 = load ptr, ptr %104, align 8, !noalias !14 store ptr %41, ptr %6, align 8, !noalias !14 tail call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull align 8 dereferenceable(48) %41) #19, !noalias !14 - call void @_ZN5clang4ento17ConstraintManager6assumeEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEENS0_11DefinedSValEb(ptr dead_on_unwind nonnull writable sret(%"class.llvm::IntrusiveRefCntPtr.472") align 8 %7, ptr noundef nonnull align 8 dereferenceable(56) %105, ptr noundef nonnull %6, ptr %.fca.0.extract.i, i8 %.fca.1.extract.i, i1 noundef zeroext true) #19 - %106 = load ptr, ptr %6, align 8, !noalias !14 - %.not.i.i.i.i = icmp eq ptr %106, null - br i1 %.not.i.i.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i, label %107 + call void @_ZN5clang4ento17ConstraintManager6assumeEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEENS0_11DefinedSValEb(ptr dead_on_unwind nonnull writable sret(%"class.llvm::IntrusiveRefCntPtr.472") align 8 %7, ptr noundef nonnull align 8 dereferenceable(56) %103, ptr noundef nonnull %6, ptr %.fca.0.extract.i, i8 %.fca.1.extract.i, i1 noundef zeroext true) #19 + %104 = load ptr, ptr %6, align 8, !noalias !14 + %.not.i.i.i.i = icmp eq ptr %104, null + br i1 %.not.i.i.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i, label %105 -107: ; preds = %101 - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %106) #19 +105: ; preds = %99 + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %104) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i: ; preds = %107, %101 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i: ; preds = %105, %99 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - %108 = load ptr, ptr %7, align 8 + %106 = load ptr, ptr %7, align 8 store ptr %41, ptr %7, align 8 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %41) #19 br label %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit.i _ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit.i: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i, %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.thread15.i, %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.i, %79, %_ZNK5clang4Decl14getDeclContextEv.exit.i.i, %57, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i - %.sroa.05.0.i = phi ptr [ %108, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i ], [ %41, %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.i ], [ %41, %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.thread15.i ], [ %41, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i ], [ %41, %57 ], [ %41, %_ZNK5clang4Decl14getDeclContextEv.exit.i.i ], [ %41, %79 ] + %.sroa.05.0.i = phi ptr [ %106, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit.i ], [ %41, %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.i ], [ %41, %_ZNK12_GLOBAL__N_119TrustNonnullChecker12isNonNullPtrERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit.thread15.i ], [ %41, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit.i ], [ %41, %57 ], [ %41, %_ZNK5clang4Decl14getDeclContextEv.exit.i.i ], [ %41, %79 ] %.not.i.i13.i = icmp eq ptr %.sroa.05.0.i, null - br i1 %.not.i.i13.i, label %109, label %.thread.i.i + br i1 %.not.i.i13.i, label %107, label %.thread.i.i .thread.i.i: ; preds = %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit.i call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.05.0.i) #19 - br label %112 + br label %110 -109: ; preds = %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit.i - %110 = load ptr, ptr %38, align 8 - %111 = getelementptr inbounds nuw i8, ptr %110, i64 56 - %.pr.i.i = load ptr, ptr %111, align 8 +107: ; preds = %_ZNK5clang4ento4SVal5getAsINS0_3LocEEESt8optionalIT_Ev.exit.i + %108 = load ptr, ptr %38, align 8 + %109 = getelementptr inbounds nuw i8, ptr %108, i64 56 + %.pr.i.i = load ptr, ptr %109, align 8 %.not.i.i.i16.i = icmp eq ptr %.pr.i.i, null - br i1 %.not.i.i.i16.i, label %_ZNK12_GLOBAL__N_119TrustNonnullChecker13checkPostCallERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit, label %112 + br i1 %.not.i.i.i16.i, label %_ZNK12_GLOBAL__N_119TrustNonnullChecker13checkPostCallERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit, label %110 -112: ; preds = %109, %.thread.i.i - %.sroa.09.0.i = phi ptr [ %.pr.i.i, %109 ], [ %.sroa.05.0.i, %.thread.i.i ] +110: ; preds = %107, %.thread.i.i + %.sroa.09.0.i = phi ptr [ %.pr.i.i, %107 ], [ %.sroa.05.0.i, %.thread.i.i ] call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.09.0.i) #19 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) %.pre.i.i = load ptr, ptr %38, align 8 - %113 = getelementptr inbounds nuw i8, ptr %.pre.i.i, i64 56 - %114 = load ptr, ptr %113, align 8 - %.not.i = icmp eq ptr %.sroa.09.0.i, %114 + %111 = getelementptr inbounds nuw i8, ptr %.pre.i.i, i64 56 + %112 = load ptr, ptr %111, align 8 + %.not.i = icmp eq ptr %.sroa.09.0.i, %112 br i1 %.not.i, label %_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE.exit.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit20.i.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit20.i.i: ; preds = %112 - %115 = getelementptr inbounds nuw i8, ptr %2, i64 16 - store i8 1, ptr %115, align 8 - %116 = getelementptr inbounds nuw i8, ptr %2, i64 24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %116, i64 48, i1 false) - %117 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %118 = load ptr, ptr %117, align 8 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit20.i.i: ; preds = %110 + %113 = getelementptr inbounds nuw i8, ptr %2, i64 16 + store i8 1, ptr %113, align 8 + %114 = getelementptr inbounds nuw i8, ptr %2, i64 24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %114, i64 48, i1 false) + %115 = getelementptr inbounds nuw i8, ptr %2, i64 72 + %116 = load ptr, ptr %115, align 8 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.09.0.i) #19 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) store ptr %.sroa.09.0.i, ptr %4, align 8 call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.09.0.i) #19 - %119 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i, i64 40 - %120 = load i8, ptr %119, align 8 - %121 = trunc i8 %120 to i1 - %122 = call noundef ptr @_ZN5clang4ento11NodeBuilder16generateNodeImplERKNS_12ProgramPointEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPNS0_12ExplodedNodeEb(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull %4, ptr noundef nonnull %.pre.i.i, i1 noundef zeroext %121) #19 - %123 = load ptr, ptr %4, align 8 - %.not.i.i3.i22.i.i = icmp eq ptr %123, null - br i1 %.not.i.i3.i22.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit24.i.i, label %124 - -124: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit20.i.i - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %123) #19 + %117 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.i, i64 40 + %118 = load i8, ptr %117, align 8 + %119 = trunc i8 %118 to i1 + %120 = call noundef ptr @_ZN5clang4ento11NodeBuilder16generateNodeImplERKNS_12ProgramPointEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPNS0_12ExplodedNodeEb(ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull %4, ptr noundef nonnull %.pre.i.i, i1 noundef zeroext %119) #19 + %121 = load ptr, ptr %4, align 8 + %.not.i.i3.i22.i.i = icmp eq ptr %121, null + br i1 %.not.i.i3.i22.i.i, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit24.i.i, label %122 + +122: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit20.i.i + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %121) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit24.i.i -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit24.i.i: ; preds = %124, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit20.i.i +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit24.i.i: ; preds = %122, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit20.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.09.0.i) #19 br label %_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE.exit.i -_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE.exit.i: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit24.i.i, %112 +_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE.exit.i: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit24.i.i, %110 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.09.0.i) #19 - br i1 %.not.i.i13.i, label %_ZNK12_GLOBAL__N_119TrustNonnullChecker13checkPostCallERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit, label %125 + br i1 %.not.i.i13.i, label %_ZNK12_GLOBAL__N_119TrustNonnullChecker13checkPostCallERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit, label %123 -125: ; preds = %_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE.exit.i +123: ; preds = %_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE.exit.i call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.05.0.i) #19 call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sroa.05.0.i) #19 br label %_ZNK12_GLOBAL__N_119TrustNonnullChecker13checkPostCallERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit -_ZNK12_GLOBAL__N_119TrustNonnullChecker13checkPostCallERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit: ; preds = %3, %_ZNK5clang13SourceManager16isInSystemHeaderENS_14SourceLocationE.exit.i.i, %_ZNK5clang13SourceManager16isInSystemHeaderENS_14SourceLocationE.exit.i.i, %25, %31, %33, %_ZNK5clang4ento9CallEvent16isInSystemHeaderEv.exit.i, %109, %_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE.exit.i, %125 +_ZNK12_GLOBAL__N_119TrustNonnullChecker13checkPostCallERKN5clang4ento9CallEventERNS2_14CheckerContextE.exit: ; preds = %3, %_ZNK5clang13SourceManager16isInSystemHeaderENS_14SourceLocationE.exit.i.i, %_ZNK5clang13SourceManager16isInSystemHeaderENS_14SourceLocationE.exit.i.i, %25, %31, %33, %_ZNK5clang4ento9CallEvent16isInSystemHeaderEv.exit.i, %107, %_ZN5clang4ento14CheckerContext13addTransitionEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEEPKNS_15ProgramPointTagE.exit.i, %123 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) ret void } @@ -5542,37 +5540,33 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit: ; preds 70: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit %71 = tail call i16 @_ZNK5clang4ento12ProgramState9isNonNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %69, ptr %.pn11.i, i8 %.pn.i) #19 - %72 = and i16 %71, 256 - %73 = icmp ne i16 %72, 0 - %74 = trunc i16 %71 to i1 - %75 = and i1 %73, %74 - br i1 %75, label %.critedge, label %.critedge2 + %72 = and i16 %71, 257 + %73 = icmp eq i16 %72, 257 + br i1 %73, label %.critedge, label %.critedge2 .critedge45: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit - %76 = tail call i16 @_ZNK5clang4ento12ProgramState6isNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %69, ptr %.pn11.i, i8 %.pn.i) #19 - %77 = and i16 %76, 256 - %78 = icmp ne i16 %77, 0 - %79 = trunc i16 %76 to i1 - %80 = and i1 %78, %79 - br i1 %80, label %.critedge, label %.critedge2 + %74 = tail call i16 @_ZNK5clang4ento12ProgramState6isNullENS0_4SValE(ptr noundef nonnull align 8 dereferenceable(48) %69, ptr %.pn11.i, i8 %.pn.i) #19 + %75 = and i16 %74, 257 + %76 = icmp eq i16 %75, 257 + br i1 %76, label %.critedge, label %.critedge2 .critedge: ; preds = %70, %.critedge45 - %81 = load ptr, ptr %46, align 8 - %82 = load ptr, ptr %81, align 8 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 40 - %84 = load ptr, ptr %83, align 8 - %85 = tail call i64 %84(ptr noundef nonnull align 8 dereferenceable(24) %81) #19 - %86 = and i64 %85, -16 + %77 = load ptr, ptr %46, align 8 + %78 = load ptr, ptr %77, align 8 + %79 = getelementptr inbounds nuw i8, ptr %78, i64 40 + %80 = load ptr, ptr %79, align 8 + %81 = tail call i64 %80(ptr noundef nonnull align 8 dereferenceable(24) %77) #19 + %82 = and i64 %81, -16 + %83 = inttoptr i64 %82 to ptr + %84 = load ptr, ptr %83, align 16 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 8 + %.sroa.0.0.copyload.i.i.i.i.i.i.i60 = load i64, ptr %85, align 8 + %86 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i60, -16 %87 = inttoptr i64 %86 to ptr %88 = load ptr, ptr %87, align 16 - %89 = getelementptr inbounds nuw i8, ptr %88, i64 8 - %.sroa.0.0.copyload.i.i.i.i.i.i.i60 = load i64, ptr %89, align 8 - %90 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i60, -16 - %91 = inttoptr i64 %90 to ptr - %92 = load ptr, ptr %91, align 16 - %93 = getelementptr inbounds nuw i8, ptr %92, i64 16 - %94 = load i8, ptr %93, align 16 - switch i8 %94, label %100 [ + %89 = getelementptr inbounds nuw i8, ptr %88, i64 16 + %90 = load i8, ptr %89, align 16 + switch i8 %90, label %96 [ i8 43, label %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66 i8 42, label %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66 i8 41, label %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66 @@ -5582,82 +5576,82 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEEC2ERKS5_.exit: ; preds ] _ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.i61: ; preds = %.critedge - %95 = load i32, ptr %93, align 16 - %96 = and i32 %95, 267911168 - %97 = icmp eq i32 %96, 252182528 - br i1 %97, label %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66, label %100 + %91 = load i32, ptr %89, align 16 + %92 = and i32 %91, 267911168 + %93 = icmp eq i32 %92, 252182528 + br i1 %93, label %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66, label %96 _ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66: ; preds = %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.i61, %.critedge, %.critedge, %.critedge, %.critedge, %.critedge - %98 = getelementptr inbounds nuw i8, ptr %17, i64 232 - %99 = tail call noundef ptr @_ZN5clang4ento16MemRegionManager17getSymbolicRegionEPKNS0_7SymExprEPKNS0_14MemSpaceRegionE(ptr noundef nonnull align 8 dereferenceable(152) %98, ptr noundef nonnull %81, ptr noundef null) #19 - br label %100 + %94 = getelementptr inbounds nuw i8, ptr %17, i64 232 + %95 = tail call noundef ptr @_ZN5clang4ento16MemRegionManager17getSymbolicRegionEPKNS0_7SymExprEPKNS0_14MemSpaceRegionE(ptr noundef nonnull align 8 dereferenceable(152) %94, ptr noundef nonnull %77, ptr noundef null) #19 + br label %96 -100: ; preds = %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66, %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.i61, %.critedge - %.pn11.i62 = phi ptr [ %99, %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66 ], [ %81, %.critedge ], [ %81, %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.i61 ] +96: ; preds = %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66, %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.i61, %.critedge + %.pn11.i62 = phi ptr [ %95, %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66 ], [ %77, %.critedge ], [ %77, %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.i61 ] %.pn.i63 = phi i8 [ 4, %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.thread.i66 ], [ 9, %.critedge ], [ 9, %_ZN5clang4ento3Loc9isLocTypeENS_8QualTypeE.exit.i61 ] - %101 = load ptr, ptr %2, align 8 + %97 = load ptr, ptr %2, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) - %102 = getelementptr inbounds nuw i8, ptr %101, i64 8 - %103 = load ptr, ptr %102, align 8, !noalias !140 - %104 = getelementptr inbounds nuw i8, ptr %103, i64 104 - %105 = load ptr, ptr %104, align 8, !noalias !140 - store ptr %101, ptr %5, align 8, !noalias !140 - tail call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull align 8 dereferenceable(48) %101) #19, !noalias !140 - call void @_ZN5clang4ento17ConstraintManager6assumeEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEENS0_11DefinedSValEb(ptr dead_on_unwind nonnull writable sret(%"class.llvm::IntrusiveRefCntPtr.472") align 8 %6, ptr noundef nonnull align 8 dereferenceable(56) %105, ptr noundef nonnull %5, ptr %.pn11.i62, i8 %.pn.i63, i1 noundef zeroext %3) #19 - %106 = load ptr, ptr %5, align 8, !noalias !140 - %.not.i.i.i = icmp eq ptr %106, null - br i1 %.not.i.i.i, label %_ZNK5clang4ento12ProgramState6assumeENS0_20DefinedOrUnknownSValEb.exit, label %107 - -107: ; preds = %100 - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %106) #19 + %98 = getelementptr inbounds nuw i8, ptr %97, i64 8 + %99 = load ptr, ptr %98, align 8, !noalias !140 + %100 = getelementptr inbounds nuw i8, ptr %99, i64 104 + %101 = load ptr, ptr %100, align 8, !noalias !140 + store ptr %97, ptr %5, align 8, !noalias !140 + tail call void @_ZN5clang4ento18ProgramStateRetainEPKNS0_12ProgramStateE(ptr noundef nonnull align 8 dereferenceable(48) %97) #19, !noalias !140 + call void @_ZN5clang4ento17ConstraintManager6assumeEN4llvm18IntrusiveRefCntPtrIKNS0_12ProgramStateEEENS0_11DefinedSValEb(ptr dead_on_unwind nonnull writable sret(%"class.llvm::IntrusiveRefCntPtr.472") align 8 %6, ptr noundef nonnull align 8 dereferenceable(56) %101, ptr noundef nonnull %5, ptr %.pn11.i62, i8 %.pn.i63, i1 noundef zeroext %3) #19 + %102 = load ptr, ptr %5, align 8, !noalias !140 + %.not.i.i.i = icmp eq ptr %102, null + br i1 %.not.i.i.i, label %_ZNK5clang4ento12ProgramState6assumeENS0_20DefinedOrUnknownSValEb.exit, label %103 + +103: ; preds = %96 + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %102) #19 br label %_ZNK5clang4ento12ProgramState6assumeENS0_20DefinedOrUnknownSValEb.exit -_ZNK5clang4ento12ProgramState6assumeENS0_20DefinedOrUnknownSValEb.exit: ; preds = %100, %107 +_ZNK5clang4ento12ProgramState6assumeENS0_20DefinedOrUnknownSValEb.exit: ; preds = %96, %103 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - %108 = load ptr, ptr %6, align 8 + %104 = load ptr, ptr %6, align 8 store ptr %67, ptr %6, align 8 - br i1 %.not.i.i59, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit, label %109 + br i1 %.not.i.i59, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit, label %105 -109: ; preds = %_ZNK5clang4ento12ProgramState6assumeENS0_20DefinedOrUnknownSValEb.exit +105: ; preds = %_ZNK5clang4ento12ProgramState6assumeENS0_20DefinedOrUnknownSValEb.exit call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %67) #19 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %_ZNK5clang4ento12ProgramState6assumeENS0_20DefinedOrUnknownSValEb.exit, %109 - %.not19 = icmp eq ptr %108, null - br i1 %.not19, label %110, label %111 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit: ; preds = %_ZNK5clang4ento12ProgramState6assumeENS0_20DefinedOrUnknownSValEb.exit, %105 + %.not19 = icmp eq ptr %104, null + br i1 %.not19, label %106, label %107 -110: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit +106: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit store ptr null, ptr %0, align 8 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit78 -111: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit +107: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit br i1 %3, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit72, label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit76 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit72: ; preds = %111 - call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_121NonNullImplicationMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %7, ptr noundef nonnull align 8 dereferenceable(48) %108, ptr noundef nonnull %1) - %112 = load ptr, ptr %7, align 8 - store ptr %108, ptr %7, align 8 - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %108) #19 - %113 = load ptr, ptr %46, align 8 - call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_118NullImplicationMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %8, ptr noundef nonnull align 8 dereferenceable(48) %112, ptr noundef %113) - %114 = load ptr, ptr %8, align 8 - store ptr %112, ptr %8, align 8 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit72: ; preds = %107 + call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_121NonNullImplicationMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %7, ptr noundef nonnull align 8 dereferenceable(48) %104, ptr noundef nonnull %1) + %108 = load ptr, ptr %7, align 8 + store ptr %104, ptr %7, align 8 + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %104) #19 + %109 = load ptr, ptr %46, align 8 + call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_118NullImplicationMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %8, ptr noundef nonnull align 8 dereferenceable(48) %108, ptr noundef %109) + %110 = load ptr, ptr %8, align 8 + store ptr %108, ptr %8, align 8 br label %.critedge2.sink.split -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit76: ; preds = %111 - call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_118NullImplicationMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %9, ptr noundef nonnull align 8 dereferenceable(48) %108, ptr noundef nonnull %1) - %115 = load ptr, ptr %9, align 8 - store ptr %108, ptr %9, align 8 - call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %108) #19 - %116 = load ptr, ptr %46, align 8 - call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_121NonNullImplicationMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %10, ptr noundef nonnull align 8 dereferenceable(48) %115, ptr noundef %116) - %117 = load ptr, ptr %10, align 8 - store ptr %115, ptr %10, align 8 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit76: ; preds = %107 + call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_118NullImplicationMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %9, ptr noundef nonnull align 8 dereferenceable(48) %104, ptr noundef nonnull %1) + %111 = load ptr, ptr %9, align 8 + store ptr %104, ptr %9, align 8 + call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %104) #19 + %112 = load ptr, ptr %46, align 8 + call fastcc void @_ZNK5clang4ento12ProgramState6removeIN12_GLOBAL__N_121NonNullImplicationMapEEEN4llvm18IntrusiveRefCntPtrIKS1_EENS0_17ProgramStateTraitIT_E8key_typeE(ptr dead_on_unwind noalias writable align 8 %10, ptr noundef nonnull align 8 dereferenceable(48) %111, ptr noundef %112) + %113 = load ptr, ptr %10, align 8 + store ptr %111, ptr %10, align 8 br label %.critedge2.sink.split .critedge2.sink.split: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit76, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit72 - %.sink26 = phi ptr [ %112, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit72 ], [ %115, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit76 ] - %.sroa.05.0.ph = phi ptr [ %114, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit72 ], [ %117, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit76 ] + %.sink26 = phi ptr [ %108, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit72 ], [ %111, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit76 ] + %.sroa.05.0.ph = phi ptr [ %110, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit72 ], [ %113, %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit76 ] call void @_ZN5clang4ento19ProgramStateReleaseEPKNS0_12ProgramStateE(ptr noundef nonnull %.sink26) #19 br label %.critedge2 @@ -5666,7 +5660,7 @@ _ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit76: ; preds = store ptr %.sroa.05.0, ptr %0, align 8 br label %_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit78 -_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit78: ; preds = %.critedge2, %110, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_121NonNullImplicationMapEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.thread, %12 +_ZN4llvm18IntrusiveRefCntPtrIKN5clang4ento12ProgramStateEED2Ev.exit78: ; preds = %.critedge2, %106, %_ZNK5clang4ento12ProgramState3getIN12_GLOBAL__N_121NonNullImplicationMapEEENS0_17ProgramStateTraitIT_E11lookup_typeENS7_8key_typeE.exit.thread, %12 ret void } diff --git a/bench/mitsuba3/optimized/bitmap.cpp.ll b/bench/mitsuba3/optimized/bitmap.cpp.ll index 0835382f70a..8b1397a9247 100644 --- a/bench/mitsuba3/optimized/bitmap.cpp.ll +++ b/bench/mitsuba3/optimized/bitmap.cpp.ll @@ -12851,7 +12851,10 @@ _ZNSt3__110unique_ptrIA_hNS_14default_deleteIS1_EEED2B8ne190000Ev.exit: ; preds .critedge743: ; preds = %659 %664 = icmp eq i32 %662, 1 %665 = icmp eq i32 %663, 1 - %.016.lcssa.i.i = and i1 %665, %664 + %.sroa.2.0.insert.shift = select i1 %665, i16 256, i16 0 + %.sroa.0760.0.insert.ext = zext i1 %664 to i16 + %.sroa.0760.0.insert.insert = or disjoint i16 %.sroa.2.0.insert.shift, %.sroa.0760.0.insert.ext + %.016.lcssa.i.i = icmp eq i16 %.sroa.0760.0.insert.insert, 257 br i1 %.016.lcssa.i.i, label %666, label %.critedge545 666: ; preds = %.critedge743 diff --git a/bench/mitsuba3/optimized/hdrfilm.cpp.ll b/bench/mitsuba3/optimized/hdrfilm.cpp.ll index d1432b1e95a..03ec763a41d 100644 --- a/bench/mitsuba3/optimized/hdrfilm.cpp.ll +++ b/bench/mitsuba3/optimized/hdrfilm.cpp.ll @@ -1871,51 +1871,55 @@ define weak_odr void @_ZN7mitsuba7HDRFilmIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm .critedge: %5 = alloca %"struct.mitsuba::Point.17", align 4 %6 = load i32, ptr %2, align 4 - %7 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %8 = load i32, ptr %7, align 4 - %9 = or i32 %8, %6 - %.016.lcssa.i.i = icmp eq i32 %9, 0 - %10 = tail call noalias noundef nonnull dereferenceable(152) ptr @_Znwm(i64 noundef 152) #32 - %11 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %12 = select i1 %.016.lcssa.i.i, ptr %11, ptr %2 - %13 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %14 = load i64, ptr %13, align 8 - %.sroa.0.0.extract.trunc = trunc i64 %14 to i32 - %.sroa.3.0.extract.shift = lshr i64 %14, 32 + %7 = icmp eq i32 %6, 0 + %8 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %9 = load i32, ptr %8, align 4 + %10 = icmp eq i32 %9, 0 + %.sroa.2.0.insert.shift = select i1 %10, i16 256, i16 0 + %.sroa.050.0.insert.ext = zext i1 %7 to i16 + %.sroa.050.0.insert.insert = or disjoint i16 %.sroa.2.0.insert.shift, %.sroa.050.0.insert.ext + %.016.lcssa.i.i = icmp eq i16 %.sroa.050.0.insert.insert, 257 + %11 = tail call noalias noundef nonnull dereferenceable(152) ptr @_Znwm(i64 noundef 152) #32 + %12 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %13 = select i1 %.016.lcssa.i.i, ptr %12, ptr %2 + %14 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %15 = load i64, ptr %14, align 8 + %.sroa.0.0.extract.trunc = trunc i64 %15 to i32 + %.sroa.3.0.extract.shift = lshr i64 %15, 32 %.sroa.3.0.extract.trunc = trunc nuw i64 %.sroa.3.0.extract.shift to i32 %.sroa.3.0 = select i1 %.016.lcssa.i.i, i32 %.sroa.3.0.extract.trunc, i32 0 %.sroa.0.0 = select i1 %.016.lcssa.i.i, i32 %.sroa.0.0.extract.trunc, i32 0 store i32 %.sroa.0.0, ptr %5, align 4 - %15 = getelementptr inbounds nuw i8, ptr %5, i64 4 - store i32 %.sroa.3.0, ptr %15, align 4 - %16 = getelementptr inbounds nuw i8, ptr %1, i64 128 - %17 = getelementptr inbounds nuw i8, ptr %1, i64 136 - %18 = load ptr, ptr %17, align 8 - %19 = load ptr, ptr %16, align 8 - %20 = ptrtoint ptr %18 to i64 + %16 = getelementptr inbounds nuw i8, ptr %5, i64 4 + store i32 %.sroa.3.0, ptr %16, align 4 + %17 = getelementptr inbounds nuw i8, ptr %1, i64 128 + %18 = getelementptr inbounds nuw i8, ptr %1, i64 136 + %19 = load ptr, ptr %18, align 8 + %20 = load ptr, ptr %17, align 8 %21 = ptrtoint ptr %19 to i64 - %22 = sub i64 %20, %21 - %23 = sdiv exact i64 %22, 24 - %24 = trunc i64 %23 to i32 - %25 = getelementptr inbounds nuw i8, ptr %1, i64 48 - %26 = load ptr, ptr %25, align 8 - %27 = getelementptr inbounds nuw i8, ptr %1, i64 76 - %28 = load i8, ptr %27, align 4 - %29 = trunc i8 %28 to i1 - invoke void @_ZN7mitsuba10ImageBlockIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEEC1ERKNS_6VectorIjLm2EEERKNS_5PointIiLm2EEEjPKNS_20ReconstructionFilterIfS5_EEbbbbbb(ptr noundef nonnull align 8 dereferenceable(149) %10, ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %5, i32 noundef %24, ptr noundef %26, i1 noundef zeroext %4, i1 noundef zeroext %3, i1 noundef zeroext false, i1 noundef zeroext %29, i1 noundef zeroext false, i1 noundef zeroext false) - to label %30 unwind label %33 - -30: ; preds = %.critedge - store ptr %10, ptr %0, align 8 - %31 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %32 = atomicrmw add ptr %31, i32 1 seq_cst, align 4 + %22 = ptrtoint ptr %20 to i64 + %23 = sub i64 %21, %22 + %24 = sdiv exact i64 %23, 24 + %25 = trunc i64 %24 to i32 + %26 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %27 = load ptr, ptr %26, align 8 + %28 = getelementptr inbounds nuw i8, ptr %1, i64 76 + %29 = load i8, ptr %28, align 4 + %30 = trunc i8 %29 to i1 + invoke void @_ZN7mitsuba10ImageBlockIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEEC1ERKNS_6VectorIjLm2EEERKNS_5PointIiLm2EEEjPKNS_20ReconstructionFilterIfS5_EEbbbbbb(ptr noundef nonnull align 8 dereferenceable(149) %11, ptr noundef nonnull align 4 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %5, i32 noundef %25, ptr noundef %27, i1 noundef zeroext %4, i1 noundef zeroext %3, i1 noundef zeroext false, i1 noundef zeroext %30, i1 noundef zeroext false, i1 noundef zeroext false) + to label %31 unwind label %34 + +31: ; preds = %.critedge + store ptr %11, ptr %0, align 8 + %32 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %33 = atomicrmw add ptr %32, i32 1 seq_cst, align 4 ret void -33: ; preds = %.critedge - %34 = landingpad { ptr, i32 } +34: ; preds = %.critedge + %35 = landingpad { ptr, i32 } cleanup - call void @_ZdlPv(ptr noundef nonnull %10) #31 - resume { ptr, i32 } %34 + call void @_ZdlPv(ptr noundef nonnull %11) #31 + resume { ptr, i32 } %35 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/mitsuba3/optimized/imageblock.cpp.ll b/bench/mitsuba3/optimized/imageblock.cpp.ll index a5e3d5f9666..3a50800b1c8 100644 --- a/bench/mitsuba3/optimized/imageblock.cpp.ll +++ b/bench/mitsuba3/optimized/imageblock.cpp.ll @@ -379,7 +379,10 @@ define weak_odr void @_ZN7mitsuba10ImageBlockIfN5drjit6MatrixINS_8SpectrumIfLm4E %13 = load i32, ptr %11, align 4 %14 = load i32, ptr %12, align 8 %15 = icmp eq i32 %13, %14 - %.016.lcssa.i.i = and i1 %15, %10 + %.sroa.2.0.insert.shift = select i1 %15, i16 256, i16 0 + %.sroa.0.0.insert.ext = zext i1 %10 to i16 + %.sroa.0.0.insert.insert = or disjoint i16 %.sroa.2.0.insert.shift, %.sroa.0.0.insert.ext + %.016.lcssa.i.i = icmp eq i16 %.sroa.0.0.insert.insert, 257 br i1 %.016.lcssa.i.i, label %130, label %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge _ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge: ; preds = %.critedge @@ -1989,7 +1992,10 @@ _ZNKSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEE3strB8ne1 %120 = load i32, ptr %119, align 8 %121 = icmp ult i32 %113, %116 %122 = icmp ult i32 %114, %120 - %123 = and i1 %122, %121 + %.sroa.2872.0.insert.shift = select i1 %122, i16 256, i16 0 + %.sroa.0871.0.insert.ext = zext i1 %121 to i16 + %.sroa.0871.0.insert.insert = or disjoint i16 %.sroa.2872.0.insert.shift, %.sroa.0871.0.insert.ext + %123 = icmp eq i16 %.sroa.0871.0.insert.insert, 257 %or.cond = and i1 %3, %123 %.not782 = icmp ne i32 %118, 0 %or.cond847.not = select i1 %or.cond, i1 %.not782, i1 false @@ -2361,7 +2367,10 @@ _ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4all_Ev.exit.critedge: ; preds = %18 %31 = load i32, ptr %30, align 8 %32 = icmp ugt i32 %24, %21 %33 = icmp ugt i32 %31, %22 - %.016.lcssa.i = and i1 %33, %32 + %.sroa.2876.0.insert.shift = select i1 %33, i16 256, i16 0 + %.sroa.0875.0.insert.ext = zext i1 %32 to i16 + %.sroa.0875.0.insert.insert = or disjoint i16 %.sroa.2876.0.insert.shift, %.sroa.0875.0.insert.ext + %.016.lcssa.i = icmp eq i16 %.sroa.0875.0.insert.insert, 257 br label %34 34: ; preds = %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIjLm2EEEE4all_Ev.exit.critedge, %18 @@ -2412,7 +2421,10 @@ _ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge: ; %60 = fcmp contract oge float %15, 0.000000e+00 %61 = shl i32 %55, 1 %62 = add i32 %61, %56 - %or.cond.not = and i1 %60, %59 + %.sroa.2880.0.insert.shift = select i1 %60, i16 256, i16 0 + %.sroa.0879.0.insert.ext = zext i1 %59 to i16 + %.sroa.0879.0.insert.insert = or disjoint i16 %.sroa.2880.0.insert.shift, %.sroa.0879.0.insert.ext + %or.cond.not = icmp eq i16 %.sroa.0879.0.insert.insert, 257 br i1 %or.cond.not, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge, label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit.thread _ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge: ; preds = %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge @@ -2420,12 +2432,16 @@ _ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge: ; preds = % %64 = uitofp i32 %58 to float %65 = fcmp contract olt float %14, %63 %66 = fcmp contract olt float %15, %64 - %.016.lcssa.i521 = and i1 %66, %65 - %67 = freeze i1 %.016.lcssa.i521 + %.sroa.2882.0.insert.shift = select i1 %66, i16 256, i16 0 + %.sroa.0881.0.insert.ext = zext i1 %65 to i16 + %.sroa.0881.0.insert.insert = or disjoint i16 %.sroa.2882.0.insert.shift, %.sroa.0881.0.insert.ext + %.sroa.0444.0.copyload.fr = freeze i16 %.sroa.0881.0.insert.insert + %67 = and i16 %.sroa.0444.0.copyload.fr, 257 + %.016.lcssa.i521 = icmp eq i16 %67, 257 br label %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit.thread _ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit.thread: ; preds = %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge, %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge - %.fr766 = phi i1 [ %67, %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge ], [ false, %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge ] + %.fr766 = phi i1 [ %.016.lcssa.i521, %_ZNK5drjit9ArrayBaseIbLb1ENS_4MaskIfLm2EEEE4all_Ev.exit522.critedge ], [ false, %_ZNK5drjit9ArrayBaseIjLb0EN7mitsuba6VectorIjLm2EEEE4add_ERKS3_.exit.critedge ] %68 = getelementptr inbounds nuw i8, ptr %0, i64 28 %69 = load i32, ptr %68, align 4 %.not758 = icmp eq i32 %69, 0 diff --git a/bench/nix/optimized/fetchTree.ll b/bench/nix/optimized/fetchTree.ll index 9921969e100..ba45553703a 100644 --- a/bench/nix/optimized/fetchTree.ll +++ b/bench/nix/optimized/fetchTree.ll @@ -1196,7 +1196,7 @@ define void @_ZN3nix13emitTreeAttrsERNS_9EvalStateERKNS_9StorePathERKNS_8fetcher %40 = getelementptr inbounds nuw i8, ptr %13, i64 8 %41 = load i64, ptr %40, align 8 invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 %41, ptr %39) - to label %42 unwind label %71 + to label %42 unwind label %70 42: ; preds = %6 %43 = load ptr, ptr %13, align 8 @@ -1250,141 +1250,139 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i67, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #28 - br i1 %.0.i.i, label %55, label %78 + br i1 %.0.i.i, label %55, label %77 55: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 %.sroa.023.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 %56 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 10, ptr nonnull @.str.6, i32 %.sroa.023.0.copyload) call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #28 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %16) - to label %57 unwind label %73 + to label %57 unwind label %72 57: ; preds = %55 %58 = getelementptr inbounds nuw i8, ptr %2, i64 16 %59 = invoke i16 @_ZN3nix8fetchers16maybeGetBoolAttrERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt7variantIJS7_mNS_8ExplicitIbEEEESt4lessIS7_ESaISt4pairIKS7_SB_EEERSF_(ptr noundef nonnull align 8 dereferenceable(48) %58, ptr noundef nonnull align 8 dereferenceable(32) %15) - to label %60 unwind label %75 + to label %60 unwind label %74 60: ; preds = %57 - %61 = and i16 %59, 256 - %.not = icmp ne i16 %61, 0 - %62 = trunc i16 %59 to i1 - %.0.i = and i1 %.not, %62 - %63 = zext i1 %.0.i to i8 - %64 = getelementptr inbounds nuw i8, ptr %56, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %64, i8 0, i64 16, i1 false) + %61 = and i16 %59, 257 + %.0.i = icmp eq i16 %61, 257 + %62 = zext i1 %.0.i to i8 + %63 = getelementptr inbounds nuw i8, ptr %56, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %63, i8 0, i64 16, i1 false) store i32 2, ptr %56, align 8 - store i8 %63, ptr %64, align 8 - %65 = load ptr, ptr %15, align 8 - %66 = getelementptr inbounds nuw i8, ptr %15, i64 16 - %67 = icmp eq ptr %65, %66 - br i1 %67, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 + store i8 %62, ptr %63, align 8 + %64 = load ptr, ptr %15, align 8 + %65 = getelementptr inbounds nuw i8, ptr %15, i64 16 + %66 = icmp eq ptr %64, %65 + br i1 %66, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70: ; preds = %60 - %68 = getelementptr inbounds nuw i8, ptr %15, i64 8 - %69 = load i64, ptr %68, align 8 - %70 = icmp ult i64 %69, 16 - call void @llvm.assume(i1 %70) + %67 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %68 = load i64, ptr %67, align 8 + %69 = icmp ult i64 %68, 16 + call void @llvm.assume(i1 %69) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69: ; preds = %60 - call void @_ZdlPv(ptr noundef %65) #29 + call void @_ZdlPv(ptr noundef %64) #29 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #28 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #28 - br label %78 + br label %77 -71: ; preds = %6 - %72 = landingpad { ptr, i32 } +70: ; preds = %6 + %71 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #28 br label %common.resume -73: ; preds = %55 - %74 = landingpad { ptr, i32 } +72: ; preds = %55 + %73 = landingpad { ptr, i32 } cleanup - br label %77 + br label %76 -75: ; preds = %57 - %76 = landingpad { ptr, i32 } +74: ; preds = %57 + %75 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #28 - br label %77 + br label %76 -77: ; preds = %75, %73 - %.pn = phi { ptr, i32 } [ %76, %75 ], [ %74, %73 ] +76: ; preds = %74, %72 + %.pn = phi { ptr, i32 } [ %75, %74 ], [ %73, %72 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #28 br label %common.resume -78: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 - br i1 %5, label %.thread145, label %79 +77: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 + br i1 %5, label %.thread145, label %78 -79: ; preds = %78 +78: ; preds = %77 call void @_ZNK3nix8fetchers5Input6getRevEv(ptr dead_on_unwind nonnull writable sret(%"class.std::optional") align 8 %17, ptr noundef nonnull align 8 dereferenceable(104) %2) - %80 = getelementptr inbounds nuw i8, ptr %17, i64 80 - %81 = load i8, ptr %80, align 8 - %82 = trunc i8 %81 to i1 - br i1 %82, label %83, label %117 + %79 = getelementptr inbounds nuw i8, ptr %17, i64 80 + %80 = load i8, ptr %79, align 8 + %81 = trunc i8 %80 to i1 + br i1 %81, label %82, label %116 -83: ; preds = %79 +82: ; preds = %78 %.sroa.022.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 - %84 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 3, ptr nonnull @.str.7, i32 %.sroa.022.0.copyload) + %83 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 3, ptr nonnull @.str.7, i32 %.sroa.022.0.copyload) call void @_ZNK3nix4Hash9to_stringB5cxx11ENS_10HashFormatEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(73) %17, i32 noundef 2, i1 noundef zeroext false) - %85 = load ptr, ptr %18, align 8 - %86 = getelementptr inbounds nuw i8, ptr %18, i64 8 - %87 = load i64, ptr %86, align 8 - invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 %87, ptr %85) - to label %88 unwind label %113 - -88: ; preds = %83 - %89 = load ptr, ptr %18, align 8 - %90 = getelementptr inbounds nuw i8, ptr %18, i64 16 - %91 = icmp eq ptr %89, %90 - br i1 %91, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i75, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i74 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i75: ; preds = %88 - %92 = load i64, ptr %86, align 8 - %93 = icmp ult i64 %92, 16 - call void @llvm.assume(i1 %93) + %84 = load ptr, ptr %18, align 8 + %85 = getelementptr inbounds nuw i8, ptr %18, i64 8 + %86 = load i64, ptr %85, align 8 + invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 %86, ptr %84) + to label %87 unwind label %112 + +87: ; preds = %82 + %88 = load ptr, ptr %18, align 8 + %89 = getelementptr inbounds nuw i8, ptr %18, i64 16 + %90 = icmp eq ptr %88, %89 + br i1 %90, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i75, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i74 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i75: ; preds = %87 + %91 = load i64, ptr %85, align 8 + %92 = icmp ult i64 %91, 16 + call void @llvm.assume(i1 %92) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit76 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i74: ; preds = %88 - call void @_ZdlPv(ptr noundef %89) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i74: ; preds = %87 + call void @_ZdlPv(ptr noundef %88) #29 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit76 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit76: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i75, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i74 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #28 %.sroa.019.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 - %94 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 8, ptr nonnull @.str.8, i32 %.sroa.019.0.copyload) + %93 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 8, ptr nonnull @.str.8, i32 %.sroa.019.0.copyload) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) call void @_ZNK3nix4Hash9to_stringB5cxx11ENS_10HashFormatEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(73) %17, i32 noundef 2, i1 noundef zeroext false), !noalias !4 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mm(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %10, i64 noundef 0, i64 noundef 7) - to label %95 unwind label %102 - -95: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit76 - %96 = load ptr, ptr %10, align 8, !noalias !4 - %97 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %98 = icmp eq ptr %96, %97 - br i1 %98, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %95 - %99 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %100 = load i64, ptr %99, align 8, !noalias !4 - %101 = icmp ult i64 %100, 16 - call void @llvm.assume(i1 %101) + to label %94 unwind label %101 + +94: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit76 + %95 = load ptr, ptr %10, align 8, !noalias !4 + %96 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %97 = icmp eq ptr %95, %96 + br i1 %97, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %94 + %98 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %99 = load i64, ptr %98, align 8, !noalias !4 + %100 = icmp ult i64 %99, 16 + call void @llvm.assume(i1 %100) br label %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %95 - call void @_ZdlPv(ptr noundef %96) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %94 + call void @_ZdlPv(ptr noundef %95) #29 br label %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit -common.resume: ; preds = %71, %77, %113, %115, %148, %150, %214, %271, %278, %137, %102 - %common.resume.op = phi { ptr, i32 } [ %103, %102 ], [ %138, %137 ], [ %.pn60.pn, %278 ], [ %.pn56.pn.pn, %271 ], [ %.pn54, %214 ], [ %116, %115 ], [ %114, %113 ], [ %151, %150 ], [ %149, %148 ], [ %.pn, %77 ], [ %72, %71 ] +common.resume: ; preds = %70, %76, %112, %114, %147, %149, %213, %270, %277, %136, %101 + %common.resume.op = phi { ptr, i32 } [ %102, %101 ], [ %137, %136 ], [ %.pn60.pn, %277 ], [ %.pn56.pn.pn, %270 ], [ %.pn54, %213 ], [ %115, %114 ], [ %113, %112 ], [ %150, %149 ], [ %148, %147 ], [ %.pn, %76 ], [ %71, %70 ] resume { ptr, i32 } %common.resume.op -102: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit76 - %103 = landingpad { ptr, i32 } +101: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit76 + %102 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #28 br label %common.resume @@ -1392,98 +1390,98 @@ common.resume: ; preds = %71, %77, %113, %115 _ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #28 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) - %104 = load ptr, ptr %19, align 8 - %105 = getelementptr inbounds nuw i8, ptr %19, i64 8 - %106 = load i64, ptr %105, align 8 - invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 %106, ptr %104) - to label %107 unwind label %115 - -107: ; preds = %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit - %108 = load ptr, ptr %19, align 8 - %109 = getelementptr inbounds nuw i8, ptr %19, i64 16 - %110 = icmp eq ptr %108, %109 - br i1 %110, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i79 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i80: ; preds = %107 - %111 = load i64, ptr %105, align 8 - %112 = icmp ult i64 %111, 16 - call void @llvm.assume(i1 %112) - br label %152 + %103 = load ptr, ptr %19, align 8 + %104 = getelementptr inbounds nuw i8, ptr %19, i64 8 + %105 = load i64, ptr %104, align 8 + invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 %105, ptr %103) + to label %106 unwind label %114 + +106: ; preds = %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit + %107 = load ptr, ptr %19, align 8 + %108 = getelementptr inbounds nuw i8, ptr %19, i64 16 + %109 = icmp eq ptr %107, %108 + br i1 %109, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i79 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i79: ; preds = %107 - call void @_ZdlPv(ptr noundef %108) #29 - br label %152 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i80: ; preds = %106 + %110 = load i64, ptr %104, align 8 + %111 = icmp ult i64 %110, 16 + call void @llvm.assume(i1 %111) + br label %151 -113: ; preds = %83 - %114 = landingpad { ptr, i32 } +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i79: ; preds = %106 + call void @_ZdlPv(ptr noundef %107) #29 + br label %151 + +112: ; preds = %82 + %113 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #28 br label %common.resume -115: ; preds = %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit - %116 = landingpad { ptr, i32 } +114: ; preds = %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit + %115 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #28 br label %common.resume -117: ; preds = %79 - br i1 %4, label %118, label %.thread +116: ; preds = %78 + br i1 %4, label %117, label %.thread -118: ; preds = %117 +117: ; preds = %116 call void @_ZN3nix4HashC1ENS_13HashAlgorithmE(ptr noundef nonnull align 8 dereferenceable(73) %20, i8 noundef signext 43) %.sroa.016.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 - %119 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 3, ptr nonnull @.str.7, i32 %.sroa.016.0.copyload) + %118 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 3, ptr nonnull @.str.7, i32 %.sroa.016.0.copyload) call void @_ZNK3nix4Hash9to_stringB5cxx11ENS_10HashFormatEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(73) %20, i32 noundef 2, i1 noundef zeroext false) - %120 = load ptr, ptr %21, align 8 - %121 = getelementptr inbounds nuw i8, ptr %21, i64 8 - %122 = load i64, ptr %121, align 8 - invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 %122, ptr %120) - to label %123 unwind label %148 - -123: ; preds = %118 - %124 = load ptr, ptr %21, align 8 - %125 = getelementptr inbounds nuw i8, ptr %21, i64 16 - %126 = icmp eq ptr %124, %125 - br i1 %126, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i85, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i84 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i85: ; preds = %123 - %127 = load i64, ptr %121, align 8 - %128 = icmp ult i64 %127, 16 - call void @llvm.assume(i1 %128) + %119 = load ptr, ptr %21, align 8 + %120 = getelementptr inbounds nuw i8, ptr %21, i64 8 + %121 = load i64, ptr %120, align 8 + invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %118, i64 %121, ptr %119) + to label %122 unwind label %147 + +122: ; preds = %117 + %123 = load ptr, ptr %21, align 8 + %124 = getelementptr inbounds nuw i8, ptr %21, i64 16 + %125 = icmp eq ptr %123, %124 + br i1 %125, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i85, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i84 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i85: ; preds = %122 + %126 = load i64, ptr %120, align 8 + %127 = icmp ult i64 %126, 16 + call void @llvm.assume(i1 %127) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit86 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i84: ; preds = %123 - call void @_ZdlPv(ptr noundef %124) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i84: ; preds = %122 + call void @_ZdlPv(ptr noundef %123) #29 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit86 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit86: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i85, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i84 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #28 %.sroa.013.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 - %129 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 8, ptr nonnull @.str.8, i32 %.sroa.013.0.copyload) + %128 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 8, ptr nonnull @.str.8, i32 %.sroa.013.0.copyload) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) call void @_ZNK3nix4Hash9to_stringB5cxx11ENS_10HashFormatEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(73) %20, i32 noundef 2, i1 noundef zeroext false), !noalias !7 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mm(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %9, i64 noundef 0, i64 noundef 7) - to label %130 unwind label %137 - -130: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit86 - %131 = load ptr, ptr %9, align 8, !noalias !7 - %132 = getelementptr inbounds nuw i8, ptr %9, i64 16 - %133 = icmp eq ptr %131, %132 - br i1 %133, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i88, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i87 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i88: ; preds = %130 - %134 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %135 = load i64, ptr %134, align 8, !noalias !7 - %136 = icmp ult i64 %135, 16 - call void @llvm.assume(i1 %136) + to label %129 unwind label %136 + +129: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit86 + %130 = load ptr, ptr %9, align 8, !noalias !7 + %131 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %132 = icmp eq ptr %130, %131 + br i1 %132, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i88, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i87 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i88: ; preds = %129 + %133 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %134 = load i64, ptr %133, align 8, !noalias !7 + %135 = icmp ult i64 %134, 16 + call void @llvm.assume(i1 %135) br label %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit89 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i87: ; preds = %130 - call void @_ZdlPv(ptr noundef %131) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i87: ; preds = %129 + call void @_ZdlPv(ptr noundef %130) #29 br label %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit89 -137: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit86 - %138 = landingpad { ptr, i32 } +136: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit86 + %137 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #28 br label %common.resume @@ -1491,408 +1489,408 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit89: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i88, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i87 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #28 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) - %139 = load ptr, ptr %22, align 8 - %140 = getelementptr inbounds nuw i8, ptr %22, i64 8 - %141 = load i64, ptr %140, align 8 - invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 %141, ptr %139) - to label %142 unwind label %150 - -142: ; preds = %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit89 - %143 = load ptr, ptr %22, align 8 - %144 = getelementptr inbounds nuw i8, ptr %22, i64 16 - %145 = icmp eq ptr %143, %144 - br i1 %145, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i93, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i92 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i93: ; preds = %142 - %146 = load i64, ptr %140, align 8 - %147 = icmp ult i64 %146, 16 - call void @llvm.assume(i1 %147) + %138 = load ptr, ptr %22, align 8 + %139 = getelementptr inbounds nuw i8, ptr %22, i64 8 + %140 = load i64, ptr %139, align 8 + invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 %140, ptr %138) + to label %141 unwind label %149 + +141: ; preds = %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit89 + %142 = load ptr, ptr %22, align 8 + %143 = getelementptr inbounds nuw i8, ptr %22, i64 16 + %144 = icmp eq ptr %142, %143 + br i1 %144, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i93, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i92 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i93: ; preds = %141 + %145 = load i64, ptr %139, align 8 + %146 = icmp ult i64 %145, 16 + call void @llvm.assume(i1 %146) br label %.thread146 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i92: ; preds = %142 - call void @_ZdlPv(ptr noundef %143) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i92: ; preds = %141 + call void @_ZdlPv(ptr noundef %142) #29 br label %.thread146 -148: ; preds = %118 - %149 = landingpad { ptr, i32 } +147: ; preds = %117 + %148 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #28 br label %common.resume -150: ; preds = %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit89 - %151 = landingpad { ptr, i32 } +149: ; preds = %_ZNK3nix4Hash11gitShortRevB5cxx11Ev.exit89 + %150 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #28 br label %common.resume -152: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i80 +151: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i80 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #28 - %153 = call { i64, i8 } @_ZNK3nix8fetchers5Input11getRevCountEv(ptr noundef nonnull align 8 dereferenceable(104) %2) - %154 = extractvalue { i64, i8 } %153, 1 - %155 = trunc i8 %154 to i1 - br i1 %155, label %162, label %164 + %152 = call { i64, i8 } @_ZNK3nix8fetchers5Input11getRevCountEv(ptr noundef nonnull align 8 dereferenceable(104) %2) + %153 = extractvalue { i64, i8 } %152, 1 + %154 = trunc i8 %153 to i1 + br i1 %154, label %161, label %163 .thread146: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i93 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #28 - %156 = call { i64, i8 } @_ZNK3nix8fetchers5Input11getRevCountEv(ptr noundef nonnull align 8 dereferenceable(104) %2) - %157 = extractvalue { i64, i8 } %156, 1 - %158 = trunc i8 %157 to i1 - br i1 %158, label %162, label %.thread145.sink.split - -.thread: ; preds = %117 - %159 = call { i64, i8 } @_ZNK3nix8fetchers5Input11getRevCountEv(ptr noundef nonnull align 8 dereferenceable(104) %2) - %160 = extractvalue { i64, i8 } %159, 1 - %161 = trunc i8 %160 to i1 - br i1 %161, label %162, label %.thread145 - -162: ; preds = %.thread146, %.thread, %152 - %.pn148 = phi { i64, i8 } [ %159, %.thread ], [ %153, %152 ], [ %156, %.thread146 ] - %163 = extractvalue { i64, i8 } %.pn148, 0 + %155 = call { i64, i8 } @_ZNK3nix8fetchers5Input11getRevCountEv(ptr noundef nonnull align 8 dereferenceable(104) %2) + %156 = extractvalue { i64, i8 } %155, 1 + %157 = trunc i8 %156 to i1 + br i1 %157, label %161, label %.thread145.sink.split + +.thread: ; preds = %116 + %158 = call { i64, i8 } @_ZNK3nix8fetchers5Input11getRevCountEv(ptr noundef nonnull align 8 dereferenceable(104) %2) + %159 = extractvalue { i64, i8 } %158, 1 + %160 = trunc i8 %159 to i1 + br i1 %160, label %161, label %.thread145 + +161: ; preds = %.thread146, %.thread, %151 + %.pn148 = phi { i64, i8 } [ %158, %.thread ], [ %152, %151 ], [ %155, %.thread146 ] + %162 = extractvalue { i64, i8 } %.pn148, 0 br label %.thread145.sink.split -164: ; preds = %152 +163: ; preds = %151 br i1 %4, label %.thread145.sink.split, label %.thread145 -.thread145.sink.split: ; preds = %164, %.thread146, %162 - %.sink = phi i64 [ %163, %162 ], [ 0, %.thread146 ], [ 0, %164 ] +.thread145.sink.split: ; preds = %163, %.thread146, %161 + %.sink = phi i64 [ %162, %161 ], [ 0, %.thread146 ], [ 0, %163 ] %.sroa.010.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 - %165 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 8, ptr nonnull @.str.9, i32 %.sroa.010.0.copyload) - %166 = getelementptr inbounds nuw i8, ptr %165, i64 8 - %167 = getelementptr inbounds nuw i8, ptr %165, i64 16 - store i64 0, ptr %167, align 8 - store i32 1, ptr %165, align 8 - store i64 %.sink, ptr %166, align 8 + %164 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 8, ptr nonnull @.str.9, i32 %.sroa.010.0.copyload) + %165 = getelementptr inbounds nuw i8, ptr %164, i64 8 + %166 = getelementptr inbounds nuw i8, ptr %164, i64 16 + store i64 0, ptr %166, align 8 + store i32 1, ptr %164, align 8 + store i64 %.sink, ptr %165, align 8 br label %.thread145 -.thread145: ; preds = %.thread145.sink.split, %.thread, %164, %78 - %168 = getelementptr inbounds nuw i8, ptr %2, i64 16 +.thread145: ; preds = %.thread145.sink.split, %.thread, %163, %77 + %167 = getelementptr inbounds nuw i8, ptr %2, i64 16 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #28 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %25) - to label %169 unwind label %210 - -169: ; preds = %.thread145 - invoke void @_ZN3nix8fetchers15maybeGetStrAttrERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt7variantIJS7_mNS_8ExplicitIbEEEESt4lessIS7_ESaISt4pairIKS7_SB_EEERSF_(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.108") align 8 %23, ptr noundef nonnull align 8 dereferenceable(48) %168, ptr noundef nonnull align 8 dereferenceable(32) %24) - to label %170 unwind label %212 - -170: ; preds = %169 - %171 = load ptr, ptr %24, align 8 - %172 = getelementptr inbounds nuw i8, ptr %24, i64 16 - %173 = icmp eq ptr %171, %172 - br i1 %173, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i96, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i95 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i96: ; preds = %170 - %174 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %175 = load i64, ptr %174, align 8 - %176 = icmp ult i64 %175, 16 - call void @llvm.assume(i1 %176) + to label %168 unwind label %209 + +168: ; preds = %.thread145 + invoke void @_ZN3nix8fetchers15maybeGetStrAttrERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt7variantIJS7_mNS_8ExplicitIbEEEESt4lessIS7_ESaISt4pairIKS7_SB_EEERSF_(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.108") align 8 %23, ptr noundef nonnull align 8 dereferenceable(48) %167, ptr noundef nonnull align 8 dereferenceable(32) %24) + to label %169 unwind label %211 + +169: ; preds = %168 + %170 = load ptr, ptr %24, align 8 + %171 = getelementptr inbounds nuw i8, ptr %24, i64 16 + %172 = icmp eq ptr %170, %171 + br i1 %172, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i96, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i95 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i96: ; preds = %169 + %173 = getelementptr inbounds nuw i8, ptr %24, i64 8 + %174 = load i64, ptr %173, align 8 + %175 = icmp ult i64 %174, 16 + call void @llvm.assume(i1 %175) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit97 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i95: ; preds = %170 - call void @_ZdlPv(ptr noundef %171) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i95: ; preds = %169 + call void @_ZdlPv(ptr noundef %170) #29 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit97 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit97: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i96, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i95 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #28 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #28 - %177 = getelementptr inbounds nuw i8, ptr %23, i64 32 - %178 = load i8, ptr %177, align 8 - %179 = trunc i8 %178 to i1 - br i1 %179, label %180, label %225 + %176 = getelementptr inbounds nuw i8, ptr %23, i64 32 + %177 = load i8, ptr %176, align 8 + %178 = trunc i8 %177 to i1 + br i1 %178, label %179, label %224 -180: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit97 +179: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit97 %.sroa.08.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 - %181 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 8, ptr nonnull @.str.10, i32 %.sroa.08.0.copyload) - to label %182 unwind label %215 + %180 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 8, ptr nonnull @.str.10, i32 %.sroa.08.0.copyload) + to label %181 unwind label %214 -182: ; preds = %180 - %183 = load ptr, ptr %23, align 8 - %184 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %185 = load i64, ptr %184, align 8 - invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %181, i64 %185, ptr %183) - to label %186 unwind label %215 +181: ; preds = %179 + %182 = load ptr, ptr %23, align 8 + %183 = getelementptr inbounds nuw i8, ptr %23, i64 8 + %184 = load i64, ptr %183, align 8 + invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %180, i64 %184, ptr %182) + to label %185 unwind label %214 -186: ; preds = %182 +185: ; preds = %181 %.sroa.05.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 - %187 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 13, ptr nonnull @.str.11, i32 %.sroa.05.0.copyload) - to label %188 unwind label %215 + %186 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 13, ptr nonnull @.str.11, i32 %.sroa.05.0.copyload) + to label %187 unwind label %214 -188: ; preds = %186 +187: ; preds = %185 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #28 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %28) - to label %189 unwind label %217 + to label %188 unwind label %216 + +188: ; preds = %187 + invoke void @_ZN3nix8fetchers15maybeGetStrAttrERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt7variantIJS7_mNS_8ExplicitIbEEEESt4lessIS7_ESaISt4pairIKS7_SB_EEERSF_(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.108") align 8 %26, ptr noundef nonnull align 8 dereferenceable(48) %167, ptr noundef nonnull align 8 dereferenceable(32) %27) + to label %189 unwind label %218 189: ; preds = %188 - invoke void @_ZN3nix8fetchers15maybeGetStrAttrERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt7variantIJS7_mNS_8ExplicitIbEEEESt4lessIS7_ESaISt4pairIKS7_SB_EEERSF_(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.108") align 8 %26, ptr noundef nonnull align 8 dereferenceable(48) %168, ptr noundef nonnull align 8 dereferenceable(32) %27) - to label %190 unwind label %219 - -190: ; preds = %189 - %191 = load ptr, ptr %26, align 8 - %192 = getelementptr inbounds nuw i8, ptr %26, i64 8 - %193 = load i64, ptr %192, align 8 - invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %187, i64 %193, ptr %191) - to label %194 unwind label %221 - -194: ; preds = %190 - %195 = getelementptr inbounds nuw i8, ptr %26, i64 32 - %196 = load i8, ptr %195, align 8 - %197 = trunc i8 %196 to i1 - br i1 %197, label %198, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit - -198: ; preds = %194 - store i8 0, ptr %195, align 8 - %199 = load ptr, ptr %26, align 8 - %200 = getelementptr inbounds nuw i8, ptr %26, i64 16 - %201 = icmp eq ptr %199, %200 - br i1 %201, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i: ; preds = %198 - %202 = load i64, ptr %192, align 8 - %203 = icmp ult i64 %202, 16 - call void @llvm.assume(i1 %203) + %190 = load ptr, ptr %26, align 8 + %191 = getelementptr inbounds nuw i8, ptr %26, i64 8 + %192 = load i64, ptr %191, align 8 + invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %186, i64 %192, ptr %190) + to label %193 unwind label %220 + +193: ; preds = %189 + %194 = getelementptr inbounds nuw i8, ptr %26, i64 32 + %195 = load i8, ptr %194, align 8 + %196 = trunc i8 %195 to i1 + br i1 %196, label %197, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit + +197: ; preds = %193 + store i8 0, ptr %194, align 8 + %198 = load ptr, ptr %26, align 8 + %199 = getelementptr inbounds nuw i8, ptr %26, i64 16 + %200 = icmp eq ptr %198, %199 + br i1 %200, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i: ; preds = %197 + %201 = load i64, ptr %191, align 8 + %202 = icmp ult i64 %201, 16 + call void @llvm.assume(i1 %202) br label %_ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i: ; preds = %198 - call void @_ZdlPv(ptr noundef %199) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i: ; preds = %197 + call void @_ZdlPv(ptr noundef %198) #29 br label %_ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i _ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #28 br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit -_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; preds = %194, %_ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i - %204 = load ptr, ptr %27, align 8 - %205 = getelementptr inbounds nuw i8, ptr %27, i64 16 - %206 = icmp eq ptr %204, %205 - br i1 %206, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102 +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; preds = %193, %_ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i + %203 = load ptr, ptr %27, align 8 + %204 = getelementptr inbounds nuw i8, ptr %27, i64 16 + %205 = icmp eq ptr %203, %204 + br i1 %205, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit - %207 = getelementptr inbounds nuw i8, ptr %27, i64 8 - %208 = load i64, ptr %207, align 8 - %209 = icmp ult i64 %208, 16 - call void @llvm.assume(i1 %209) + %206 = getelementptr inbounds nuw i8, ptr %27, i64 8 + %207 = load i64, ptr %206, align 8 + %208 = icmp ult i64 %207, 16 + call void @llvm.assume(i1 %208) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit - call void @_ZdlPv(ptr noundef %204) #29 + call void @_ZdlPv(ptr noundef %203) #29 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #28 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #28 - %.pre149 = load i8, ptr %177, align 8 - br label %225 + %.pre149 = load i8, ptr %176, align 8 + br label %224 -210: ; preds = %.thread145 - %211 = landingpad { ptr, i32 } +209: ; preds = %.thread145 + %210 = landingpad { ptr, i32 } cleanup - br label %214 + br label %213 -212: ; preds = %169 - %213 = landingpad { ptr, i32 } +211: ; preds = %168 + %212 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #28 - br label %214 + br label %213 -214: ; preds = %212, %210 - %.pn54 = phi { ptr, i32 } [ %213, %212 ], [ %211, %210 ] +213: ; preds = %211, %209 + %.pn54 = phi { ptr, i32 } [ %212, %211 ], [ %210, %209 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #28 br label %common.resume -215: ; preds = %186, %182, %180 - %216 = landingpad { ptr, i32 } +214: ; preds = %185, %181, %179 + %215 = landingpad { ptr, i32 } cleanup - br label %271 + br label %270 -217: ; preds = %188 - %218 = landingpad { ptr, i32 } +216: ; preds = %187 + %217 = landingpad { ptr, i32 } cleanup - br label %224 + br label %223 -219: ; preds = %189 - %220 = landingpad { ptr, i32 } +218: ; preds = %188 + %219 = landingpad { ptr, i32 } cleanup - br label %223 + br label %222 -221: ; preds = %190 - %222 = landingpad { ptr, i32 } +220: ; preds = %189 + %221 = landingpad { ptr, i32 } cleanup call void @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #28 - br label %223 + br label %222 -223: ; preds = %221, %219 - %.pn56 = phi { ptr, i32 } [ %222, %221 ], [ %220, %219 ] +222: ; preds = %220, %218 + %.pn56 = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #28 - br label %224 + br label %223 -224: ; preds = %223, %217 - %.pn56.pn = phi { ptr, i32 } [ %.pn56, %223 ], [ %218, %217 ] +223: ; preds = %222, %216 + %.pn56.pn = phi { ptr, i32 } [ %.pn56, %222 ], [ %217, %216 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #28 - br label %271 - -225: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit97 - %226 = phi i8 [ %.pre149, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 ], [ %178, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit97 ] - %227 = trunc i8 %226 to i1 - br i1 %227, label %228, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit108 - -228: ; preds = %225 - store i8 0, ptr %177, align 8 - %229 = load ptr, ptr %23, align 8 - %230 = getelementptr inbounds nuw i8, ptr %23, i64 16 - %231 = icmp eq ptr %229, %230 - br i1 %231, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i107, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i105 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i107: ; preds = %228 - %232 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %233 = load i64, ptr %232, align 8 - %234 = icmp ult i64 %233, 16 - call void @llvm.assume(i1 %234) + br label %270 + +224: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit97 + %225 = phi i8 [ %.pre149, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 ], [ %177, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit97 ] + %226 = trunc i8 %225 to i1 + br i1 %226, label %227, label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit108 + +227: ; preds = %224 + store i8 0, ptr %176, align 8 + %228 = load ptr, ptr %23, align 8 + %229 = getelementptr inbounds nuw i8, ptr %23, i64 16 + %230 = icmp eq ptr %228, %229 + br i1 %230, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i107, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i105 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i107: ; preds = %227 + %231 = getelementptr inbounds nuw i8, ptr %23, i64 8 + %232 = load i64, ptr %231, align 8 + %233 = icmp ult i64 %232, 16 + call void @llvm.assume(i1 %233) br label %_ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i106 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i105: ; preds = %228 - call void @_ZdlPv(ptr noundef %229) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i105: ; preds = %227 + call void @_ZdlPv(ptr noundef %228) #29 br label %_ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i106 _ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i106: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i105, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i107 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #28 br label %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit108 -_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit108: ; preds = %225, %_ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i106 - %235 = call { i64, i8 } @_ZNK3nix8fetchers5Input15getLastModifiedEv(ptr noundef nonnull align 8 dereferenceable(104) %2) - %236 = extractvalue { i64, i8 } %235, 0 - store i64 %236, ptr %29, align 8 - %237 = getelementptr inbounds nuw i8, ptr %29, i64 8 - %238 = extractvalue { i64, i8 } %235, 1 - store i8 %238, ptr %237, align 8 - %239 = trunc i8 %238 to i1 - br i1 %239, label %240, label %279 - -240: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit108 +_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit108: ; preds = %224, %_ZNSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10_M_destroyEv.exit.i.i.i.i106 + %234 = call { i64, i8 } @_ZNK3nix8fetchers5Input15getLastModifiedEv(ptr noundef nonnull align 8 dereferenceable(104) %2) + %235 = extractvalue { i64, i8 } %234, 0 + store i64 %235, ptr %29, align 8 + %236 = getelementptr inbounds nuw i8, ptr %29, i64 8 + %237 = extractvalue { i64, i8 } %234, 1 + store i8 %237, ptr %236, align 8 + %238 = trunc i8 %237 to i1 + br i1 %238, label %239, label %278 + +239: ; preds = %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit108 %.sroa.02.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 - %241 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 12, ptr nonnull @.str.12, i32 %.sroa.02.0.copyload) - %242 = getelementptr inbounds nuw i8, ptr %241, i64 8 - %243 = getelementptr inbounds nuw i8, ptr %241, i64 16 - store i64 0, ptr %243, align 8 - store i32 1, ptr %241, align 8 - store i64 %236, ptr %242, align 8 + %240 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 12, ptr nonnull @.str.12, i32 %.sroa.02.0.copyload) + %241 = getelementptr inbounds nuw i8, ptr %240, i64 8 + %242 = getelementptr inbounds nuw i8, ptr %240, i64 16 + store i64 0, ptr %242, align 8 + store i32 1, ptr %240, align 8 + store i64 %235, ptr %241, align 8 %.sroa.01.0.copyload = load i32, ptr @_ZN3nix5noPosE, align 4 - %244 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 16, ptr nonnull @.str.13, i32 %.sroa.01.0.copyload) + %243 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix15BindingsBuilder5allocESt17basic_string_viewIcSt11char_traitsIcEENS_6PosIdxE(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 16, ptr nonnull @.str.13, i32 %.sroa.01.0.copyload) call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #28 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %32) - to label %245 unwind label %272 + to label %244 unwind label %271 -245: ; preds = %240 - %246 = call ptr @gmtime(ptr noundef nonnull %29) #28 - store ptr %246, ptr %33, align 8 - %247 = getelementptr inbounds nuw i8, ptr %33, i64 8 - store ptr @.str.15, ptr %247, align 8 +244: ; preds = %239 + %245 = call ptr @gmtime(ptr noundef nonnull %29) #28 + store ptr %245, ptr %33, align 8 + %246 = getelementptr inbounds nuw i8, ptr %33, i64 8 + store ptr @.str.15, ptr %246, align 8 call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %8) invoke void @_ZN5boost12basic_formatIcSt11char_traitsIcESaIcEEC2ERKNSt7__cxx1112basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(224) %8, ptr noundef nonnull align 8 dereferenceable(32) %31) - to label %.noexc unwind label %274 + to label %.noexc unwind label %273 -.noexc: ; preds = %245 - %248 = getelementptr inbounds nuw i8, ptr %8, i64 112 - store i8 -7, ptr %248, align 8, !noalias !10 +.noexc: ; preds = %244 + %247 = getelementptr inbounds nuw i8, ptr %8, i64 112 + store i8 -7, ptr %247, align 8, !noalias !10 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !10 store ptr %33, ptr %7, align 8, !noalias !10 - %249 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store ptr @_ZN5boost2io6detail13call_put_headIcSt11char_traitsIcEKSt9_Put_timeIcEEEvRSt13basic_ostreamIT_T0_EPKv, ptr %249, align 8, !noalias !10 - %250 = getelementptr inbounds nuw i8, ptr %7, i64 16 - store ptr @_ZN5boost2io6detail13call_put_lastIcSt11char_traitsIcEKSt9_Put_timeIcEEEvRSt13basic_ostreamIT_T0_EPKv, ptr %250, align 8, !noalias !10 - %251 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_ZN5boost2io6detail9feed_implIcSt11char_traitsIcESaIcERKNS1_10put_holderIcS4_EEEERNS_12basic_formatIT_T0_T1_EESF_T2_(ptr noundef nonnull align 8 dereferenceable(224) %8, ptr noundef nonnull align 8 dereferenceable(24) %7) - to label %252 unwind label %253, !noalias !10 - -252: ; preds = %.noexc + %248 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store ptr @_ZN5boost2io6detail13call_put_headIcSt11char_traitsIcEKSt9_Put_timeIcEEEvRSt13basic_ostreamIT_T0_EPKv, ptr %248, align 8, !noalias !10 + %249 = getelementptr inbounds nuw i8, ptr %7, i64 16 + store ptr @_ZN5boost2io6detail13call_put_lastIcSt11char_traitsIcEKSt9_Put_timeIcEEEvRSt13basic_ostreamIT_T0_EPKv, ptr %249, align 8, !noalias !10 + %250 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_ZN5boost2io6detail9feed_implIcSt11char_traitsIcESaIcERKNS1_10put_holderIcS4_EEEERNS_12basic_formatIT_T0_T1_EESF_T2_(ptr noundef nonnull align 8 dereferenceable(224) %8, ptr noundef nonnull align 8 dereferenceable(24) %7) + to label %251 unwind label %252, !noalias !10 + +251: ; preds = %.noexc call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !10 invoke void @_ZNK5boost12basic_formatIcSt11char_traitsIcESaIcEE3strB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(224) %8) - to label %255 unwind label %253 + to label %254 unwind label %252 -253: ; preds = %252, %.noexc - %254 = landingpad { ptr, i32 } +252: ; preds = %251, %.noexc + %253 = landingpad { ptr, i32 } cleanup call void @_ZN5boost12basic_formatIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %8) #28 br label %.body -255: ; preds = %252 +254: ; preds = %251 call void @_ZN5boost12basic_formatIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %8) #28 call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %8) - %256 = load ptr, ptr %30, align 8 - %257 = getelementptr inbounds nuw i8, ptr %30, i64 8 - %258 = load i64, ptr %257, align 8 - invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %244, i64 %258, ptr %256) - to label %259 unwind label %276 - -259: ; preds = %255 - %260 = load ptr, ptr %30, align 8 - %261 = getelementptr inbounds nuw i8, ptr %30, i64 16 - %262 = icmp eq ptr %260, %261 - br i1 %262, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i114, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i113 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i114: ; preds = %259 - %263 = load i64, ptr %257, align 8 - %264 = icmp ult i64 %263, 16 - call void @llvm.assume(i1 %264) + %255 = load ptr, ptr %30, align 8 + %256 = getelementptr inbounds nuw i8, ptr %30, i64 8 + %257 = load i64, ptr %256, align 8 + invoke void @_ZN3nix5Value8mkStringESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(24) %243, i64 %257, ptr %255) + to label %258 unwind label %275 + +258: ; preds = %254 + %259 = load ptr, ptr %30, align 8 + %260 = getelementptr inbounds nuw i8, ptr %30, i64 16 + %261 = icmp eq ptr %259, %260 + br i1 %261, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i114, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i113 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i114: ; preds = %258 + %262 = load i64, ptr %256, align 8 + %263 = icmp ult i64 %262, 16 + call void @llvm.assume(i1 %263) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit115 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i113: ; preds = %259 - call void @_ZdlPv(ptr noundef %260) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i113: ; preds = %258 + call void @_ZdlPv(ptr noundef %259) #29 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit115 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit115: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i114, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i113 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #28 - %265 = load ptr, ptr %31, align 8 - %266 = getelementptr inbounds nuw i8, ptr %31, i64 16 - %267 = icmp eq ptr %265, %266 - br i1 %267, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i117, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i116 + %264 = load ptr, ptr %31, align 8 + %265 = getelementptr inbounds nuw i8, ptr %31, i64 16 + %266 = icmp eq ptr %264, %265 + br i1 %266, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i117, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i116 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i117: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit115 - %268 = getelementptr inbounds nuw i8, ptr %31, i64 8 - %269 = load i64, ptr %268, align 8 - %270 = icmp ult i64 %269, 16 - call void @llvm.assume(i1 %270) + %267 = getelementptr inbounds nuw i8, ptr %31, i64 8 + %268 = load i64, ptr %267, align 8 + %269 = icmp ult i64 %268, 16 + call void @llvm.assume(i1 %269) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit118 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i116: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit115 - call void @_ZdlPv(ptr noundef %265) #29 + call void @_ZdlPv(ptr noundef %264) #29 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit118 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit118: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i117, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i116 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #28 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #28 - br label %279 + br label %278 -271: ; preds = %224, %215 - %.pn56.pn.pn = phi { ptr, i32 } [ %.pn56.pn, %224 ], [ %216, %215 ] +270: ; preds = %223, %214 + %.pn56.pn.pn = phi { ptr, i32 } [ %.pn56.pn, %223 ], [ %215, %214 ] call void @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #28 br label %common.resume -272: ; preds = %240 - %273 = landingpad { ptr, i32 } +271: ; preds = %239 + %272 = landingpad { ptr, i32 } cleanup - br label %278 + br label %277 -274: ; preds = %245 - %275 = landingpad { ptr, i32 } +273: ; preds = %244 + %274 = landingpad { ptr, i32 } cleanup br label %.body -276: ; preds = %255 - %277 = landingpad { ptr, i32 } +275: ; preds = %254 + %276 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #28 br label %.body -.body: ; preds = %274, %253, %276 - %.pn60 = phi { ptr, i32 } [ %277, %276 ], [ %275, %274 ], [ %254, %253 ] +.body: ; preds = %273, %252, %275 + %.pn60 = phi { ptr, i32 } [ %276, %275 ], [ %274, %273 ], [ %253, %252 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #28 - br label %278 + br label %277 -278: ; preds = %.body, %272 - %.pn60.pn = phi { ptr, i32 } [ %.pn60, %.body ], [ %273, %272 ] +277: ; preds = %.body, %271 + %.pn60.pn = phi { ptr, i32 } [ %.pn60, %.body ], [ %272, %271 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #28 br label %common.resume -279: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit118, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit108 - %280 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix5Value7mkAttrsERNS_15BindingsBuilderE(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(16) %11) +278: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit118, %_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit108 + %279 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3nix5Value7mkAttrsERNS_15BindingsBuilderE(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(16) %11) ret void } diff --git a/bench/node/optimized/libnode.crypto_dh.ll b/bench/node/optimized/libnode.crypto_dh.ll index a729ab75b2a..659e398b897 100644 --- a/bench/node/optimized/libnode.crypto_dh.ll +++ b/bench/node/optimized/libnode.crypto_dh.ll @@ -7066,10 +7066,8 @@ arrayctor.loop.preheader: ; preds = %do.end %vfn19 = getelementptr inbounds nuw i8, ptr %vtable18, i64 152 %25 = load ptr, ptr %vfn19, align 8 %call20 = call i16 %25(ptr noundef nonnull align 8 dereferenceable(392) %retval.i13.0.i, ptr noundef nonnull %ret, ptr noundef nonnull %arrayidx17) #19 - %tobool.i = trunc i16 %call20 to i1 - %26 = and i16 %call20, 256 - %tobool.i53.not = icmp ne i16 %26, 0 - %or.cond.not = and i1 %tobool.i53.not, %tobool.i + %26 = and i16 %call20, 257 + %or.cond.not = icmp eq i16 %26, 257 br i1 %or.cond.not, label %if.then23, label %if.end36 if.then14: ; preds = %do.end @@ -10839,10 +10837,8 @@ arrayctor.loop.preheader: ; preds = %do.end %vfn19 = getelementptr inbounds nuw i8, ptr %vtable18, i64 152 %25 = load ptr, ptr %vfn19, align 8 %call20 = call i16 %25(ptr noundef nonnull align 8 dereferenceable(256) %retval.i13.0.i, ptr noundef nonnull %ret, ptr noundef nonnull %arrayidx17) #19 - %tobool.i = trunc i16 %call20 to i1 - %26 = and i16 %call20, 256 - %tobool.i53.not = icmp ne i16 %26, 0 - %or.cond.not = and i1 %tobool.i53.not, %tobool.i + %26 = and i16 %call20, 257 + %or.cond.not = icmp eq i16 %26, 257 br i1 %or.cond.not, label %if.then23, label %if.end36 if.then14: ; preds = %do.end @@ -12188,10 +12184,8 @@ arrayctor.loop.preheader: ; preds = %do.end %vfn19 = getelementptr inbounds nuw i8, ptr %vtable18, i64 152 %25 = load ptr, ptr %vfn19, align 8 %call20 = call i16 %25(ptr noundef nonnull align 8 dereferenceable(288) %retval.i13.0.i, ptr noundef nonnull %ret, ptr noundef nonnull %arrayidx17) #19 - %tobool.i = trunc i16 %call20 to i1 - %26 = and i16 %call20, 256 - %tobool.i53.not = icmp ne i16 %26, 0 - %or.cond.not = and i1 %tobool.i53.not, %tobool.i + %26 = and i16 %call20, 257 + %or.cond.not = icmp eq i16 %26, 257 br i1 %or.cond.not, label %if.then23, label %if.end36 if.then14: ; preds = %do.end diff --git a/bench/node/optimized/libnode.js_native_api_v8.ll b/bench/node/optimized/libnode.js_native_api_v8.ll index 4b67dc2e9b6..1bceebdbc46 100644 --- a/bench/node/optimized/libnode.js_native_api_v8.ll +++ b/bench/node/optimized/libnode.js_native_api_v8.ll @@ -2669,10 +2669,8 @@ if.end100: ; preds = %do.body90.if.end100 %cmp120 = icmp ne i32 %and119, 0 call void @_ZN2v818PropertyDescriptor16set_configurableEb(ptr noundef nonnull align 8 dereferenceable(8) %descriptor, i1 noundef zeroext %cmp120) #24 %call130 = call i16 @_ZN2v86Object14DefinePropertyENS_5LocalINS_7ContextEEENS1_INS_4NameEEERNS_18PropertyDescriptorE(ptr noundef nonnull align 1 dereferenceable(1) %call44, ptr %retval.sroa.0.0.copyload.i.i, ptr nonnull %property_name.sroa.0.0.ph, ptr noundef nonnull align 8 dereferenceable(8) %descriptor) #24 - %tobool.i328 = trunc i16 %call130 to i1 - %16 = and i16 %call130, 256 - %tobool2.i334 = icmp ne i16 %16, 0 - %cond.i331.not = and i1 %tobool2.i334, %tobool.i328 + %16 = and i16 %call130, 257 + %cond.i331.not = icmp eq i16 %16, 257 br i1 %cond.i331.not, label %for.inc.sink.split, label %cleanup.thread cleanup.thread: ; preds = %if.end100 @@ -2717,10 +2715,8 @@ do.end153: ; preds = %if.then142 %cmp171 = icmp ne i32 %and170, 0 call void @_ZN2v818PropertyDescriptor16set_configurableEb(ptr noundef nonnull align 8 dereferenceable(8) %descriptor154, i1 noundef zeroext %cmp171) #24 %call182 = call i16 @_ZN2v86Object14DefinePropertyENS_5LocalINS_7ContextEEENS1_INS_4NameEEERNS_18PropertyDescriptorE(ptr noundef nonnull align 1 dereferenceable(1) %call44, ptr %retval.sroa.0.0.copyload.i.i, ptr nonnull %property_name.sroa.0.0.ph, ptr noundef nonnull align 8 dereferenceable(8) %descriptor154) #24 - %tobool.i317 = trunc i16 %call182 to i1 - %22 = and i16 %call182, 256 - %tobool2.i323 = icmp ne i16 %22, 0 - %cond.i320.not = and i1 %tobool2.i323, %tobool.i317 + %22 = and i16 %call182, 257 + %cond.i320.not = icmp eq i16 %22, 257 br i1 %cond.i320.not, label %for.inc.sink.split, label %cleanup194.thread cleanup194.thread: ; preds = %do.end153 @@ -2766,10 +2762,8 @@ if.else231: ; preds = %if.else197 do.body258: ; preds = %if.then215, %if.else231 %define_maybe203.sroa.0.0.in = phi i16 [ %call230, %if.then215 ], [ %call256, %if.else231 ] - %tobool.i = trunc i16 %define_maybe203.sroa.0.0.in to i1 - %28 = and i16 %define_maybe203.sroa.0.0.in, 256 - %tobool2.i = icmp ne i16 %28, 0 - %cond.i.not = and i1 %tobool2.i, %tobool.i + %28 = and i16 %define_maybe203.sroa.0.0.in, 257 + %cond.i.not = icmp eq i16 %28, 257 br i1 %cond.i.not, label %for.inc, label %if.then262 if.then262: ; preds = %do.body258 @@ -3101,10 +3095,8 @@ do.end39: ; preds = %do.end28 _ZN2v810MaybeLocalINS_6ObjectEE14ToLocalCheckedEv.exit: ; preds = %do.end39 %call88 = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call48, ptr %retval.sroa.0.0.copyload.i.i, ptr nonnull %key, ptr nonnull %value) #24 - %tobool.i = trunc i16 %call88 to i1 - %6 = and i16 %call88, 256 - %tobool2.i = icmp ne i16 %6, 0 - %cond.i.not = and i1 %tobool2.i, %tobool.i + %6 = and i16 %call88, 257 + %cond.i.not = icmp eq i16 %6, 257 %call99 = call noundef zeroext i1 @_ZNK2v88TryCatch9HasCaughtEv(ptr noundef nonnull align 8 dereferenceable(41) %try_catch) #24 br i1 %cond.i.not, label %do.end98, label %if.then92 @@ -3860,10 +3852,8 @@ do.end70: ; preds = %_ZN2v810MaybeLocalI _ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit: ; preds = %do.end70 %call115 = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call41, ptr %retval.sroa.0.0.copyload.i.i, ptr nonnull %call71, ptr nonnull %value) #24 - %tobool.i = trunc i16 %call115 to i1 - %7 = and i16 %call115, 256 - %tobool2.i = icmp ne i16 %7, 0 - %cond.i.not = and i1 %tobool2.i, %tobool.i + %7 = and i16 %call115, 257 + %cond.i.not = icmp eq i16 %7, 257 %call126 = call noundef zeroext i1 @_ZNK2v88TryCatch9HasCaughtEv(ptr noundef nonnull align 8 dereferenceable(41) %try_catch) #24 br i1 %cond.i.not, label %do.end125, label %if.then119 @@ -4310,10 +4300,8 @@ do.end32: ; preds = %do.end21 _ZN2v810MaybeLocalINS_6ObjectEE14ToLocalCheckedEv.exit: ; preds = %do.end32 %call73 = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEEjNS1_INS_5ValueEEE(ptr noundef nonnull align 1 dereferenceable(1) %call41, ptr %retval.sroa.0.0.copyload.i.i, i32 noundef %index, ptr nonnull %value) #24 - %tobool.i = trunc i16 %call73 to i1 - %6 = and i16 %call73, 256 - %tobool2.i = icmp ne i16 %6, 0 - %cond.i.not = and i1 %tobool2.i, %tobool.i + %6 = and i16 %call73, 257 + %cond.i.not = icmp eq i16 %6, 257 %call84 = call noundef zeroext i1 @_ZNK2v88TryCatch9HasCaughtEv(ptr noundef nonnull align 8 dereferenceable(41) %try_catch) #24 br i1 %cond.i.not, label %do.end83, label %if.then77 @@ -4907,10 +4895,8 @@ do.end25: ; preds = %do.end14 _ZN2v810MaybeLocalINS_6ObjectEE14ToLocalCheckedEv.exit: ; preds = %do.end25 %call58 = call i16 @_ZN2v86Object17SetIntegrityLevelENS_5LocalINS_7ContextEEENS_14IntegrityLevelE(ptr noundef nonnull align 1 dereferenceable(1) %call34, ptr %retval.sroa.0.0.copyload.i.i, i32 noundef 0) #24 - %tobool.i = trunc i16 %call58 to i1 - %6 = and i16 %call58, 256 - %tobool2.i = icmp ne i16 %6, 0 - %cond.i.not = and i1 %tobool2.i, %tobool.i + %6 = and i16 %call58, 257 + %cond.i.not = icmp eq i16 %6, 257 %call69 = call noundef zeroext i1 @_ZNK2v88TryCatch9HasCaughtEv(ptr noundef nonnull align 8 dereferenceable(41) %try_catch) #24 br i1 %cond.i.not, label %do.end68, label %if.then62 @@ -5048,10 +5034,8 @@ do.end25: ; preds = %do.end14 _ZN2v810MaybeLocalINS_6ObjectEE14ToLocalCheckedEv.exit: ; preds = %do.end25 %call58 = call i16 @_ZN2v86Object17SetIntegrityLevelENS_5LocalINS_7ContextEEENS_14IntegrityLevelE(ptr noundef nonnull align 1 dereferenceable(1) %call34, ptr %retval.sroa.0.0.copyload.i.i, i32 noundef 1) #24 - %tobool.i = trunc i16 %call58 to i1 - %6 = and i16 %call58, 256 - %tobool2.i = icmp ne i16 %6, 0 - %cond.i.not = and i1 %tobool2.i, %tobool.i + %6 = and i16 %call58, 257 + %cond.i.not = icmp eq i16 %6, 257 %call69 = call noundef zeroext i1 @_ZNK2v88TryCatch9HasCaughtEv(ptr noundef nonnull align 8 dereferenceable(41) %try_catch) #24 br i1 %cond.i.not, label %do.end68, label %if.then62 @@ -7096,10 +7080,8 @@ if.end54.i: ; preds = %if.end.i.i _ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i: ; preds = %if.end54.i %call100.i = tail call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call31, ptr %retval.sroa.0.0.copyload.i.i.i, ptr nonnull %call62.i, ptr nonnull %code) #24 - %tobool.i.i = trunc i16 %call100.i to i1 - %13 = and i16 %call100.i, 256 - %tobool2.i.i = icmp ne i16 %13, 0 - %cond.i.not.i = and i1 %tobool2.i.i, %tobool.i.i + %13 = and i16 %call100.i, 257 + %cond.i.not.i = icmp eq i16 %13, 257 br i1 %cond.i.not.i, label %do.end44, label %_ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit _ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit: ; preds = %if.then16.i, %if.end.i.i, %if.end54.i, %_ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i @@ -7230,10 +7212,8 @@ if.end54.i: ; preds = %if.end.i.i _ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i: ; preds = %if.end54.i %call100.i = tail call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call31, ptr %retval.sroa.0.0.copyload.i.i.i, ptr nonnull %call62.i, ptr nonnull %code) #24 - %tobool.i.i = trunc i16 %call100.i to i1 - %13 = and i16 %call100.i, 256 - %tobool2.i.i = icmp ne i16 %13, 0 - %cond.i.not.i = and i1 %tobool2.i.i, %tobool.i.i + %13 = and i16 %call100.i, 257 + %cond.i.not.i = icmp eq i16 %13, 257 br i1 %cond.i.not.i, label %do.end44, label %_ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit _ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit: ; preds = %if.then16.i, %if.end.i.i, %if.end54.i, %_ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i @@ -7364,10 +7344,8 @@ if.end54.i: ; preds = %if.end.i.i _ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i: ; preds = %if.end54.i %call100.i = tail call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call31, ptr %retval.sroa.0.0.copyload.i.i.i, ptr nonnull %call62.i, ptr nonnull %code) #24 - %tobool.i.i = trunc i16 %call100.i to i1 - %13 = and i16 %call100.i, 256 - %tobool2.i.i = icmp ne i16 %13, 0 - %cond.i.not.i = and i1 %tobool2.i.i, %tobool.i.i + %13 = and i16 %call100.i, 257 + %cond.i.not.i = icmp eq i16 %13, 257 br i1 %cond.i.not.i, label %do.end44, label %_ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit _ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit: ; preds = %if.then16.i, %if.end.i.i, %if.end54.i, %_ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i @@ -7498,10 +7476,8 @@ if.end54.i: ; preds = %if.end.i.i _ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i: ; preds = %if.end54.i %call100.i = tail call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call31, ptr %retval.sroa.0.0.copyload.i.i.i, ptr nonnull %call62.i, ptr nonnull %code) #24 - %tobool.i.i = trunc i16 %call100.i to i1 - %13 = and i16 %call100.i, 256 - %tobool2.i.i = icmp ne i16 %13, 0 - %cond.i.not.i = and i1 %tobool2.i.i, %tobool.i.i + %13 = and i16 %call100.i, 257 + %cond.i.not.i = icmp eq i16 %13, 257 br i1 %cond.i.not.i, label %do.end44, label %_ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit _ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit: ; preds = %if.then16.i, %if.end.i.i, %if.end54.i, %_ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i @@ -8424,10 +8400,8 @@ if.end54.i: ; preds = %do.end33.i _ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i: ; preds = %if.end54.i %call100.i = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call48, ptr %retval.sroa.0.0.copyload.i.i.i, ptr nonnull %call62.i, ptr nonnull %call34.i) #24 - %tobool.i.i = trunc i16 %call100.i to i1 - %9 = and i16 %call100.i, 256 - %tobool2.i.i = icmp ne i16 %9, 0 - %cond.i.not.i = and i1 %tobool2.i.i, %tobool.i.i + %9 = and i16 %call100.i, 257 + %cond.i.not.i = icmp eq i16 %9, 257 br i1 %cond.i.not.i, label %do.end62, label %_ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit _ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit: ; preds = %do.end33.i, %if.end54.i, %_ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i @@ -8595,10 +8569,8 @@ if.end54.i: ; preds = %do.end33.i _ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i: ; preds = %if.end54.i %call100.i = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call48, ptr %retval.sroa.0.0.copyload.i.i.i, ptr nonnull %call62.i, ptr nonnull %call34.i) #24 - %tobool.i.i = trunc i16 %call100.i to i1 - %9 = and i16 %call100.i, 256 - %tobool2.i.i = icmp ne i16 %9, 0 - %cond.i.not.i = and i1 %tobool2.i.i, %tobool.i.i + %9 = and i16 %call100.i, 257 + %cond.i.not.i = icmp eq i16 %9, 257 br i1 %cond.i.not.i, label %do.end62, label %_ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit _ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit: ; preds = %do.end33.i, %if.end54.i, %_ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i @@ -8766,10 +8738,8 @@ if.end54.i: ; preds = %do.end33.i _ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i: ; preds = %if.end54.i %call100.i = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call48, ptr %retval.sroa.0.0.copyload.i.i.i, ptr nonnull %call62.i, ptr nonnull %call34.i) #24 - %tobool.i.i = trunc i16 %call100.i to i1 - %9 = and i16 %call100.i, 256 - %tobool2.i.i = icmp ne i16 %9, 0 - %cond.i.not.i = and i1 %tobool2.i.i, %tobool.i.i + %9 = and i16 %call100.i, 257 + %cond.i.not.i = icmp eq i16 %9, 257 br i1 %cond.i.not.i, label %do.end62, label %_ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit _ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit: ; preds = %do.end33.i, %if.end54.i, %_ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i @@ -8937,10 +8907,8 @@ if.end54.i: ; preds = %do.end33.i _ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i: ; preds = %if.end54.i %call100.i = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call48, ptr %retval.sroa.0.0.copyload.i.i.i, ptr nonnull %call62.i, ptr nonnull %call34.i) #24 - %tobool.i.i = trunc i16 %call100.i to i1 - %9 = and i16 %call100.i, 256 - %tobool2.i.i = icmp ne i16 %9, 0 - %cond.i.not.i = and i1 %tobool2.i.i, %tobool.i.i + %9 = and i16 %call100.i, 257 + %cond.i.not.i = icmp eq i16 %9, 257 br i1 %cond.i.not.i, label %do.end62, label %_ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit _ZL14set_error_codeP10napi_env__N2v85LocalINS1_5ValueEEEP12napi_value__PKc.exit: ; preds = %do.end33.i, %if.end54.i, %_ZN2v810MaybeLocalINS_6StringEE14ToLocalCheckedEv.exit.i @@ -14558,10 +14526,8 @@ if.end.i.i: ; preds = %delete.notnull _ZN2v86GlobalINS_5ValueEED2Ev.exit: ; preds = %delete.notnull, %if.end.i.i call void @_ZdlPv(ptr noundef nonnull %deferred) #26 - %tobool.i = trunc i16 %success.sroa.0.0.in to i1 - %10 = and i16 %success.sroa.0.0.in, 256 - %tobool2.i = icmp ne i16 %10, 0 - %cond.i.not = and i1 %tobool2.i, %tobool.i + %10 = and i16 %success.sroa.0.0.in, 257 + %cond.i.not = icmp eq i16 %10, 257 br i1 %cond.i.not, label %do.end67, label %cleanup.sink.split do.end67: ; preds = %_ZN2v86GlobalINS_5ValueEED2Ev.exit diff --git a/bench/node/optimized/libnode.node_contextify.ll b/bench/node/optimized/libnode.node_contextify.ll index 817d1196a88..eab1cb74050 100644 --- a/bench/node/optimized/libnode.node_contextify.ll +++ b/bench/node/optimized/libnode.node_contextify.ll @@ -588,10 +588,8 @@ if.end85: ; preds = %if.then.i.i, %if.th %object_string_.i.i = getelementptr inbounds nuw i8, ptr %10, i64 1568 %11 = load ptr, ptr %object_string_.i.i, align 8 %call113 = call i16 @_ZNK2v85Value6EqualsENS_5LocalINS_7ContextEEENS1_IS0_EE(ptr noundef nonnull align 1 dereferenceable(1) %call91, ptr nonnull %v8_context.coerce, ptr %11) #22 - %tobool.i343 = trunc i16 %call113 to i1 - %12 = and i16 %call113, 256 - %tobool2.i = icmp ne i16 %12, 0 - %cond.i = and i1 %tobool2.i, %tobool.i343 + %12 = and i16 %call113, 257 + %cond.i = icmp eq i16 %12, 257 br i1 %cond.i, label %if.end146, label %land.rhs land.rhs: ; preds = %if.end85 @@ -1397,10 +1395,8 @@ _ZN4node11Environment10GetCurrentEN2v85LocalINS1_7ContextEEE.exit: ; preds = %if %get_string_.i.i = getelementptr inbounds nuw i8, ptr %92, i64 1032 %93 = load ptr, ptr %get_string_.i.i, align 8 %call166 = tail call i16 @_ZN2v86Object14HasOwnPropertyENS_5LocalINS_7ContextEEENS1_INS_4NameEEE(ptr noundef nonnull align 1 dereferenceable(1) %call130, ptr %retval.sroa.0.0.i.i, ptr %93) #22 - %tobool.i227 = trunc i16 %call166 to i1 - %94 = and i16 %call166, 256 - %tobool2.i233 = icmp ne i16 %94, 0 - %cond.i230 = and i1 %tobool2.i233, %tobool.i227 + %94 = and i16 %call166, 257 + %cond.i230 = icmp eq i16 %94, 257 br i1 %cond.i230, label %if.else.i, label %lor.rhs169 lor.rhs169: ; preds = %_ZN4node11Environment10GetCurrentEN2v85LocalINS1_7ContextEEE.exit @@ -1408,10 +1404,8 @@ lor.rhs169: ; preds = %_ZN4node11Environme %set_string_.i.i = getelementptr inbounds nuw i8, ptr %95, i64 2120 %96 = load ptr, ptr %set_string_.i.i, align 8 %call188 = tail call i16 @_ZN2v86Object14HasOwnPropertyENS_5LocalINS_7ContextEEENS1_INS_4NameEEE(ptr noundef nonnull align 1 dereferenceable(1) %call130, ptr %retval.sroa.0.0.i.i, ptr %96) #22 - %tobool.i223 = trunc i16 %call188 to i1 - %97 = and i16 %call188, 256 - %tobool2.i = icmp ne i16 %97, 0 - %98 = and i1 %tobool2.i, %tobool.i223 + %97 = and i16 %call188, 257 + %98 = icmp eq i16 %97, 257 br i1 %98, label %if.else.i, label %if.end201 if.else.i: ; preds = %lor.rhs169, %_ZN4node11Environment10GetCurrentEN2v85LocalINS1_7ContextEEE.exit @@ -1517,10 +1511,8 @@ _ZNK4node10contextify17ContextifyContext7sandboxEv.exit: ; preds = %_ZNK4node10c %call4.i.i = tail call noundef ptr @_ZN2v88internal35IsolateFromNeverReadOnlySpaceObjectEm(i64 noundef %25) #22 %call.i28.i = tail call noundef ptr @_ZN2v811HandleScope12CreateHandleEPNS_8internal7IsolateEm(ptr noundef %call4.i.i, i64 noundef %29) #22 %call20 = tail call i16 @_ZN2v86Object14HasOwnPropertyENS_5LocalINS_7ContextEEENS1_INS_4NameEEE(ptr noundef nonnull align 1 dereferenceable(1) %call.i28.i, ptr %retval.sroa.0.0.i.i, ptr %property.coerce) #22 - %tobool.i = trunc i16 %call20 to i1 - %30 = and i16 %call20, 256 - %tobool2.i = icmp ne i16 %30, 0 - %cond.i = and i1 %tobool2.i, %tobool.i + %30 = and i16 %call20, 257 + %cond.i = icmp eq i16 %30, 257 br i1 %cond.i, label %if.then23, label %if.end49 if.then23: ; preds = %_ZNK4node10contextify17ContextifyContext7sandboxEv.exit @@ -1634,10 +1626,8 @@ _ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKN _ZNK4node10contextify17ContextifyContext7contextEv.exit: ; preds = %_ZNK4node10contextify17ContextifyContext7sandboxEv.exit, %if.end.i.i.i8, %_ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKNS2_14PersistentBaseIS5_EE.exit.i.i %retval.sroa.0.0.i.i = phi ptr [ %call.i.i.i.i, %_ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKNS2_14PersistentBaseIS5_EE.exit.i.i ], [ null, %_ZNK4node10contextify17ContextifyContext7sandboxEv.exit ], [ %26, %if.end.i.i.i8 ] %call24 = tail call i16 @_ZN2v86Object6DeleteENS_5LocalINS_7ContextEEENS1_INS_5ValueEEE(ptr noundef nonnull align 1 dereferenceable(1) %call.i28.i, ptr %retval.sroa.0.0.i.i, ptr %property.coerce) #22 - %tobool.i = trunc i16 %call24 to i1 - %30 = and i16 %call24, 256 - %tobool2.i = icmp ne i16 %30, 0 - %cond.i = and i1 %tobool2.i, %tobool.i + %30 = and i16 %call24, 257 + %cond.i = icmp eq i16 %30, 257 br i1 %cond.i, label %return, label %if.end28 if.end28: ; preds = %_ZNK4node10contextify17ContextifyContext7contextEv.exit @@ -1858,48 +1848,48 @@ _ZNK4node10contextify17ContextifyContext12global_proxyEv.exit: ; preds = %_ZNK4n %call5.i = tail call ptr @_ZN2v87Context6GlobalEv(ptr noundef nonnull align 1 dereferenceable(1) %retval.sroa.0.0.i.i.i) #22 %call23 = tail call i64 @_ZN2v86Object30GetRealNamedPropertyAttributesENS_5LocalINS_7ContextEEENS1_INS_4NameEEE(ptr noundef nonnull align 1 dereferenceable(1) %call5.i, ptr nonnull %agg.tmp.sroa.0.0.copyload, ptr %property.coerce) #22 %tobool.i210 = trunc i64 %call23 to i1 - %25 = and i64 %call23, 4294967296 - %26 = icmp ne i64 %25, 0 - %brmerge.not = and i1 %26, %tobool.i210 + %25 = and i64 %call23, 4294967297 + %attributes.0 = icmp eq i64 %25, 4294967297 + %brmerge.not = and i1 %attributes.0, %tobool.i210 br i1 %brmerge.not, label %if.end108, label %if.end29 if.end29: ; preds = %_ZNK4node10contextify17ContextifyContext12global_proxyEv.exit - %27 = load ptr, ptr %context_.i, align 8, !nonnull !5, !noundef !5 - %add.ptr.i.i.i.i27 = getelementptr inbounds nuw i8, ptr %27, i64 11 - %28 = load i8, ptr %add.ptr.i.i.i.i27, align 1 - %29 = and i8 %28, 3 - %cmp.i.i.i.i28 = icmp eq i8 %29, 2 + %26 = load ptr, ptr %context_.i, align 8, !nonnull !5, !noundef !5 + %add.ptr.i.i.i.i27 = getelementptr inbounds nuw i8, ptr %26, i64 11 + %27 = load i8, ptr %add.ptr.i.i.i.i27, align 1 + %28 = and i8 %27, 3 + %cmp.i.i.i.i28 = icmp eq i8 %28, 2 br i1 %cmp.i.i.i.i28, label %_ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKNS2_14PersistentBaseIS5_EE.exit.i.i.i30, label %_ZNK4node10contextify17ContextifyContext7sandboxEv.exit _ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKNS2_14PersistentBaseIS5_EE.exit.i.i.i30: ; preds = %if.end29 - %30 = load ptr, ptr %realm_.i.i, align 8 - %env_.i.i.i.i32 = getelementptr inbounds nuw i8, ptr %30, i64 176 - %31 = load ptr, ptr %env_.i.i.i.i32, align 8 - %isolate_.i.i.i33 = getelementptr inbounds nuw i8, ptr %31, i64 88 - %32 = load ptr, ptr %isolate_.i.i.i33, align 8 - %33 = load i64, ptr %27, align 8 - %call.i.i.i.i.i34 = tail call noundef ptr @_ZN2v811HandleScope12CreateHandleEPNS_8internal7IsolateEm(ptr noundef %32, i64 noundef %33) #22 + %29 = load ptr, ptr %realm_.i.i, align 8 + %env_.i.i.i.i32 = getelementptr inbounds nuw i8, ptr %29, i64 176 + %30 = load ptr, ptr %env_.i.i.i.i32, align 8 + %isolate_.i.i.i33 = getelementptr inbounds nuw i8, ptr %30, i64 88 + %31 = load ptr, ptr %isolate_.i.i.i33, align 8 + %32 = load i64, ptr %26, align 8 + %call.i.i.i.i.i34 = tail call noundef ptr @_ZN2v811HandleScope12CreateHandleEPNS_8internal7IsolateEm(ptr noundef %31, i64 noundef %32) #22 br label %_ZNK4node10contextify17ContextifyContext7sandboxEv.exit _ZNK4node10contextify17ContextifyContext7sandboxEv.exit: ; preds = %if.end29, %_ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKNS2_14PersistentBaseIS5_EE.exit.i.i.i30 - %retval.sroa.0.0.i.i.i29 = phi ptr [ %call.i.i.i.i.i34, %_ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKNS2_14PersistentBaseIS5_EE.exit.i.i.i30 ], [ %27, %if.end29 ] - %34 = load i64, ptr %retval.sroa.0.0.i.i.i29, align 8 - %sub.i.i.i = add i64 %34, 47 - %35 = inttoptr i64 %sub.i.i.i to ptr - %36 = load i64, ptr %35, align 8 - %sub.i18.i.i = add i64 %36, 279 - %37 = inttoptr i64 %sub.i18.i.i to ptr - %38 = load i64, ptr %37, align 8 - %call4.i.i = tail call noundef ptr @_ZN2v88internal35IsolateFromNeverReadOnlySpaceObjectEm(i64 noundef %34) #22 - %call.i28.i = tail call noundef ptr @_ZN2v811HandleScope12CreateHandleEPNS_8internal7IsolateEm(ptr noundef %call4.i.i, i64 noundef %38) #22 + %retval.sroa.0.0.i.i.i29 = phi ptr [ %call.i.i.i.i.i34, %_ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKNS2_14PersistentBaseIS5_EE.exit.i.i.i30 ], [ %26, %if.end29 ] + %33 = load i64, ptr %retval.sroa.0.0.i.i.i29, align 8 + %sub.i.i.i = add i64 %33, 47 + %34 = inttoptr i64 %sub.i.i.i to ptr + %35 = load i64, ptr %34, align 8 + %sub.i18.i.i = add i64 %35, 279 + %36 = inttoptr i64 %sub.i18.i.i to ptr + %37 = load i64, ptr %36, align 8 + %call4.i.i = tail call noundef ptr @_ZN2v88internal35IsolateFromNeverReadOnlySpaceObjectEm(i64 noundef %33) #22 + %call.i28.i = tail call noundef ptr @_ZN2v811HandleScope12CreateHandleEPNS_8internal7IsolateEm(ptr noundef %call4.i.i, i64 noundef %37) #22 store ptr %call.i28.i, ptr %sandbox, align 8 store ptr %desc, ptr %define_prop_on_sandbox, align 8 - %39 = getelementptr inbounds nuw i8, ptr %define_prop_on_sandbox, i64 8 - store ptr %sandbox, ptr %39, align 8 - %40 = getelementptr inbounds nuw i8, ptr %define_prop_on_sandbox, i64 16 - store ptr %context, ptr %40, align 8 - %41 = getelementptr inbounds nuw i8, ptr %define_prop_on_sandbox, i64 24 - store ptr %property, ptr %41, align 8 + %38 = getelementptr inbounds nuw i8, ptr %define_prop_on_sandbox, i64 8 + store ptr %sandbox, ptr %38, align 8 + %39 = getelementptr inbounds nuw i8, ptr %define_prop_on_sandbox, i64 16 + store ptr %context, ptr %39, align 8 + %40 = getelementptr inbounds nuw i8, ptr %define_prop_on_sandbox, i64 24 + store ptr %property, ptr %40, align 8 %call34 = call noundef zeroext i1 @_ZNK2v818PropertyDescriptor7has_getEv(ptr noundef nonnull align 8 dereferenceable(8) %desc) #22 br i1 %call34, label %if.then36, label %lor.lhs.false @@ -1916,13 +1906,13 @@ cond.true: ; preds = %if.then36 br label %cond.end cond.false: ; preds = %if.then36 - %42 = ptrtoint ptr %call9 to i64 - %add1.i = add i64 %42, 608 - %43 = inttoptr i64 %add1.i to ptr + %41 = ptrtoint ptr %call9 to i64 + %add1.i = add i64 %41, 608 + %42 = inttoptr i64 %add1.i to ptr br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %agg.tmp37.sroa.0.0 = phi ptr [ %call39, %cond.true ], [ %43, %cond.false ] + %agg.tmp37.sroa.0.0 = phi ptr [ %call39, %cond.true ], [ %42, %cond.false ] %call53 = call noundef zeroext i1 @_ZNK2v818PropertyDescriptor7has_setEv(ptr noundef nonnull align 8 dereferenceable(8) %desc) #22 br i1 %call53, label %cond.true54, label %cond.false59 @@ -1931,13 +1921,13 @@ cond.true54: ; preds = %cond.end br label %cond.end69 cond.false59: ; preds = %cond.end - %44 = ptrtoint ptr %call9 to i64 - %add1.i150 = add i64 %44, 608 - %45 = inttoptr i64 %add1.i150 to ptr + %43 = ptrtoint ptr %call9 to i64 + %add1.i150 = add i64 %43, 608 + %44 = inttoptr i64 %add1.i150 to ptr br label %cond.end69 cond.end69: ; preds = %cond.false59, %cond.true54 - %agg.tmp52.sroa.0.0 = phi ptr [ %call55, %cond.true54 ], [ %45, %cond.false59 ] + %agg.tmp52.sroa.0.0 = phi ptr [ %call55, %cond.true54 ], [ %44, %cond.false59 ] call void @_ZN2v818PropertyDescriptorC1ENS_5LocalINS_5ValueEEES3_(ptr noundef nonnull align 8 dereferenceable(8) %desc_for_sandbox, ptr %agg.tmp37.sroa.0.0, ptr %agg.tmp52.sroa.0.0) #22 br label %if.end108.sink.split @@ -1950,13 +1940,13 @@ cond.true77: ; preds = %if.else br label %cond.end92 cond.false82: ; preds = %if.else - %46 = ptrtoint ptr %call9 to i64 - %add1.i157 = add i64 %46, 608 - %47 = inttoptr i64 %add1.i157 to ptr + %45 = ptrtoint ptr %call9 to i64 + %add1.i157 = add i64 %45, 608 + %46 = inttoptr i64 %add1.i157 to ptr br label %cond.end92 cond.end92: ; preds = %cond.false82, %cond.true77 - %value.sroa.0.0 = phi ptr [ %call78, %cond.true77 ], [ %47, %cond.false82 ] + %value.sroa.0.0 = phi ptr [ %call78, %cond.true77 ], [ %46, %cond.false82 ] %call93 = call noundef zeroext i1 @_ZNK2v818PropertyDescriptor12has_writableEv(ptr noundef nonnull align 8 dereferenceable(8) %desc) #22 br i1 %call93, label %if.then94, label %if.else101 @@ -2311,10 +2301,8 @@ _ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKN _ZNK4node10contextify17ContextifyContext7contextEv.exit: ; preds = %_ZNK4node10contextify17ContextifyContext7sandboxEv.exit, %if.end.i.i.i8, %_ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKNS2_14PersistentBaseIS5_EE.exit.i.i %retval.sroa.0.0.i.i = phi ptr [ %call.i.i.i.i, %_ZN4node17PersistentToLocal4WeakIN2v87ContextEEENS2_5LocalIT_EEPNS2_7IsolateERKNS2_14PersistentBaseIS5_EE.exit.i.i ], [ null, %_ZNK4node10contextify17ContextifyContext7sandboxEv.exit ], [ %26, %if.end.i.i.i8 ] %call13 = tail call i16 @_ZN2v86Object6DeleteENS_5LocalINS_7ContextEEEj(ptr noundef nonnull align 1 dereferenceable(1) %call.i28.i, ptr %retval.sroa.0.0.i.i, i32 noundef %index) #22 - %tobool.i = trunc i16 %call13 to i1 - %30 = and i16 %call13, 256 - %tobool2.i = icmp ne i16 %30, 0 - %cond.i = and i1 %tobool2.i, %tobool.i + %30 = and i16 %call13, 257 + %cond.i = icmp eq i16 %30, 257 br i1 %cond.i, label %return, label %if.end17 if.end17: ; preds = %_ZNK4node10contextify17ContextifyContext7contextEv.exit diff --git a/bench/node/optimized/libnode.node_options.ll b/bench/node/optimized/libnode.node_options.ll index 97b50c56cc2..9928e5fb844 100644 --- a/bench/node/optimized/libnode.node_options.ll +++ b/bench/node/optimized/libnode.node_options.ll @@ -14076,10 +14076,8 @@ lor.lhs.false286: ; preds = %_ZN4node9ToV8ValueE %help_text_string_.i.i = getelementptr inbounds nuw i8, ptr %180, i64 1088 %181 = load ptr, ptr %help_text_string_.i.i, align 8 %call309 = tail call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call268, ptr nonnull %call2.i, ptr %181, ptr nonnull %call11.i471) #22 - %tobool.i801 = trunc i16 %call309 to i1 - %182 = and i16 %call309, 256 - %tobool2.i807 = icmp ne i16 %182, 0 - %cond.i804 = and i1 %tobool2.i807, %tobool.i801 + %182 = and i16 %call309, 257 + %cond.i804 = icmp eq i16 %182, 257 br i1 %cond.i804, label %lor.lhs.false312, label %cleanup lor.lhs.false312: ; preds = %lor.lhs.false286 @@ -14090,10 +14088,8 @@ lor.lhs.false312: ; preds = %lor.lhs.false286 %185 = load i32, ptr %env_setting, align 8 %call327 = tail call ptr @_ZN2v87Integer3NewEPNS_7IsolateEi(ptr noundef %16, i32 noundef %185) #22 %call343 = tail call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call268, ptr nonnull %call2.i, ptr %184, ptr %call327) #22 - %tobool.i790 = trunc i16 %call343 to i1 - %186 = and i16 %call343, 256 - %tobool2.i796 = icmp ne i16 %186, 0 - %cond.i793 = and i1 %tobool2.i796, %tobool.i790 + %186 = and i16 %call343, 257 + %cond.i793 = icmp eq i16 %186, 257 br i1 %cond.i793, label %lor.lhs.false346, label %cleanup lor.lhs.false346: ; preds = %lor.lhs.false312 @@ -14103,10 +14099,8 @@ lor.lhs.false346: ; preds = %lor.lhs.false312 %189 = load i32, ptr %second, align 8 %call362 = tail call ptr @_ZN2v87Integer3NewEPNS_7IsolateEi(ptr noundef %16, i32 noundef %189) #22 %call378 = tail call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call268, ptr nonnull %call2.i, ptr %188, ptr %call362) #22 - %tobool.i779 = trunc i16 %call378 to i1 - %190 = and i16 %call378, 256 - %tobool2.i785 = icmp ne i16 %190, 0 - %cond.i782 = and i1 %tobool2.i785, %tobool.i779 + %190 = and i16 %call378, 257 + %cond.i782 = icmp eq i16 %190, 257 br i1 %cond.i782, label %lor.lhs.false381, label %cleanup lor.lhs.false381: ; preds = %lor.lhs.false346 @@ -14120,10 +14114,8 @@ lor.lhs.false381: ; preds = %lor.lhs.false346 %retval.i.sroa.0.0.in = add i64 %retval.i.sroa.0.0.in.v, %69 %retval.i.sroa.0.0 = inttoptr i64 %retval.i.sroa.0.0.in to ptr %call413 = tail call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call268, ptr nonnull %call2.i, ptr %192, ptr %retval.i.sroa.0.0) #22 - %tobool.i773 = trunc i16 %call413 to i1 - %194 = and i16 %call413, 256 - %tobool2.i = icmp ne i16 %194, 0 - %cond.i = and i1 %tobool2.i, %tobool.i773 + %194 = and i16 %call413, 257 + %cond.i = icmp eq i16 %194, 257 br i1 %cond.i, label %lor.lhs.false416, label %cleanup lor.lhs.false416: ; preds = %lor.lhs.false381 diff --git a/bench/opencv/optimized/dxt.cpp.ll b/bench/opencv/optimized/dxt.cpp.ll index 77f690921d3..35ab9e88336 100644 --- a/bench/opencv/optimized/dxt.cpp.ll +++ b/bench/opencv/optimized/dxt.cpp.ll @@ -513,10 +513,9 @@ define linkonce_odr hidden void @_ZN2cv15OcvDftBasicImpl4initEiiiiPb(ptr noundef br label %87 85: ; preds = %.thread - %86 = trunc i32 %4 to i1 - %.not51 = xor i1 %86, true - %brmerge = or i1 %.not46, %.not51 - br i1 %brmerge, label %140, label %87 + %86 = and i32 %4, 33 + %brmerge.not = icmp eq i32 %86, 33 + br i1 %brmerge.not, label %87, label %140 87: ; preds = %.loopexit, %.thread64, %85 %88 = phi i1 [ false, %85 ], [ %84, %.loopexit ], [ true, %.thread64 ] diff --git a/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll b/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll index 532c2743a13..e305a5e5a4d 100644 --- a/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll +++ b/bench/rust-analyzer-rs/optimized/k5mtltw7nxmadpl.ll @@ -50940,11 +50940,9 @@ define noundef zeroext i1 @_ZN13rust_analyzer6config6Config43did_save_text_docum %.sroa.0.0.insert.insert.i = phi i32 [ %24, %9 ], [ 3, %1 ], [ 3, %5 ] %25 = and i32 %.sroa.0.0.insert.insert.i, 255 %26 = icmp ne i32 %25, 3 - %27 = and i32 %.sroa.0.0.insert.insert.i, 16777216 - %28 = icmp ne i32 %27, 0 - %29 = trunc i32 %.sroa.0.0.insert.insert.i to i1 - %30 = and i1 %26, %29 - %spec.select = and i1 %28, %30 + %27 = and i32 %.sroa.0.0.insert.insert.i, 16777217 + %28 = icmp eq i32 %27, 16777217 + %spec.select = and i1 %26, %28 ret i1 %spec.select } diff --git a/bench/velox/optimized/StringFunctions.cpp.ll b/bench/velox/optimized/StringFunctions.cpp.ll index 7bcae3d0381..64f6f9a4e1e 100644 --- a/bench/velox/optimized/StringFunctions.cpp.ll +++ b/bench/velox/optimized/StringFunctions.cpp.ll @@ -4490,10 +4490,8 @@ if.end.i: ; preds = %invoke.cont unreachable invoke.cont12: ; preds = %if.then.i - %8 = and i16 %call1.i21, 256 - %tobool.i.i.i = icmp ne i16 %8, 0 - %tobool6.i = trunc i16 %call1.i21 to i1 - %9 = and i1 %tobool.i.i.i, %tobool6.i + %8 = and i16 %call1.i21, 257 + %9 = icmp eq i16 %8, 257 br i1 %9, label %land.rhs, label %if.end28 land.rhs: ; preds = %invoke.cont12 @@ -7939,10 +7937,8 @@ if.end.i: ; preds = %invoke.cont unreachable invoke.cont12: ; preds = %if.then.i - %8 = and i16 %call1.i21, 256 - %tobool.i.i.i = icmp ne i16 %8, 0 - %tobool6.i = trunc i16 %call1.i21 to i1 - %9 = and i1 %tobool.i.i.i, %tobool6.i + %8 = and i16 %call1.i21, 257 + %9 = icmp eq i16 %8, 257 br i1 %9, label %land.rhs, label %if.end26 land.rhs: ; preds = %invoke.cont12 diff --git a/bench/wasmtime-rs/optimized/50oljwux3amwt8rq.ll b/bench/wasmtime-rs/optimized/50oljwux3amwt8rq.ll index b597b1a8530..a44ba725033 100644 --- a/bench/wasmtime-rs/optimized/50oljwux3amwt8rq.ll +++ b/bench/wasmtime-rs/optimized/50oljwux3amwt8rq.ll @@ -1197,8 +1197,8 @@ define void @_ZN20wasmtime_wit_bindgen4rust13RustGenerator8modes_of17hbef7543a83 %9 = alloca { { i64, ptr, {} }, i64 }, align 8 %10 = tail call i40 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$4info17h7ee73b7b031a3440E"(ptr align 8 %1, i64 %2, i32 %3) %11 = and i40 %10, 256 - %.not17.not = icmp eq i40 %11, 0 - br i1 %.not17.not, label %14, label %.thread + %.not17 = icmp eq i40 %11, 0 + br i1 %.not17, label %14, label %.thread .thread: ; preds = %4 store i64 0, ptr %9, align 8 @@ -1232,11 +1232,11 @@ define void @_ZN20wasmtime_wit_bindgen4rust13RustGenerator8modes_of17hbef7543a83 %23 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) to label %26 unwind label %24, !range !22 -24: ; preds = %35, %39, %38, %28, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit, %20 +24: ; preds = %33, %37, %36, %28, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit, %20 %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr112drop_in_place$LT$alloc..vec..Vec$LT$$LP$alloc..string..String$C$wasmtime_wit_bindgen..rust..TypeMode$RP$$GT$$GT$17h0158f830e82c94fcE"(ptr nonnull align 8 %9) #13 - to label %44 unwind label %42 + to label %42 unwind label %40 26: ; preds = %20 %27 = icmp eq i8 %23, 2 @@ -1258,44 +1258,42 @@ _ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6fa to label %31 unwind label %24 31: ; preds = %28 - %32 = trunc i40 %10 to i1 - %33 = and i40 %10, 16777472 - %34 = icmp eq i40 %33, 16777472 - %or.cond = and i1 %34, %32 - br i1 %or.cond, label %35, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread - -35: ; preds = %31 - %36 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) + %32 = and i40 %10, 16777473 + %or.cond = icmp eq i40 %32, 16777473 + br i1 %or.cond, label %33, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread + +33: ; preds = %31 + %34 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6 unwind label %24 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6: ; preds = %35 - %37 = trunc i8 %36 to i1 - br i1 %37, label %38, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6: ; preds = %33 + %35 = trunc i8 %34 to i1 + br i1 %35, label %36, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread: ; preds = %31, %39, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6 +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread: ; preds = %31, %37, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) br label %19 -38: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6 +36: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6 invoke void @_ZN20wasmtime_wit_bindgen4rust13RustGenerator10param_name17hc8791f34864d463fE(ptr nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 %5, ptr align 8 %1, i64 %2, i32 %3) - to label %39 unwind label %24 + to label %37 unwind label %24 -39: ; preds = %38 +37: ; preds = %36 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %40 = getelementptr inbounds nuw i8, ptr %6, i64 24 - store ptr @anon.1ed22c87c0bfd8076dc71e37a923bb51.59, ptr %40, align 8 - %41 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store i64 2, ptr %41, align 8 + %38 = getelementptr inbounds nuw i8, ptr %6, i64 24 + store ptr @anon.1ed22c87c0bfd8076dc71e37a923bb51.59, ptr %38, align 8 + %39 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store i64 2, ptr %39, align 8 invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h38c9e3050d4be4caE"(ptr nonnull align 8 %9, ptr nonnull align 8 %6) to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit6.thread unwind label %24 -42: ; preds = %24 - %43 = landingpad { ptr, i32 } +40: ; preds = %24 + %41 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #14 unreachable -44: ; preds = %24 +42: ; preds = %24 resume { ptr, i32 } %25 } @@ -1323,61 +1321,54 @@ define void @_ZN20wasmtime_wit_bindgen4rust13RustGenerator10param_name17hc8791f3 %19 = getelementptr inbounds nuw i8, ptr %11, i64 96 %20 = load i64, ptr %19, align 8, !noundef !3 call void @"_ZN59_$LT$str$u20$as$u20$heck..upper_camel..ToUpperCamelCase$GT$19to_upper_camel_case17ha26a7806f7d5045aE"(ptr nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 %7, ptr nonnull align 1 %18, i64 %20) - %21 = and i40 %8, 16777216 - %.not = icmp eq i40 %21, 0 - br i1 %.not, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, label %22 + %21 = and i40 %8, 16777473 + %or.cond = icmp eq i40 %21, 16777473 + br i1 %or.cond, label %22, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread 22: ; preds = %16 - %23 = trunc i40 %8 to i1 - %24 = and i40 %8, 256 - %.not14 = icmp ne i40 %24, 0 - %or.cond.not = and i1 %.not14, %23 - br i1 %or.cond.not, label %25, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread - -25: ; preds = %22 - %26 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) - to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit unwind label %27 - -27: ; preds = %25, %32, %30 - %28 = landingpad { ptr, i32 } + %23 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) + to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit unwind label %24 + +24: ; preds = %22, %29, %27 + %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hcfc4ef542b4c7efcE"(ptr nonnull align 8 %7) #13 - to label %36 unwind label %34 + to label %33 unwind label %31 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit: ; preds = %25 - %29 = trunc i8 %26 to i1 - br i1 %29, label %30, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit: ; preds = %22 + %26 = trunc i8 %23 to i1 + br i1 %26, label %27, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread -30: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit +27: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit store ptr %7, ptr %5, align 8 - %31 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store ptr @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17h501e2ab095e4e83eE", ptr %31, align 8 + %28 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store ptr @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17h501e2ab095e4e83eE", ptr %28, align 8 invoke void @_ZN4core3fmt9Arguments6new_v117h6427ca1b3147dc17E(ptr nonnull sret({ { ptr, i64 }, { ptr, i64 }, { ptr, [1 x i64] } }) align 8 %6, ptr nonnull align 8 @anon.1ed22c87c0bfd8076dc71e37a923bb51.65, i64 2, ptr nonnull align 8 %5, i64 1) - to label %32 unwind label %27 + to label %29 unwind label %24 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread: ; preds = %16, %22, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread: ; preds = %16, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) - br label %33 + br label %30 -32: ; preds = %30 +29: ; preds = %27 invoke void @_ZN5alloc3fmt6format17h087f148fdbec138eE(ptr sret({ { { i64, ptr, {} }, i64 } }) align 8 %0, ptr nonnull align 8 %6) - to label %.thread unwind label %27 + to label %.thread unwind label %24 -33: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, %.thread +30: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, %.thread ret void -.thread: ; preds = %32 +.thread: ; preds = %29 call void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hcfc4ef542b4c7efcE"(ptr nonnull align 8 %7) - br label %33 + br label %30 -34: ; preds = %27 - %35 = landingpad { ptr, i32 } +31: ; preds = %24 + %32 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #14 unreachable -36: ; preds = %27 - resume { ptr, i32 } %28 +33: ; preds = %24 + resume { ptr, i32 } %25 } ; Function Attrs: nonlazybind uwtable @@ -1404,61 +1395,54 @@ define void @_ZN20wasmtime_wit_bindgen4rust13RustGenerator11result_name17hafe827 %19 = getelementptr inbounds nuw i8, ptr %11, i64 96 %20 = load i64, ptr %19, align 8, !noundef !3 call void @"_ZN59_$LT$str$u20$as$u20$heck..upper_camel..ToUpperCamelCase$GT$19to_upper_camel_case17ha26a7806f7d5045aE"(ptr nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 %7, ptr nonnull align 1 %18, i64 %20) - %21 = and i40 %8, 16777216 - %.not = icmp eq i40 %21, 0 - br i1 %.not, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, label %22 + %21 = and i40 %8, 16777473 + %or.cond = icmp eq i40 %21, 16777473 + br i1 %or.cond, label %22, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread 22: ; preds = %16 - %23 = trunc i40 %8 to i1 - %24 = and i40 %8, 256 - %.not14 = icmp ne i40 %24, 0 - %or.cond.not = and i1 %.not14, %23 - br i1 %or.cond.not, label %25, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread - -25: ; preds = %22 - %26 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) - to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit unwind label %27 - -27: ; preds = %25, %32, %30 - %28 = landingpad { ptr, i32 } + %23 = invoke i8 @"_ZN102_$LT$wasmtime_wit_bindgen..InterfaceGenerator$u20$as$u20$wasmtime_wit_bindgen..rust..RustGenerator$GT$9ownership17h1c94743b9a7d39e4E"(ptr align 8 %1) + to label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit unwind label %24 + +24: ; preds = %22, %29, %27 + %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hcfc4ef542b4c7efcE"(ptr nonnull align 8 %7) #13 - to label %36 unwind label %34 + to label %33 unwind label %31 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit: ; preds = %25 - %29 = trunc i8 %26 to i1 - br i1 %29, label %30, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit: ; preds = %22 + %26 = trunc i8 %23 to i1 + br i1 %26, label %27, label %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread -30: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit +27: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit store ptr %7, ptr %5, align 8 - %31 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store ptr @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17h501e2ab095e4e83eE", ptr %31, align 8 + %28 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store ptr @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17h501e2ab095e4e83eE", ptr %28, align 8 invoke void @_ZN4core3fmt9Arguments6new_v117h6427ca1b3147dc17E(ptr nonnull sret({ { ptr, i64 }, { ptr, i64 }, { ptr, [1 x i64] } }) align 8 %6, ptr nonnull align 8 @anon.1ed22c87c0bfd8076dc71e37a923bb51.69, i64 2, ptr nonnull align 8 %5, i64 1) - to label %32 unwind label %27 + to label %29 unwind label %24 -_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread: ; preds = %16, %22, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit +_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread: ; preds = %16, %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) - br label %33 + br label %30 -32: ; preds = %30 +29: ; preds = %27 invoke void @_ZN5alloc3fmt6format17h087f148fdbec138eE(ptr sret({ { { i64, ptr, {} }, i64 } }) align 8 %0, ptr nonnull align 8 %6) - to label %.thread unwind label %27 + to label %.thread unwind label %24 -33: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, %.thread +30: ; preds = %_ZN20wasmtime_wit_bindgen4rust13RustGenerator14uses_two_names17hcf90db91714bb6faE.exit.thread, %.thread ret void -.thread: ; preds = %32 +.thread: ; preds = %29 call void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hcfc4ef542b4c7efcE"(ptr nonnull align 8 %7) - br label %33 + br label %30 -34: ; preds = %27 - %35 = landingpad { ptr, i32 } +31: ; preds = %24 + %32 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #14 unreachable -36: ; preds = %27 - resume { ptr, i32 } %28 +33: ; preds = %24 + resume { ptr, i32 } %25 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/z3/optimized/api_ast.cpp.ll b/bench/z3/optimized/api_ast.cpp.ll index 68fa82c3687..087d4e36ddf 100644 --- a/bench/z3/optimized/api_ast.cpp.ll +++ b/bench/z3/optimized/api_ast.cpp.ll @@ -7086,12 +7086,10 @@ if.end14: ; preds = %lor.lhs.false invoke.cont17: ; preds = %if.end14 %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %9, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 - %10 = and i16 %bf.load.i.i, 2 - %bf.cast4.i.i = icmp ne i16 %10, 0 - %11 = and i1 %bf.cast4.i.i, %bf.cast.i.i - %cond.fr = freeze i1 %11 - %spec.select = select i1 %cond.fr, i32 0, i32 %i + %bf.load.i.i.fr = freeze i16 %bf.load.i.i + %10 = and i16 %bf.load.i.i.fr, 3 + %11 = icmp eq i16 %10, 3 + %spec.select = select i1 %11, i32 0, i32 %i br label %invoke.cont17.thread invoke.cont17.thread: ; preds = %invoke.cont17, %if.end14 diff --git a/bench/z3/optimized/ast.cpp.ll b/bench/z3/optimized/ast.cpp.ll index 23d7fd8b48a..e676dae821a 100644 --- a/bench/z3/optimized/ast.cpp.ll +++ b/bench/z3/optimized/ast.cpp.ll @@ -21851,10 +21851,10 @@ return: ; preds = %entry, %_ZNK6vector ; Function Attrs: mustprogress uwtable define hidden noundef ptr @_ZN11ast_manager6mk_appEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef %decl, i32 noundef %num_args, ptr nocapture noundef readonly %args) local_unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 { entry: - %args.i123 = alloca [2 x ptr], align 16 - %args.i113 = alloca [2 x ptr], align 16 - %args.i110 = alloca [2 x ptr], align 16 - %args.i100 = alloca [2 x ptr], align 16 + %args.i122 = alloca [2 x ptr], align 16 + %args.i112 = alloca [2 x ptr], align 16 + %args.i109 = alloca [2 x ptr], align 16 + %args.i99 = alloca [2 x ptr], align 16 %args.i = alloca [2 x ptr], align 16 %buffer = alloca %"class.std::__cxx11::basic_ostringstream", align 8 %ref.tmp = alloca %struct.mk_pp, align 8 @@ -21910,12 +21910,9 @@ _ZNK4decl13get_family_idEv.exit: ; preds = %land.lhs.true10 _ZNK9func_decl14is_associativeEv.exit: ; preds = %_ZNK4decl13get_family_idEv.exit %m_left_assoc.i.i73 = getelementptr inbounds nuw i8, ptr %5, i64 17 %bf.load.i.i74 = load i16, ptr %m_left_assoc.i.i73, align 1 - %bf.cast.i.i75 = trunc i16 %bf.load.i.i74 to i1 - %7 = and i16 %bf.load.i.i74, 2 - %bf.cast4.i.i = icmp ne i16 %7, 0 - %8 = and i1 %bf.cast4.i.i, %bf.cast.i.i75 - %lnot15 = xor i1 %8, true - %9 = zext i1 %lnot15 to i32 + %7 = and i16 %bf.load.i.i74, 3 + %8 = icmp ne i16 %7, 3 + %9 = zext i1 %8 to i32 br label %land.end16 land.end16: ; preds = %land.lhs.true10, %_ZNK9func_decl14is_associativeEv.exit, %_ZNK4decl13get_family_idEv.exit, %land.end @@ -21927,19 +21924,19 @@ land.end16: ; preds = %land.lhs.true10, %_ if.then: ; preds = %land.end16 call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %buffer) %call21 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %buffer, ptr noundef nonnull @.str.144) - to label %invoke.cont unwind label %lpad.loopexit.split-lp149 + to label %invoke.cont unwind label %lpad.loopexit.split-lp148 invoke.cont: ; preds = %if.then %call23 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %call21, i32 noundef %num_args) - to label %invoke.cont22 unwind label %lpad.loopexit.split-lp149 + to label %invoke.cont22 unwind label %lpad.loopexit.split-lp148 invoke.cont22: ; preds = %invoke.cont %call25 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call23, ptr noundef nonnull @.str.145) - to label %invoke.cont24 unwind label %lpad.loopexit.split-lp149 + to label %invoke.cont24 unwind label %lpad.loopexit.split-lp148 invoke.cont24: ; preds = %invoke.cont22 invoke void @_ZN11mk_ismt2_ppC2EP3astR11ast_managerjjPKc(ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp, ptr noundef nonnull %decl, ptr noundef nonnull align 8 dereferenceable(976) %this, i32 noundef 0, i32 noundef 0, ptr noundef null) - to label %invoke.cont26 unwind label %lpad.loopexit.split-lp149 + to label %invoke.cont26 unwind label %lpad.loopexit.split-lp148 invoke.cont26: ; preds = %invoke.cont24 %call29 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK11mk_ismt2_pp(ptr noundef nonnull align 8 dereferenceable(8) %call25, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp) @@ -21952,24 +21949,24 @@ invoke.cont28: ; preds = %invoke.cont26 invoke.cont30: ; preds = %invoke.cont28 %m_empty.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i) #36 - %cmp32153.not = icmp eq i32 %num_args, 0 - br i1 %cmp32153.not, label %for.end, label %for.body.lr.ph + %cmp32152.not = icmp eq i32 %num_args, 0 + br i1 %cmp32152.not, label %for.end, label %for.body.lr.ph for.body.lr.ph: ; preds = %invoke.cont30 - %m_empty.i.i77 = getelementptr inbounds nuw i8, ptr %ref.tmp35, i64 16 + %m_empty.i.i76 = getelementptr inbounds nuw i8, ptr %ref.tmp35, i64 16 %wide.trip.count = zext i32 %num_args to i64 br label %for.body for.body: ; preds = %for.body.lr.ph, %invoke.cont40 %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %invoke.cont40 ] %call34 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %buffer, ptr noundef nonnull @.str.146) - to label %invoke.cont33 unwind label %lpad.loopexit148 + to label %invoke.cont33 unwind label %lpad.loopexit147 invoke.cont33: ; preds = %for.body %arrayidx = getelementptr inbounds nuw ptr, ptr %args, i64 %indvars.iv %10 = load ptr, ptr %arrayidx, align 8 invoke void @_ZN11mk_ismt2_ppC2EP3astR11ast_managerjjPKc(ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp35, ptr noundef %10, ptr noundef nonnull align 8 dereferenceable(976) %this, i32 noundef 0, i32 noundef 0, ptr noundef null) - to label %invoke.cont36 unwind label %lpad.loopexit148 + to label %invoke.cont36 unwind label %lpad.loopexit147 invoke.cont36: ; preds = %invoke.cont33 %call39 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK11mk_ismt2_pp(ptr noundef nonnull align 8 dereferenceable(8) %call34, ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp35) @@ -21980,32 +21977,32 @@ invoke.cont38: ; preds = %invoke.cont36 to label %invoke.cont40 unwind label %lpad37 invoke.cont40: ; preds = %invoke.cont38 - call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i77) #36 + call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i76) #36 %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 %for.end, label %for.body, !llvm.loop !82 -lpad.loopexit148: ; preds = %for.body, %invoke.cont33 - %lpad.loopexit150 = landingpad { ptr, i32 } +lpad.loopexit147: ; preds = %for.body, %invoke.cont33 + %lpad.loopexit149 = landingpad { ptr, i32 } cleanup br label %ehcleanup47 -lpad.loopexit.split-lp149: ; preds = %if.then, %invoke.cont, %invoke.cont22, %invoke.cont24 - %lpad.loopexit.split-lp151 = landingpad { ptr, i32 } +lpad.loopexit.split-lp148: ; preds = %if.then, %invoke.cont, %invoke.cont22, %invoke.cont24 + %lpad.loopexit.split-lp150 = landingpad { ptr, i32 } cleanup br label %ehcleanup47 lpad27: ; preds = %invoke.cont28, %invoke.cont26 %11 = landingpad { ptr, i32 } cleanup - %m_empty.i.i78 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i78) #36 + %m_empty.i.i77 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 + call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i77) #36 br label %ehcleanup47 lpad37: ; preds = %invoke.cont38, %invoke.cont36 %12 = landingpad { ptr, i32 } cleanup - call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i77) #36 + call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i76) #36 br label %ehcleanup47 for.end: ; preds = %invoke.cont40, %invoke.cont30 @@ -22033,8 +22030,8 @@ cleanup.action: ; preds = %for.end call void @__cxa_free_exception(ptr %exception) #36 br label %ehcleanup47 -ehcleanup47: ; preds = %lpad.loopexit148, %lpad.loopexit.split-lp149, %ehcleanup, %cleanup.action, %lpad37, %lpad27 - %.pn56 = phi { ptr, i32 } [ %12, %lpad37 ], [ %14, %cleanup.action ], [ %13, %ehcleanup ], [ %11, %lpad27 ], [ %lpad.loopexit150, %lpad.loopexit148 ], [ %lpad.loopexit.split-lp151, %lpad.loopexit.split-lp149 ] +ehcleanup47: ; preds = %lpad.loopexit147, %lpad.loopexit.split-lp148, %ehcleanup, %cleanup.action, %lpad37, %lpad27 + %.pn56 = phi { ptr, i32 } [ %12, %lpad37 ], [ %14, %cleanup.action ], [ %13, %ehcleanup ], [ %11, %lpad27 ], [ %lpad.loopexit149, %lpad.loopexit147 ], [ %lpad.loopexit.split-lp150, %lpad.loopexit.split-lp148 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %buffer) #36 br label %eh.resume @@ -22043,21 +22040,21 @@ if.end: ; preds = %land.end16 br i1 %cmp48, label %land.lhs.true49, label %if.else land.lhs.true49: ; preds = %if.end - %m_info.i.i80 = getelementptr inbounds nuw i8, ptr %decl, i64 24 - %15 = load ptr, ptr %m_info.i.i80, align 8 - %cmp.not.i81 = icmp eq ptr %15, null - br i1 %cmp.not.i81, label %if.then122, label %_ZNK9func_decl12is_chainableEv.exit86 - -_ZNK9func_decl12is_chainableEv.exit86: ; preds = %land.lhs.true49 - %m_chainable.i.i83 = getelementptr inbounds nuw i8, ptr %15, i64 17 - %bf.load.i.i84 = load i16, ptr %m_chainable.i.i83, align 1 - %16 = and i16 %bf.load.i.i84, 16 - %bf.cast.i.i85 = icmp ne i16 %16, 0 + %m_info.i.i79 = getelementptr inbounds nuw i8, ptr %decl, i64 24 + %15 = load ptr, ptr %m_info.i.i79, align 8 + %cmp.not.i80 = icmp eq ptr %15, null + br i1 %cmp.not.i80, label %if.then122, label %_ZNK9func_decl12is_chainableEv.exit85 + +_ZNK9func_decl12is_chainableEv.exit85: ; preds = %land.lhs.true49 + %m_chainable.i.i82 = getelementptr inbounds nuw i8, ptr %15, i64 17 + %bf.load.i.i83 = load i16, ptr %m_chainable.i.i82, align 1 + %16 = and i16 %bf.load.i.i83, 16 + %bf.cast.i.i84 = icmp ne i16 %16, 0 %cmp53 = icmp eq i32 %0, 2 - %or.cond146 = and i1 %cmp53, %bf.cast.i.i85 - br i1 %or.cond146, label %if.then54, label %if.then122 + %or.cond145 = and i1 %cmp53, %bf.cast.i.i84 + br i1 %or.cond145, label %if.then54, label %if.then122 -if.then54: ; preds = %_ZNK9func_decl12is_chainableEv.exit86 +if.then54: ; preds = %_ZNK9func_decl12is_chainableEv.exit85 %m_true.i = getelementptr inbounds nuw i8, ptr %this, i64 856 %17 = load ptr, ptr %m_true.i, align 8 br label %if.end120 @@ -22067,24 +22064,24 @@ if.else: ; preds = %if.end br i1 %cmp56, label %land.lhs.true57, label %if.then122 land.lhs.true57: ; preds = %if.else - %m_info.i.i88 = getelementptr inbounds nuw i8, ptr %decl, i64 24 - %18 = load ptr, ptr %m_info.i.i88, align 8 - %cmp.not.i89 = icmp eq ptr %18, null - br i1 %cmp.not.i89, label %if.then122, label %_ZNK9func_decl19is_flat_associativeEv.exit + %m_info.i.i87 = getelementptr inbounds nuw i8, ptr %decl, i64 24 + %18 = load ptr, ptr %m_info.i.i87, align 8 + %cmp.not.i88 = icmp eq ptr %18, null + br i1 %cmp.not.i88, label %if.then122, label %_ZNK9func_decl19is_flat_associativeEv.exit _ZNK9func_decl19is_flat_associativeEv.exit: ; preds = %land.lhs.true57 %m_flat_associative.i.i = getelementptr inbounds nuw i8, ptr %18, i64 17 - %bf.load.i.i91 = load i16, ptr %m_flat_associative.i.i, align 1 - %19 = and i16 %bf.load.i.i91, 4 - %bf.cast.i.i92.not = icmp eq i16 %19, 0 - br i1 %bf.cast.i.i92.not, label %_ZNK9func_decl20is_right_associativeEv.exit99, label %if.then122 + %bf.load.i.i90 = load i16, ptr %m_flat_associative.i.i, align 1 + %19 = and i16 %bf.load.i.i90, 4 + %bf.cast.i.i91.not = icmp eq i16 %19, 0 + br i1 %bf.cast.i.i91.not, label %_ZNK9func_decl20is_right_associativeEv.exit98, label %if.then122 -_ZNK9func_decl20is_right_associativeEv.exit99: ; preds = %_ZNK9func_decl19is_flat_associativeEv.exit - %20 = and i16 %bf.load.i.i91, 2 - %bf.cast.i.i98.not = icmp eq i16 %20, 0 - br i1 %bf.cast.i.i98.not, label %_ZNK9func_decl19is_left_associativeEv.exit109, label %while.body.lr.ph +_ZNK9func_decl20is_right_associativeEv.exit98: ; preds = %_ZNK9func_decl19is_flat_associativeEv.exit + %20 = and i16 %bf.load.i.i90, 2 + %bf.cast.i.i97.not = icmp eq i16 %20, 0 + br i1 %bf.cast.i.i97.not, label %_ZNK9func_decl19is_left_associativeEv.exit108, label %while.body.lr.ph -while.body.lr.ph: ; preds = %_ZNK9func_decl20is_right_associativeEv.exit99 +while.body.lr.ph: ; preds = %_ZNK9func_decl20is_right_associativeEv.exit98 %sub = add i32 %num_args, -1 %sub62 = add i32 %num_args, -2 %idxprom63 = zext i32 %sub62 to i64 @@ -22099,90 +22096,90 @@ while.body.lr.ph: ; preds = %_ZNK9func_decl20is_ store ptr %22, ptr %arrayinit.element.i, align 8 %call.i = call noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef 2, ptr noundef nonnull %args.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %args.i) - %arrayinit.element.i101 = getelementptr inbounds nuw i8, ptr %args.i100, i64 8 + %arrayinit.element.i100 = getelementptr inbounds nuw i8, ptr %args.i99, i64 8 br label %while.body while.body: ; preds = %while.body.lr.ph, %while.body - %indvars.iv166 = phi i64 [ %idxprom63, %while.body.lr.ph ], [ %23, %while.body ] - %r.1156 = phi ptr [ %call.i, %while.body.lr.ph ], [ %call.i102, %while.body ] - %23 = add nsw i64 %indvars.iv166, -1 + %indvars.iv165 = phi i64 [ %idxprom63, %while.body.lr.ph ], [ %23, %while.body ] + %r.1155 = phi ptr [ %call.i, %while.body.lr.ph ], [ %call.i101, %while.body ] + %23 = add nsw i64 %indvars.iv165, -1 %arrayidx71 = getelementptr inbounds nuw ptr, ptr %args, i64 %23 %24 = load ptr, ptr %arrayidx71, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %args.i100) - store ptr %24, ptr %args.i100, align 16 - store ptr %r.1156, ptr %arrayinit.element.i101, align 8 - %call.i102 = call noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef 2, ptr noundef nonnull %args.i100) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %args.i100) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %args.i99) + store ptr %24, ptr %args.i99, align 16 + store ptr %r.1155, ptr %arrayinit.element.i100, align 8 + %call.i101 = call noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef 2, ptr noundef nonnull %args.i99) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %args.i99) %cmp68.not.wide = icmp eq i64 %23, 0 br i1 %cmp68.not.wide, label %if.end120, label %while.body, !llvm.loop !83 -_ZNK9func_decl19is_left_associativeEv.exit109: ; preds = %_ZNK9func_decl20is_right_associativeEv.exit99 - %bf.cast.i.i108 = trunc i16 %bf.load.i.i91 to i1 - br i1 %bf.cast.i.i108, label %for.body82.lr.ph, label %_ZNK9func_decl12is_chainableEv.exit122 +_ZNK9func_decl19is_left_associativeEv.exit108: ; preds = %_ZNK9func_decl20is_right_associativeEv.exit98 + %bf.cast.i.i107 = trunc i16 %bf.load.i.i90 to i1 + br i1 %bf.cast.i.i107, label %for.body82.lr.ph, label %_ZNK9func_decl12is_chainableEv.exit121 -for.body82.lr.ph: ; preds = %_ZNK9func_decl19is_left_associativeEv.exit109 +for.body82.lr.ph: ; preds = %_ZNK9func_decl19is_left_associativeEv.exit108 %25 = load ptr, ptr %args, align 8 %arrayidx77 = getelementptr inbounds nuw i8, ptr %args, i64 8 %26 = load ptr, ptr %arrayidx77, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %args.i110) - store ptr %25, ptr %args.i110, align 16 - %arrayinit.element.i111 = getelementptr inbounds nuw i8, ptr %args.i110, i64 8 - store ptr %26, ptr %arrayinit.element.i111, align 8 - %call.i112 = call noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef 2, ptr noundef nonnull %args.i110) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %args.i110) - %arrayinit.element.i114 = getelementptr inbounds nuw i8, ptr %args.i113, i64 8 - %wide.trip.count179 = zext i32 %num_args to i64 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %args.i109) + store ptr %25, ptr %args.i109, align 16 + %arrayinit.element.i110 = getelementptr inbounds nuw i8, ptr %args.i109, i64 8 + store ptr %26, ptr %arrayinit.element.i110, align 8 + %call.i111 = call noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef 2, ptr noundef nonnull %args.i109) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %args.i109) + %arrayinit.element.i113 = getelementptr inbounds nuw i8, ptr %args.i112, i64 8 + %wide.trip.count178 = zext i32 %num_args to i64 br label %for.body82 for.body82: ; preds = %for.body82.lr.ph, %for.body82 - %indvars.iv176 = phi i64 [ 2, %for.body82.lr.ph ], [ %indvars.iv.next177, %for.body82 ] - %r.2161 = phi ptr [ %call.i112, %for.body82.lr.ph ], [ %call.i115, %for.body82 ] - %arrayidx84 = getelementptr inbounds nuw ptr, ptr %args, i64 %indvars.iv176 + %indvars.iv175 = phi i64 [ 2, %for.body82.lr.ph ], [ %indvars.iv.next176, %for.body82 ] + %r.2160 = phi ptr [ %call.i111, %for.body82.lr.ph ], [ %call.i114, %for.body82 ] + %arrayidx84 = getelementptr inbounds nuw ptr, ptr %args, i64 %indvars.iv175 %27 = load ptr, ptr %arrayidx84, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %args.i113) - store ptr %r.2161, ptr %args.i113, align 16 - store ptr %27, ptr %arrayinit.element.i114, align 8 - %call.i115 = call noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef 2, ptr noundef nonnull %args.i113) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %args.i113) - %indvars.iv.next177 = add nuw nsw i64 %indvars.iv176, 1 - %exitcond180.not = icmp eq i64 %indvars.iv.next177, %wide.trip.count179 - br i1 %exitcond180.not, label %if.end120, label %for.body82, !llvm.loop !84 - -_ZNK9func_decl12is_chainableEv.exit122: ; preds = %_ZNK9func_decl19is_left_associativeEv.exit109 - %28 = and i16 %bf.load.i.i91, 16 - %bf.cast.i.i121.not = icmp eq i16 %28, 0 - br i1 %bf.cast.i.i121.not, label %if.then122, label %for.body95.lr.ph - -for.body95.lr.ph: ; preds = %_ZNK9func_decl12is_chainableEv.exit122 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %args.i112) + store ptr %r.2160, ptr %args.i112, align 16 + store ptr %27, ptr %arrayinit.element.i113, align 8 + %call.i114 = call noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef 2, ptr noundef nonnull %args.i112) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %args.i112) + %indvars.iv.next176 = add nuw nsw i64 %indvars.iv175, 1 + %exitcond179.not = icmp eq i64 %indvars.iv.next176, %wide.trip.count178 + br i1 %exitcond179.not, label %if.end120, label %for.body82, !llvm.loop !84 + +_ZNK9func_decl12is_chainableEv.exit121: ; preds = %_ZNK9func_decl19is_left_associativeEv.exit108 + %28 = and i16 %bf.load.i.i90, 16 + %bf.cast.i.i120.not = icmp eq i16 %28, 0 + br i1 %bf.cast.i.i120.not, label %if.then122, label %for.body95.lr.ph + +for.body95.lr.ph: ; preds = %_ZNK9func_decl12is_chainableEv.exit121 %m_initial_buffer.i.i = getelementptr inbounds nuw i8, ptr %new_args, i64 16 store ptr %m_initial_buffer.i.i, ptr %new_args, align 8 %m_pos.i.i = getelementptr inbounds nuw i8, ptr %new_args, i64 8 store i32 0, ptr %m_pos.i.i, align 8 %m_capacity.i.i = getelementptr inbounds nuw i8, ptr %new_args, i64 12 store i32 16, ptr %m_capacity.i.i, align 4 - %arrayinit.element.i124 = getelementptr inbounds nuw i8, ptr %args.i123, i64 8 - %wide.trip.count174 = zext i32 %num_args to i64 + %arrayinit.element.i123 = getelementptr inbounds nuw i8, ptr %args.i122, i64 8 + %wide.trip.count173 = zext i32 %num_args to i64 %invariant.gep = getelementptr i8, ptr %args, i64 -8 br label %for.body95 for.body95: ; preds = %for.body95.lr.ph, %for.inc106 - %indvars.iv170 = phi i64 [ 1, %for.body95.lr.ph ], [ %indvars.iv.next171, %for.inc106 ] - %gep = getelementptr ptr, ptr %invariant.gep, i64 %indvars.iv170 + %indvars.iv169 = phi i64 [ 1, %for.body95.lr.ph ], [ %indvars.iv.next170, %for.inc106 ] + %gep = getelementptr ptr, ptr %invariant.gep, i64 %indvars.iv169 %29 = load ptr, ptr %gep, align 8 - %arrayidx101 = getelementptr inbounds nuw ptr, ptr %args, i64 %indvars.iv170 + %arrayidx101 = getelementptr inbounds nuw ptr, ptr %args, i64 %indvars.iv169 %30 = load ptr, ptr %arrayidx101, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %args.i123) - store ptr %29, ptr %args.i123, align 16 - store ptr %30, ptr %arrayinit.element.i124, align 8 - %call.i125126 = invoke noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef 2, ptr noundef nonnull %args.i123) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %args.i122) + store ptr %29, ptr %args.i122, align 16 + store ptr %30, ptr %arrayinit.element.i123, align 8 + %call.i124125 = invoke noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef 2, ptr noundef nonnull %args.i122) to label %invoke.cont103 unwind label %lpad102.loopexit invoke.cont103: ; preds = %for.body95 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %args.i123) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %args.i122) %31 = load i32, ptr %m_pos.i.i, align 8 %32 = load i32, ptr %m_capacity.i.i, align 4 - %cmp.not.i127 = icmp ult i32 %31, %32 - br i1 %cmp.not.i127, label %entry.if.end_crit_edge.i, label %if.then.i + %cmp.not.i126 = icmp ult i32 %31, %32 + br i1 %cmp.not.i126, label %entry.if.end_crit_edge.i, label %if.then.i entry.if.end_crit_edge.i: ; preds = %invoke.cont103 %.pre.i = load ptr, ptr %new_args, align 8 @@ -22192,7 +22189,7 @@ if.then.i: ; preds = %invoke.cont103 %shl.i.i = shl i32 %32, 1 %conv.i.i = zext i32 %shl.i.i to i64 %mul.i.i = shl nuw nsw i64 %conv.i.i, 3 - %call.i.i128 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i) + %call.i.i127 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i) to label %call.i.i.noexc unwind label %lpad102.loopexit call.i.i.noexc: ; preds = %if.then.i @@ -22207,7 +22204,7 @@ for.body.lr.ph.i.i: ; preds = %call.i.i.noexc for.body.i.i: ; preds = %for.body.i.i, %for.body.lr.ph.i.i %indvars.iv.i.i = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %indvars.iv.next.i.i, %for.body.i.i ] - %arrayidx.i.i = getelementptr inbounds nuw ptr, ptr %call.i.i128, i64 %indvars.iv.i.i + %arrayidx.i.i = getelementptr inbounds nuw ptr, ptr %call.i.i127, i64 %indvars.iv.i.i %arrayidx3.i.i = getelementptr inbounds nuw ptr, ptr %.pre.i.i, i64 %indvars.iv.i.i %34 = load ptr, ptr %arrayidx3.i.i, align 8 store ptr %34, ptr %arrayidx.i.i, align 8 @@ -22231,22 +22228,22 @@ if.end.i.i.i.i: ; preds = %for.end.i.i _ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i: ; preds = %.noexc, %for.end.i.i %.pre1.i = phi i32 [ %33, %for.end.i.i ], [ %.pre1.pre.i, %.noexc ] - store ptr %call.i.i128, ptr %new_args, align 8 + store ptr %call.i.i127, ptr %new_args, align 8 store i32 %shl.i.i, ptr %m_capacity.i.i, align 4 br label %for.inc106 for.inc106: ; preds = %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i, %entry.if.end_crit_edge.i %35 = phi i32 [ %31, %entry.if.end_crit_edge.i ], [ %.pre1.i, %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i ] - %36 = phi ptr [ %.pre.i, %entry.if.end_crit_edge.i ], [ %call.i.i128, %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i ] + %36 = phi ptr [ %.pre.i, %entry.if.end_crit_edge.i ], [ %call.i.i127, %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i ] %idx.ext.i = zext i32 %35 to i64 %add.ptr.i = getelementptr inbounds nuw ptr, ptr %36, i64 %idx.ext.i - store ptr %call.i125126, ptr %add.ptr.i, align 8 + store ptr %call.i124125, ptr %add.ptr.i, align 8 %37 = load i32, ptr %m_pos.i.i, align 8 %inc.i = add i32 %37, 1 store i32 %inc.i, ptr %m_pos.i.i, align 8 - %indvars.iv.next171 = add nuw nsw i64 %indvars.iv170, 1 - %exitcond175.not = icmp eq i64 %indvars.iv.next171, %wide.trip.count174 - br i1 %exitcond175.not, label %for.end108, label %for.body95, !llvm.loop !86 + %indvars.iv.next170 = add nuw nsw i64 %indvars.iv169, 1 + %exitcond174.not = icmp eq i64 %indvars.iv.next170, %wide.trip.count173 + br i1 %exitcond174.not, label %for.end108, label %for.body95, !llvm.loop !86 lpad102.loopexit: ; preds = %for.body95, %if.then.i, %if.end.i.i.i.i %lpad.loopexit = landingpad { ptr, i32 } @@ -22267,14 +22264,14 @@ for.end108: ; preds = %for.inc106 %.pre = load ptr, ptr %new_args, align 8 %m_plugins.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 704 %38 = load ptr, ptr %m_plugins.i.i.i, align 8 - %cmp.i.i.i.i.i132 = icmp eq ptr %38, null - br i1 %cmp.i.i.i.i.i132, label %invoke.cont113, label %_ZNK6vectorIP11decl_pluginLb0EjE3getEjRKS1_.exit.i.i.i + %cmp.i.i.i.i.i131 = icmp eq ptr %38, null + br i1 %cmp.i.i.i.i.i131, label %invoke.cont113, label %_ZNK6vectorIP11decl_pluginLb0EjE3getEjRKS1_.exit.i.i.i _ZNK6vectorIP11decl_pluginLb0EjE3getEjRKS1_.exit.i.i.i: ; preds = %for.end108 %arrayidx.i.i.i.i.i = getelementptr inbounds i8, ptr %38, i64 -4 %39 = load i32, ptr %arrayidx.i.i.i.i.i, align 4 - %cmp.not.i.i.i.i133.not = icmp eq i32 %39, 0 - br i1 %cmp.not.i.i.i.i133.not, label %invoke.cont113, label %_ZNK11ast_manager10get_pluginEi.exit.i.i + %cmp.not.i.i.i.i132.not = icmp eq i32 %39, 0 + br i1 %cmp.not.i.i.i.i132.not, label %invoke.cont113, label %_ZNK11ast_manager10get_pluginEi.exit.i.i _ZNK11ast_manager10get_pluginEi.exit.i.i: ; preds = %_ZNK6vectorIP11decl_pluginLb0EjE3getEjRKS1_.exit.i.i.i %.then.val.i.i.i = load ptr, ptr %38, align 8 @@ -22285,19 +22282,19 @@ if.then.i2.i: ; preds = %_ZNK11ast_manager10 %vtable.i.i = load ptr, ptr %.then.val.i.i.i, align 8 %vfn.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i, i64 64 %40 = load ptr, ptr %vfn.i.i, align 8 - %call2.i3.i134 = invoke noundef ptr %40(ptr noundef nonnull align 8 dereferenceable(20) %.then.val.i.i.i, i32 noundef 5, i32 noundef 0, ptr noundef null, i32 noundef %inc.i, ptr noundef %.pre, ptr noundef null) + %call2.i3.i133 = invoke noundef ptr %40(ptr noundef nonnull align 8 dereferenceable(20) %.then.val.i.i.i, i32 noundef 5, i32 noundef 0, ptr noundef null, i32 noundef %inc.i, ptr noundef %.pre, ptr noundef null) to label %_ZN11ast_manager12mk_func_declEiijPK9parameterjPKP4exprP4sort.exit.i unwind label %lpad102.loopexit.split-lp _ZN11ast_manager12mk_func_declEiijPK9parameterjPKP4exprP4sort.exit.i: ; preds = %if.then.i2.i - %cmp.not.i.i = icmp eq ptr %call2.i3.i134, null + %cmp.not.i.i = icmp eq ptr %call2.i3.i133, null br i1 %cmp.not.i.i, label %invoke.cont113, label %if.then.i.i if.then.i.i: ; preds = %_ZN11ast_manager12mk_func_declEiijPK9parameterjPKP4exprP4sort.exit.i - %call2.i.i135 = invoke noundef ptr @_ZN11ast_manager6mk_appEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %call2.i3.i134, i32 noundef %inc.i, ptr noundef %.pre) + %call2.i.i134 = invoke noundef ptr @_ZN11ast_manager6mk_appEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %call2.i3.i133, i32 noundef %inc.i, ptr noundef %.pre) to label %invoke.cont113 unwind label %lpad102.loopexit.split-lp invoke.cont113: ; preds = %for.end108, %_ZNK6vectorIP11decl_pluginLb0EjE3getEjRKS1_.exit.i.i.i, %_ZNK11ast_manager10get_pluginEi.exit.i.i, %if.then.i.i, %_ZN11ast_manager12mk_func_declEiijPK9parameterjPKP4exprP4sort.exit.i - %retval.0.i.i = phi ptr [ null, %_ZN11ast_manager12mk_func_declEiijPK9parameterjPKP4exprP4sort.exit.i ], [ %call2.i.i135, %if.then.i.i ], [ null, %_ZNK11ast_manager10get_pluginEi.exit.i.i ], [ null, %_ZNK6vectorIP11decl_pluginLb0EjE3getEjRKS1_.exit.i.i.i ], [ null, %for.end108 ] + %retval.0.i.i = phi ptr [ null, %_ZN11ast_manager12mk_func_declEiijPK9parameterjPKP4exprP4sort.exit.i ], [ %call2.i.i134, %if.then.i.i ], [ null, %_ZNK11ast_manager10get_pluginEi.exit.i.i ], [ null, %_ZNK6vectorIP11decl_pluginLb0EjE3getEjRKS1_.exit.i.i.i ], [ null, %for.end108 ] %41 = load ptr, ptr %new_args, align 8 %cmp.not.i.i.i.i = icmp eq ptr %41, %m_initial_buffer.i.i %cmp.i.i.i.i.i = icmp eq ptr %41, null @@ -22316,11 +22313,11 @@ terminate.lpad.i.i: ; preds = %if.end.i.i.i.i.i unreachable if.end120: ; preds = %while.body, %for.body82, %if.end.i.i.i.i.i, %invoke.cont113, %if.then54 - %r.0 = phi ptr [ %17, %if.then54 ], [ %retval.0.i.i, %invoke.cont113 ], [ %retval.0.i.i, %if.end.i.i.i.i.i ], [ %call.i115, %for.body82 ], [ %call.i102, %while.body ] + %r.0 = phi ptr [ %17, %if.then54 ], [ %retval.0.i.i, %invoke.cont113 ], [ %retval.0.i.i, %if.end.i.i.i.i.i ], [ %call.i114, %for.body82 ], [ %call.i101, %while.body ] %cmp121 = icmp eq ptr %r.0, null br i1 %cmp121, label %if.then122, label %if.end124 -if.then122: ; preds = %land.lhs.true57, %land.lhs.true49, %_ZNK9func_decl12is_chainableEv.exit86, %if.else, %_ZNK9func_decl12is_chainableEv.exit122, %_ZNK9func_decl19is_flat_associativeEv.exit, %if.end120 +if.then122: ; preds = %land.lhs.true57, %land.lhs.true49, %_ZNK9func_decl12is_chainableEv.exit85, %if.else, %_ZNK9func_decl12is_chainableEv.exit121, %_ZNK9func_decl19is_flat_associativeEv.exit, %if.end120 %call123 = call noundef ptr @_ZN11ast_manager11mk_app_coreEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %this, ptr noundef nonnull %decl, i32 noundef %num_args, ptr noundef %args) br label %if.end124 @@ -23744,10 +23741,8 @@ entry: _ZNK9func_decl14is_associativeEv.exit: ; preds = %entry %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %0, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 - %1 = and i16 %bf.load.i.i, 2 - %bf.cast4.i.i = icmp ne i16 %1, 0 - %2 = and i1 %bf.cast4.i.i, %bf.cast.i.i + %1 = and i16 %bf.load.i.i, 3 + %2 = icmp eq i16 %1, 3 br i1 %2, label %if.then, label %if.else if.then: ; preds = %_ZNK9func_decl14is_associativeEv.exit @@ -24475,10 +24470,8 @@ entry: _ZNK9func_decl14is_associativeEv.exit: ; preds = %entry %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %0, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 - %1 = and i16 %bf.load.i.i, 2 - %bf.cast4.i.i = icmp ne i16 %1, 0 - %2 = and i1 %bf.cast4.i.i, %bf.cast.i.i + %1 = and i16 %bf.load.i.i, 3 + %2 = icmp eq i16 %1, 3 br i1 %2, label %if.then, label %if.else if.then: ; preds = %_ZNK9func_decl14is_associativeEv.exit @@ -25068,10 +25061,8 @@ for.body: ; preds = %for.body.lr.ph, %fo invoke.cont6: ; preds = %for.body %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %2, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 - %3 = and i16 %bf.load.i.i, 2 - %bf.cast4.i.i = icmp ne i16 %3, 0 - %4 = and i1 %bf.cast4.i.i, %bf.cast.i.i + %3 = and i16 %bf.load.i.i, 3 + %4 = icmp eq i16 %3, 3 br i1 %4, label %cond.end, label %cond.false cond.false: ; preds = %for.body, %invoke.cont6 @@ -25635,10 +25626,8 @@ _ZNK4expr8get_sortEv.exit: ; preds = %sw.bb.i, %sw.bb5.i, _ZNK9func_decl14is_associativeEv.exit: ; preds = %_ZNK4expr8get_sortEv.exit %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %2, i64 17 %bf.load.i.i13 = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i13 to i1 - %3 = and i16 %bf.load.i.i13, 2 - %bf.cast4.i.i = icmp ne i16 %3, 0 - %4 = and i1 %bf.cast4.i.i, %bf.cast.i.i + %3 = and i16 %bf.load.i.i13, 3 + %4 = icmp eq i16 %3, 3 br i1 %4, label %cond.end, label %cond.false cond.false: ; preds = %_ZNK4expr8get_sortEv.exit, %_ZNK9func_decl14is_associativeEv.exit diff --git a/bench/z3/optimized/ast_ll_pp.cpp.ll b/bench/z3/optimized/ast_ll_pp.cpp.ll index 9bb516efd74..f05a2079c0c 100644 --- a/bench/z3/optimized/ast_ll_pp.cpp.ll +++ b/bench/z3/optimized/ast_ll_pp.cpp.ll @@ -1717,10 +1717,8 @@ _ZN10ll_printer16display_childrenI4sortEEvjPKPT_.exit: ; preds = %if.end.i, %if. _ZNK9func_decl14is_associativeEv.exit: ; preds = %_ZN10ll_printer16display_childrenI4sortEEvjPKPT_.exit %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %16, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 - %17 = and i16 %bf.load.i.i, 2 - %bf.cast4.i.i = icmp ne i16 %17, 0 - %18 = and i1 %bf.cast4.i.i, %bf.cast.i.i + %17 = and i16 %bf.load.i.i, 3 + %18 = icmp eq i16 %17, 3 br i1 %18, label %if.end24, label %_ZNK9func_decl14is_commutativeEv.exit if.end24: ; preds = %_ZNK9func_decl14is_associativeEv.exit @@ -1731,27 +1729,27 @@ if.end24: ; preds = %_ZNK9func_decl14is_ br i1 %cmp.not.i14, label %if.end35, label %_ZNK9func_decl14is_commutativeEv.exit _ZNK9func_decl14is_commutativeEv.exit: ; preds = %_ZNK9func_decl14is_associativeEv.exit, %if.end24 - %.pr32 = phi ptr [ %.pr.pre, %if.end24 ], [ %16, %_ZNK9func_decl14is_associativeEv.exit ] - %m_commutative.i.i = getelementptr inbounds nuw i8, ptr %.pr32, i64 17 + %.pr31 = phi ptr [ %.pr.pre, %if.end24 ], [ %16, %_ZNK9func_decl14is_associativeEv.exit ] + %m_commutative.i.i = getelementptr inbounds nuw i8, ptr %.pr31, i64 17 %bf.load.i.i16 = load i16, ptr %m_commutative.i.i, align 1 %20 = and i16 %bf.load.i.i16, 8 - %bf.cast.i.i17.not = icmp eq i16 %20, 0 - br i1 %bf.cast.i.i17.not, label %_ZNK9func_decl12is_injectiveEv.exit, label %if.end29 + %bf.cast.i.i.not = icmp eq i16 %20, 0 + br i1 %bf.cast.i.i.not, label %_ZNK9func_decl12is_injectiveEv.exit, label %if.end29 if.end29: ; preds = %_ZNK9func_decl14is_commutativeEv.exit %21 = load ptr, ptr %this, align 8 %call28 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull @.str.21) - %.pr26.pre = load ptr, ptr %m_info.i, align 8 - %cmp.not.i19 = icmp eq ptr %.pr26.pre, null - br i1 %cmp.not.i19, label %if.end35, label %_ZNK9func_decl12is_injectiveEv.exit + %.pr25.pre = load ptr, ptr %m_info.i, align 8 + %cmp.not.i18 = icmp eq ptr %.pr25.pre, null + br i1 %cmp.not.i18, label %if.end35, label %_ZNK9func_decl12is_injectiveEv.exit _ZNK9func_decl12is_injectiveEv.exit: ; preds = %_ZNK9func_decl14is_commutativeEv.exit, %if.end29 - %.pr2635 = phi ptr [ %.pr26.pre, %if.end29 ], [ %.pr32, %_ZNK9func_decl14is_commutativeEv.exit ] - %m_injective.i.i = getelementptr inbounds nuw i8, ptr %.pr2635, i64 17 - %bf.load.i.i21 = load i16, ptr %m_injective.i.i, align 1 - %22 = and i16 %bf.load.i.i21, 64 - %bf.cast.i.i22.not = icmp eq i16 %22, 0 - br i1 %bf.cast.i.i22.not, label %if.end35, label %if.then31 + %.pr2534 = phi ptr [ %.pr25.pre, %if.end29 ], [ %.pr31, %_ZNK9func_decl14is_commutativeEv.exit ] + %m_injective.i.i = getelementptr inbounds nuw i8, ptr %.pr2534, i64 17 + %bf.load.i.i20 = load i16, ptr %m_injective.i.i, align 1 + %22 = and i16 %bf.load.i.i20, 64 + %bf.cast.i.i21.not = icmp eq i16 %22, 0 + br i1 %bf.cast.i.i21.not, label %if.end35, label %if.then31 if.then31: ; preds = %_ZNK9func_decl12is_injectiveEv.exit %23 = load ptr, ptr %this, align 8 diff --git a/bench/z3/optimized/for_each_expr.cpp.ll b/bench/z3/optimized/for_each_expr.cpp.ll index 83dee638f8a..eaf50d86677 100644 --- a/bench/z3/optimized/for_each_expr.cpp.ll +++ b/bench/z3/optimized/for_each_expr.cpp.ll @@ -216,9 +216,9 @@ _ZN6bufferISt4pairIP4exprjELb0ELj16EE9push_backEOS3_.exit: ; preds = %_ZN13ast_f store i32 16, ptr %m_capacity.i.i26, align 4 store ptr %n, ptr %9, align 8 store i32 1, ptr %m_pos.i.i25, align 8 - %m_pos.i.i197 = getelementptr inbounds nuw i8, ptr %visited, i64 8 - %m_capacity.i.i198 = getelementptr inbounds nuw i8, ptr %visited, i64 12 - %m_initial_buffer.i.i.i.i216 = getelementptr inbounds nuw i8, ptr %visited, i64 16 + %m_pos.i.i195 = getelementptr inbounds nuw i8, ptr %visited, i64 8 + %m_capacity.i.i196 = getelementptr inbounds nuw i8, ptr %visited, i64 12 + %m_initial_buffer.i.i.i.i214 = getelementptr inbounds nuw i8, ptr %visited, i64 16 br label %start.preheader start.preheader: ; preds = %_ZN6bufferISt4pairIP4exprjELb0ELj16EE9push_backEOS3_.exit, %sw.epilog82 @@ -242,22 +242,22 @@ start: ; preds = %start.backedge, %st ] lpad.loopexit: ; preds = %if.then.i.i48, %if.end.i.i.i.i.i68 - %lpad.loopexit290 = landingpad { ptr, i32 } + %lpad.loopexit288 = landingpad { ptr, i32 } cleanup br label %lpad -lpad.loopexit.split-lp.loopexit: ; preds = %if.end.i.i.i.i256, %if.then.i237, %if.end.i.i.i.i.i220, %if.then.i.i200, %if.end.i.i.i.i151, %if.then.i132, %if.end.i.i.i.i108, %if.then.i89 - %lpad.loopexit292 = landingpad { ptr, i32 } +lpad.loopexit.split-lp.loopexit: ; preds = %if.end.i.i.i.i254, %if.then.i235, %if.end.i.i.i.i.i218, %if.then.i.i198, %if.end.i.i.i.i151, %if.then.i132, %if.end.i.i.i.i108, %if.then.i89 + %lpad.loopexit290 = landingpad { ptr, i32 } cleanup br label %lpad lpad.loopexit.split-lp.loopexit.split-lp: ; preds = %sw.default80, %sw.default - %lpad.loopexit.split-lp293 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp291 = landingpad { ptr, i32 } cleanup br label %lpad lpad: ; preds = %lpad.loopexit.split-lp.loopexit, %lpad.loopexit.split-lp.loopexit.split-lp, %lpad.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit290, %lpad.loopexit ], [ %lpad.loopexit292, %lpad.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp293, %lpad.loopexit.split-lp.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit288, %lpad.loopexit ], [ %lpad.loopexit290, %lpad.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp291, %lpad.loopexit.split-lp.loopexit.split-lp ] call void @_ZN7sbufferISt4pairIP4exprjELj16EED2Ev(ptr noundef nonnull align 8 dereferenceable(272) %stack) #19 resume { ptr, i32 } %lpad.phi @@ -273,8 +273,8 @@ sw.bb10: ; preds = %start %16 = load i32, ptr %m_num_args.i, align 8 %second = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 %17 = load i32, ptr %second, align 8 - %cmp14315 = icmp ult i32 %17, %16 - br i1 %cmp14315, label %while.body15.lr.ph, label %while.end + %cmp14313 = icmp ult i32 %17, %16 + br i1 %cmp14313, label %while.body15.lr.ph, label %while.end while.body15.lr.ph: ; preds = %sw.bb10 %m_args.i = getelementptr inbounds nuw i8, ptr %14, i64 32 @@ -302,8 +302,8 @@ invoke.cont23: ; preds = %while.body15 if.end.i43: ; preds = %invoke.cont23 %bf.set.i.i44 = or disjoint i32 %bf.load.i.i38, 65536 store i32 %bf.set.i.i44, ptr %m_mark1.i.i37, align 4 - %22 = load i32, ptr %m_pos.i.i197, align 8 - %23 = load i32, ptr %m_capacity.i.i198, align 4 + %22 = load i32, ptr %m_pos.i.i195, align 8 + %23 = load i32, ptr %m_capacity.i.i196, align 4 %cmp.not.i.i47 = icmp ult i32 %22, %23 br i1 %cmp.not.i.i47, label %entry.if.end_crit_edge.i.i76, label %if.then.i.i48 @@ -319,7 +319,7 @@ if.then.i.i48: ; preds = %if.end.i43 to label %call.i.i.i52.noexc unwind label %lpad.loopexit call.i.i.i52.noexc: ; preds = %if.then.i.i48 - %24 = load i32, ptr %m_pos.i.i197, align 8 + %24 = load i32, ptr %m_pos.i.i195, align 8 %cmp6.not.i.i.i53 = icmp eq i32 %24, 0 %.pre.i.i.i54 = load ptr, ptr %visited, align 8 br i1 %cmp6.not.i.i.i53, label %for.end.i.i.i63, label %for.body.lr.ph.i.i.i55 @@ -339,7 +339,7 @@ for.body.i.i.i57: ; preds = %for.body.i.i.i57, % br i1 %exitcond.not.i.i.i62, label %for.end.i.i.i63, label %for.body.i.i.i57, !llvm.loop !4 for.end.i.i.i63: ; preds = %for.body.i.i.i57, %call.i.i.i52.noexc - %cmp.not.i.i.i.i65 = icmp eq ptr %.pre.i.i.i54, %m_initial_buffer.i.i.i.i216 + %cmp.not.i.i.i.i65 = icmp eq ptr %.pre.i.i.i54, %m_initial_buffer.i.i.i.i214 %cmp.i.i.i.i.i66 = icmp eq ptr %.pre.i.i.i54, null %or.cond.i.i.i.i67 = or i1 %cmp.not.i.i.i.i65, %cmp.i.i.i.i.i66 br i1 %or.cond.i.i.i.i67, label %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i70, label %if.end.i.i.i.i.i68 @@ -349,13 +349,13 @@ if.end.i.i.i.i.i68: ; preds = %for.end.i.i.i63 to label %.noexc79 unwind label %lpad.loopexit .noexc79: ; preds = %if.end.i.i.i.i.i68 - %.pre1.pre.i.i69 = load i32, ptr %m_pos.i.i197, align 8 + %.pre1.pre.i.i69 = load i32, ptr %m_pos.i.i195, align 8 br label %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i70 _ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i70: ; preds = %.noexc79, %for.end.i.i.i63 %.pre1.i.i71 = phi i32 [ %24, %for.end.i.i.i63 ], [ %.pre1.pre.i.i69, %.noexc79 ] store ptr %call.i.i.i5278, ptr %visited, align 8 - store i32 %shl.i.i.i49, ptr %m_capacity.i.i198, align 4 + store i32 %shl.i.i.i49, ptr %m_capacity.i.i196, align 4 br label %_ZN13ast_fast_markILj1EE4markEP3ast.exit80 _ZN13ast_fast_markILj1EE4markEP3ast.exit80: ; preds = %entry.if.end_crit_edge.i.i76, %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i70 @@ -364,16 +364,16 @@ _ZN13ast_fast_markILj1EE4markEP3ast.exit80: ; preds = %entry.if.end_crit_e %idx.ext.i.i73 = zext i32 %26 to i64 %add.ptr.i.i74 = getelementptr inbounds nuw ptr, ptr %27, i64 %idx.ext.i.i73 store ptr %19, ptr %add.ptr.i.i74, align 8 - %28 = load i32, ptr %m_pos.i.i197, align 8 + %28 = load i32, ptr %m_pos.i.i195, align 8 %inc.i.i75 = add i32 %28, 1 - store i32 %inc.i.i75, ptr %m_pos.i.i197, align 8 + store i32 %inc.i.i75, ptr %m_pos.i.i195, align 8 br label %if.end28 if.end28: ; preds = %_ZN13ast_fast_markILj1EE4markEP3ast.exit80, %while.body15 %m_kind.i81 = getelementptr inbounds nuw i8, ptr %19, i64 4 %bf.load.i82 = load i32, ptr %m_kind.i81, align 4 - %trunc289 = trunc i32 %bf.load.i82 to i16 - switch i16 %trunc289, label %sw.default [ + %trunc287 = trunc i32 %bf.load.i82 to i16 + switch i16 %trunc287, label %sw.default [ i16 1, label %sw.bb30 i16 2, label %sw.bb32 i16 0, label %sw.bb37 @@ -440,13 +440,13 @@ _ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i110: ; preds = %.noexc120, store i32 %shl.i.i90, ptr %m_capacity.i.i26, align 4 br label %start.backedge -start.backedge: ; preds = %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i110, %entry.if.end_crit_edge.i116, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i258, %entry.if.end_crit_edge.i264, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i153, %entry.if.end_crit_edge.i159 - %.sink372 = phi i32 [ %41, %entry.if.end_crit_edge.i159 ], [ %.pre1.i154, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i153 ], [ %66, %entry.if.end_crit_edge.i264 ], [ %.pre1.i259, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i258 ], [ %30, %entry.if.end_crit_edge.i116 ], [ %.pre1.i111, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i110 ] - %.sink = phi ptr [ %.pre.i160, %entry.if.end_crit_edge.i159 ], [ %call.i.i162, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i153 ], [ %.pre.i265, %entry.if.end_crit_edge.i264 ], [ %call.i.i267, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i258 ], [ %.pre.i117, %entry.if.end_crit_edge.i116 ], [ %call.i.i119, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i110 ] - %.lcssa347.sink = phi ptr [ %19, %entry.if.end_crit_edge.i159 ], [ %19, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i153 ], [ %retval.0.i, %entry.if.end_crit_edge.i264 ], [ %retval.0.i, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i258 ], [ %19, %entry.if.end_crit_edge.i116 ], [ %19, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i110 ] - %idx.ext.i113 = zext i32 %.sink372 to i64 +start.backedge: ; preds = %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i110, %entry.if.end_crit_edge.i116, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i256, %entry.if.end_crit_edge.i262, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i153, %entry.if.end_crit_edge.i159 + %.sink370 = phi i32 [ %41, %entry.if.end_crit_edge.i159 ], [ %.pre1.i154, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i153 ], [ %66, %entry.if.end_crit_edge.i262 ], [ %.pre1.i257, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i256 ], [ %30, %entry.if.end_crit_edge.i116 ], [ %.pre1.i111, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i110 ] + %.sink = phi ptr [ %.pre.i160, %entry.if.end_crit_edge.i159 ], [ %call.i.i162, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i153 ], [ %.pre.i263, %entry.if.end_crit_edge.i262 ], [ %call.i.i265, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i256 ], [ %.pre.i117, %entry.if.end_crit_edge.i116 ], [ %call.i.i119, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i110 ] + %.lcssa345.sink = phi ptr [ %19, %entry.if.end_crit_edge.i159 ], [ %19, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i153 ], [ %retval.0.i, %entry.if.end_crit_edge.i262 ], [ %retval.0.i, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i256 ], [ %19, %entry.if.end_crit_edge.i116 ], [ %19, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i110 ] + %idx.ext.i113 = zext i32 %.sink370 to i64 %add.ptr.i114 = getelementptr inbounds nuw %"struct.std::pair", ptr %.sink, i64 %idx.ext.i113 - store ptr %.lcssa347.sink, ptr %add.ptr.i114, align 8 + store ptr %.lcssa345.sink, ptr %add.ptr.i114, align 8 %ref.tmp33.sroa.2.0.add.ptr.i114.sroa_idx = getelementptr inbounds nuw i8, ptr %add.ptr.i114, i64 8 store i32 0, ptr %ref.tmp33.sroa.2.0.add.ptr.i114.sroa_idx, align 8 %33 = load i32, ptr %m_pos.i.i25, align 8 @@ -474,10 +474,8 @@ if.then41: ; preds = %sw.bb37 _ZNK9func_decl14is_associativeEv.exit.i: ; preds = %if.then41 %m_left_assoc.i.i.i = getelementptr inbounds nuw i8, ptr %37, i64 17 %bf.load.i.i.i = load i16, ptr %m_left_assoc.i.i.i, align 1 - %bf.cast.i.i.i = trunc i16 %bf.load.i.i.i to i1 - %38 = and i16 %bf.load.i.i.i, 2 - %bf.cast4.i.i.i = icmp ne i16 %38, 0 - %39 = and i1 %bf.cast4.i.i.i, %bf.cast.i.i.i + %38 = and i16 %bf.load.i.i.i, 3 + %39 = icmp eq i16 %38, 3 br i1 %39, label %if.then.i126, label %while.cond13.backedge if.then.i126: ; preds = %_ZNK9func_decl14is_associativeEv.exit.i @@ -561,13 +559,13 @@ while.cond13.backedge: ; preds = %while.cond13.backed br i1 %cmp14, label %while.body15, label %while.cond13.while.end_crit_edge, !llvm.loop !7 while.cond13.while.end_crit_edge: ; preds = %while.cond13.backedge - %.pre341 = load i32, ptr %m_pos.i.i25, align 8 - %.pre343 = add i32 %.pre341, -1 + %.pre339 = load i32, ptr %m_pos.i.i25, align 8 + %.pre341 = add i32 %.pre339, -1 br label %while.end while.end: ; preds = %sw.bb10, %while.cond13.while.end_crit_edge - %dec.i166.pre-phi = phi i32 [ %.pre343, %while.cond13.while.end_crit_edge ], [ %sub.i, %sw.bb10 ] - %m_num_args.i367 = getelementptr inbounds nuw i8, ptr %14, i64 24 + %dec.i166.pre-phi = phi i32 [ %.pre341, %while.cond13.while.end_crit_edge ], [ %sub.i, %sw.bb10 ] + %m_num_args.i365 = getelementptr inbounds nuw i8, ptr %14, i64 24 store i32 %dec.i166.pre-phi, ptr %m_pos.i.i25, align 8 %45 = load i32, ptr %proc, align 4 %inc.i167 = add i32 %45, 1 @@ -582,26 +580,24 @@ while.end: ; preds = %sw.bb10, %while.con _ZNK9func_decl14is_associativeEv.exit.i171: ; preds = %while.end %m_left_assoc.i.i.i172 = getelementptr inbounds nuw i8, ptr %47, i64 17 %bf.load.i.i.i173 = load i16, ptr %m_left_assoc.i.i.i172, align 1 - %bf.cast.i.i.i174 = trunc i16 %bf.load.i.i.i173 to i1 - %48 = and i16 %bf.load.i.i.i173, 2 - %bf.cast4.i.i.i175 = icmp ne i16 %48, 0 - %49 = and i1 %bf.cast4.i.i.i175, %bf.cast.i.i.i174 - br i1 %49, label %if.then.i177, label %sw.epilog82 - -if.then.i177: ; preds = %_ZNK9func_decl14is_associativeEv.exit.i171 - %50 = load i32, ptr %m_num_args.i367, align 8 - %sub.i179 = add i32 %45, -1 - %add.i180 = add i32 %sub.i179, %50 - store i32 %add.i180, ptr %proc, align 4 + %48 = and i16 %bf.load.i.i.i173, 3 + %49 = icmp eq i16 %48, 3 + br i1 %49, label %if.then.i175, label %sw.epilog82 + +if.then.i175: ; preds = %_ZNK9func_decl14is_associativeEv.exit.i171 + %50 = load i32, ptr %m_num_args.i365, align 8 + %sub.i177 = add i32 %45, -1 + %add.i178 = add i32 %sub.i177, %50 + store i32 %add.i178, ptr %proc, align 4 br label %sw.epilog82 sw.bb52: ; preds = %start %m_num_patterns.i.i = getelementptr inbounds nuw i8, ptr %14, i64 72 %51 = load i32, ptr %m_num_patterns.i.i, align 8 - %add.i182 = add i32 %51, 1 + %add.i180 = add i32 %51, 1 %m_num_no_patterns.i.i = getelementptr inbounds nuw i8, ptr %14, i64 76 %52 = load i32, ptr %m_num_no_patterns.i.i, align 4 - %add3.i = add i32 %add.i182, %52 + %add3.i = add i32 %add.i180, %52 %second57 = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 %m_patterns_decls.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %14, i64 80 %m_num_decls.i.i.i.i = getelementptr inbounds nuw i8, ptr %14, i64 20 @@ -615,15 +611,15 @@ while.cond56: ; preds = %sw.bb52, %invoke.co br i1 %cmp58, label %while.body59, label %while.end78 while.body59: ; preds = %while.cond56 - %cmp.i183 = icmp eq i32 %53, 0 - br i1 %cmp.i183, label %invoke.cont61, label %if.else.i + %cmp.i181 = icmp eq i32 %53, 0 + br i1 %cmp.i181, label %invoke.cont61, label %if.else.i if.else.i: ; preds = %while.body59 %54 = load i32, ptr %m_num_patterns.i.i, align 8 %cmp3.not.i = icmp ugt i32 %53, %54 %55 = xor i32 %54, -1 - %.sink375 = select i1 %cmp3.not.i, i32 %55, i32 -1 - %sub9.i = add i32 %53, %.sink375 + %.sink373 = select i1 %cmp3.not.i, i32 %55, i32 -1 + %sub9.i = add i32 %53, %.sink373 %56 = load i32, ptr %m_num_decls.i.i.i.i, align 4 %idx.ext.i.i.i7.i = zext i32 %56 to i64 %add.ptr.i.i.i8.i = getelementptr inbounds nuw ptr, ptr %m_patterns_decls.i.i.i.i.i, i64 %idx.ext.i.i.i7.i @@ -637,152 +633,152 @@ invoke.cont61: ; preds = %if.else.i, %while.b %retval.0.i = load ptr, ptr %retval.0.in.i, align 8 %inc64 = add nuw i32 %53, 1 store i32 %inc64, ptr %second57, align 8 - %m_ref_count.i188 = getelementptr inbounds nuw i8, ptr %retval.0.i, i64 8 - %57 = load i32, ptr %m_ref_count.i188, align 4 + %m_ref_count.i186 = getelementptr inbounds nuw i8, ptr %retval.0.i, i64 8 + %57 = load i32, ptr %m_ref_count.i186, align 4 %cmp66 = icmp ugt i32 %57, 1 br i1 %cmp66, label %invoke.cont68, label %if.end73 invoke.cont68: ; preds = %invoke.cont61 - %m_mark1.i.i189 = getelementptr inbounds nuw i8, ptr %retval.0.i, i64 4 - %bf.load.i.i190 = load i32, ptr %m_mark1.i.i189, align 4 - %58 = and i32 %bf.load.i.i190, 65536 - %tobool.i.i191.not = icmp eq i32 %58, 0 - br i1 %tobool.i.i191.not, label %if.end.i195, label %while.cond56, !llvm.loop !8 - -if.end.i195: ; preds = %invoke.cont68 - %m_mark1.i.i189.le = getelementptr inbounds nuw i8, ptr %retval.0.i, i64 4 - %bf.set.i.i196 = or disjoint i32 %bf.load.i.i190, 65536 - store i32 %bf.set.i.i196, ptr %m_mark1.i.i189.le, align 4 - %59 = load i32, ptr %m_pos.i.i197, align 8 - %60 = load i32, ptr %m_capacity.i.i198, align 4 - %cmp.not.i.i199 = icmp ult i32 %59, %60 - br i1 %cmp.not.i.i199, label %entry.if.end_crit_edge.i.i228, label %if.then.i.i200 - -entry.if.end_crit_edge.i.i228: ; preds = %if.end.i195 - %.pre.i.i229 = load ptr, ptr %visited, align 8 - br label %_ZN13ast_fast_markILj1EE4markEP3ast.exit232 - -if.then.i.i200: ; preds = %if.end.i195 - %shl.i.i.i201 = shl i32 %60, 1 - %conv.i.i.i202 = zext i32 %shl.i.i.i201 to i64 - %mul.i.i.i203 = shl nuw nsw i64 %conv.i.i.i202, 3 - %call.i.i.i204230 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i.i203) - to label %call.i.i.i204.noexc unwind label %lpad.loopexit.split-lp.loopexit - -call.i.i.i204.noexc: ; preds = %if.then.i.i200 - %61 = load i32, ptr %m_pos.i.i197, align 8 - %cmp6.not.i.i.i205 = icmp eq i32 %61, 0 - %.pre.i.i.i206 = load ptr, ptr %visited, align 8 - br i1 %cmp6.not.i.i.i205, label %for.end.i.i.i215, label %for.body.lr.ph.i.i.i207 - -for.body.lr.ph.i.i.i207: ; preds = %call.i.i.i204.noexc - %wide.trip.count.i.i.i208 = zext i32 %61 to i64 - br label %for.body.i.i.i209 - -for.body.i.i.i209: ; preds = %for.body.i.i.i209, %for.body.lr.ph.i.i.i207 - %indvars.iv.i.i.i210 = phi i64 [ 0, %for.body.lr.ph.i.i.i207 ], [ %indvars.iv.next.i.i.i213, %for.body.i.i.i209 ] - %arrayidx.i.i.i211 = getelementptr inbounds nuw ptr, ptr %call.i.i.i204230, i64 %indvars.iv.i.i.i210 - %arrayidx3.i.i.i212 = getelementptr inbounds nuw ptr, ptr %.pre.i.i.i206, i64 %indvars.iv.i.i.i210 - %62 = load ptr, ptr %arrayidx3.i.i.i212, align 8 - store ptr %62, ptr %arrayidx.i.i.i211, align 8 - %indvars.iv.next.i.i.i213 = add nuw nsw i64 %indvars.iv.i.i.i210, 1 - %exitcond.not.i.i.i214 = icmp eq i64 %indvars.iv.next.i.i.i213, %wide.trip.count.i.i.i208 - br i1 %exitcond.not.i.i.i214, label %for.end.i.i.i215, label %for.body.i.i.i209, !llvm.loop !4 - -for.end.i.i.i215: ; preds = %for.body.i.i.i209, %call.i.i.i204.noexc - %cmp.not.i.i.i.i217 = icmp eq ptr %.pre.i.i.i206, %m_initial_buffer.i.i.i.i216 - %cmp.i.i.i.i.i218 = icmp eq ptr %.pre.i.i.i206, null - %or.cond.i.i.i.i219 = or i1 %cmp.not.i.i.i.i217, %cmp.i.i.i.i.i218 - br i1 %or.cond.i.i.i.i219, label %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i222, label %if.end.i.i.i.i.i220 - -if.end.i.i.i.i.i220: ; preds = %for.end.i.i.i215 - invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %.pre.i.i.i206) - to label %.noexc231 unwind label %lpad.loopexit.split-lp.loopexit - -.noexc231: ; preds = %if.end.i.i.i.i.i220 - %.pre1.pre.i.i221 = load i32, ptr %m_pos.i.i197, align 8 - br label %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i222 - -_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i222: ; preds = %.noexc231, %for.end.i.i.i215 - %.pre1.i.i223 = phi i32 [ %61, %for.end.i.i.i215 ], [ %.pre1.pre.i.i221, %.noexc231 ] - store ptr %call.i.i.i204230, ptr %visited, align 8 - store i32 %shl.i.i.i201, ptr %m_capacity.i.i198, align 4 - br label %_ZN13ast_fast_markILj1EE4markEP3ast.exit232 - -_ZN13ast_fast_markILj1EE4markEP3ast.exit232: ; preds = %entry.if.end_crit_edge.i.i228, %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i222 - %63 = phi i32 [ %59, %entry.if.end_crit_edge.i.i228 ], [ %.pre1.i.i223, %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i222 ] - %64 = phi ptr [ %.pre.i.i229, %entry.if.end_crit_edge.i.i228 ], [ %call.i.i.i204230, %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i222 ] - %idx.ext.i.i225 = zext i32 %63 to i64 - %add.ptr.i.i226 = getelementptr inbounds nuw ptr, ptr %64, i64 %idx.ext.i.i225 - store ptr %retval.0.i, ptr %add.ptr.i.i226, align 8 - %65 = load i32, ptr %m_pos.i.i197, align 8 - %inc.i.i227 = add i32 %65, 1 - store i32 %inc.i.i227, ptr %m_pos.i.i197, align 8 + %m_mark1.i.i187 = getelementptr inbounds nuw i8, ptr %retval.0.i, i64 4 + %bf.load.i.i188 = load i32, ptr %m_mark1.i.i187, align 4 + %58 = and i32 %bf.load.i.i188, 65536 + %tobool.i.i189.not = icmp eq i32 %58, 0 + br i1 %tobool.i.i189.not, label %if.end.i193, label %while.cond56, !llvm.loop !8 + +if.end.i193: ; preds = %invoke.cont68 + %m_mark1.i.i187.le = getelementptr inbounds nuw i8, ptr %retval.0.i, i64 4 + %bf.set.i.i194 = or disjoint i32 %bf.load.i.i188, 65536 + store i32 %bf.set.i.i194, ptr %m_mark1.i.i187.le, align 4 + %59 = load i32, ptr %m_pos.i.i195, align 8 + %60 = load i32, ptr %m_capacity.i.i196, align 4 + %cmp.not.i.i197 = icmp ult i32 %59, %60 + br i1 %cmp.not.i.i197, label %entry.if.end_crit_edge.i.i226, label %if.then.i.i198 + +entry.if.end_crit_edge.i.i226: ; preds = %if.end.i193 + %.pre.i.i227 = load ptr, ptr %visited, align 8 + br label %_ZN13ast_fast_markILj1EE4markEP3ast.exit230 + +if.then.i.i198: ; preds = %if.end.i193 + %shl.i.i.i199 = shl i32 %60, 1 + %conv.i.i.i200 = zext i32 %shl.i.i.i199 to i64 + %mul.i.i.i201 = shl nuw nsw i64 %conv.i.i.i200, 3 + %call.i.i.i202228 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i.i201) + to label %call.i.i.i202.noexc unwind label %lpad.loopexit.split-lp.loopexit + +call.i.i.i202.noexc: ; preds = %if.then.i.i198 + %61 = load i32, ptr %m_pos.i.i195, align 8 + %cmp6.not.i.i.i203 = icmp eq i32 %61, 0 + %.pre.i.i.i204 = load ptr, ptr %visited, align 8 + br i1 %cmp6.not.i.i.i203, label %for.end.i.i.i213, label %for.body.lr.ph.i.i.i205 + +for.body.lr.ph.i.i.i205: ; preds = %call.i.i.i202.noexc + %wide.trip.count.i.i.i206 = zext i32 %61 to i64 + br label %for.body.i.i.i207 + +for.body.i.i.i207: ; preds = %for.body.i.i.i207, %for.body.lr.ph.i.i.i205 + %indvars.iv.i.i.i208 = phi i64 [ 0, %for.body.lr.ph.i.i.i205 ], [ %indvars.iv.next.i.i.i211, %for.body.i.i.i207 ] + %arrayidx.i.i.i209 = getelementptr inbounds nuw ptr, ptr %call.i.i.i202228, i64 %indvars.iv.i.i.i208 + %arrayidx3.i.i.i210 = getelementptr inbounds nuw ptr, ptr %.pre.i.i.i204, i64 %indvars.iv.i.i.i208 + %62 = load ptr, ptr %arrayidx3.i.i.i210, align 8 + store ptr %62, ptr %arrayidx.i.i.i209, align 8 + %indvars.iv.next.i.i.i211 = add nuw nsw i64 %indvars.iv.i.i.i208, 1 + %exitcond.not.i.i.i212 = icmp eq i64 %indvars.iv.next.i.i.i211, %wide.trip.count.i.i.i206 + br i1 %exitcond.not.i.i.i212, label %for.end.i.i.i213, label %for.body.i.i.i207, !llvm.loop !4 + +for.end.i.i.i213: ; preds = %for.body.i.i.i207, %call.i.i.i202.noexc + %cmp.not.i.i.i.i215 = icmp eq ptr %.pre.i.i.i204, %m_initial_buffer.i.i.i.i214 + %cmp.i.i.i.i.i216 = icmp eq ptr %.pre.i.i.i204, null + %or.cond.i.i.i.i217 = or i1 %cmp.not.i.i.i.i215, %cmp.i.i.i.i.i216 + br i1 %or.cond.i.i.i.i217, label %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i220, label %if.end.i.i.i.i.i218 + +if.end.i.i.i.i.i218: ; preds = %for.end.i.i.i213 + invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %.pre.i.i.i204) + to label %.noexc229 unwind label %lpad.loopexit.split-lp.loopexit + +.noexc229: ; preds = %if.end.i.i.i.i.i218 + %.pre1.pre.i.i219 = load i32, ptr %m_pos.i.i195, align 8 + br label %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i220 + +_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i220: ; preds = %.noexc229, %for.end.i.i.i213 + %.pre1.i.i221 = phi i32 [ %61, %for.end.i.i.i213 ], [ %.pre1.pre.i.i219, %.noexc229 ] + store ptr %call.i.i.i202228, ptr %visited, align 8 + store i32 %shl.i.i.i199, ptr %m_capacity.i.i196, align 4 + br label %_ZN13ast_fast_markILj1EE4markEP3ast.exit230 + +_ZN13ast_fast_markILj1EE4markEP3ast.exit230: ; preds = %entry.if.end_crit_edge.i.i226, %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i220 + %63 = phi i32 [ %59, %entry.if.end_crit_edge.i.i226 ], [ %.pre1.i.i221, %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i220 ] + %64 = phi ptr [ %.pre.i.i227, %entry.if.end_crit_edge.i.i226 ], [ %call.i.i.i202228, %_ZN6bufferIP3astLb0ELj16EE6expandEv.exit.i.i220 ] + %idx.ext.i.i223 = zext i32 %63 to i64 + %add.ptr.i.i224 = getelementptr inbounds nuw ptr, ptr %64, i64 %idx.ext.i.i223 + store ptr %retval.0.i, ptr %add.ptr.i.i224, align 8 + %65 = load i32, ptr %m_pos.i.i195, align 8 + %inc.i.i225 = add i32 %65, 1 + store i32 %inc.i.i225, ptr %m_pos.i.i195, align 8 br label %if.end73 -if.end73: ; preds = %invoke.cont61, %_ZN13ast_fast_markILj1EE4markEP3ast.exit232 +if.end73: ; preds = %invoke.cont61, %_ZN13ast_fast_markILj1EE4markEP3ast.exit230 %66 = load i32, ptr %m_pos.i.i25, align 8 %67 = load i32, ptr %m_capacity.i.i26, align 4 - %cmp.not.i236 = icmp ult i32 %66, %67 - br i1 %cmp.not.i236, label %entry.if.end_crit_edge.i264, label %if.then.i237 + %cmp.not.i234 = icmp ult i32 %66, %67 + br i1 %cmp.not.i234, label %entry.if.end_crit_edge.i262, label %if.then.i235 -entry.if.end_crit_edge.i264: ; preds = %if.end73 - %.pre.i265 = load ptr, ptr %stack, align 8 +entry.if.end_crit_edge.i262: ; preds = %if.end73 + %.pre.i263 = load ptr, ptr %stack, align 8 br label %start.backedge -if.then.i237: ; preds = %if.end73 - %shl.i.i238 = shl i32 %67, 1 - %conv.i.i239 = zext i32 %shl.i.i238 to i64 - %mul.i.i240 = shl nuw nsw i64 %conv.i.i239, 4 - %call.i.i267 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i240) - to label %call.i.i.noexc266 unwind label %lpad.loopexit.split-lp.loopexit +if.then.i235: ; preds = %if.end73 + %shl.i.i236 = shl i32 %67, 1 + %conv.i.i237 = zext i32 %shl.i.i236 to i64 + %mul.i.i238 = shl nuw nsw i64 %conv.i.i237, 4 + %call.i.i265 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i238) + to label %call.i.i.noexc264 unwind label %lpad.loopexit.split-lp.loopexit -call.i.i.noexc266: ; preds = %if.then.i237 +call.i.i.noexc264: ; preds = %if.then.i235 %68 = load i32, ptr %m_pos.i.i25, align 8 - %cmp6.not.i.i241 = icmp eq i32 %68, 0 - %.pre.i.i242 = load ptr, ptr %stack, align 8 - br i1 %cmp6.not.i.i241, label %for.end.i.i251, label %for.body.lr.ph.i.i243 - -for.body.lr.ph.i.i243: ; preds = %call.i.i.noexc266 - %wide.trip.count.i.i244 = zext i32 %68 to i64 - br label %for.body.i.i245 - -for.body.i.i245: ; preds = %for.body.i.i245, %for.body.lr.ph.i.i243 - %indvars.iv.i.i246 = phi i64 [ 0, %for.body.lr.ph.i.i243 ], [ %indvars.iv.next.i.i249, %for.body.i.i245 ] - %arrayidx.i.i247 = getelementptr inbounds nuw %"struct.std::pair", ptr %call.i.i267, i64 %indvars.iv.i.i246 - %arrayidx3.i.i248 = getelementptr inbounds nuw %"struct.std::pair", ptr %.pre.i.i242, i64 %indvars.iv.i.i246 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %arrayidx.i.i247, ptr noundef nonnull align 8 dereferenceable(16) %arrayidx3.i.i248, i64 16, i1 false) - %indvars.iv.next.i.i249 = add nuw nsw i64 %indvars.iv.i.i246, 1 - %exitcond.not.i.i250 = icmp eq i64 %indvars.iv.next.i.i249, %wide.trip.count.i.i244 - br i1 %exitcond.not.i.i250, label %for.end.i.i251, label %for.body.i.i245, !llvm.loop !6 - -for.end.i.i251: ; preds = %for.body.i.i245, %call.i.i.noexc266 - %cmp.not.i.i.i253 = icmp eq ptr %.pre.i.i242, %9 - %cmp.i.i.i.i254 = icmp eq ptr %.pre.i.i242, null - %or.cond.i.i.i255 = or i1 %cmp.not.i.i.i253, %cmp.i.i.i.i254 - br i1 %or.cond.i.i.i255, label %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i258, label %if.end.i.i.i.i256 - -if.end.i.i.i.i256: ; preds = %for.end.i.i251 - invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %.pre.i.i242) - to label %.noexc268 unwind label %lpad.loopexit.split-lp.loopexit - -.noexc268: ; preds = %if.end.i.i.i.i256 - %.pre1.pre.i257 = load i32, ptr %m_pos.i.i25, align 8 - br label %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i258 - -_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i258: ; preds = %.noexc268, %for.end.i.i251 - %.pre1.i259 = phi i32 [ %68, %for.end.i.i251 ], [ %.pre1.pre.i257, %.noexc268 ] - store ptr %call.i.i267, ptr %stack, align 8 - store i32 %shl.i.i238, ptr %m_capacity.i.i26, align 4 + %cmp6.not.i.i239 = icmp eq i32 %68, 0 + %.pre.i.i240 = load ptr, ptr %stack, align 8 + br i1 %cmp6.not.i.i239, label %for.end.i.i249, label %for.body.lr.ph.i.i241 + +for.body.lr.ph.i.i241: ; preds = %call.i.i.noexc264 + %wide.trip.count.i.i242 = zext i32 %68 to i64 + br label %for.body.i.i243 + +for.body.i.i243: ; preds = %for.body.i.i243, %for.body.lr.ph.i.i241 + %indvars.iv.i.i244 = phi i64 [ 0, %for.body.lr.ph.i.i241 ], [ %indvars.iv.next.i.i247, %for.body.i.i243 ] + %arrayidx.i.i245 = getelementptr inbounds nuw %"struct.std::pair", ptr %call.i.i265, i64 %indvars.iv.i.i244 + %arrayidx3.i.i246 = getelementptr inbounds nuw %"struct.std::pair", ptr %.pre.i.i240, i64 %indvars.iv.i.i244 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %arrayidx.i.i245, ptr noundef nonnull align 8 dereferenceable(16) %arrayidx3.i.i246, i64 16, i1 false) + %indvars.iv.next.i.i247 = add nuw nsw i64 %indvars.iv.i.i244, 1 + %exitcond.not.i.i248 = icmp eq i64 %indvars.iv.next.i.i247, %wide.trip.count.i.i242 + br i1 %exitcond.not.i.i248, label %for.end.i.i249, label %for.body.i.i243, !llvm.loop !6 + +for.end.i.i249: ; preds = %for.body.i.i243, %call.i.i.noexc264 + %cmp.not.i.i.i251 = icmp eq ptr %.pre.i.i240, %9 + %cmp.i.i.i.i252 = icmp eq ptr %.pre.i.i240, null + %or.cond.i.i.i253 = or i1 %cmp.not.i.i.i251, %cmp.i.i.i.i252 + br i1 %or.cond.i.i.i253, label %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i256, label %if.end.i.i.i.i254 + +if.end.i.i.i.i254: ; preds = %for.end.i.i249 + invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %.pre.i.i240) + to label %.noexc266 unwind label %lpad.loopexit.split-lp.loopexit + +.noexc266: ; preds = %if.end.i.i.i.i254 + %.pre1.pre.i255 = load i32, ptr %m_pos.i.i25, align 8 + br label %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i256 + +_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i256: ; preds = %.noexc266, %for.end.i.i249 + %.pre1.i257 = phi i32 [ %68, %for.end.i.i249 ], [ %.pre1.pre.i255, %.noexc266 ] + store ptr %call.i.i265, ptr %stack, align 8 + store i32 %shl.i.i236, ptr %m_capacity.i.i26, align 4 br label %start.backedge while.end78: ; preds = %while.cond56 %69 = load i32, ptr %m_pos.i.i25, align 8 - %dec.i271 = add i32 %69, -1 - store i32 %dec.i271, ptr %m_pos.i.i25, align 8 + %dec.i269 = add i32 %69, -1 + store i32 %dec.i269, ptr %m_pos.i.i25, align 8 %70 = load i32, ptr %proc, align 4 - %inc.i272 = add i32 %70, 1 - store i32 %inc.i272, ptr %proc, align 4 + %inc.i270 = add i32 %70, 1 + store i32 %inc.i270, ptr %proc, align 4 br label %sw.epilog82 sw.default80: ; preds = %start @@ -793,30 +789,30 @@ invoke.cont81: ; preds = %sw.default80 call void @exit(i32 noundef 114) #20 unreachable -sw.epilog82: ; preds = %if.then.i177, %_ZNK9func_decl14is_associativeEv.exit.i171, %while.end, %while.end78, %sw.bb - %.pr = phi i32 [ %dec.i166.pre-phi, %if.then.i177 ], [ %dec.i166.pre-phi, %_ZNK9func_decl14is_associativeEv.exit.i171 ], [ %dec.i166.pre-phi, %while.end ], [ %dec.i271, %while.end78 ], [ %sub.i, %sw.bb ] +sw.epilog82: ; preds = %if.then.i175, %_ZNK9func_decl14is_associativeEv.exit.i171, %while.end, %while.end78, %sw.bb + %.pr = phi i32 [ %dec.i166.pre-phi, %if.then.i175 ], [ %dec.i166.pre-phi, %_ZNK9func_decl14is_associativeEv.exit.i171 ], [ %dec.i166.pre-phi, %while.end ], [ %dec.i269, %while.end78 ], [ %sub.i, %sw.bb ] %cmp.i = icmp eq i32 %.pr, 0 br i1 %cmp.i, label %while.end83, label %start.preheader, !llvm.loop !9 while.end83: ; preds = %sw.epilog82 %71 = load ptr, ptr %stack, align 8 - %cmp.not.i.i.i.i274 = icmp eq ptr %71, %9 - %cmp.i.i.i.i.i275 = icmp eq ptr %71, null - %or.cond.i.i.i.i276 = or i1 %cmp.not.i.i.i.i274, %cmp.i.i.i.i.i275 - br i1 %or.cond.i.i.i.i276, label %return, label %if.end.i.i.i.i.i277 + %cmp.not.i.i.i.i272 = icmp eq ptr %71, %9 + %cmp.i.i.i.i.i273 = icmp eq ptr %71, null + %or.cond.i.i.i.i274 = or i1 %cmp.not.i.i.i.i272, %cmp.i.i.i.i.i273 + br i1 %or.cond.i.i.i.i274, label %return, label %if.end.i.i.i.i.i275 -if.end.i.i.i.i.i277: ; preds = %while.end83 +if.end.i.i.i.i.i275: ; preds = %while.end83 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %71) to label %return unwind label %terminate.lpad.i.i -terminate.lpad.i.i: ; preds = %if.end.i.i.i.i.i277 +terminate.lpad.i.i: ; preds = %if.end.i.i.i.i.i275 %72 = landingpad { ptr, i32 } catch ptr null %73 = extractvalue { ptr, i32 } %72, 0 call void @__clang_call_terminate(ptr %73) #21 unreachable -return: ; preds = %if.end.i.i.i.i.i277, %while.end83, %if.then +return: ; preds = %if.end.i.i.i.i.i275, %while.end83, %if.then ret void } @@ -3491,12 +3487,12 @@ if.then.i.i.i: ; preds = %entry tail call void @_ZN10bit_vector6resizeEjb(ptr noundef nonnull align 8 dereferenceable(16) %m_marks.i.i, i32 noundef %add.i.i.i, i1 noundef zeroext false) %m_data.i.i.i.i.i.phi.trans.insert = getelementptr inbounds nuw i8, ptr %visited, i64 16 %.pre = load ptr, ptr %m_data.i.i.i.i.i.phi.trans.insert, align 8 - %.pre293 = lshr i32 %0, 5 - %.pre294 = zext nneg i32 %.pre293 to i64 + %.pre291 = lshr i32 %0, 5 + %.pre292 = zext nneg i32 %.pre291 to i64 br label %_ZN6bufferISt4pairIP4exprjELb0ELj16EE9push_backEOS3_.exit _ZN6bufferISt4pairIP4exprjELb0ELj16EE9push_backEOS3_.exit: ; preds = %_ZNK8obj_markI4expr10bit_vector14default_t2uintIS0_EE9is_markedEPS0_.exit, %if.then.i.i.i - %idxprom.i.i.i.i.i.pre-phi = phi i64 [ %idxprom.i.i.i.i, %_ZNK8obj_markI4expr10bit_vector14default_t2uintIS0_EE9is_markedEPS0_.exit ], [ %.pre294, %if.then.i.i.i ] + %idxprom.i.i.i.i.i.pre-phi = phi i64 [ %idxprom.i.i.i.i, %_ZNK8obj_markI4expr10bit_vector14default_t2uintIS0_EE9is_markedEPS0_.exit ], [ %.pre292, %if.then.i.i.i ] %4 = phi ptr [ %2, %_ZNK8obj_markI4expr10bit_vector14default_t2uintIS0_EE9is_markedEPS0_.exit ], [ %.pre, %if.then.i.i.i ] %m_data.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %visited, i64 16 %arrayidx.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %4, i64 %idxprom.i.i.i.i.i.pre-phi @@ -3535,22 +3531,22 @@ start: ; preds = %start.backedge, %st ] lpad.loopexit: ; preds = %if.then.i.i.i45 - %lpad.loopexit231 = landingpad { ptr, i32 } + %lpad.loopexit229 = landingpad { ptr, i32 } cleanup br label %lpad -lpad.loopexit.split-lp.loopexit: ; preds = %if.end.i.i.i.i206, %if.then.i187, %if.then.i.i.i172, %if.end.i.i.i.i123, %if.then.i104, %if.end.i.i.i.i83, %if.then.i64 - %lpad.loopexit233 = landingpad { ptr, i32 } +lpad.loopexit.split-lp.loopexit: ; preds = %if.end.i.i.i.i204, %if.then.i185, %if.then.i.i.i170, %if.end.i.i.i.i123, %if.then.i104, %if.end.i.i.i.i83, %if.then.i64 + %lpad.loopexit231 = landingpad { ptr, i32 } cleanup br label %lpad lpad.loopexit.split-lp.loopexit.split-lp: ; preds = %sw.default81, %sw.default - %lpad.loopexit.split-lp234 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp232 = landingpad { ptr, i32 } cleanup br label %lpad lpad: ; preds = %lpad.loopexit.split-lp.loopexit, %lpad.loopexit.split-lp.loopexit.split-lp, %lpad.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit231, %lpad.loopexit ], [ %lpad.loopexit233, %lpad.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp234, %lpad.loopexit.split-lp.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit229, %lpad.loopexit ], [ %lpad.loopexit231, %lpad.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp232, %lpad.loopexit.split-lp.loopexit.split-lp ] call void @_ZN7sbufferISt4pairIP4exprjELj16EED2Ev(ptr noundef nonnull align 8 dereferenceable(272) %stack) #19 resume { ptr, i32 } %lpad.phi @@ -3566,8 +3562,8 @@ sw.bb12: ; preds = %start %13 = load i32, ptr %m_num_args.i, align 8 %second = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 %14 = load i32, ptr %second, align 8 - %cmp258 = icmp ult i32 %14, %13 - br i1 %cmp258, label %while.body17.lr.ph, label %while.end + %cmp256 = icmp ult i32 %14, %13 + br i1 %cmp256, label %while.body17.lr.ph, label %while.end while.body17.lr.ph: ; preds = %sw.bb12 %m_args.i = getelementptr inbounds nuw i8, ptr %11, i64 32 @@ -3603,25 +3599,25 @@ if.then.i.i.i45: ; preds = %while.body17 to label %if.then.i.i.i45.invoke.cont27_crit_edge unwind label %lpad.loopexit if.then.i.i.i45.invoke.cont27_crit_edge: ; preds = %if.then.i.i.i45 - %.pre290 = load ptr, ptr %m_data.i.i.i.i.i, align 8 - %.pre297 = lshr i32 %17, 5 - %.pre298 = zext nneg i32 %.pre297 to i64 - %.pre299 = and i32 %17, 31 - %.pre300 = shl nuw i32 1, %.pre299 + %.pre288 = load ptr, ptr %m_data.i.i.i.i.i, align 8 + %.pre295 = lshr i32 %17, 5 + %.pre296 = zext nneg i32 %.pre295 to i64 + %.pre297 = and i32 %17, 31 + %.pre298 = shl nuw i32 1, %.pre297 br label %invoke.cont27 invoke.cont27: ; preds = %if.then.i.i.i45.invoke.cont27_crit_edge, %invoke.cont23 - %shl.i.i.i.i.i52.pre-phi = phi i32 [ %.pre300, %if.then.i.i.i45.invoke.cont27_crit_edge ], [ %shl.i.i.i.i39, %invoke.cont23 ] - %idxprom.i.i.i.i.i49.pre-phi = phi i64 [ %.pre298, %if.then.i.i.i45.invoke.cont27_crit_edge ], [ %idxprom.i.i.i.i36, %invoke.cont23 ] - %21 = phi ptr [ %.pre290, %if.then.i.i.i45.invoke.cont27_crit_edge ], [ %19, %invoke.cont23 ] + %shl.i.i.i.i.i52.pre-phi = phi i32 [ %.pre298, %if.then.i.i.i45.invoke.cont27_crit_edge ], [ %shl.i.i.i.i39, %invoke.cont23 ] + %idxprom.i.i.i.i.i49.pre-phi = phi i64 [ %.pre296, %if.then.i.i.i45.invoke.cont27_crit_edge ], [ %idxprom.i.i.i.i36, %invoke.cont23 ] + %21 = phi ptr [ %.pre288, %if.then.i.i.i45.invoke.cont27_crit_edge ], [ %19, %invoke.cont23 ] %arrayidx.i.i.i.i.i50 = getelementptr inbounds nuw i32, ptr %21, i64 %idxprom.i.i.i.i.i49.pre-phi %22 = load i32, ptr %arrayidx.i.i.i.i.i50, align 4 %xor4.i.i.i.i53 = or i32 %22, %shl.i.i.i.i.i52.pre-phi store i32 %xor4.i.i.i.i53, ptr %arrayidx.i.i.i.i.i50, align 4 %m_kind.i56 = getelementptr inbounds nuw i8, ptr %16, i64 4 %bf.load.i57 = load i32, ptr %m_kind.i56, align 4 - %trunc230 = trunc i32 %bf.load.i57 to i16 - switch i16 %trunc230, label %sw.default [ + %trunc228 = trunc i32 %bf.load.i57 to i16 + switch i16 %trunc228, label %sw.default [ i16 1, label %sw.bb29 i16 2, label %sw.bb33 i16 0, label %sw.bb38 @@ -3688,13 +3684,13 @@ _ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i85: ; preds = %.noexc94, %f store i32 %shl.i.i65, ptr %m_capacity.i.i, align 4 br label %start.backedge -start.backedge: ; preds = %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i85, %entry.if.end_crit_edge.i90, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i208, %entry.if.end_crit_edge.i213, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i125, %entry.if.end_crit_edge.i130 - %.sink338 = phi i32 [ %35, %entry.if.end_crit_edge.i130 ], [ %.pre1.i126, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i125 ], [ %57, %entry.if.end_crit_edge.i213 ], [ %.pre1.i209, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i208 ], [ %24, %entry.if.end_crit_edge.i90 ], [ %.pre1.i86, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i85 ] - %.sink = phi ptr [ %.pre.i131, %entry.if.end_crit_edge.i130 ], [ %call.i.i133, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i125 ], [ %.pre.i214, %entry.if.end_crit_edge.i213 ], [ %call.i.i216, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i208 ], [ %.pre.i91, %entry.if.end_crit_edge.i90 ], [ %call.i.i93, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i85 ] - %.lcssa312.sink = phi ptr [ %16, %entry.if.end_crit_edge.i130 ], [ %16, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i125 ], [ %retval.0.i, %entry.if.end_crit_edge.i213 ], [ %retval.0.i, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i208 ], [ %16, %entry.if.end_crit_edge.i90 ], [ %16, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i85 ] - %idx.ext.i87 = zext i32 %.sink338 to i64 +start.backedge: ; preds = %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i85, %entry.if.end_crit_edge.i90, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i206, %entry.if.end_crit_edge.i211, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i125, %entry.if.end_crit_edge.i130 + %.sink336 = phi i32 [ %35, %entry.if.end_crit_edge.i130 ], [ %.pre1.i126, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i125 ], [ %57, %entry.if.end_crit_edge.i211 ], [ %.pre1.i207, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i206 ], [ %24, %entry.if.end_crit_edge.i90 ], [ %.pre1.i86, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i85 ] + %.sink = phi ptr [ %.pre.i131, %entry.if.end_crit_edge.i130 ], [ %call.i.i133, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i125 ], [ %.pre.i212, %entry.if.end_crit_edge.i211 ], [ %call.i.i214, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i206 ], [ %.pre.i91, %entry.if.end_crit_edge.i90 ], [ %call.i.i93, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i85 ] + %.lcssa310.sink = phi ptr [ %16, %entry.if.end_crit_edge.i130 ], [ %16, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i125 ], [ %retval.0.i, %entry.if.end_crit_edge.i211 ], [ %retval.0.i, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i206 ], [ %16, %entry.if.end_crit_edge.i90 ], [ %16, %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i85 ] + %idx.ext.i87 = zext i32 %.sink336 to i64 %add.ptr.i88 = getelementptr inbounds nuw %"struct.std::pair", ptr %.sink, i64 %idx.ext.i87 - store ptr %.lcssa312.sink, ptr %add.ptr.i88, align 8 + store ptr %.lcssa310.sink, ptr %add.ptr.i88, align 8 %ref.tmp34.sroa.2.0.add.ptr.i88.sroa_idx = getelementptr inbounds nuw i8, ptr %add.ptr.i88, i64 8 store i32 0, ptr %ref.tmp34.sroa.2.0.add.ptr.i88.sroa_idx, align 8 %27 = load i32, ptr %m_pos.i.i, align 8 @@ -3722,10 +3718,8 @@ if.then43: ; preds = %sw.bb38 _ZNK9func_decl14is_associativeEv.exit.i: ; preds = %if.then43 %m_left_assoc.i.i.i = getelementptr inbounds nuw i8, ptr %31, i64 17 %bf.load.i.i.i = load i16, ptr %m_left_assoc.i.i.i, align 1 - %bf.cast.i.i.i = trunc i16 %bf.load.i.i.i to i1 - %32 = and i16 %bf.load.i.i.i, 2 - %bf.cast4.i.i.i = icmp ne i16 %32, 0 - %33 = and i1 %bf.cast4.i.i.i, %bf.cast.i.i.i + %32 = and i16 %bf.load.i.i.i, 3 + %33 = icmp eq i16 %32, 3 br i1 %33, label %if.then.i98, label %while.cond16.backedge if.then.i98: ; preds = %_ZNK9func_decl14is_associativeEv.exit.i @@ -3809,13 +3803,13 @@ while.cond16.backedge: ; preds = %while.cond16.backed br i1 %cmp, label %while.body17, label %while.cond16.while.end_crit_edge, !llvm.loop !19 while.cond16.while.end_crit_edge: ; preds = %while.cond16.backedge - %.pre291 = load i32, ptr %m_pos.i.i, align 8 - %.pre301 = add i32 %.pre291, -1 + %.pre289 = load i32, ptr %m_pos.i.i, align 8 + %.pre299 = add i32 %.pre289, -1 br label %while.end while.end: ; preds = %sw.bb12, %while.cond16.while.end_crit_edge - %dec.i137.pre-phi = phi i32 [ %.pre301, %while.cond16.while.end_crit_edge ], [ %sub.i, %sw.bb12 ] - %m_num_args.i333 = getelementptr inbounds nuw i8, ptr %11, i64 24 + %dec.i137.pre-phi = phi i32 [ %.pre299, %while.cond16.while.end_crit_edge ], [ %sub.i, %sw.bb12 ] + %m_num_args.i331 = getelementptr inbounds nuw i8, ptr %11, i64 24 store i32 %dec.i137.pre-phi, ptr %m_pos.i.i, align 8 %39 = load i32, ptr %proc, align 4 %inc.i138 = add i32 %39, 1 @@ -3830,48 +3824,46 @@ while.end: ; preds = %sw.bb12, %while.con _ZNK9func_decl14is_associativeEv.exit.i142: ; preds = %while.end %m_left_assoc.i.i.i143 = getelementptr inbounds nuw i8, ptr %41, i64 17 %bf.load.i.i.i144 = load i16, ptr %m_left_assoc.i.i.i143, align 1 - %bf.cast.i.i.i145 = trunc i16 %bf.load.i.i.i144 to i1 - %42 = and i16 %bf.load.i.i.i144, 2 - %bf.cast4.i.i.i146 = icmp ne i16 %42, 0 - %43 = and i1 %bf.cast4.i.i.i146, %bf.cast.i.i.i145 - br i1 %43, label %if.then.i147, label %sw.epilog83 - -if.then.i147: ; preds = %_ZNK9func_decl14is_associativeEv.exit.i142 - %44 = load i32, ptr %m_num_args.i333, align 8 - %sub.i149 = add i32 %39, -1 - %add.i150 = add i32 %sub.i149, %44 - store i32 %add.i150, ptr %proc, align 4 + %42 = and i16 %bf.load.i.i.i144, 3 + %43 = icmp eq i16 %42, 3 + br i1 %43, label %if.then.i145, label %sw.epilog83 + +if.then.i145: ; preds = %_ZNK9func_decl14is_associativeEv.exit.i142 + %44 = load i32, ptr %m_num_args.i331, align 8 + %sub.i147 = add i32 %39, -1 + %add.i148 = add i32 %sub.i147, %44 + store i32 %add.i148, ptr %proc, align 4 br label %sw.epilog83 sw.bb55: ; preds = %start %m_num_patterns.i.i = getelementptr inbounds nuw i8, ptr %11, i64 72 %45 = load i32, ptr %m_num_patterns.i.i, align 8 - %add.i152 = add i32 %45, 1 + %add.i150 = add i32 %45, 1 %m_num_no_patterns.i.i = getelementptr inbounds nuw i8, ptr %11, i64 76 %46 = load i32, ptr %m_num_no_patterns.i.i, align 4 - %add3.i = add i32 %add.i152, %46 + %add3.i = add i32 %add.i150, %46 %second60 = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 %m_patterns_decls.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %11, i64 80 %m_num_decls.i.i.i.i = getelementptr inbounds nuw i8, ptr %11, i64 20 %m_expr.i.i = getelementptr inbounds nuw i8, ptr %11, i64 24 - %.pre288 = load i32, ptr %second60, align 8 + %.pre286 = load i32, ptr %second60, align 8 br label %while.cond59 while.cond59: ; preds = %sw.bb55, %invoke.cont68 - %47 = phi i32 [ %.pre288, %sw.bb55 ], [ %inc67, %invoke.cont68 ] + %47 = phi i32 [ %.pre286, %sw.bb55 ], [ %inc67, %invoke.cont68 ] %cmp61 = icmp ult i32 %47, %add3.i br i1 %cmp61, label %while.body62, label %while.end77 while.body62: ; preds = %while.cond59 - %cmp.i153 = icmp eq i32 %47, 0 - br i1 %cmp.i153, label %invoke.cont64, label %if.else.i + %cmp.i151 = icmp eq i32 %47, 0 + br i1 %cmp.i151, label %invoke.cont64, label %if.else.i if.else.i: ; preds = %while.body62 %48 = load i32, ptr %m_num_patterns.i.i, align 8 %cmp3.not.i = icmp ugt i32 %47, %48 %49 = xor i32 %48, -1 - %.sink341 = select i1 %cmp3.not.i, i32 %49, i32 -1 - %sub9.i = add i32 %47, %.sink341 + %.sink339 = select i1 %cmp3.not.i, i32 %49, i32 -1 + %sub9.i = add i32 %47, %.sink339 %50 = load i32, ptr %m_num_decls.i.i.i.i, align 4 %idx.ext.i.i.i7.i = zext i32 %50 to i64 %add.ptr.i.i.i8.i = getelementptr inbounds nuw ptr, ptr %m_patterns_decls.i.i.i.i.i, i64 %idx.ext.i.i.i7.i @@ -3887,104 +3879,104 @@ invoke.cont64: ; preds = %if.else.i, %while.b store i32 %inc67, ptr %second60, align 8 %51 = load i32, ptr %retval.0.i, align 4 %52 = load i32, ptr %m_marks.i.i, align 8 - %cmp.i.i159 = icmp ult i32 %51, %52 - br i1 %cmp.i.i159, label %invoke.cont68, label %if.then.i.i.i172 + %cmp.i.i157 = icmp ult i32 %51, %52 + br i1 %cmp.i.i157, label %invoke.cont68, label %if.then.i.i.i170 invoke.cont68: ; preds = %invoke.cont64 %53 = load ptr, ptr %m_data.i.i.i.i.i, align 8 - %div1.i.i.i.i162 = lshr i32 %51, 5 - %idxprom.i.i.i.i163 = zext nneg i32 %div1.i.i.i.i162 to i64 - %arrayidx.i.i.i.i164 = getelementptr inbounds nuw i32, ptr %53, i64 %idxprom.i.i.i.i163 - %54 = load i32, ptr %arrayidx.i.i.i.i164, align 4 - %rem.i.i.i.i165 = and i32 %51, 31 - %shl.i.i.i.i166 = shl nuw i32 1, %rem.i.i.i.i165 - %and.i.i.i167 = and i32 %54, %shl.i.i.i.i166 - %cmp.i.i.i168.not = icmp eq i32 %and.i.i.i167, 0 - br i1 %cmp.i.i.i168.not, label %invoke.cont72, label %while.cond59, !llvm.loop !20 - -if.then.i.i.i172: ; preds = %invoke.cont64 - %add.i.i.i173 = add i32 %51, 1 - invoke void @_ZN10bit_vector6resizeEjb(ptr noundef nonnull align 8 dereferenceable(16) %m_marks.i.i, i32 noundef %add.i.i.i173, i1 noundef zeroext false) - to label %if.then.i.i.i172.invoke.cont72_crit_edge unwind label %lpad.loopexit.split-lp.loopexit - -if.then.i.i.i172.invoke.cont72_crit_edge: ; preds = %if.then.i.i.i172 - %.pre289 = load ptr, ptr %m_data.i.i.i.i.i, align 8 - %.pre302 = lshr i32 %51, 5 - %.pre303 = zext nneg i32 %.pre302 to i64 - %.pre304 = and i32 %51, 31 - %.pre305 = shl nuw i32 1, %.pre304 + %div1.i.i.i.i160 = lshr i32 %51, 5 + %idxprom.i.i.i.i161 = zext nneg i32 %div1.i.i.i.i160 to i64 + %arrayidx.i.i.i.i162 = getelementptr inbounds nuw i32, ptr %53, i64 %idxprom.i.i.i.i161 + %54 = load i32, ptr %arrayidx.i.i.i.i162, align 4 + %rem.i.i.i.i163 = and i32 %51, 31 + %shl.i.i.i.i164 = shl nuw i32 1, %rem.i.i.i.i163 + %and.i.i.i165 = and i32 %54, %shl.i.i.i.i164 + %cmp.i.i.i166.not = icmp eq i32 %and.i.i.i165, 0 + br i1 %cmp.i.i.i166.not, label %invoke.cont72, label %while.cond59, !llvm.loop !20 + +if.then.i.i.i170: ; preds = %invoke.cont64 + %add.i.i.i171 = add i32 %51, 1 + invoke void @_ZN10bit_vector6resizeEjb(ptr noundef nonnull align 8 dereferenceable(16) %m_marks.i.i, i32 noundef %add.i.i.i171, i1 noundef zeroext false) + to label %if.then.i.i.i170.invoke.cont72_crit_edge unwind label %lpad.loopexit.split-lp.loopexit + +if.then.i.i.i170.invoke.cont72_crit_edge: ; preds = %if.then.i.i.i170 + %.pre287 = load ptr, ptr %m_data.i.i.i.i.i, align 8 + %.pre300 = lshr i32 %51, 5 + %.pre301 = zext nneg i32 %.pre300 to i64 + %.pre302 = and i32 %51, 31 + %.pre303 = shl nuw i32 1, %.pre302 br label %invoke.cont72 -invoke.cont72: ; preds = %invoke.cont68, %if.then.i.i.i172.invoke.cont72_crit_edge - %shl.i.i.i.i.i179.pre-phi = phi i32 [ %.pre305, %if.then.i.i.i172.invoke.cont72_crit_edge ], [ %shl.i.i.i.i166, %invoke.cont68 ] - %idxprom.i.i.i.i.i176.pre-phi = phi i64 [ %.pre303, %if.then.i.i.i172.invoke.cont72_crit_edge ], [ %idxprom.i.i.i.i163, %invoke.cont68 ] - %55 = phi ptr [ %.pre289, %if.then.i.i.i172.invoke.cont72_crit_edge ], [ %53, %invoke.cont68 ] - %arrayidx.i.i.i.i.i177 = getelementptr inbounds nuw i32, ptr %55, i64 %idxprom.i.i.i.i.i176.pre-phi - %56 = load i32, ptr %arrayidx.i.i.i.i.i177, align 4 - %xor4.i.i.i.i180 = or i32 %56, %shl.i.i.i.i.i179.pre-phi - store i32 %xor4.i.i.i.i180, ptr %arrayidx.i.i.i.i.i177, align 4 +invoke.cont72: ; preds = %invoke.cont68, %if.then.i.i.i170.invoke.cont72_crit_edge + %shl.i.i.i.i.i177.pre-phi = phi i32 [ %.pre303, %if.then.i.i.i170.invoke.cont72_crit_edge ], [ %shl.i.i.i.i164, %invoke.cont68 ] + %idxprom.i.i.i.i.i174.pre-phi = phi i64 [ %.pre301, %if.then.i.i.i170.invoke.cont72_crit_edge ], [ %idxprom.i.i.i.i161, %invoke.cont68 ] + %55 = phi ptr [ %.pre287, %if.then.i.i.i170.invoke.cont72_crit_edge ], [ %53, %invoke.cont68 ] + %arrayidx.i.i.i.i.i175 = getelementptr inbounds nuw i32, ptr %55, i64 %idxprom.i.i.i.i.i174.pre-phi + %56 = load i32, ptr %arrayidx.i.i.i.i.i175, align 4 + %xor4.i.i.i.i178 = or i32 %56, %shl.i.i.i.i.i177.pre-phi + store i32 %xor4.i.i.i.i178, ptr %arrayidx.i.i.i.i.i175, align 4 %57 = load i32, ptr %m_pos.i.i, align 8 %58 = load i32, ptr %m_capacity.i.i, align 4 - %cmp.not.i186 = icmp ult i32 %57, %58 - br i1 %cmp.not.i186, label %entry.if.end_crit_edge.i213, label %if.then.i187 + %cmp.not.i184 = icmp ult i32 %57, %58 + br i1 %cmp.not.i184, label %entry.if.end_crit_edge.i211, label %if.then.i185 -entry.if.end_crit_edge.i213: ; preds = %invoke.cont72 - %.pre.i214 = load ptr, ptr %stack, align 8 +entry.if.end_crit_edge.i211: ; preds = %invoke.cont72 + %.pre.i212 = load ptr, ptr %stack, align 8 br label %start.backedge -if.then.i187: ; preds = %invoke.cont72 - %shl.i.i188 = shl i32 %58, 1 - %conv.i.i189 = zext i32 %shl.i.i188 to i64 - %mul.i.i190 = shl nuw nsw i64 %conv.i.i189, 4 - %call.i.i216 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i190) - to label %call.i.i.noexc215 unwind label %lpad.loopexit.split-lp.loopexit +if.then.i185: ; preds = %invoke.cont72 + %shl.i.i186 = shl i32 %58, 1 + %conv.i.i187 = zext i32 %shl.i.i186 to i64 + %mul.i.i188 = shl nuw nsw i64 %conv.i.i187, 4 + %call.i.i214 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i188) + to label %call.i.i.noexc213 unwind label %lpad.loopexit.split-lp.loopexit -call.i.i.noexc215: ; preds = %if.then.i187 +call.i.i.noexc213: ; preds = %if.then.i185 %59 = load i32, ptr %m_pos.i.i, align 8 - %cmp6.not.i.i191 = icmp eq i32 %59, 0 - %.pre.i.i192 = load ptr, ptr %stack, align 8 - br i1 %cmp6.not.i.i191, label %for.end.i.i201, label %for.body.lr.ph.i.i193 - -for.body.lr.ph.i.i193: ; preds = %call.i.i.noexc215 - %wide.trip.count.i.i194 = zext i32 %59 to i64 - br label %for.body.i.i195 - -for.body.i.i195: ; preds = %for.body.i.i195, %for.body.lr.ph.i.i193 - %indvars.iv.i.i196 = phi i64 [ 0, %for.body.lr.ph.i.i193 ], [ %indvars.iv.next.i.i199, %for.body.i.i195 ] - %arrayidx.i.i197 = getelementptr inbounds nuw %"struct.std::pair", ptr %call.i.i216, i64 %indvars.iv.i.i196 - %arrayidx3.i.i198 = getelementptr inbounds nuw %"struct.std::pair", ptr %.pre.i.i192, i64 %indvars.iv.i.i196 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %arrayidx.i.i197, ptr noundef nonnull align 8 dereferenceable(16) %arrayidx3.i.i198, i64 16, i1 false) - %indvars.iv.next.i.i199 = add nuw nsw i64 %indvars.iv.i.i196, 1 - %exitcond.not.i.i200 = icmp eq i64 %indvars.iv.next.i.i199, %wide.trip.count.i.i194 - br i1 %exitcond.not.i.i200, label %for.end.i.i201, label %for.body.i.i195, !llvm.loop !6 - -for.end.i.i201: ; preds = %for.body.i.i195, %call.i.i.noexc215 - %cmp.not.i.i.i203 = icmp eq ptr %.pre.i.i192, %6 - %cmp.i.i.i.i204 = icmp eq ptr %.pre.i.i192, null - %or.cond.i.i.i205 = or i1 %cmp.not.i.i.i203, %cmp.i.i.i.i204 - br i1 %or.cond.i.i.i205, label %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i208, label %if.end.i.i.i.i206 - -if.end.i.i.i.i206: ; preds = %for.end.i.i201 - invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %.pre.i.i192) - to label %.noexc217 unwind label %lpad.loopexit.split-lp.loopexit - -.noexc217: ; preds = %if.end.i.i.i.i206 - %.pre1.pre.i207 = load i32, ptr %m_pos.i.i, align 8 - br label %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i208 - -_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i208: ; preds = %.noexc217, %for.end.i.i201 - %.pre1.i209 = phi i32 [ %59, %for.end.i.i201 ], [ %.pre1.pre.i207, %.noexc217 ] - store ptr %call.i.i216, ptr %stack, align 8 - store i32 %shl.i.i188, ptr %m_capacity.i.i, align 4 + %cmp6.not.i.i189 = icmp eq i32 %59, 0 + %.pre.i.i190 = load ptr, ptr %stack, align 8 + br i1 %cmp6.not.i.i189, label %for.end.i.i199, label %for.body.lr.ph.i.i191 + +for.body.lr.ph.i.i191: ; preds = %call.i.i.noexc213 + %wide.trip.count.i.i192 = zext i32 %59 to i64 + br label %for.body.i.i193 + +for.body.i.i193: ; preds = %for.body.i.i193, %for.body.lr.ph.i.i191 + %indvars.iv.i.i194 = phi i64 [ 0, %for.body.lr.ph.i.i191 ], [ %indvars.iv.next.i.i197, %for.body.i.i193 ] + %arrayidx.i.i195 = getelementptr inbounds nuw %"struct.std::pair", ptr %call.i.i214, i64 %indvars.iv.i.i194 + %arrayidx3.i.i196 = getelementptr inbounds nuw %"struct.std::pair", ptr %.pre.i.i190, i64 %indvars.iv.i.i194 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %arrayidx.i.i195, ptr noundef nonnull align 8 dereferenceable(16) %arrayidx3.i.i196, i64 16, i1 false) + %indvars.iv.next.i.i197 = add nuw nsw i64 %indvars.iv.i.i194, 1 + %exitcond.not.i.i198 = icmp eq i64 %indvars.iv.next.i.i197, %wide.trip.count.i.i192 + br i1 %exitcond.not.i.i198, label %for.end.i.i199, label %for.body.i.i193, !llvm.loop !6 + +for.end.i.i199: ; preds = %for.body.i.i193, %call.i.i.noexc213 + %cmp.not.i.i.i201 = icmp eq ptr %.pre.i.i190, %6 + %cmp.i.i.i.i202 = icmp eq ptr %.pre.i.i190, null + %or.cond.i.i.i203 = or i1 %cmp.not.i.i.i201, %cmp.i.i.i.i202 + br i1 %or.cond.i.i.i203, label %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i206, label %if.end.i.i.i.i204 + +if.end.i.i.i.i204: ; preds = %for.end.i.i199 + invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %.pre.i.i190) + to label %.noexc215 unwind label %lpad.loopexit.split-lp.loopexit + +.noexc215: ; preds = %if.end.i.i.i.i204 + %.pre1.pre.i205 = load i32, ptr %m_pos.i.i, align 8 + br label %_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i206 + +_ZN6bufferISt4pairIP4exprjELb0ELj16EE6expandEv.exit.i206: ; preds = %.noexc215, %for.end.i.i199 + %.pre1.i207 = phi i32 [ %59, %for.end.i.i199 ], [ %.pre1.pre.i205, %.noexc215 ] + store ptr %call.i.i214, ptr %stack, align 8 + store i32 %shl.i.i186, ptr %m_capacity.i.i, align 4 br label %start.backedge while.end77: ; preds = %while.cond59 %60 = load i32, ptr %m_pos.i.i, align 8 - %dec.i220 = add i32 %60, -1 - store i32 %dec.i220, ptr %m_pos.i.i, align 8 + %dec.i218 = add i32 %60, -1 + store i32 %dec.i218, ptr %m_pos.i.i, align 8 %61 = load i32, ptr %proc, align 4 - %inc.i221 = add i32 %61, 1 - store i32 %inc.i221, ptr %proc, align 4 + %inc.i219 = add i32 %61, 1 + store i32 %inc.i219, ptr %proc, align 4 br label %sw.epilog83 sw.default81: ; preds = %start @@ -3995,8 +3987,8 @@ invoke.cont82: ; preds = %sw.default81 call void @exit(i32 noundef 114) #20 unreachable -sw.epilog83: ; preds = %if.then.i147, %_ZNK9func_decl14is_associativeEv.exit.i142, %while.end, %while.end77, %sw.bb - %.pr = phi i32 [ %dec.i137.pre-phi, %if.then.i147 ], [ %dec.i137.pre-phi, %_ZNK9func_decl14is_associativeEv.exit.i142 ], [ %dec.i137.pre-phi, %while.end ], [ %dec.i220, %while.end77 ], [ %sub.i, %sw.bb ] +sw.epilog83: ; preds = %if.then.i145, %_ZNK9func_decl14is_associativeEv.exit.i142, %while.end, %while.end77, %sw.bb + %.pr = phi i32 [ %dec.i137.pre-phi, %if.then.i145 ], [ %dec.i137.pre-phi, %_ZNK9func_decl14is_associativeEv.exit.i142 ], [ %dec.i137.pre-phi, %while.end ], [ %dec.i218, %while.end77 ], [ %sub.i, %sw.bb ] %cmp.i = icmp eq i32 %.pr, 0 br i1 %cmp.i, label %while.end84, label %start.preheader, !llvm.loop !21 diff --git a/bench/z3/optimized/maximize_ac_sharing.cpp.ll b/bench/z3/optimized/maximize_ac_sharing.cpp.ll index 06b554a81b2..4053585d6c5 100644 --- a/bench/z3/optimized/maximize_ac_sharing.cpp.ll +++ b/bench/z3/optimized/maximize_ac_sharing.cpp.ll @@ -140,13 +140,11 @@ entry: _ZNK9func_decl14is_associativeEv.exit: ; preds = %entry %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %0, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 - %1 = and i16 %bf.load.i.i, 2 - %bf.cast4.i.i = icmp ne i16 %1, 0 - %2 = and i1 %bf.cast4.i.i, %bf.cast.i.i - %cmp = icmp ugt i32 %num_args, 2 - %or.cond48.not = and i1 %cmp, %2 - br i1 %or.cond48.not, label %if.end4, label %return + %1 = and i16 %bf.load.i.i, 3 + %2 = icmp ne i16 %1, 3 + %cmp = icmp ult i32 %num_args, 3 + %or.cond48 = or i1 %cmp, %2 + br i1 %or.cond48, label %return, label %if.end4 if.end4: ; preds = %_ZNK9func_decl14is_associativeEv.exit %m_kinds = getelementptr inbounds nuw i8, ptr %this, i64 104 diff --git a/bench/z3/optimized/symmetry_reduce_tactic.cpp.ll b/bench/z3/optimized/symmetry_reduce_tactic.cpp.ll index af1893f9d54..2f9e3ee4847 100644 --- a/bench/z3/optimized/symmetry_reduce_tactic.cpp.ll +++ b/bench/z3/optimized/symmetry_reduce_tactic.cpp.ll @@ -16066,22 +16066,20 @@ entry: _ZNK9func_decl14is_associativeEv.exit: ; preds = %entry %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %0, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 - %1 = and i16 %bf.load.i.i, 10 - %2 = icmp eq i16 %1, 10 - %or.cond87.not = and i1 %2, %bf.cast.i.i - br i1 %or.cond87.not, label %if.then, label %_ZNK4decl13get_family_idEv.exit.thread.i.i + %1 = and i16 %bf.load.i.i, 11 + %or.cond85.not = icmp eq i16 %1, 11 + br i1 %or.cond85.not, label %if.then, label %_ZNK4decl13get_family_idEv.exit.thread.i.i _ZNK4decl13get_family_idEv.exit.thread.i.i: ; preds = %_ZNK9func_decl14is_associativeEv.exit - %3 = load i32, ptr %0, align 8 - %cmp7.i.i = icmp eq i32 %3, 0 - br i1 %cmp7.i.i, label %_ZNK11ast_manager11is_distinctEPK9func_decl.exit, label %_ZNK9func_decl14is_commutativeEv.exit47 + %2 = load i32, ptr %0, align 8 + %cmp7.i.i = icmp eq i32 %2, 0 + br i1 %cmp7.i.i, label %_ZNK11ast_manager11is_distinctEPK9func_decl.exit, label %_ZNK9func_decl14is_commutativeEv.exit46 _ZNK11ast_manager11is_distinctEPK9func_decl.exit: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i %m_kind.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 4 - %4 = load i32, ptr %m_kind.i.i.i.i, align 4 - %cmp2.i.i = icmp eq i32 %4, 3 - br i1 %cmp2.i.i, label %if.then, label %_ZNK9func_decl14is_commutativeEv.exit47 + %3 = load i32, ptr %m_kind.i.i.i.i, align 4 + %cmp2.i.i = icmp eq i32 %3, 3 + br i1 %cmp2.i.i, label %if.then, label %_ZNK9func_decl14is_commutativeEv.exit46 if.then: ; preds = %_ZNK9func_decl14is_associativeEv.exit, %_ZNK11ast_manager11is_distinctEPK9func_decl.exit %m_initial_buffer.i.i = getelementptr inbounds nuw i8, ptr %buffer, i64 16 @@ -16098,11 +16096,11 @@ for.body.lr.ph.i: ; preds = %if.then br label %for.body.i for.body.i: ; preds = %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.i, %for.body.lr.ph.i - %5 = phi i32 [ 0, %for.body.lr.ph.i ], [ %inc.i.i, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.i ] + %4 = phi i32 [ 0, %for.body.lr.ph.i ], [ %inc.i.i, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.i ] %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.i ] %arrayidx.i = getelementptr inbounds nuw ptr, ptr %args, i64 %indvars.iv.i - %6 = load i32, ptr %m_capacity.i.i, align 4 - %cmp.not.i.i = icmp ult i32 %5, %6 + %5 = load i32, ptr %m_capacity.i.i, align 4 + %cmp.not.i.i = icmp ult i32 %4, %5 br i1 %cmp.not.i.i, label %entry.if.end_crit_edge.i.i, label %if.then.i.i entry.if.end_crit_edge.i.i: ; preds = %for.body.i @@ -16110,28 +16108,28 @@ entry.if.end_crit_edge.i.i: ; preds = %for.body.i br label %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.i if.then.i.i: ; preds = %for.body.i - %shl.i.i.i = shl i32 %6, 1 + %shl.i.i.i = shl i32 %5, 1 %conv.i.i.i = zext i32 %shl.i.i.i to i64 %mul.i.i.i = shl nuw nsw i64 %conv.i.i.i, 3 - %call.i.i.i27 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i.i) + %call.i.i.i26 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef %mul.i.i.i) to label %call.i.i.i.noexc unwind label %lpad.loopexit call.i.i.i.noexc: ; preds = %if.then.i.i - %7 = load i32, ptr %m_pos.i.i, align 8 - %cmp6.not.i.i.i = icmp eq i32 %7, 0 + %6 = load i32, ptr %m_pos.i.i, align 8 + %cmp6.not.i.i.i = icmp eq i32 %6, 0 %.pre.i.i.i = load ptr, ptr %buffer, align 8 br i1 %cmp6.not.i.i.i, label %for.end.i.i.i, label %for.body.lr.ph.i.i.i for.body.lr.ph.i.i.i: ; preds = %call.i.i.i.noexc - %wide.trip.count.i.i.i = zext i32 %7 to i64 + %wide.trip.count.i.i.i = zext i32 %6 to i64 br label %for.body.i.i.i for.body.i.i.i: ; preds = %for.body.i.i.i, %for.body.lr.ph.i.i.i %indvars.iv.i.i.i = phi i64 [ 0, %for.body.lr.ph.i.i.i ], [ %indvars.iv.next.i.i.i, %for.body.i.i.i ] - %arrayidx.i.i.i = getelementptr inbounds nuw ptr, ptr %call.i.i.i27, i64 %indvars.iv.i.i.i + %arrayidx.i.i.i = getelementptr inbounds nuw ptr, ptr %call.i.i.i26, i64 %indvars.iv.i.i.i %arrayidx3.i.i.i = getelementptr inbounds nuw ptr, ptr %.pre.i.i.i, i64 %indvars.iv.i.i.i - %8 = load ptr, ptr %arrayidx3.i.i.i, align 8 - store ptr %8, ptr %arrayidx.i.i.i, align 8 + %7 = load ptr, ptr %arrayidx3.i.i.i, align 8 + store ptr %7, ptr %arrayidx.i.i.i, align 8 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i, %wide.trip.count.i.i.i br i1 %exitcond.not.i.i.i, label %for.end.i.i.i, label %for.body.i.i.i, !llvm.loop !88 @@ -16151,20 +16149,20 @@ if.end.i.i.i.i.i: ; preds = %for.end.i.i.i br label %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i.i _ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i.i: ; preds = %.noexc, %for.end.i.i.i - %.pre1.i.i = phi i32 [ %7, %for.end.i.i.i ], [ %.pre1.pre.i.i, %.noexc ] - store ptr %call.i.i.i27, ptr %buffer, align 8 + %.pre1.i.i = phi i32 [ %6, %for.end.i.i.i ], [ %.pre1.pre.i.i, %.noexc ] + store ptr %call.i.i.i26, ptr %buffer, align 8 store i32 %shl.i.i.i, ptr %m_capacity.i.i, align 4 br label %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.i _ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.i: ; preds = %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i.i, %entry.if.end_crit_edge.i.i - %9 = phi i32 [ %5, %entry.if.end_crit_edge.i.i ], [ %.pre1.i.i, %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i.i ] - %10 = phi ptr [ %.pre.i.i, %entry.if.end_crit_edge.i.i ], [ %call.i.i.i27, %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i.i ] - %idx.ext.i.i = zext i32 %9 to i64 - %add.ptr.i.i = getelementptr inbounds nuw ptr, ptr %10, i64 %idx.ext.i.i - %11 = load ptr, ptr %arrayidx.i, align 8 - store ptr %11, ptr %add.ptr.i.i, align 8 - %12 = load i32, ptr %m_pos.i.i, align 8 - %inc.i.i = add i32 %12, 1 + %8 = phi i32 [ %4, %entry.if.end_crit_edge.i.i ], [ %.pre1.i.i, %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i.i ] + %9 = phi ptr [ %.pre.i.i, %entry.if.end_crit_edge.i.i ], [ %call.i.i.i26, %_ZN6bufferIP4exprLb0ELj16EE6expandEv.exit.i.i ] + %idx.ext.i.i = zext i32 %8 to i64 + %add.ptr.i.i = getelementptr inbounds nuw ptr, ptr %9, i64 %idx.ext.i.i + %10 = load ptr, ptr %arrayidx.i, align 8 + store ptr %10, ptr %add.ptr.i.i, align 8 + %11 = load i32, ptr %m_pos.i.i, align 8 + %inc.i.i = add i32 %11, 1 store i32 %inc.i.i, ptr %m_pos.i.i, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i @@ -16174,53 +16172,53 @@ invoke.cont6: ; preds = %_ZN6bufferIP4exprLb %.pre = load ptr, ptr %buffer, align 8 %idx.ext.i = zext i32 %inc.i.i to i64 %add.ptr.i = getelementptr inbounds nuw ptr, ptr %.pre, i64 %idx.ext.i - %cmp.not.i.i29 = icmp eq i32 %inc.i.i, 0 - br i1 %cmp.not.i.i29, label %for.body.lr.ph, label %if.then.i.i30 + %cmp.not.i.i28 = icmp eq i32 %inc.i.i, 0 + br i1 %cmp.not.i.i28, label %for.body.lr.ph, label %if.then.i.i29 -if.then.i.i30: ; preds = %invoke.cont6 - %13 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %idx.ext.i, i1 true) - %sub.i.i.i = shl nuw nsw i64 %13, 1 +if.then.i.i29: ; preds = %invoke.cont6 + %12 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %idx.ext.i, i1 true) + %sub.i.i.i = shl nuw nsw i64 %12, 1 %mul.i.i = xor i64 %sub.i.i.i, 126 invoke void @_ZSt16__introsort_loopIPP4exprlN9__gnu_cxx5__ops15_Iter_comp_iterI11ast_lt_procEEEvT_S8_T0_T1_(ptr noundef %.pre, ptr noundef nonnull %add.ptr.i, i64 noundef %mul.i.i) - to label %.noexc31 unwind label %lpad.loopexit.split-lp + to label %.noexc30 unwind label %lpad.loopexit.split-lp -.noexc31: ; preds = %if.then.i.i30 +.noexc30: ; preds = %if.then.i.i29 invoke void @_ZSt22__final_insertion_sortIPP4exprN9__gnu_cxx5__ops15_Iter_comp_iterI11ast_lt_procEEEvT_S8_T0_(ptr noundef %.pre, ptr noundef nonnull %add.ptr.i) - to label %.noexc31._ZSt4sortIPP4expr11ast_lt_procEvT_S4_T0_.exit_crit_edge unwind label %lpad.loopexit.split-lp + to label %.noexc30._ZSt4sortIPP4expr11ast_lt_procEvT_S4_T0_.exit_crit_edge unwind label %lpad.loopexit.split-lp -.noexc31._ZSt4sortIPP4expr11ast_lt_procEvT_S4_T0_.exit_crit_edge: ; preds = %.noexc31 - %.pre70.pre.pre = load ptr, ptr %buffer, align 8 +.noexc30._ZSt4sortIPP4expr11ast_lt_procEvT_S4_T0_.exit_crit_edge: ; preds = %.noexc30 + %.pre69.pre.pre = load ptr, ptr %buffer, align 8 br label %for.body.lr.ph -for.body.lr.ph: ; preds = %invoke.cont6, %.noexc31._ZSt4sortIPP4expr11ast_lt_procEvT_S4_T0_.exit_crit_edge - %.pre70.pre = phi ptr [ %.pre70.pre.pre, %.noexc31._ZSt4sortIPP4expr11ast_lt_procEvT_S4_T0_.exit_crit_edge ], [ %.pre, %invoke.cont6 ] - %14 = zext i32 %num_args to i64 +for.body.lr.ph: ; preds = %invoke.cont6, %.noexc30._ZSt4sortIPP4expr11ast_lt_procEvT_S4_T0_.exit_crit_edge + %.pre69.pre = phi ptr [ %.pre69.pre.pre, %.noexc30._ZSt4sortIPP4expr11ast_lt_procEvT_S4_T0_.exit_crit_edge ], [ %.pre, %invoke.cont6 ] + %13 = zext i32 %num_args to i64 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.body %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ] %arrayidx = getelementptr inbounds nuw ptr, ptr %args, i64 %indvars.iv - %15 = load ptr, ptr %arrayidx, align 8 - %arrayidx.i33 = getelementptr inbounds nuw ptr, ptr %.pre70.pre, i64 %indvars.iv - %16 = load ptr, ptr %arrayidx.i33, align 8 - %cmp11 = icmp ne ptr %15, %16 + %14 = load ptr, ptr %arrayidx, align 8 + %arrayidx.i32 = getelementptr inbounds nuw ptr, ptr %.pre69.pre, i64 %indvars.iv + %15 = load ptr, ptr %arrayidx.i32, align 8 + %cmp11 = icmp ne ptr %14, %15 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %cmp = icmp samesign uge i64 %indvars.iv.next, %14 + %cmp = icmp samesign uge i64 %indvars.iv.next, %13 %.not = select i1 %cmp11, i1 true, i1 %cmp br i1 %.not, label %for.end, label %for.body, !llvm.loop !90 lpad.loopexit: ; preds = %if.then.i.i, %if.end.i.i.i.i.i - %lpad.loopexit64 = landingpad { ptr, i32 } + %lpad.loopexit63 = landingpad { ptr, i32 } cleanup br label %lpad -lpad.loopexit.split-lp: ; preds = %if.then13, %if.then.i.i30, %.noexc31, %if.then2.i.i.i - %lpad.loopexit.split-lp65 = landingpad { ptr, i32 } +lpad.loopexit.split-lp: ; preds = %if.then13, %if.then.i.i29, %.noexc30, %if.then2.i.i.i + %lpad.loopexit.split-lp64 = landingpad { ptr, i32 } cleanup br label %lpad lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit64, %lpad.loopexit ], [ %lpad.loopexit.split-lp65, %lpad.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit63, %lpad.loopexit ], [ %lpad.loopexit.split-lp64, %lpad.loopexit.split-lp ] call void @_ZN10ptr_bufferI4exprLj16EED2Ev(ptr noundef nonnull align 8 dereferenceable(144) %buffer) #21 resume { ptr, i32 } %lpad.phi @@ -16228,8 +16226,8 @@ for.end: ; preds = %for.body br i1 %cmp11, label %if.then13, label %cleanup if.then13: ; preds = %for.end - %17 = load ptr, ptr %this, align 8 - %call18 = invoke noundef ptr @_ZN11ast_manager6mk_appEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %17, ptr noundef nonnull %f, i32 noundef %num_args, ptr noundef nonnull %.pre70.pre) + %16 = load ptr, ptr %this, align 8 + %call18 = invoke noundef ptr @_ZN11ast_manager6mk_appEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %16, ptr noundef nonnull %f, i32 noundef %num_args, ptr noundef nonnull %.pre69.pre) to label %invoke.cont17 unwind label %lpad.loopexit.split-lp invoke.cont17: ; preds = %if.then13 @@ -16238,116 +16236,116 @@ invoke.cont17: ; preds = %if.then13 _ZN11ast_manager7inc_refEP3ast.exit.i: ; preds = %invoke.cont17 %m_ref_count.i.i.i = getelementptr inbounds nuw i8, ptr %call18, i64 8 - %18 = load i32, ptr %m_ref_count.i.i.i, align 4 - %inc.i.i.i = add i32 %18, 1 + %17 = load i32, ptr %m_ref_count.i.i.i, align 4 + %inc.i.i.i = add i32 %17, 1 store i32 %inc.i.i.i, ptr %m_ref_count.i.i.i, align 4 br label %if.end.i if.end.i: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i, %invoke.cont17 - %19 = load ptr, ptr %result, align 8 - %tobool.not.i3.i = icmp eq ptr %19, null + %18 = load ptr, ptr %result, align 8 + %tobool.not.i3.i = icmp eq ptr %18, null br i1 %tobool.not.i3.i, label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %if.end.i %m_manager.i.i = getelementptr inbounds nuw i8, ptr %result, i64 8 - %20 = load ptr, ptr %m_manager.i.i, align 8 - %m_ref_count.i.i.i.i = getelementptr inbounds nuw i8, ptr %19, i64 8 - %21 = load i32, ptr %m_ref_count.i.i.i.i, align 4 - %dec.i.i.i.i = add i32 %21, -1 + %19 = load ptr, ptr %m_manager.i.i, align 8 + %m_ref_count.i.i.i.i = getelementptr inbounds nuw i8, ptr %18, i64 8 + %20 = load i32, ptr %m_ref_count.i.i.i.i, align 4 + %dec.i.i.i.i = add i32 %20, -1 store i32 %dec.i.i.i.i, ptr %m_ref_count.i.i.i.i, align 4 - %cmp.i.i.i34 = icmp eq i32 %dec.i.i.i.i, 0 - br i1 %cmp.i.i.i34, label %if.then2.i.i.i, label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit + %cmp.i.i.i33 = icmp eq i32 %dec.i.i.i.i, 0 + br i1 %cmp.i.i.i33, label %if.then2.i.i.i, label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit if.then2.i.i.i: ; preds = %if.then.i.i.i - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %20, ptr noundef nonnull %19) + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %19, ptr noundef nonnull %18) to label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit unwind label %lpad.loopexit.split-lp _ZN7obj_refI4expr11ast_managerEaSEPS0_.exit: ; preds = %if.then2.i.i.i, %if.end.i, %if.then.i.i.i store ptr %call18, ptr %result, align 8 - %.pre69 = load ptr, ptr %buffer, align 8 + %.pre68 = load ptr, ptr %buffer, align 8 br label %cleanup cleanup: ; preds = %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit, %for.end - %22 = phi ptr [ %.pre69, %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit ], [ %.pre70.pre, %for.end ] - %cmp.not.i.i.i.i37 = icmp eq ptr %22, %m_initial_buffer.i.i - %cmp.i.i.i.i.i38 = icmp eq ptr %22, null - %or.cond.i.i.i.i39 = or i1 %cmp.not.i.i.i.i37, %cmp.i.i.i.i.i38 - br i1 %or.cond.i.i.i.i39, label %_ZN10ptr_bufferI4exprLj16EED2Ev.exit, label %if.end.i.i.i.i.i40 - -if.end.i.i.i.i.i40: ; preds = %cleanup - invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %22) + %21 = phi ptr [ %.pre68, %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit ], [ %.pre69.pre, %for.end ] + %cmp.not.i.i.i.i36 = icmp eq ptr %21, %m_initial_buffer.i.i + %cmp.i.i.i.i.i37 = icmp eq ptr %21, null + %or.cond.i.i.i.i38 = or i1 %cmp.not.i.i.i.i36, %cmp.i.i.i.i.i37 + br i1 %or.cond.i.i.i.i38, label %_ZN10ptr_bufferI4exprLj16EED2Ev.exit, label %if.end.i.i.i.i.i39 + +if.end.i.i.i.i.i39: ; preds = %cleanup + invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %21) to label %_ZN10ptr_bufferI4exprLj16EED2Ev.exit unwind label %terminate.lpad.i.i -terminate.lpad.i.i: ; preds = %if.end.i.i.i.i.i40 - %23 = landingpad { ptr, i32 } +terminate.lpad.i.i: ; preds = %if.end.i.i.i.i.i39 + %22 = landingpad { ptr, i32 } catch ptr null - %24 = extractvalue { ptr, i32 } %23, 0 - call void @__clang_call_terminate(ptr %24) #24 + %23 = extractvalue { ptr, i32 } %22, 0 + call void @__clang_call_terminate(ptr %23) #24 unreachable -_ZN10ptr_bufferI4exprLj16EED2Ev.exit: ; preds = %cleanup, %if.end.i.i.i.i.i40 +_ZN10ptr_bufferI4exprLj16EED2Ev.exit: ; preds = %cleanup, %if.end.i.i.i.i.i39 br i1 %cmp11, label %return, label %if.end37 -_ZNK9func_decl14is_commutativeEv.exit47: ; preds = %_ZNK11ast_manager11is_distinctEPK9func_decl.exit, %_ZNK4decl13get_family_idEv.exit.thread.i.i - %25 = and i16 %bf.load.i.i, 8 - %bf.cast.i.i46 = icmp ne i16 %25, 0 +_ZNK9func_decl14is_commutativeEv.exit46: ; preds = %_ZNK11ast_manager11is_distinctEPK9func_decl.exit, %_ZNK4decl13get_family_idEv.exit.thread.i.i + %24 = and i16 %bf.load.i.i, 8 + %bf.cast.i.i45 = icmp ne i16 %24, 0 %cmp23 = icmp eq i32 %num_args, 2 - %or.cond = and i1 %cmp23, %bf.cast.i.i46 + %or.cond = and i1 %cmp23, %bf.cast.i.i45 br i1 %or.cond, label %land.lhs.true24, label %if.end37 -land.lhs.true24: ; preds = %_ZNK9func_decl14is_commutativeEv.exit47 - %26 = load ptr, ptr %args, align 8 - %27 = load i32, ptr %26, align 4 +land.lhs.true24: ; preds = %_ZNK9func_decl14is_commutativeEv.exit46 + %25 = load ptr, ptr %args, align 8 + %26 = load i32, ptr %25, align 4 %arrayidx27 = getelementptr inbounds nuw i8, ptr %args, i64 8 - %28 = load ptr, ptr %arrayidx27, align 8 - %29 = load i32, ptr %28, align 4 - %cmp29 = icmp ugt i32 %27, %29 + %27 = load ptr, ptr %arrayidx27, align 8 + %28 = load i32, ptr %27, align 4 + %cmp29 = icmp ugt i32 %26, %28 br i1 %cmp29, label %if.then30, label %if.end37 if.then30: ; preds = %land.lhs.true24 - store ptr %28, ptr %args2, align 16 + store ptr %27, ptr %args2, align 16 %arrayinit.element = getelementptr inbounds nuw i8, ptr %args2, i64 8 - store ptr %26, ptr %arrayinit.element, align 8 - %30 = load ptr, ptr %this, align 8 - %call34 = call noundef ptr @_ZN11ast_manager6mk_appEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %30, ptr noundef nonnull %f, i32 noundef 2, ptr noundef nonnull %args2) - %tobool.not.i48 = icmp eq ptr %call34, null - br i1 %tobool.not.i48, label %if.end.i52, label %_ZN11ast_manager7inc_refEP3ast.exit.i49 - -_ZN11ast_manager7inc_refEP3ast.exit.i49: ; preds = %if.then30 - %m_ref_count.i.i.i50 = getelementptr inbounds nuw i8, ptr %call34, i64 8 - %31 = load i32, ptr %m_ref_count.i.i.i50, align 4 - %inc.i.i.i51 = add i32 %31, 1 - store i32 %inc.i.i.i51, ptr %m_ref_count.i.i.i50, align 4 - br label %if.end.i52 + store ptr %25, ptr %arrayinit.element, align 8 + %29 = load ptr, ptr %this, align 8 + %call34 = call noundef ptr @_ZN11ast_manager6mk_appEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %29, ptr noundef nonnull %f, i32 noundef 2, ptr noundef nonnull %args2) + %tobool.not.i47 = icmp eq ptr %call34, null + br i1 %tobool.not.i47, label %if.end.i51, label %_ZN11ast_manager7inc_refEP3ast.exit.i48 + +_ZN11ast_manager7inc_refEP3ast.exit.i48: ; preds = %if.then30 + %m_ref_count.i.i.i49 = getelementptr inbounds nuw i8, ptr %call34, i64 8 + %30 = load i32, ptr %m_ref_count.i.i.i49, align 4 + %inc.i.i.i50 = add i32 %30, 1 + store i32 %inc.i.i.i50, ptr %m_ref_count.i.i.i49, align 4 + br label %if.end.i51 + +if.end.i51: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i48, %if.then30 + %31 = load ptr, ptr %result, align 8 + %tobool.not.i3.i52 = icmp eq ptr %31, null + br i1 %tobool.not.i3.i52, label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit59, label %if.then.i.i.i53 + +if.then.i.i.i53: ; preds = %if.end.i51 + %m_manager.i.i54 = getelementptr inbounds nuw i8, ptr %result, i64 8 + %32 = load ptr, ptr %m_manager.i.i54, align 8 + %m_ref_count.i.i.i.i55 = getelementptr inbounds nuw i8, ptr %31, i64 8 + %33 = load i32, ptr %m_ref_count.i.i.i.i55, align 4 + %dec.i.i.i.i56 = add i32 %33, -1 + store i32 %dec.i.i.i.i56, ptr %m_ref_count.i.i.i.i55, align 4 + %cmp.i.i.i57 = icmp eq i32 %dec.i.i.i.i56, 0 + br i1 %cmp.i.i.i57, label %if.then2.i.i.i58, label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit59 + +if.then2.i.i.i58: ; preds = %if.then.i.i.i53 + call void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %32, ptr noundef nonnull %31) + br label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit59 -if.end.i52: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i49, %if.then30 - %32 = load ptr, ptr %result, align 8 - %tobool.not.i3.i53 = icmp eq ptr %32, null - br i1 %tobool.not.i3.i53, label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit60, label %if.then.i.i.i54 - -if.then.i.i.i54: ; preds = %if.end.i52 - %m_manager.i.i55 = getelementptr inbounds nuw i8, ptr %result, i64 8 - %33 = load ptr, ptr %m_manager.i.i55, align 8 - %m_ref_count.i.i.i.i56 = getelementptr inbounds nuw i8, ptr %32, i64 8 - %34 = load i32, ptr %m_ref_count.i.i.i.i56, align 4 - %dec.i.i.i.i57 = add i32 %34, -1 - store i32 %dec.i.i.i.i57, ptr %m_ref_count.i.i.i.i56, align 4 - %cmp.i.i.i58 = icmp eq i32 %dec.i.i.i.i57, 0 - br i1 %cmp.i.i.i58, label %if.then2.i.i.i59, label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit60 - -if.then2.i.i.i59: ; preds = %if.then.i.i.i54 - call void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %33, ptr noundef nonnull %32) - br label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit60 - -_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit60: ; preds = %if.end.i52, %if.then.i.i.i54, %if.then2.i.i.i59 +_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit59: ; preds = %if.end.i51, %if.then.i.i.i53, %if.then2.i.i.i58 store ptr %call34, ptr %result, align 8 br label %return -if.end37: ; preds = %if.then, %entry, %_ZN10ptr_bufferI4exprLj16EED2Ev.exit, %_ZNK9func_decl14is_commutativeEv.exit47, %land.lhs.true24 +if.end37: ; preds = %if.then, %entry, %_ZN10ptr_bufferI4exprLj16EED2Ev.exit, %_ZNK9func_decl14is_commutativeEv.exit46, %land.lhs.true24 br label %return -return: ; preds = %_ZN10ptr_bufferI4exprLj16EED2Ev.exit, %if.end37, %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit60 - %retval.1 = phi i32 [ 4, %_ZN10ptr_bufferI4exprLj16EED2Ev.exit ], [ 5, %if.end37 ], [ 4, %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit60 ] +return: ; preds = %_ZN10ptr_bufferI4exprLj16EED2Ev.exit, %if.end37, %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit59 + %retval.1 = phi i32 [ 4, %_ZN10ptr_bufferI4exprLj16EED2Ev.exit ], [ 5, %if.end37 ], [ 4, %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit59 ] ret i32 %retval.1 } diff --git a/bench/z3/optimized/well_sorted.cpp.ll b/bench/z3/optimized/well_sorted.cpp.ll index bd0e5322a30..46911ebdfc3 100644 --- a/bench/z3/optimized/well_sorted.cpp.ll +++ b/bench/z3/optimized/well_sorted.cpp.ll @@ -699,25 +699,27 @@ land.lhs.true: ; preds = %entry _ZNK9func_decl14is_associativeEv.exit: ; preds = %land.lhs.true %m_left_assoc.i.i = getelementptr inbounds nuw i8, ptr %3, i64 17 %bf.load.i.i = load i16, ptr %m_left_assoc.i.i, align 1 - %bf.cast.i.i = trunc i16 %bf.load.i.i to i1 %4 = and i16 %bf.load.i.i, 2 - %bf.cast.i.i23.not = icmp ne i16 %4, 0 - %brmerge = or i1 %bf.cast.i.i23.not, %bf.cast.i.i - br i1 %brmerge, label %if.end, label %if.then + %bf.cast.i.i.not = icmp eq i16 %4, 0 + br i1 %bf.cast.i.i.not, label %_ZNK9func_decl19is_left_associativeEv.exit, label %if.end -if.then: ; preds = %_ZNK9func_decl14is_associativeEv.exit, %land.lhs.true +_ZNK9func_decl19is_left_associativeEv.exit: ; preds = %_ZNK9func_decl14is_associativeEv.exit + %bf.cast.i.i28 = trunc i16 %bf.load.i.i to i1 + br i1 %bf.cast.i.i28, label %if.end, label %if.then + +if.then: ; preds = %land.lhs.true, %_ZNK9func_decl19is_left_associativeEv.exit tail call void (ptr, ...) @_Z11warning_msgPKcz(ptr noundef nonnull @.str.2) %m_error = getelementptr inbounds nuw i8, ptr %this, i64 8 store i8 1, ptr %m_error, align 8 br label %for.end -if.end: ; preds = %_ZNK9func_decl14is_associativeEv.exit, %entry - %cmp953.not = icmp eq i32 %0, 0 - br i1 %cmp953.not, label %for.end, label %for.body.lr.ph +if.end: ; preds = %_ZNK9func_decl19is_left_associativeEv.exit, %_ZNK9func_decl14is_associativeEv.exit, %entry + %cmp950.not = icmp eq i32 %0, 0 + br i1 %cmp950.not, label %for.end, label %for.body.lr.ph for.body.lr.ph: ; preds = %if.end %m_args.i = getelementptr inbounds nuw i8, ptr %n, i64 32 - %m_info.i.i30 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %m_info.i.i29 = getelementptr inbounds nuw i8, ptr %1, i64 24 %m_domain.i = getelementptr inbounds nuw i8, ptr %1, i64 48 %wide.trip.count = zext i32 %0 to i64 br label %for.body @@ -727,25 +729,23 @@ for.body: ; preds = %for.body.lr.ph, %fo %arrayidx.i = getelementptr inbounds nuw [0 x ptr], ptr %m_args.i, i64 0, i64 %indvars.iv %5 = load ptr, ptr %arrayidx.i, align 8 %call11 = tail call noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %5) - %6 = load ptr, ptr %m_info.i.i30, align 8 - %cmp.not.i31 = icmp eq ptr %6, null - br i1 %cmp.not.i31, label %cond.false, label %_ZNK9func_decl14is_associativeEv.exit37 - -_ZNK9func_decl14is_associativeEv.exit37: ; preds = %for.body - %m_left_assoc.i.i33 = getelementptr inbounds nuw i8, ptr %6, i64 17 - %bf.load.i.i34 = load i16, ptr %m_left_assoc.i.i33, align 1 - %bf.cast.i.i35 = trunc i16 %bf.load.i.i34 to i1 - %7 = and i16 %bf.load.i.i34, 2 - %bf.cast4.i.i36 = icmp ne i16 %7, 0 - %8 = and i1 %bf.cast4.i.i36, %bf.cast.i.i35 + %6 = load ptr, ptr %m_info.i.i29, align 8 + %cmp.not.i30 = icmp eq ptr %6, null + br i1 %cmp.not.i30, label %cond.false, label %_ZNK9func_decl14is_associativeEv.exit34 + +_ZNK9func_decl14is_associativeEv.exit34: ; preds = %for.body + %m_left_assoc.i.i32 = getelementptr inbounds nuw i8, ptr %6, i64 17 + %bf.load.i.i33 = load i16, ptr %m_left_assoc.i.i32, align 1 + %7 = and i16 %bf.load.i.i33, 3 + %8 = icmp eq i16 %7, 3 br i1 %8, label %cond.end, label %cond.false -cond.false: ; preds = %for.body, %_ZNK9func_decl14is_associativeEv.exit37 - %arrayidx.i41 = getelementptr inbounds nuw [0 x ptr], ptr %m_domain.i, i64 0, i64 %indvars.iv +cond.false: ; preds = %for.body, %_ZNK9func_decl14is_associativeEv.exit34 + %arrayidx.i38 = getelementptr inbounds nuw [0 x ptr], ptr %m_domain.i, i64 0, i64 %indvars.iv br label %cond.end -cond.end: ; preds = %_ZNK9func_decl14is_associativeEv.exit37, %cond.false - %cond.in = phi ptr [ %arrayidx.i41, %cond.false ], [ %m_domain.i, %_ZNK9func_decl14is_associativeEv.exit37 ] +cond.end: ; preds = %_ZNK9func_decl14is_associativeEv.exit34, %cond.false + %cond.in = phi ptr [ %arrayidx.i38, %cond.false ], [ %m_domain.i, %_ZNK9func_decl14is_associativeEv.exit34 ] %cond = load ptr, ptr %cond.in, align 8 %cmp15.not = icmp eq ptr %cond, %call11 br i1 %cmp15.not, label %for.inc, label %if.then16 @@ -811,8 +811,8 @@ invoke.cont43: ; preds = %invoke.cont41 to label %invoke.cont45 unwind label %lpad42 invoke.cont45: ; preds = %invoke.cont43 - %m_empty.i.i46 = getelementptr inbounds nuw i8, ptr %ref.tmp39, i64 16 - call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i46) #13 + %m_empty.i.i43 = getelementptr inbounds nuw i8, ptr %ref.tmp39, i64 16 + call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i43) #13 %call48 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %strm, ptr noundef nonnull @.str.8) to label %invoke.cont47 unwind label %lpad @@ -830,8 +830,8 @@ invoke.cont53: ; preds = %invoke.cont51 to label %invoke.cont55 unwind label %lpad52 invoke.cont55: ; preds = %invoke.cont53 - %m_empty.i.i48 = getelementptr inbounds nuw i8, ptr %ref.tmp49, i64 16 - call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i48) #13 + %m_empty.i.i45 = getelementptr inbounds nuw i8, ptr %ref.tmp49, i64 16 + call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i45) #13 invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %str, ptr noundef nonnull align 8 dereferenceable(112) %strm) to label %invoke.cont57 unwind label %lpad @@ -855,22 +855,22 @@ lpad: ; preds = %invoke.cont47, %inv lpad32: ; preds = %invoke.cont33, %invoke.cont31 %15 = landingpad { ptr, i32 } cleanup - %m_empty.i.i49 = getelementptr inbounds nuw i8, ptr %ref.tmp29, i64 16 - call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i49) #13 + %m_empty.i.i46 = getelementptr inbounds nuw i8, ptr %ref.tmp29, i64 16 + call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i46) #13 br label %ehcleanup lpad42: ; preds = %invoke.cont43, %invoke.cont41 %16 = landingpad { ptr, i32 } cleanup - %m_empty.i.i50 = getelementptr inbounds nuw i8, ptr %ref.tmp39, i64 16 - call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i50) #13 + %m_empty.i.i47 = getelementptr inbounds nuw i8, ptr %ref.tmp39, i64 16 + call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i47) #13 br label %ehcleanup lpad52: ; preds = %invoke.cont53, %invoke.cont51 %17 = landingpad { ptr, i32 } cleanup - %m_empty.i.i51 = getelementptr inbounds nuw i8, ptr %ref.tmp49, i64 16 - call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i51) #13 + %m_empty.i.i48 = getelementptr inbounds nuw i8, ptr %ref.tmp49, i64 16 + call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_empty.i.i48) #13 br label %ehcleanup lpad59: ; preds = %invoke.cont57 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..0fba5f520b0 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/119196 export COMPTIME_MODE=0 # Please rebase manually