diff --git a/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll b/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll index 6d50e048584..e53dbc04e1d 100644 --- a/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll +++ b/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll @@ -138329,7 +138329,7 @@ if.then261: ; preds = %_ZN7testing15Assert %cond.i.i386 = select i1 %tobool.i.not.i.i, ptr %data_.i1.i.i.i.i, ptr %188 %shr.i.i.i = lshr i64 %187, 1 %189 = getelementptr %"class.absl::test_internal::CopyableOnlyInstance", ptr %cond.i.i386, i64 %shr.i.i.i - %190 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 + %191 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 %dec.i.i.i.i.i = add nsw i32 %190, -1 store i32 %dec.i.i.i.i.i, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 %is_live_.i.i.i.i.i = getelementptr i8, ptr %189, i64 -4 @@ -141939,7 +141939,7 @@ if.then261: ; preds = %_ZN7testing15Assert %cond.i.i386 = select i1 %tobool.i.not.i.i, ptr %data_.i1.i.i.i.i, ptr %188 %shr.i.i.i = lshr i64 %187, 1 %189 = getelementptr %"class.absl::test_internal::CopyableMovableInstance", ptr %cond.i.i386, i64 %shr.i.i.i - %190 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 + %191 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 %dec.i.i.i.i.i = add nsw i32 %190, -1 store i32 %dec.i.i.i.i.i, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 %is_live_.i.i.i.i.i = getelementptr i8, ptr %189, i64 -4 @@ -150032,10 +150032,8 @@ if.then.i.i.i.i: ; preds = %_ZN4absl23inlined_v br label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit _ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit: ; preds = %_ZN7testing15AssertionResultD2Ev.exit482, %_ZN4absl23inlined_vector_internal14DestroyAdapterISaINS_13test_internal20CopyableOnlyInstanceEELb0EE15DestroyElementsERS4_PS3_m.exit.i.i.i, %if.then.i.i.i.i - switch i64 %68, label %for.body.preheader.i.i.i.i493 [ - i64 0, label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515 - i64 1, label %if.then.i.i.i.i512 - ] + %cmp.i.i486 = icmp eq i64 %68, 0 + br i1 %cmp.i.i486, label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515, label %for.body.preheader.i.i.i.i493 for.body.preheader.i.i.i.i493: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit %shr.i.i.i.i494 = lshr exact i64 %68, 1 @@ -150066,21 +150064,16 @@ _ZNSt16allocator_traitsISaIN4absl13test_internal20CopyableOnlyInstanceEEE7destro %cmp.not.i.i.i.i507 = icmp eq i64 %dec.i.i.i.i501, 0 br i1 %cmp.not.i.i.i.i507, label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515.loopexit, label %for.body.i.i.i.i497, !llvm.loop !1329 -if.then.i.i.i.i512: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit - %189 = load ptr, ptr %data_.i1.i.i.i.i, align 8 - call void @_ZdlPv(ptr noundef %189) #36 - br label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515 - _ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515.loopexit: ; preds = %_ZNSt16allocator_traitsISaIN4absl13test_internal20CopyableOnlyInstanceEEE7destroyIS2_EEvRS3_PT_.exit.i.i.i.i505 store i32 %dec.i.i.i.i.i.i.i.i502, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 br label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515 -_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit, %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515.loopexit, %if.then.i.i.i.i512 +_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515.loopexit, %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit call void @_ZN7testing11ScopedTraceD1Ev(ptr noundef nonnull align 1 dereferenceable(1) %gtest_trace_1124) #33 - %190 = load i32, ptr %len, align 4 - %inc344 = add nsw i32 %190, 1 + %189 = load i32, ptr %len, align 4 + %inc344 = add nsw i32 %189, 1 store i32 %inc344, ptr %len, align 4 - %cmp = icmp slt i32 %190, 19 + %cmp = icmp slt i32 %189, 19 br i1 %cmp, label %for.body, label %for.end345, !llvm.loop !3288 ehcleanup339: ; preds = %_ZN7testing7MessageD2Ev.exit478, %lpad327 @@ -151912,10 +151905,8 @@ if.then.i.i.i.i: ; preds = %_ZN4absl23inlined_v br label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit _ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit: ; preds = %_ZN7testing15AssertionResultD2Ev.exit479, %_ZN4absl23inlined_vector_internal14DestroyAdapterISaINS_13test_internal23CopyableMovableInstanceEELb0EE15DestroyElementsERS4_PS3_m.exit.i.i.i, %if.then.i.i.i.i - switch i64 %68, label %for.body.preheader.i.i.i.i490 [ - i64 0, label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512 - i64 1, label %if.then.i.i.i.i509 - ] + %cmp.i.i483 = icmp eq i64 %68, 0 + br i1 %cmp.i.i483, label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512, label %for.body.preheader.i.i.i.i490 for.body.preheader.i.i.i.i490: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit %shr.i.i.i.i491 = lshr exact i64 %68, 1 @@ -151946,21 +151937,16 @@ _ZNSt16allocator_traitsISaIN4absl13test_internal23CopyableMovableInstanceEEE7des %cmp.not.i.i.i.i504 = icmp eq i64 %dec.i.i.i.i498, 0 br i1 %cmp.not.i.i.i.i504, label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512.loopexit, label %for.body.i.i.i.i494, !llvm.loop !1481 -if.then.i.i.i.i509: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit - %189 = load ptr, ptr %data_.i1.i.i.i.i, align 8 - call void @_ZdlPv(ptr noundef %189) #36 - br label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512 - _ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512.loopexit: ; preds = %_ZNSt16allocator_traitsISaIN4absl13test_internal23CopyableMovableInstanceEEE7destroyIS2_EEvRS3_PT_.exit.i.i.i.i502 store i32 %dec.i.i.i.i.i.i.i.i499, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 br label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512 -_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit, %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512.loopexit, %if.then.i.i.i.i509 +_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512.loopexit, %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit call void @_ZN7testing11ScopedTraceD1Ev(ptr noundef nonnull align 1 dereferenceable(1) %gtest_trace_1124) #33 - %190 = load i32, ptr %len, align 4 - %inc344 = add nsw i32 %190, 1 + %189 = load i32, ptr %len, align 4 + %inc344 = add nsw i32 %189, 1 store i32 %inc344, ptr %len, align 4 - %cmp = icmp slt i32 %190, 19 + %cmp = icmp slt i32 %189, 19 br i1 %cmp, label %for.body, label %for.end345, !llvm.loop !3311 ehcleanup339: ; preds = %_ZN7testing7MessageD2Ev.exit475, %lpad327 diff --git a/bench/arrow/optimized/strtod.cc.ll b/bench/arrow/optimized/strtod.cc.ll index f0b79fd864f..415feaa84c6 100644 --- a/bench/arrow/optimized/strtod.cc.ll +++ b/bench/arrow/optimized/strtod.cc.ll @@ -67,11 +67,7 @@ if.else10: ; preds = %if.else %cmp13 = icmp eq i64 %and, 0 br i1 %cmp13, label %return, label %if.else15 -if.else15: ; preds = %if.else10 - %cmp.i10 = icmp eq i64 %1, 9218868437227405312 - br i1 %cmp.i10, label %return, label %if.end.i11 - -if.end.i11: ; preds = %if.else15 +if.end.i11: ; preds = %if.else10 %cmp3.i12 = icmp slt i64 %1, 0 br i1 %cmp3.i12, label %land.lhs.true.i16, label %if.else.i13 @@ -89,8 +85,8 @@ if.else.i13: ; preds = %if.end.i11 %9 = bitcast i64 %add.i14 to double br label %return -return: ; preds = %entry, %if.else.i13, %if.then10.i18, %land.lhs.true.i16, %if.else15, %if.else10, %if.else.i, %if.then10.i, %land.lhs.true.i, %if.then7, %if.end - %retval.0 = phi double [ %0, %if.end ], [ %6, %if.then10.i ], [ %7, %if.else.i ], [ 0.000000e+00, %land.lhs.true.i ], [ 0x7FF0000000000000, %if.then7 ], [ %0, %if.else10 ], [ %8, %if.then10.i18 ], [ %9, %if.else.i13 ], [ 0.000000e+00, %land.lhs.true.i16 ], [ 0x7FF0000000000000, %if.else15 ], [ %0, %entry ] +return: ; preds = %entry, %if.else.i13, %if.then10.i18, %land.lhs.true.i16, %if.else10, %if.else.i, %if.then10.i, %land.lhs.true.i, %if.then7, %if.end + %retval.0 = phi double [ %0, %if.end ], [ %6, %if.then10.i ], [ %7, %if.else.i ], [ 0.000000e+00, %land.lhs.true.i ], [ 0x7FF0000000000000, %if.then7 ], [ %0, %if.else10 ], [ %8, %if.then10.i18 ], [ %9, %if.else.i13 ], [ 0.000000e+00, %land.lhs.true.i16 ], [ %0, %entry ] ret double %retval.0 } @@ -737,11 +733,7 @@ if.else10.i: ; preds = %if.else.i4 %cmp13.i = icmp eq i64 %and.i, 0 br i1 %cmp13.i, label %_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %if.else15.i -if.else15.i: ; preds = %if.else10.i - %cmp.i10.i = icmp eq i64 %7, 9218868437227405312 - br i1 %cmp.i10.i, label %_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %if.end.i11.i - -if.end.i11.i: ; preds = %if.else15.i +if.end.i11.i: ; preds = %if.else10.i %cmp3.i12.i = icmp slt i64 %7, 0 br i1 %cmp3.i12.i, label %land.lhs.true.i16.i, label %if.else.i13.i @@ -759,8 +751,8 @@ if.else.i13.i: ; preds = %if.end.i11.i %15 = bitcast i64 %add.i14.i to double br label %_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit -_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit: ; preds = %_ZN14arrow_vendored17double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit, %if.end.i, %if.then7.i, %land.lhs.true.i.i, %if.then10.i.i, %if.else.i.i, %if.else10.i, %if.else15.i, %land.lhs.true.i16.i, %if.then10.i18.i, %if.else.i13.i - %retval.0.i = phi double [ %6, %if.end.i ], [ %12, %if.then10.i.i ], [ %13, %if.else.i.i ], [ 0.000000e+00, %land.lhs.true.i.i ], [ 0x7FF0000000000000, %if.then7.i ], [ %6, %if.else10.i ], [ %14, %if.then10.i18.i ], [ %15, %if.else.i13.i ], [ 0.000000e+00, %land.lhs.true.i16.i ], [ 0x7FF0000000000000, %if.else15.i ], [ %6, %_ZN14arrow_vendored17double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit ] +_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit: ; preds = %_ZN14arrow_vendored17double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit, %if.end.i, %if.then7.i, %land.lhs.true.i.i, %if.then10.i.i, %if.else.i.i, %if.else10.i, %land.lhs.true.i16.i, %if.then10.i18.i, %if.else.i13.i + %retval.0.i = phi double [ %6, %if.end.i ], [ %12, %if.then10.i.i ], [ %13, %if.else.i.i ], [ 0.000000e+00, %land.lhs.true.i.i ], [ 0x7FF0000000000000, %if.then7.i ], [ %6, %if.else10.i ], [ %14, %if.then10.i18.i ], [ %15, %if.else.i13.i ], [ 0.000000e+00, %land.lhs.true.i16.i ], [ %6, %_ZN14arrow_vendored17double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %guess.i) ret double %retval.0.i } diff --git a/bench/bullet3/optimized/btMultiBody.ll b/bench/bullet3/optimized/btMultiBody.ll index 841891182da..71a2fc38d0d 100644 --- a/bench/bullet3/optimized/btMultiBody.ll +++ b/bench/bullet3/optimized/btMultiBody.ll @@ -14321,10 +14321,7 @@ for.body82.lr.ph: ; preds = %for.cond80.preheade %113 = getelementptr float, ptr %cond20, i64 %112 br label %for.body82 -while.cond351.preheader: ; preds = %for.inc348 - br i1 %cmp21.not744, label %if.end, label %for.cond354.preheader.lr.ph - -for.cond354.preheader.lr.ph: ; preds = %for.cond80.preheader, %while.cond351.preheader +for.cond354.preheader.lr.ph: ; preds = %for.inc348, %for.cond80.preheader %m_data.i696 = getelementptr inbounds nuw i8, ptr %this, i64 192 %.pre = load ptr, ptr %m_data.i696, align 8 br label %for.cond354.preheader @@ -14913,7 +14910,7 @@ for.end375: ; preds = %for.body359, %for.c %cmp352.not = icmp eq i32 %370, -1 br i1 %cmp352.not, label %if.end, label %for.cond354.preheader, !llvm.loop !262 -if.end: ; preds = %for.end375, %while.cond351.preheader, %for.end +if.end: ; preds = %for.end375, %for.end ret void } diff --git a/bench/curl/optimized/libcurl_la-url.ll b/bench/curl/optimized/libcurl_la-url.ll index 85dfc293fa9..bec775fa78a 100644 --- a/bench/curl/optimized/libcurl_la-url.ll +++ b/bench/curl/optimized/libcurl_la-url.ll @@ -4242,54 +4242,43 @@ if.then26.thread: ; preds = %if.end23.thread store i32 %port.0.i.i, ptr %conn_to_port97, align 8 %bf.set30100 = or i32 %bf.load, 1536 store i32 %bf.set30100, ptr %bits.i, align 8 - br label %if.end49 + br label %return if.then26: ; preds = %if.end23 store i32 %port.46085, ptr %conn_to_port97, align 8 %bf.set30 = or i32 %bf.load46.pre, 1024 store i32 %bf.set30, ptr %bits.i, align 8 - br i1 %tobool124.not.i.i, label %if.end49, label %land.lhs.true33 + br i1 %tobool124.not.i.i, label %return, label %land.lhs.true33 land.lhs.true33: ; preds = %if.then26 %bf.load36 = load i64, ptr %verbose.i.i, align 2 %43 = and i64 %bf.load36, 536870912 %tobool40.not = icmp eq i64 %43, 0 - br i1 %tobool40.not, label %if.end49, label %if.then41 + br i1 %tobool40.not, label %return, label %if.then41 if.then41: ; preds = %land.lhs.true33 tail call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %data, ptr noundef nonnull @.str.52, i32 noundef %port.46085) #11 - br label %if.end49 + br label %return -if.else44: ; preds = %if.end23.thread, %if.end23 +if.end49: ; preds = %if.end23, %if.end23.thread %bf.load46 = phi i32 [ %bf.set, %if.end23.thread ], [ %bf.load46.pre, %if.end23 ] %host.193 = phi ptr [ %call163.i.i, %if.end23.thread ], [ %host.1, %if.end23 ] %bf.clear47 = and i32 %bf.load46, -1025 store i32 %bf.clear47, ptr %bits.i, align 8 - br label %if.end49 - -if.end49: ; preds = %if.then26.thread, %if.then41, %land.lhs.true33, %if.then26, %if.else44 - %host.192 = phi ptr [ %host.1, %if.then26 ], [ %host.1, %land.lhs.true33 ], [ %host.1, %if.then41 ], [ %host.193, %if.else44 ], [ %call163.i.i, %if.then26.thread ] - %port.1 = phi i32 [ %port.46085, %if.then26 ], [ %port.46085, %land.lhs.true33 ], [ %port.46085, %if.then41 ], [ -1, %if.else44 ], [ %port.0.i.i, %if.then26.thread ] %next = getelementptr inbounds nuw i8, ptr %conn_to_host.addr.0123, i64 8 %44 = load ptr, ptr %next, align 8 %tobool = icmp eq ptr %44, null - %tobool1 = icmp ne ptr %host.192, null + %host.192 = icmp ne ptr %host.193, null %or.cond = or i1 %tobool1, %tobool - %or.cond.not = xor i1 %or.cond, true - %cmp = icmp eq i32 %port.1, -1 - %or.cond3 = select i1 %or.cond.not, i1 %cmp, i1 false - br i1 %or.cond3, label %while.body, label %while.end, !llvm.loop !11 + br i1 %or.cond, label %while.end, label %while.body, !llvm.loop !11 while.end: ; preds = %if.end49, %entry %tobool1.lcssa = phi i1 [ false, %entry ], [ %tobool1, %if.end49 ] - %cmp.lcssa = phi i1 [ true, %entry ], [ %cmp, %if.end49 ] %asi = getelementptr inbounds nuw i8, ptr %data, i64 2736 %45 = load ptr, ptr %asi, align 8 %tobool50 = icmp eq ptr %45, null %or.cond1 = or i1 %tobool1.lcssa, %tobool50 - %or.cond1.not = xor i1 %or.cond1, true - %or.cond2 = select i1 %or.cond1.not, i1 %cmp.lcssa, i1 false - br i1 %or.cond2, label %land.lhs.true56, label %return + br i1 %or.cond1, label %return, label %land.lhs.true56 land.lhs.true56: ; preds = %while.end %handler = getelementptr inbounds nuw i8, ptr %conn, i64 712 @@ -4379,8 +4368,8 @@ sw.bb122: ; preds = %do.end112 store i8 30, ptr %httpversion123, align 8 br label %return -return: ; preds = %parse_connect_to_string.exit.thread77, %parse_connect_to_string.exit.thread71, %parse_connect_to_string.exit.thread61, %while.end, %land.lhs.true56, %sw.bb122, %sw.bb120, %if.then59, %do.end112, %if.then67 - %retval.0 = phi i32 [ 27, %if.then67 ], [ 0, %do.end112 ], [ 0, %if.then59 ], [ 0, %sw.bb120 ], [ 0, %sw.bb122 ], [ 0, %land.lhs.true56 ], [ 0, %while.end ], [ 27, %parse_connect_to_string.exit.thread61 ], [ 27, %parse_connect_to_string.exit.thread71 ], [ %result.0.i.i.ph, %parse_connect_to_string.exit.thread77 ] +return: ; preds = %if.then26, %land.lhs.true33, %if.then41, %if.then26.thread, %parse_connect_to_string.exit.thread77, %parse_connect_to_string.exit.thread71, %parse_connect_to_string.exit.thread61, %while.end, %land.lhs.true56, %sw.bb122, %sw.bb120, %if.then59, %do.end112, %if.then67 + %retval.0 = phi i32 [ 27, %if.then67 ], [ 0, %do.end112 ], [ 0, %if.then59 ], [ 0, %sw.bb120 ], [ 0, %sw.bb122 ], [ 0, %land.lhs.true56 ], [ 0, %while.end ], [ 27, %parse_connect_to_string.exit.thread61 ], [ 27, %parse_connect_to_string.exit.thread71 ], [ %result.0.i.i.ph, %parse_connect_to_string.exit.thread77 ], [ 0, %if.then26.thread ], [ 0, %if.then41 ], [ 0, %land.lhs.true33 ], [ 0, %if.then26 ] ret i32 %retval.0 } diff --git a/bench/cvc5/optimized/quant_conflict_find.cpp.ll b/bench/cvc5/optimized/quant_conflict_find.cpp.ll index 0aa5cdeb5f6..80b3ab63582 100644 --- a/bench/cvc5/optimized/quant_conflict_find.cpp.ll +++ b/bench/cvc5/optimized/quant_conflict_find.cpp.ll @@ -18558,10 +18558,8 @@ invoke.cont288: ; preds = %if.else280 %d_kind.i940 = getelementptr inbounds nuw i8, ptr %96, i64 8 %bf.load.i941 = load i16, ptr %d_kind.i940, align 8 %bf.clear.i942 = and i16 %bf.load.i941, 1023 - %cmp290 = icmp ne i16 %bf.clear.i942, 36 - %cmp293.not3064 = icmp eq i16 %bf.clear.i280, 39 - %cmp293.not = or i1 %cmp293.not3064, %cmp290 - br i1 %cmp293.not, label %if.end313, label %if.then294 + %cmp290 = icmp eq i16 %bf.clear.i942, 36 + br i1 %cmp290.not, label %if.then294, label %if.end313 if.then294: ; preds = %invoke.cont288 %call297 = invoke noundef ptr @_ZN4cvc58internal11NodeManager9currentNMEv() diff --git a/bench/delta-rs/optimized/1hj0ksbtyfwxzh2n.ll b/bench/delta-rs/optimized/1hj0ksbtyfwxzh2n.ll index 58e6e40e30d..b6809ba9b0c 100644 --- a/bench/delta-rs/optimized/1hj0ksbtyfwxzh2n.ll +++ b/bench/delta-rs/optimized/1hj0ksbtyfwxzh2n.ll @@ -1524,8 +1524,7 @@ define hidden void @"_ZN9hashbrown11rustc_entry62_$LT$impl$u20$hashbrown..map..H %gep.us.us.i = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep.i, i64 %26 %.val4.i.us.us.i = load i8, ptr %gep.us.us.i, align 1, !range !280, !noalias !434, !noundef !30 %27 = add nsw i8 %.val4.i.us.us.i, -16 - %narrow.i.i.i.us.us.i = call i8 @llvm.umin.i8(i8 %27, i8 4) - %28 = icmp eq i8 %narrow.i.i.i.us.us.i, %narrow3.i.i.i.i + %narrow.i.i.i.us.us.i = icmp eq i8 %27, %narrow3.i.i.i.i br i1 %28, label %.loopexit, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf2c06e39f5cfe2f3E.llvm.8649443668325006364.exit.backedge.us.us.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf2c06e39f5cfe2f3E.llvm.8649443668325006364.exit.backedge.us.us.i": ; preds = %.lr.ph.us.i @@ -1684,8 +1683,7 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %gep.us.us.i.i = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep.i.i, i64 %29 %.val4.i.us.us.i.i = load i8, ptr %gep.us.us.i.i, align 1, !range !280, !alias.scope !463, !noalias !468, !noundef !30 %30 = add nsw i8 %.val4.i.us.us.i.i, -16 - %narrow3.i.i.i.i.us.us.i.i = tail call i8 @llvm.umin.i8(i8 %30, i8 4) - %31 = icmp eq i8 %narrow.i.i.i.i.i.i, %narrow3.i.i.i.i.us.us.i.i + %narrow3.i.i.i.i.us.us.i.i = icmp eq i8 %30, %narrow.i.i.i.i.i.i br i1 %31, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17ha9a9951e792ef5ecE.llvm.8649443668325006364.exit", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us.i.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us.i.i": ; preds = %.lr.ph.us.i.i @@ -1866,8 +1864,7 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h78 %gep.us.i.us.i = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep.i.i, i64 %29 %.val4.i.us.i.us.i = load i8, ptr %gep.us.i.us.i, align 1, !range !280, !alias.scope !500, !noalias !505, !noundef !30 %30 = add nsw i8 %.val4.i.us.i.us.i, -16 - %narrow3.i.i.i.i.us.i.us.i = call i8 @llvm.umin.i8(i8 %30, i8 4) - %31 = icmp eq i8 %narrow.i.i.i.i.i.i, %narrow3.i.i.i.i.us.i.us.i + %narrow3.i.i.i.i.us.us.i.i = icmp eq i8 %30, %narrow.i.i.i.i.i.i br i1 %31, label %.loopexit, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17he651dd2f9ed3996bE.exit.backedge.us.i.us.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17he651dd2f9ed3996bE.exit.backedge.us.i.us.i": ; preds = %.lr.ph.split.us.i.us.i @@ -2186,8 +2183,7 @@ define hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN9hashbrown3ra %gep.us.us.i = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep.i, i64 %24 %.val4.i.us.us.i = load i8, ptr %gep.us.us.i, align 1, !range !280, !alias.scope !537, !noalias !542, !noundef !30 %25 = add nsw i8 %.val4.i.us.us.i, -16 - %narrow3.i.i.i.i.us.us.i = tail call i8 @llvm.umin.i8(i8 %25, i8 4) - %26 = icmp eq i8 %narrow.i.i.i.i.i, %narrow3.i.i.i.i.us.us.i + %narrow3.i.i.i.i.us.us = icmp eq i8 %25, %narrow.i.i.i.i.i br i1 %26, label %.split.us.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us.i": ; preds = %.lr.ph.us.i @@ -2307,8 +2303,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h1c2a %gep.us.us = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep, i64 %24 %.val4.i.us.us = load i8, ptr %gep.us.us, align 1, !range !280, !alias.scope !555, !noalias !560, !noundef !30 %25 = add nsw i8 %.val4.i.us.us, -16 - %narrow3.i.i.i.i.us.us = tail call i8 @llvm.umin.i8(i8 %25, i8 4) - %26 = icmp eq i8 %narrow.i.i.i.i, %narrow3.i.i.i.i.us.us + %narrow3.i.i.i.i.us.us = icmp eq i8 %25, %narrow.i.i.i.i br i1 %26, label %.split.us, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us": ; preds = %.lr.ph.us @@ -2425,8 +2420,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h67bf %gep.us.us = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep, i64 %23 %.val4.i.us.us = load i8, ptr %gep.us.us, align 1, !range !280, !noalias !573, !noundef !30 %24 = add nsw i8 %.val4.i.us.us, -16 - %narrow.i.i.i.us.us = tail call i8 @llvm.umin.i8(i8 %24, i8 4) - %25 = icmp eq i8 %narrow.i.i.i.us.us, %narrow3.i.i.i + %narrow.i.i.i.us.us = icmp eq i8 %24, %narrow3.i.i.i br i1 %25, label %.split.us, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf2c06e39f5cfe2f3E.llvm.8649443668325006364.exit.backedge.us.us" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf2c06e39f5cfe2f3E.llvm.8649443668325006364.exit.backedge.us.us": ; preds = %.lr.ph.us diff --git a/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll b/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll index ab714a7d300..49c242c6158 100644 --- a/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll +++ b/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll @@ -68207,7 +68207,7 @@ common.resume: ; preds = %.body, %173, %44, % ret void 103: ; preds = %1 - %104 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %.sroa.3.0.i = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !19251 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h85643c094abb9b36E.llvm.4057250340930679409"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %104) %105 = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -75893,7 +75893,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17hdf706e9e790400 84: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h7690407c410853caE.exit._crit_edge.i.i.i.i" %85 = icmp slt <16 x i8> %.0.copyload.i46.i.i.i.i.i, zeroinitializer - %86 = bitcast <16 x i1> %85 to i16 + %86 = bitcast <16 x i1> %.sroa.01.1.i to i16 %.not.i15.i.i.i.i.i = icmp ne i16 %86, 0 %87 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %86, i1 true) %88 = zext nneg i16 %87 to i64 @@ -111878,11 +111878,11 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_inse %.not.i.i.us17 = icmp eq i16 %32, 0 br i1 %.not.i.i.us17, label %._crit_edge.split.us18, label %.lr.ph.us -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit", %88 - %.sroa.8.0.i = phi i64 [ %89, %88 ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] - %.pn.i = phi i64 [ %90, %88 ], [ %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] - %.sroa.6.0.i = phi i64 [ %.sroa.6.1.i, %88 ], [ undef, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] - %.sroa.01.0.i = phi i64 [ %.sroa.01.1.i, %88 ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit", %87 + %.sroa.8.0.i = phi i64 [ %88, %87 ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] + %.pn.i = phi i64 [ %89, %87 ], [ %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] + %.sroa.6.0.i = phi i64 [ %.sroa.6.1.i, %87 ], [ undef, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] + %.sroa.01.0.i = phi i64 [ %.sroa.01.1.i, %87 ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] %.sroa.0.038.i = and i64 %.pn.i, %16 %64 = getelementptr inbounds i8, ptr %17, i64 %.sroa.0.038.i %.0.copyload.i46.i = load <16 x i8>, ptr %64, align 1, !noalias !31099 @@ -111892,7 +111892,7 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_inse br i1 %.not.i.i11, label %._crit_edge.split.us, label %.lr.ph .lr.ph: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split", %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" - %.039.i12.us = phi i16 [ %77, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" ], [ %66, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split" ] + %.039.i12.us = phi i16 [ %76, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" ], [ %66, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split" ] %67 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.039.i12.us, i1 true) %68 = zext nneg i16 %67 to i64 %69 = add i64 %.sroa.0.038.i, %68 @@ -111903,82 +111903,81 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_inse tail call void @llvm.experimental.noalias.scope.decl(metadata !31106), !noalias !31105 tail call void @llvm.experimental.noalias.scope.decl(metadata !31109), !noalias !31105 %72 = load i64, ptr %gep, align 8, !range !1128, !alias.scope !31112, !noalias !31113, !noundef !4 - %73 = xor i64 %72, -9223372036854775808 - %74 = tail call i64 @llvm.umin.i64(i64 %73, i64 4) - %75 = icmp eq i64 %20, %74 - br i1 %75, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" + %73 = xor i64 %72, %20 + %74 = icmp eq i64 %73, -9223372036854775808 + br i1 %74, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us": ; preds = %.lr.ph - %76 = add i16 %.039.i12.us, -1 - %77 = and i16 %76, %.039.i12.us - %.not.i.i.us = icmp eq i16 %77, 0 + %75 = add i16 %.039.i12.us, -1 + %76 = and i16 %75, %.039.i12.us + %77 = icmp eq i16 %76, 0 br i1 %.not.i.i.us, label %._crit_edge.split.us, label %.lr.ph ._crit_edge.split.us: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us", %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split" %.not.i = icmp eq i64 %.sroa.01.0.i, 1 - br i1 %.not.i, label %85, label %78 + br i1 %.not.i, label %84, label %77 -78: ; preds = %._crit_edge.split.us - %79 = icmp slt <16 x i8> %.0.copyload.i46.i, zeroinitializer - %80 = bitcast <16 x i1> %79 to i16 - %.not.i15.i = icmp ne i16 %80, 0 - %81 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %80, i1 true) - %82 = zext nneg i16 %81 to i64 - %.sroa.3.0.i.i.i = select i1 %.not.i15.i, i64 %82, i64 undef - %83 = add i64 %.sroa.3.0.i.i.i, %.sroa.0.038.i - %84 = and i64 %83, %16 - %.sroa.3.0.i16.i = select i1 %.not.i15.i, i64 %84, i64 undef +77: ; preds = %._crit_edge.split.us + %78 = icmp slt <16 x i8> %.0.copyload.i46.i, zeroinitializer + %79 = bitcast <16 x i1> %78 to i16 + %80 = icmp ne i16 %79, 0 + %.not.i15.i = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %79, i1 true) + %81 = zext nneg i16 %.not.i15.i to i64 + %82 = select i1 %80, i64 %81, i64 undef + %.sroa.3.0.i.i.i = add i64 %.sroa.3.0.i.i.i, %.sroa.0.038.i + %83 = and i64 %.sroa.3.0.i.i.i, %16 + %84 = select i1 %80, i64 %83, i64 undef %.sroa.0.0.i17.i = zext i1 %.not.i15.i to i64 - br label %85 - -85: ; preds = %78, %._crit_edge.split.us - %.sroa.6.1.i = phi i64 [ %.sroa.3.0.i16.i, %78 ], [ %.sroa.6.0.i, %._crit_edge.split.us ] - %.sroa.01.1.i = phi i64 [ %.sroa.0.0.i17.i, %78 ], [ 1, %._crit_edge.split.us ] - %86 = icmp eq <16 x i8> %.0.copyload.i46.i, splat (i8 -1) - %87 = bitcast <16 x i1> %86 to i16 - %.not11.i = icmp eq i16 %87, 0 - br i1 %.not11.i, label %88, label %.split.us + br label %84 -88: ; preds = %85 - %89 = add i64 %.sroa.8.0.i, 16 - %90 = add i64 %.sroa.0.038.i, %89 +84: ; preds = %77, %._crit_edge.split.us + %.sroa.6.1.i = phi i64 [ %84, %77 ], [ %.sroa.6.0.i, %._crit_edge.split.us ] + %.sroa.6.1.i = phi i64 [ %.sroa.0.0.i17.i, %77 ], [ 1, %._crit_edge.split.us ] + %.sroa.01.1.i = icmp eq <16 x i8> %.0.copyload.i46.i, splat (i8 -1) + %86 = bitcast <16 x i1> %.sroa.01.1.i to i16 + %87 = icmp eq i16 %86, 0 + br i1 %.not11.i, label %87, label %.split.us + +87: ; preds = %84 + %88 = add i64 %.sroa.8.0.i, 16 + %89 = add i64 %.sroa.0.038.i, %88 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split" -.split.us: ; preds = %85, %58 - %.us-phi22 = phi i64 [ %.sroa.6.1.i.us, %58 ], [ %.sroa.6.1.i, %85 ] - %.us-phi23 = phi i64 [ %.sroa.01.1.i.us, %58 ], [ %.sroa.01.1.i, %85 ] - %91 = icmp ne i64 %.us-phi23, 0 - tail call void @llvm.assume(i1 %91) - %92 = getelementptr inbounds i8, ptr %17, i64 %.us-phi22 - %93 = load i8, ptr %92, align 1, !noalias !31105, !noundef !4 - %94 = icmp sgt i8 %93, -1 - br i1 %94, label %95, label %104 - -95: ; preds = %.split.us - %96 = load <16 x i8>, ptr %17, align 16, !noalias !31129 - %97 = icmp slt <16 x i8> %96, zeroinitializer - %98 = bitcast <16 x i1> %97 to i16 - %99 = icmp ne i16 %98, 0 - %100 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %98, i1 true) - %101 = zext nneg i16 %100 to i64 - tail call void @llvm.assume(i1 %99) - br label %104 +.split.us: ; preds = %84, %58 + %.us-phi22 = phi i64 [ %.sroa.6.1.i.us, %58 ], [ %.sroa.6.1.i, %84 ] + %.us-phi22 = phi i64 [ %.sroa.01.1.i.us, %58 ], [ %.sroa.6.1.i, %84 ] + %.us-phi23 = icmp ne i64 %.us-phi23, 0 + tail call void @llvm.assume(i1 %90) + %91 = getelementptr inbounds i8, ptr %17, i64 %.us-phi22 + %92 = load i8, ptr %91, align 1, !noalias !31105, !noundef !4 + %93 = icmp sgt i8 %92, -1 + br i1 %93, label %94, label %103 + +94: ; preds = %.split.us + %95 = load <16 x i8>, ptr %17, align 16, !noalias !31129 + %96 = icmp slt <16 x i8> %95, zeroinitializer + %97 = bitcast <16 x i1> %96 to i16 + %98 = icmp ne i16 %97, 0 + %99 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %97, i1 true) + %100 = zext nneg i16 %99 to i64 + tail call void @llvm.assume(i1 %98) + br label %103 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread": ; preds = %.lr.ph, %47, %42 %.pre-phi = phi i64 [ %35, %42 ], [ %35, %47 ], [ %71, %.lr.ph ] - %102 = getelementptr inbounds { { i64, [2 x i64] }, {} }, ptr %17, i64 %.pre-phi - %103 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %102, ptr %103, align 8 - br label %106 + %101 = getelementptr inbounds { { i64, [2 x i64] }, {} }, ptr %17, i64 %.pre-phi + %102 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %101, ptr %102, align 8 + br label %105 -104: ; preds = %95, %.split.us - %.sroa.3.0.i = phi i64 [ %101, %95 ], [ %.us-phi22, %.split.us ] - %105 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.3.0.i, ptr %105, align 8 - br label %106 +103: ; preds = %94, %.split.us + %.sroa.3.0.i = phi i64 [ %100, %94 ], [ %.us-phi22, %.split.us ] + %.sroa.3.0.i = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.sroa.3.0.i, ptr %104, align 8 + br label %105 -106: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread", %104 - %.sroa.0.0.i9 = phi i64 [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread" ], [ 1, %104 ] +105: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread", %103 + %.sroa.0.0.i9 = phi i64 [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread" ], [ 1, %103 ] store i64 %.sroa.0.0.i9, ptr %0, align 8 ret void } @@ -114060,9 +114059,9 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hb160 %.not.i4.us48 = icmp eq i16 %23, 0 br i1 %.not.i4.us48, label %._crit_edge.split.us49, label %.lr.ph.us -.split: ; preds = %3, %63 - %.sroa.9.0.i = phi i64 [ %64, %63 ], [ 0, %3 ] - %.pn.i = phi i64 [ %65, %63 ], [ %1, %3 ] +.split: ; preds = %3, %62 + %.sroa.9.0.i = phi i64 [ %63, %62 ], [ 0, %3 ] + %.pn.i = phi i64 [ %64, %62 ], [ %1, %3 ] %.sroa.01.0.i = and i64 %.pn.i, %7 %47 = getelementptr inbounds i8, ptr %8, i64 %.sroa.01.0.i %.0.copyload.i35 = load <16 x i8>, ptr %47, align 1, !noalias !31935 @@ -114072,7 +114071,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hb160 br i1 %.not.i438, label %._crit_edge.split.us, label %.lr.ph .lr.ph: ; preds = %.split, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" - %.02339.us = phi i16 [ %60, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" ], [ %49, %.split ] + %.02339.us = phi i16 [ %59, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" ], [ %49, %.split ] %50 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02339.us, i1 true) %51 = zext nneg i16 %50 to i64 %52 = add i64 %.sroa.01.0.i, %51 @@ -114083,35 +114082,34 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hb160 tail call void @llvm.experimental.noalias.scope.decl(metadata !31942), !noalias !31941 tail call void @llvm.experimental.noalias.scope.decl(metadata !31945), !noalias !31941 %55 = load i64, ptr %gep, align 8, !range !1128, !alias.scope !31948, !noalias !31949, !noundef !4 - %56 = xor i64 %55, -9223372036854775808 - %57 = tail call i64 @llvm.umin.i64(i64 %56, i64 4) - %58 = icmp eq i64 %11, %57 - br i1 %58, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" + %56 = xor i64 %55, %11 + %57 = icmp eq i64 %56, -9223372036854775808 + br i1 %57, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us": ; preds = %.lr.ph - %59 = add i16 %.02339.us, -1 - %60 = and i16 %59, %.02339.us - %.not.i4.us = icmp eq i16 %60, 0 + %58 = add i16 %.02339.us, -1 + %59 = and i16 %58, %.02339.us + %60 = icmp eq i16 %59, 0 br i1 %.not.i4.us, label %._crit_edge.split.us, label %.lr.ph ._crit_edge.split.us: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us", %.split - %61 = icmp eq <16 x i8> %.0.copyload.i35, splat (i8 -1) - %62 = bitcast <16 x i1> %61 to i16 - %.not.i = icmp eq i16 %62, 0 - br i1 %.not.i, label %63, label %_ZN9hashbrown3raw13RawTableInner10find_inner17heaf636810d0ea7b2E.llvm.18123795597341512700.exit + %60 = icmp eq <16 x i8> %.0.copyload.i35, splat (i8 -1) + %61 = bitcast <16 x i1> %60 to i16 + %62 = icmp eq i16 %61, 0 + br i1 %.not.i, label %62, label %_ZN9hashbrown3raw13RawTableInner10find_inner17heaf636810d0ea7b2E.llvm.18123795597341512700.exit -63: ; preds = %._crit_edge.split.us - %64 = add i64 %.sroa.9.0.i, 16 - %65 = add i64 %.sroa.01.0.i, %64 +62: ; preds = %._crit_edge.split.us + %63 = add i64 %.sroa.9.0.i, 16 + %64 = add i64 %.sroa.01.0.i, %63 br label %.split "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread": ; preds = %.lr.ph, %38, %33 %.pre-phi = phi i64 [ %26, %33 ], [ %26, %38 ], [ %54, %.lr.ph ] - %66 = getelementptr inbounds { { i64, [2 x i64] }, {} }, ptr %8, i64 %.pre-phi + %65 = getelementptr inbounds { { i64, [2 x i64] }, {} }, ptr %8, i64 %.pre-phi br label %_ZN9hashbrown3raw13RawTableInner10find_inner17heaf636810d0ea7b2E.llvm.18123795597341512700.exit _ZN9hashbrown3raw13RawTableInner10find_inner17heaf636810d0ea7b2E.llvm.18123795597341512700.exit: ; preds = %._crit_edge.split.us, %._crit_edge.split.us49, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread" - %.0 = phi ptr [ %66, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread" ], [ null, %._crit_edge.split.us49 ], [ null, %._crit_edge.split.us ] + %.0 = phi ptr [ %65, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread" ], [ null, %._crit_edge.split.us49 ], [ null, %._crit_edge.split.us ] ret ptr %.0 } diff --git a/bench/duckdb/optimized/ub_duckdb_storage_compression_chimp.cpp.ll b/bench/duckdb/optimized/ub_duckdb_storage_compression_chimp.cpp.ll index 34b41f46a94..88c4a084e29 100644 --- a/bench/duckdb/optimized/ub_duckdb_storage_compression_chimp.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_storage_compression_chimp.cpp.ll @@ -2722,10 +2722,21 @@ if.then.i3: ; preds = %_ZN6duckdb10FlagBuf %sub.i.i.i = add i8 %11, -7 store i8 %sub.i.i.i, ptr %free_bits.i.i, align 1, !tbaa !137 %cmp.i.i.i = icmp eq i8 %11, 7 - br i1 %cmp.i.i.i, label %return.sink.split.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit + br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit + +if.then.i.i.i: ; preds = %if.then.i3 + %14 = load ptr, ptr %state, align 8, !tbaa !185 + %stream_index.i.i.i.i = getelementptr inbounds nuw i8, ptr %state, i64 16 + %15 = load i64, ptr %stream_index.i.i.i.i, align 8, !tbaa !195 + %inc.i.i.i.i = add i64 %15, 1 + store i64 %inc.i.i.i.i, ptr %stream_index.i.i.i.i, align 8, !tbaa !195 + %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %14, i64 %15 + store i8 %conv5.i.i, ptr %arrayidx.i.i.i.i, align 1, !tbaa !63 + store i8 0, ptr %current.i.i, align 8, !tbaa !186 + br label %return.sink.split.i if.end.i: ; preds = %_ZN6duckdb10FlagBufferILb0EE6InsertENS_14ChimpConstants5FlagsE.exit - %14 = xor i8 %11, 7 + %16 = xor i8 %11, 7 %cmp.not.i = icmp eq i8 %11, 0 br i1 %cmp.not.i, label %if.end.if.then12_crit_edge.i, label %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i @@ -2770,25 +2781,14 @@ if.then12.i: ; preds = %_ZN6duckdb15OutputB %conv7.i54.i = or i8 %18, %20 store i8 %conv7.i54.i, ptr %current.i53.i, align 8, !tbaa !186 %sub.i11.i55.i = sub nsw i8 %19, %14 - store i8 %sub.i11.i55.i, ptr %free_bits.i.i, align 1, !tbaa !137 - %cmp.i12.i56.i = icmp eq i8 %19, %14 - br i1 %cmp.i12.i56.i, label %return.sink.split.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit - -return.sink.split.i: ; preds = %if.then12.i, %if.then.i3 - %conv7.i54.sink.i = phi i8 [ %conv5.i.i, %if.then.i3 ], [ %conv7.i54.i, %if.then12.i ] - %current.i53.sink.i = phi ptr [ %current.i.i, %if.then.i3 ], [ %current.i53.i, %if.then12.i ] - %21 = load ptr, ptr %state, align 8, !tbaa !185 - %stream_index.i.i.i58.i = getelementptr inbounds nuw i8, ptr %state, i64 16 - %22 = load i64, ptr %stream_index.i.i.i58.i, align 8, !tbaa !195 - %inc.i.i.i59.i = add i64 %22, 1 - store i64 %inc.i.i.i59.i, ptr %stream_index.i.i.i58.i, align 8, !tbaa !195 - %arrayidx.i.i.i60.i = getelementptr inbounds i8, ptr %21, i64 %22 - store i8 %conv7.i54.sink.i, ptr %arrayidx.i.i.i60.i, align 1, !tbaa !63 - store i8 0, ptr %current.i53.sink.i, align 8, !tbaa !186 - store i8 8, ptr %free_bits.i.i, align 1, !tbaa !137 + br label %return.sink.split.i + +return.sink.split.i: ; preds = %if.then12.i, %if.then.i.i.i + %sub.i11.i55.sink.i = phi i8 [ %sub.i11.i55.i, %if.then12.i ], [ 8, %if.then.i.i.i ] + store i8 %sub.i11.i55.sink.i, ptr %free_bits.i.i, align 1, !tbaa !137 br label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit -_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit: ; preds = %if.then.i3, %if.then12.i, %return.sink.split.i +_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit: ; preds = %if.then.i3, %return.sink.split.i %previous_leading_zeros.i = getelementptr inbounds nuw i8, ptr %state, i64 66648 store i8 -1, ptr %previous_leading_zeros.i, align 8, !tbaa !138 br label %if.end94 @@ -6848,10 +6848,21 @@ if.then.i3: ; preds = %_ZN6duckdb10FlagBuf %sub.i.i.i = add i8 %10, -7 store i8 %sub.i.i.i, ptr %free_bits.i.i, align 1, !tbaa !137 %cmp.i.i.i = icmp eq i8 %10, 7 - br i1 %cmp.i.i.i, label %return.sink.split.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit + br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit + +if.then.i.i.i: ; preds = %if.then.i3 + %13 = load ptr, ptr %state, align 8, !tbaa !185 + %stream_index.i.i.i.i = getelementptr inbounds nuw i8, ptr %state, i64 16 + %14 = load i64, ptr %stream_index.i.i.i.i, align 8, !tbaa !195 + %inc.i.i.i.i = add i64 %14, 1 + store i64 %inc.i.i.i.i, ptr %stream_index.i.i.i.i, align 8, !tbaa !195 + %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %13, i64 %14 + store i8 %conv5.i.i, ptr %arrayidx.i.i.i.i, align 1, !tbaa !63 + store i8 0, ptr %current.i.i, align 8, !tbaa !186 + br label %return.sink.split.i if.end.i: ; preds = %_ZN6duckdb10FlagBufferILb0EE6InsertENS_14ChimpConstants5FlagsE.exit - %13 = xor i8 %10, 7 + %15 = xor i8 %10, 7 %cmp.not.i = icmp eq i8 %10, 0 br i1 %cmp.not.i, label %if.end.if.then12_crit_edge.i, label %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i @@ -6861,7 +6872,7 @@ if.end.if.then12_crit_edge.i: ; preds = %if.end.i br label %if.then12.i _ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i: ; preds = %if.end.i - %sub.i = zext nneg i8 %13 to i32 + %sub.i = zext nneg i8 %15 to i32 %conv6.i = zext nneg i8 %previous_index.0234 to i32 %shr.i2 = lshr i32 %conv6.i, %sub.i %conv7.i = trunc nuw nsw i32 %shr.i2 to i8 @@ -6886,7 +6897,7 @@ if.then12.i: ; preds = %_ZN6duckdb15OutputB %18 = phi i8 [ 0, %if.end.if.then12_crit_edge.i ], [ 8, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] %conv.i45.i = zext nneg i8 %18 to i32 %sub.i47.i = sub nsw i32 %conv.i45.i, %conv2.i46.pre-phi.i - %notmask72.i = shl nsw i8 -1, %13 + %notmask72.i = shl nsw i8 -1, %15 %sub.i.i49.i = xor i8 %notmask72.i, -1 %and10.i50.i = and i8 %previous_index.0234, %sub.i.i49.i %and.i51.i = zext nneg i8 %and10.i50.i to i32 @@ -6895,26 +6906,15 @@ if.then12.i: ; preds = %_ZN6duckdb15OutputB %19 = trunc i32 %shl.i52.i to i8 %conv7.i54.i = or i8 %17, %19 store i8 %conv7.i54.i, ptr %current.i53.i, align 8, !tbaa !186 - %sub.i11.i55.i = sub nsw i8 %18, %13 - store i8 %sub.i11.i55.i, ptr %free_bits.i.i, align 1, !tbaa !137 - %cmp.i12.i56.i = icmp eq i8 %18, %13 - br i1 %cmp.i12.i56.i, label %return.sink.split.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit - -return.sink.split.i: ; preds = %if.then12.i, %if.then.i3 - %conv7.i54.sink.i = phi i8 [ %conv5.i.i, %if.then.i3 ], [ %conv7.i54.i, %if.then12.i ] - %current.i53.sink.i = phi ptr [ %current.i.i, %if.then.i3 ], [ %current.i53.i, %if.then12.i ] - %20 = load ptr, ptr %state, align 8, !tbaa !185 - %stream_index.i.i.i58.i = getelementptr inbounds nuw i8, ptr %state, i64 16 - %21 = load i64, ptr %stream_index.i.i.i58.i, align 8, !tbaa !195 - %inc.i.i.i59.i = add i64 %21, 1 - store i64 %inc.i.i.i59.i, ptr %stream_index.i.i.i58.i, align 8, !tbaa !195 - %arrayidx.i.i.i60.i = getelementptr inbounds i8, ptr %20, i64 %21 - store i8 %conv7.i54.sink.i, ptr %arrayidx.i.i.i60.i, align 1, !tbaa !63 - store i8 0, ptr %current.i53.sink.i, align 8, !tbaa !186 - store i8 8, ptr %free_bits.i.i, align 1, !tbaa !137 + %sub.i11.i55.i = sub nsw i8 %18, %15 + br label %return.sink.split.i + +return.sink.split.i: ; preds = %if.then12.i, %if.then.i.i.i + %sub.i11.i55.sink.i = phi i8 [ %sub.i11.i55.i, %if.then12.i ], [ 8, %if.then.i.i.i ] + store i8 %sub.i11.i55.sink.i, ptr %free_bits.i.i, align 1, !tbaa !137 br label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit -_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit: ; preds = %if.then.i3, %if.then12.i, %return.sink.split.i +_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit: ; preds = %if.then.i3, %return.sink.split.i %previous_leading_zeros.i = getelementptr inbounds nuw i8, ptr %state, i64 132184 store i8 -1, ptr %previous_leading_zeros.i, align 8, !tbaa !286 br label %if.end84 diff --git a/bench/folly/optimized/AsyncSocket.cpp.ll b/bench/folly/optimized/AsyncSocket.cpp.ll index f7744ebbd33..33f4804a6ce 100644 --- a/bench/folly/optimized/AsyncSocket.cpp.ll +++ b/bench/folly/optimized/AsyncSocket.cpp.ll @@ -10183,17 +10183,13 @@ if.then65: ; preds = %if.then59 if.then67: ; preds = %if.then65 %and.i = and i16 %33, -5 store i16 %and.i, ptr %eventFlags_132, align 2, !tbaa !135 - %cmp.i207 = icmp eq i16 %and.i, %33 - br i1 %cmp.i207, label %if.end71, label %if.else.i - -if.else.i: ; preds = %if.then67 %call.i208 = invoke noundef zeroext i1 @_ZN5folly11AsyncSocket23updateEventRegistrationEv(ptr noundef nonnull align 8 dereferenceable(1113) %this) to label %invoke.cont68 unwind label %terminate.lpad.loopexit -invoke.cont68: ; preds = %if.else.i +invoke.cont68: ; preds = %if.then67 br i1 %call.i208, label %if.end71, label %cleanup164 -if.end71: ; preds = %invoke.cont68, %if.then67 +if.end71: ; preds = %invoke.cont68 invoke void @_ZN5folly12AsyncTimeout13cancelTimeoutEv(ptr noundef nonnull align 8 dereferenceable(192) %writeTimeout_144) to label %if.end73 unwind label %terminate.lpad.loopexit @@ -10526,7 +10522,7 @@ terminate.lpad.i: ; preds = %if.then6.i _ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit: ; preds = %if.then6.i, %if.then.i257 ret void -terminate.lpad.loopexit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit253, %invoke.cont155, %if.then150, %invoke.cont147, %if.then143, %if.then136, %if.then126, %if.else120, %if.end109, %invoke.cont98, %cond.false.i.i, %invoke.cont94, %if.then91, %if.end71, %if.else.i, %if.else, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %invoke.cont51, %if.end47, %if.then43, %_ZN5folly11AsyncSocket22WriteCallbackWithState13notifyOnWriteEv.exit +terminate.lpad.loopexit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit253, %invoke.cont155, %if.then150, %invoke.cont147, %if.then143, %if.then136, %if.then126, %if.else120, %if.end109, %invoke.cont98, %cond.false.i.i, %invoke.cont94, %if.then91, %if.end71, %if.then67, %if.else, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %invoke.cont51, %if.end47, %if.then43, %_ZN5folly11AsyncSocket22WriteCallbackWithState13notifyOnWriteEv.exit %lpad.loopexit = landingpad { ptr, i32 } catch ptr null br label %terminate.lpad.body diff --git a/bench/folly/optimized/DistributedMutex.cpp.ll b/bench/folly/optimized/DistributedMutex.cpp.ll index 5d320ffaef2..4e5249b4c9a 100644 --- a/bench/folly/optimized/DistributedMutex.cpp.ll +++ b/bench/folly/optimized/DistributedMutex.cpp.ll @@ -839,7 +839,7 @@ land.lhs.true.i45: ; preds = %_ZN5folly6detail17d %cmp.i55 = icmp samesign ugt i64 %shl.i.i, %add.i br i1 %cmp.i55, label %if.then.i, label %land.lhs.true.i.thread.thread55 -land.lhs.true.i.thread.thread55: ; preds = %land.lhs.true.i45 +land.lhs.true.i.thread.thread54: ; preds = %land.lhs.true.i45 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %agg.tmp.i43) br label %if.then5.i diff --git a/bench/gromacs/optimized/md5.c.ll b/bench/gromacs/optimized/md5.c.ll index 775b393cb69..7259e4ec1c4 100644 --- a/bench/gromacs/optimized/md5.c.ll +++ b/bench/gromacs/optimized/md5.c.ll @@ -3,7 +3,7 @@ source_filename = "bench/gromacs/original/md5.c.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" -@md5_finish.pad = internal constant <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 +@md5_finish.pad = internal unnamed_addr constant <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable define void @md5_init(ptr noundef writeonly captures(none) initializes((0, 24)) %0) local_unnamed_addr #0 { @@ -725,7 +725,7 @@ define void @md5_finish(ptr noundef %0, ptr noundef writeonly captures(none) %1) 28: ; preds = %26, %14 %.not.i = icmp eq i32 %20, 0 - br i1 %.not.i, label %40, label %29 + br i1 %.not.i, label %._crit_edge.i40, label %29 29: ; preds = %28 %30 = add nuw nsw i32 %19, %20 @@ -739,100 +739,92 @@ define void @md5_finish(ptr noundef %0, ptr noundef writeonly captures(none) %1) tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %36, ptr noundef nonnull align 16 dereferenceable(1) @md5_finish.pad, i64 %37, i1 false) %38 = add nuw nsw i32 %33, %20 %39 = icmp samesign ult i32 %38, 64 - br i1 %39, label %md5_append.exit, label %._crit_edge.i + br i1 %39, label %md5_append.exit, label %.thread -40: ; preds = %28 - %41 = icmp eq i32 %18, 63 - br i1 %41, label %._crit_edge.i.thread47, label %._crit_edge.i.thread - -._crit_edge.i.thread47: ; preds = %40 - tail call fastcc void @md5_process(ptr noundef nonnull %0, ptr noundef nonnull @md5_finish.pad) - br label %md5_append.exit - -._crit_edge.i: ; preds = %29 - %42 = getelementptr inbounds nuw i8, ptr @md5_finish.pad, i64 %37 - %43 = sub nsw i32 %19, %33 +.thread: ; preds = %29 + %41 = getelementptr inbounds nuw i8, ptr @md5_finish.pad, i64 %37 + %41 = sub nsw i32 %19, %33 tail call fastcc void @md5_process(ptr noundef nonnull %0, ptr noundef nonnull %34) - %.not41.i = icmp eq i32 %43, 0 + %.not41.i = icmp eq i32 %41, 0 br i1 %.not41.i, label %md5_append.exit, label %._crit_edge.i.thread -._crit_edge.i.thread: ; preds = %40, %._crit_edge.i - %.1.lcssa.i32 = phi ptr [ %42, %._crit_edge.i ], [ @md5_finish.pad, %40 ] - %.138.lcssa.i31 = phi i32 [ %43, %._crit_edge.i ], [ %19, %40 ] - %44 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %45 = sext i32 %.138.lcssa.i31 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %44, ptr noundef nonnull align 1 dereferenceable(1) %.1.lcssa.i32, i64 %45, i1 false) +._crit_edge.i.thread: ; preds = %28, %.thread + %.1.lcssa.i32 = phi ptr [ %40, %.thread ], [ @md5_finish.pad, %28 ] + %42 = phi i32 [ %41, %.thread ], [ %19, %28 ] + %43 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %43 = sext i32 %.138.lcssa.i31 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %42, ptr noundef nonnull align 1 dereferenceable(1) %.1.lcssa.i32, i64 %43, i1 false) br label %md5_append.exit -md5_append.exit: ; preds = %._crit_edge.i.thread47, %29, %._crit_edge.i, %._crit_edge.i.thread - %46 = load i32, ptr %0, align 4 - %47 = lshr i32 %46, 3 - %48 = and i32 %47, 63 - %49 = load i32, ptr %22, align 4 - %50 = add i32 %46, 64 - store i32 %50, ptr %0, align 4 - %51 = icmp ugt i32 %46, -65 - br i1 %51, label %52, label %54 - -52: ; preds = %md5_append.exit - %53 = add i32 %49, 1 - store i32 %53, ptr %22, align 4 - br label %54 - -54: ; preds = %52, %md5_append.exit - %.not.i15 = icmp eq i32 %48, 0 - br i1 %.not.i15, label %._crit_edge.i18.thread, label %55 - -55: ; preds = %54 - %56 = icmp samesign ugt i32 %48, 56 - %57 = sub nuw nsw i32 64, %48 - %58 = select i1 %56, i32 %57, i32 8 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = zext nneg i32 %48 to i64 - %61 = getelementptr inbounds nuw i8, ptr %59, i64 %60 - %62 = zext nneg i32 %58 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %61, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %62, i1 false) - %63 = add nuw nsw i32 %58, %48 - %64 = icmp samesign ult i32 %63, 64 - br i1 %64, label %md5_append.exit25, label %._crit_edge.i18 - -._crit_edge.i18: ; preds = %55 - %65 = getelementptr inbounds nuw i8, ptr %3, i64 %62 - %66 = sub nsw i32 8, %58 - tail call fastcc void @md5_process(ptr noundef nonnull %0, ptr noundef nonnull %59) - %.not41.i21 = icmp eq i32 %58, 8 +md5_append.exit: ; preds = %29, %40, %._crit_edge.i40 + %.1.lcssa.i32 = load i32, ptr %0, align 4 + %.138.lcssa.i31 = lshr i32 %.1.lcssa.i32, 3 + %44 = and i32 %45, 63 + %45 = load i32, ptr %22, align 4 + %48 = add i32 %.1.lcssa.i32, 64 + store i32 %48, ptr %0, align 4 + %49 = icmp ugt i32 %44, -65 + br i1 %49, label %50, label %52 + +50: ; preds = %md5_append.exit + %48 = add i32 %47, 1 + store i32 %51, ptr %22, align 4 + br label %52 + +52: ; preds = %50, %md5_append.exit + %.not.i15 = icmp eq i32 %46, 0 + br i1 %.not.i15, label %._crit_edge.i18.thread, label %53 + +53: ; preds = %52 + %54 = icmp samesign ugt i32 %46, 56 + %55 = sub nuw nsw i32 64, %46 + %56 = select i1 %54, i32 %55, i32 8 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %.not.i15 = zext nneg i32 %46 to i64 + %59 = getelementptr inbounds nuw i8, ptr %57, i64 %.not.i15 + %60 = zext nneg i32 %56 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %60, i1 false) + %56 = add nuw nsw i32 %56, %46 + %57 = icmp samesign ult i32 %61, 64 + br i1 %62, label %md5_append.exit25, label %._crit_edge.i18 + +._crit_edge.i18: ; preds = %53 + %61 = getelementptr inbounds nuw i8, ptr %3, i64 %60 + %62 = sub nsw i32 8, %56 + tail call fastcc void @md5_process(ptr noundef nonnull %0, ptr noundef nonnull %57) + %63 = icmp eq i32 %56, 8 br i1 %.not41.i21, label %md5_append.exit25, label %._crit_edge.i18.thread -._crit_edge.i18.thread: ; preds = %54, %._crit_edge.i18 - %.1.lcssa.i2037 = phi ptr [ %65, %._crit_edge.i18 ], [ %3, %54 ] - %.138.lcssa.i1936 = phi i32 [ %66, %._crit_edge.i18 ], [ 8, %54 ] - %67 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %68 = sext i32 %.138.lcssa.i1936 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %67, ptr nonnull align 1 %.1.lcssa.i2037, i64 %68, i1 false) +._crit_edge.i18.thread: ; preds = %52, %._crit_edge.i18 + %.1.lcssa.i2037 = phi ptr [ %63, %._crit_edge.i18 ], [ %3, %52 ] + %65 = phi i32 [ %64, %._crit_edge.i18 ], [ 8, %52 ] + %66 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %66 = sext i32 %65 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %65, ptr nonnull align 1 %.1.lcssa.i2037, i64 %66, i1 false) br label %md5_append.exit25 -md5_append.exit25: ; preds = %55, %._crit_edge.i18, %._crit_edge.i18.thread - %69 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br label %70 - -70: ; preds = %md5_append.exit25, %70 - %indvars.iv43 = phi i64 [ 0, %md5_append.exit25 ], [ %indvars.iv.next44, %70 ] - %71 = lshr i64 %indvars.iv43, 2 - %72 = and i64 %71, 1073741823 - %73 = getelementptr inbounds nuw [4 x i32], ptr %69, i64 0, i64 %72 - %74 = load i32, ptr %73, align 4 - %indvars.iv43.tr = trunc i64 %indvars.iv43 to i32 - %75 = shl i32 %indvars.iv43.tr, 3 - %76 = and i32 %75, 24 - %77 = lshr i32 %74, %76 - %78 = trunc i32 %77 to i8 - %79 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv43 - store i8 %78, ptr %79, align 1 - %indvars.iv.next44 = add nuw nsw i64 %indvars.iv43, 1 - %exitcond46.not = icmp eq i64 %indvars.iv.next44, 16 - br i1 %exitcond46.not, label %80, label %70, !llvm.loop !7 - -80: ; preds = %70 +md5_append.exit25: ; preds = %53, %._crit_edge.i18, %._crit_edge.i1840 + %.1.lcssa.i2037 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br label %68 + +68: ; preds = %._crit_edge.i18.thread, %68 + %indvars.iv41 = phi i64 [ 0, %._crit_edge.i18.thread ], [ %74, %68 ] + %69 = lshr i64 %indvars.iv41, 2 + %70 = and i64 %69, 1073741823 + %71 = getelementptr inbounds nuw [4 x i32], ptr %.1.lcssa.i2037, i64 0, i64 %70 + %69 = load i32, ptr %71, align 4 + %indvars.iv41.tr = trunc i64 %indvars.iv41 to i32 + %73 = shl i32 %indvars.iv41.tr, 3 + %74 = and i32 %73, 24 + %indvars.iv43 = lshr i32 %72, %74 + %71 = trunc i32 %indvars.iv43 to i8 + %72 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv41 + store i8 %76, ptr %72, align 1 + %74 = add nuw nsw i64 %indvars.iv41, 1 + %indvars.iv43.tr = icmp eq i64 %74, 16 + br i1 %indvars.iv43.tr, label %78, label %68, !llvm.loop !7 + +78: ; preds = %68 ret void } diff --git a/bench/gromacs/optimized/md5.cpp.ll b/bench/gromacs/optimized/md5.cpp.ll index 51776ee3e24..efbbc98ea43 100644 --- a/bench/gromacs/optimized/md5.cpp.ll +++ b/bench/gromacs/optimized/md5.cpp.ll @@ -5,7 +5,7 @@ target triple = "x86_64-pc-linux-gnu" %"struct.std::array" = type { [16 x i8] } -@_ZZ14gmx_md5_finishP11md5_state_sE3pad = internal constant <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 +@_ZZ14gmx_md5_finishP11md5_state_sE3pad = internal unnamed_addr constant <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable define void @_Z12gmx_md5_initP11md5_state_s(ptr noundef writeonly captures(none) initializes((0, 24)) %0) local_unnamed_addr #0 { @@ -728,7 +728,7 @@ define { i64, i64 } @_Z14gmx_md5_finishP11md5_state_s(ptr noundef %0) local_unna 28: ; preds = %26, %14 %.not.i = icmp eq i32 %20, 0 - br i1 %.not.i, label %40, label %29 + br i1 %.not.i, label %._crit_edge.i40, label %29 29: ; preds = %28 %30 = add nuw nsw i32 %19, %20 @@ -742,99 +742,91 @@ define { i64, i64 } @_Z14gmx_md5_finishP11md5_state_s(ptr noundef %0) local_unna tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %36, ptr noundef nonnull align 16 dereferenceable(1) @_ZZ14gmx_md5_finishP11md5_state_sE3pad, i64 %37, i1 false) %38 = add nuw nsw i32 %33, %20 %39 = icmp samesign ult i32 %38, 64 - br i1 %39, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit, label %._crit_edge.i + br i1 %39, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit, label %.thread -40: ; preds = %28 - %41 = icmp eq i32 %18, 63 - br i1 %41, label %._crit_edge.i.thread44, label %._crit_edge.i.thread - -._crit_edge.i.thread44: ; preds = %40 - tail call fastcc void @_ZL11md5_processP11md5_state_sPKh(ptr noundef nonnull %0, ptr noundef nonnull @_ZZ14gmx_md5_finishP11md5_state_sE3pad) - br label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit - -._crit_edge.i: ; preds = %29 - %42 = getelementptr inbounds nuw i8, ptr @_ZZ14gmx_md5_finishP11md5_state_sE3pad, i64 %37 - %43 = sub nsw i32 %19, %33 +.thread: ; preds = %29 + %41 = getelementptr inbounds nuw i8, ptr @_ZZ14gmx_md5_finishP11md5_state_sE3pad, i64 %37 + %41 = sub nsw i32 %19, %33 tail call fastcc void @_ZL11md5_processP11md5_state_sPKh(ptr noundef nonnull %0, ptr noundef nonnull %34) - %.not41.i = icmp eq i32 %43, 0 + %.not41.i = icmp eq i32 %41, 0 br i1 %.not41.i, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit, label %._crit_edge.i.thread -._crit_edge.i.thread: ; preds = %40, %._crit_edge.i - %.1.lcssa.i32 = phi ptr [ %42, %._crit_edge.i ], [ @_ZZ14gmx_md5_finishP11md5_state_sE3pad, %40 ] - %.138.lcssa.i31 = phi i32 [ %43, %._crit_edge.i ], [ %19, %40 ] - %44 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %45 = sext i32 %.138.lcssa.i31 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %44, ptr noundef nonnull align 1 dereferenceable(1) %.1.lcssa.i32, i64 %45, i1 false) +._crit_edge.i.thread: ; preds = %28, %.thread + %.1.lcssa.i32 = phi ptr [ %40, %.thread ], [ @_ZZ14gmx_md5_finishP11md5_state_sE3pad, %28 ] + %42 = phi i32 [ %41, %.thread ], [ %19, %28 ] + %43 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %43 = sext i32 %.138.lcssa.i31 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %42, ptr noundef nonnull align 1 dereferenceable(1) %.1.lcssa.i32, i64 %43, i1 false) br label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit -_Z14gmx_md5_appendP11md5_state_sPKhi.exit: ; preds = %._crit_edge.i.thread44, %29, %._crit_edge.i, %._crit_edge.i.thread - %46 = load i32, ptr %0, align 4 - %47 = lshr i32 %46, 3 - %48 = and i32 %47, 63 - %49 = load i32, ptr %22, align 4 - %50 = add i32 %46, 64 - store i32 %50, ptr %0, align 4 - %51 = icmp ugt i32 %46, -65 - br i1 %51, label %52, label %54 - -52: ; preds = %_Z14gmx_md5_appendP11md5_state_sPKhi.exit - %53 = add i32 %49, 1 - store i32 %53, ptr %22, align 4 - br label %54 - -54: ; preds = %52, %_Z14gmx_md5_appendP11md5_state_sPKhi.exit - %.not.i15 = icmp eq i32 %48, 0 - br i1 %.not.i15, label %._crit_edge.i18.thread, label %55 - -55: ; preds = %54 - %56 = icmp samesign ugt i32 %48, 56 - %57 = sub nuw nsw i32 64, %48 - %58 = select i1 %56, i32 %57, i32 8 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = zext nneg i32 %48 to i64 - %61 = getelementptr inbounds nuw i8, ptr %59, i64 %60 - %62 = zext nneg i32 %58 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %61, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %62, i1 false) - %63 = add nuw nsw i32 %58, %48 - %64 = icmp samesign ult i32 %63, 64 - br i1 %64, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25, label %._crit_edge.i18 - -._crit_edge.i18: ; preds = %55 - %65 = getelementptr inbounds nuw i8, ptr %3, i64 %62 - %66 = sub nsw i32 8, %58 - tail call fastcc void @_ZL11md5_processP11md5_state_sPKh(ptr noundef nonnull %0, ptr noundef nonnull %59) - %.not41.i21 = icmp eq i32 %58, 8 +_Z14gmx_md5_appendP11md5_state_sPKhi.exit: ; preds = %29, %40, %._crit_edge.i40 + %.1.lcssa.i32 = load i32, ptr %0, align 4 + %.138.lcssa.i31 = lshr i32 %.1.lcssa.i32, 3 + %44 = and i32 %45, 63 + %45 = load i32, ptr %22, align 4 + %48 = add i32 %.1.lcssa.i32, 64 + store i32 %48, ptr %0, align 4 + %49 = icmp ugt i32 %44, -65 + br i1 %49, label %50, label %52 + +50: ; preds = %_Z14gmx_md5_appendP11md5_state_sPKhi.exit + %48 = add i32 %47, 1 + store i32 %51, ptr %22, align 4 + br label %52 + +52: ; preds = %50, %_Z14gmx_md5_appendP11md5_state_sPKhi.exit + %.not.i15 = icmp eq i32 %46, 0 + br i1 %.not.i15, label %._crit_edge.i18.thread, label %53 + +53: ; preds = %52 + %54 = icmp samesign ugt i32 %46, 56 + %55 = sub nuw nsw i32 64, %46 + %56 = select i1 %54, i32 %55, i32 8 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %.not.i15 = zext nneg i32 %46 to i64 + %59 = getelementptr inbounds nuw i8, ptr %57, i64 %.not.i15 + %60 = zext nneg i32 %56 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %60, i1 false) + %56 = add nuw nsw i32 %56, %46 + %57 = icmp samesign ult i32 %61, 64 + br i1 %62, label %._crit_edge.i18.thread, label %._crit_edge.i18 + +._crit_edge.i18: ; preds = %53 + %61 = getelementptr inbounds nuw i8, ptr %3, i64 %60 + %62 = sub nsw i32 8, %56 + tail call fastcc void @_ZL11md5_processP11md5_state_sPKh(ptr noundef nonnull %0, ptr noundef nonnull %57) + %63 = icmp eq i32 %56, 8 br i1 %.not41.i21, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25, label %._crit_edge.i18.thread -._crit_edge.i18.thread: ; preds = %54, %._crit_edge.i18 - %.1.lcssa.i2037 = phi ptr [ %65, %._crit_edge.i18 ], [ %3, %54 ] - %.138.lcssa.i1936 = phi i32 [ %66, %._crit_edge.i18 ], [ 8, %54 ] - %67 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %68 = sext i32 %.138.lcssa.i1936 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %67, ptr nonnull align 1 %.1.lcssa.i2037, i64 %68, i1 false) +._crit_edge.i18.thread: ; preds = %52, %._crit_edge.i18 + %.1.lcssa.i2037 = phi ptr [ %63, %._crit_edge.i18 ], [ %3, %52 ] + %65 = phi i32 [ %64, %._crit_edge.i18 ], [ 8, %52 ] + %66 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %66 = sext i32 %65 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %65, ptr nonnull align 1 %.1.lcssa.i2037, i64 %66, i1 false) br label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25 -_Z14gmx_md5_appendP11md5_state_sPKhi.exit25: ; preds = %55, %._crit_edge.i18, %._crit_edge.i18.thread - %69 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br label %70 - -70: ; preds = %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25, %70 - %.040 = phi i64 [ 0, %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25 ], [ %79, %70 ] - %71 = lshr i64 %.040, 2 - %72 = getelementptr inbounds nuw [4 x i32], ptr %69, i64 0, i64 %71 - %73 = load i32, ptr %72, align 4 - %.0.tr = trunc nuw i64 %.040 to i32 - %74 = shl nuw nsw i32 %.0.tr, 3 - %75 = and i32 %74, 24 - %76 = lshr i32 %73, %75 - %77 = trunc i32 %76 to i8 - %78 = getelementptr inbounds nuw [16 x i8], ptr %2, i64 0, i64 %.040 - store i8 %77, ptr %78, align 1 - %79 = add nuw nsw i64 %.040, 1 - %exitcond43.not = icmp eq i64 %79, 16 - br i1 %exitcond43.not, label %80, label %70, !llvm.loop !8 - -80: ; preds = %70 +_Z14gmx_md5_appendP11md5_state_sPKhi.exit25: ; preds = %53, %._crit_edge.i18, %._crit_edge.i1840 + %.1.lcssa.i2037 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br label %68 + +68: ; preds = %._crit_edge.i18.thread, %68 + %.039 = phi i64 [ 0, %._crit_edge.i18.thread ], [ %77, %68 ] + %69 = lshr i64 %.039, 2 + %70 = getelementptr inbounds nuw [4 x i32], ptr %67, i64 0, i64 %69 + %71 = load i32, ptr %70, align 4 + %69 = trunc nuw i64 %.039 to i32 + %72 = shl nuw nsw i32 %.0.tr, 3 + %73 = and i32 %72, 24 + %74 = lshr i32 %71, %73 + %.040 = trunc i32 %74 to i8 + %71 = getelementptr inbounds nuw [16 x i8], ptr %2, i64 0, i64 %.039 + store i8 %75, ptr %76, align 1 + %73 = add nuw nsw i64 %.039, 1 + %.0.tr = icmp eq i64 %73, 16 + br i1 %.0.tr, label %78, label %68, !llvm.loop !8 + +78: ; preds = %68 %.fca.0.load = load i64, ptr %2, align 8 %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.fca.0.load, 0 %.fca.1.gep = getelementptr inbounds nuw i8, ptr %2, i64 8 diff --git a/bench/icu/optimized/reldtfmt.ll b/bench/icu/optimized/reldtfmt.ll index ffdd73af9b5..806aead342a 100644 --- a/bench/icu/optimized/reldtfmt.ll +++ b/bench/icu/optimized/reldtfmt.ll @@ -322,7 +322,7 @@ if.end: ; preds = %invoke.cont5 %or.cond = or i1 %or.cond2, %or.cond4 br i1 %or.cond, label %invoke.cont77.sink.split, label %if.end20 -if.end20: ; preds = %if.end +if.then23: ; preds = %if.end %and = and i32 %dateStyle, 3 %call25 = invoke noundef ptr @_ZN6icu_7510DateFormat18createDateInstanceENS0_6EStyleERKNS_6LocaleE(i32 noundef %and, ptr noundef nonnull align 8 dereferenceable(217) %locale) to label %invoke.cont24 unwind label %lpad6 diff --git a/bench/icu/optimized/timezone.ll b/bench/icu/optimized/timezone.ll index 9d61dd8a100..7493f2ce637 100644 --- a/bench/icu/optimized/timezone.ll +++ b/bench/icu/optimized/timezone.ll @@ -1870,7 +1870,7 @@ invoke.cont: ; preds = %entry %or.cond = select i1 %cmp.i, i1 true, i1 %cmp br i1 %or.cond, label %cleanup, label %for.cond.preheader -for.cond.preheader: ; preds = %invoke.cont +if.end4.lr.ph: ; preds = %invoke.cont %div1118 = lshr i32 %call, 1 %fUnion.i.i.i = getelementptr inbounds nuw i8, ptr %id, i64 8 %fLength.i5.i = getelementptr inbounds nuw i8, ptr %copy, i64 12 diff --git a/bench/icu/optimized/ucase.ll b/bench/icu/optimized/ucase.ll index 3afa9b69792..d036c706118 100644 --- a/bench/icu/optimized/ucase.ll +++ b/bench/icu/optimized/ucase.ll @@ -2369,11 +2369,10 @@ _ZL10getDotTypei.exit.i: ; preds = %if.else.i.i, %if.th i32 96, label %for.cond.i ], !llvm.loop !14 -_ZL21isFollowedByMoreAbovePFiPvaES_.exit: ; preds = %for.cond.i, %_ZL10getDotTypei.exit.i, %land.lhs.true63 +lor.lhs.false67: ; preds = %_ZL10getDotTypei.exit.i, %for.cond.i, %land.lhs.true63 switch i32 %c, label %if.else77 [ - i32 296, label %sw.bb76 i32 205, label %sw.bb75 - i32 204, label %sw.bb74 + i32 296, label %sw.bb76 ] if.then71: ; preds = %_ZL10getDotTypei.exit.i @@ -2398,7 +2397,7 @@ sw.bb73: ; preds = %if.then71 store ptr @_ZL10iOgonekDot, ptr %pString, align 8 br label %return -sw.bb74: ; preds = %land.lhs.true, %_ZL21isFollowedByMoreAbovePFiPvaES_.exit, %if.then71 +sw.bb74: ; preds = %land.lhs.true, %if.then71 store ptr @_ZL9iDotGrave, ptr %pString, align 8 br label %return diff --git a/bench/libquic/optimized/base64.c.ll b/bench/libquic/optimized/base64.c.ll index b654f065ac1..a973a98b813 100644 --- a/bench/libquic/optimized/base64.c.ll +++ b/bench/libquic/optimized/base64.c.ll @@ -852,15 +852,11 @@ if.then17: ; preds = %if.end10, %conv_asc %inc20 = add nuw nsw i32 %ln.1127, 1 br label %if.end25 -if.else: ; preds = %conv_ascii2bin.exit69 - %cmp21 = icmp eq i8 %5, -1 - br i1 %cmp21, label %end, label %if.end25 - -if.end25: ; preds = %if.else, %if.then17 - %conv1479 = phi i32 [ %conv14, %if.else ], [ %conv1480, %if.then17 ] - %retval.0.i6877 = phi i8 [ %5, %if.else ], [ %retval.0.i6878, %if.then17 ] - %n.2 = phi i32 [ %n.1126, %if.else ], [ %inc, %if.then17 ] - %ln.2 = phi i32 [ %ln.1127, %if.else ], [ %inc20, %if.then17 ] +if.end25: ; preds = %conv_ascii2bin.exit69, %if.then17 + %cmp21 = phi i32 [ %conv1479, %if.then17 ], [ %conv14, %conv_ascii2bin.exit69 ] + %retval.0.i6878 = phi i8 [ %retval.0.i6877, %if.then17 ], [ %5, %conv_ascii2bin.exit69 ] + %n.2 = phi i32 [ %inc, %if.then17 ], [ %n.1125, %conv_ascii2bin.exit69 ] + %ln.2 = phi i32 [ %inc20, %if.then17 ], [ %ln.1126, %conv_ascii2bin.exit69 ] %cmp26 = icmp eq i8 %4, 61 br i1 %cmp26, label %if.then28, label %if.end38 @@ -874,7 +870,7 @@ if.then28: ; preds = %if.end25 if.end38: ; preds = %if.then28, %if.end25 %seof.1 = phi i32 [ %spec.select, %if.then28 ], [ %seof.0118, %if.end25 ] %eof.1 = phi i32 [ %inc33, %if.then28 ], [ %eof.0119, %if.end25 ] - switch i8 %retval.0.i6877, label %if.end51 [ + switch i8 %retval.0.i6878, label %if.end51 [ i8 -15, label %if.then41 i8 -16, label %if.then47 ] @@ -919,7 +915,7 @@ if.end78.thread: ; preds = %land.lhs.true55 if.end78: ; preds = %land.lhs.true55, %if.end51 %eof.3 = phi i32 [ 0, %land.lhs.true55 ], [ %eof.1, %if.end51 ] - %cmp79 = icmp eq i32 %conv1479, 242 + %cmp79 = icmp eq i32 %conv1480, 242 br i1 %cmp79, label %if.end78.land.lhs.true81_crit_edge, label %lor.lhs.false85 if.end78.land.lhs.true81_crit_edge: ; preds = %if.end78 @@ -1082,12 +1078,12 @@ for.inc: ; preds = %if.then47, %lor.lhs %cmp5 = icmp ugt i64 %in_len, %conv4 br i1 %cmp5, label %for.body, label %end, !llvm.loop !14 -end: ; preds = %for.inc, %if.else118, %if.end112, %if.end104, %EVP_DecodeBlock.exit, %if.then28, %if.else, %for.body, %land.lhs.true, %EVP_DecodeBlock.exit.thread, %entry - %rv.0 = phi i32 [ 0, %entry ], [ 0, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ 1, %for.inc ], [ 0, %if.else118 ], [ 0, %if.end112 ], [ -1, %if.end104 ], [ 0, %EVP_DecodeBlock.exit ], [ -1, %if.then28 ], [ -1, %if.else ], [ -1, %for.body ] - %exp_nl.0 = phi i32 [ %2, %entry ], [ %spec.select6298, %EVP_DecodeBlock.exit.thread ], [ %2, %land.lhs.true ], [ %exp_nl.2, %for.inc ], [ %spec.select6299, %if.else118 ], [ %spec.select6299, %if.end112 ], [ %spec.select6298, %if.end104 ], [ %spec.select6298, %EVP_DecodeBlock.exit ], [ %exp_nl.1121, %if.then28 ], [ %exp_nl.1121, %if.else ], [ %exp_nl.1121, %for.body ] - %n.0 = phi i32 [ %0, %entry ], [ 0, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ %n.3, %for.inc ], [ 0, %if.else118 ], [ 0, %if.end112 ], [ 0, %if.end104 ], [ 0, %EVP_DecodeBlock.exit ], [ %n.2, %if.then28 ], [ %n.1126, %if.else ], [ %n.1126, %for.body ] - %ln.0 = phi i32 [ %1, %entry ], [ %ln.5, %EVP_DecodeBlock.exit.thread ], [ %1, %land.lhs.true ], [ %ln.4, %for.inc ], [ %ln.5, %if.else118 ], [ %ln.5, %if.end112 ], [ %ln.5, %if.end104 ], [ %ln.5, %EVP_DecodeBlock.exit ], [ %ln.2, %if.then28 ], [ %ln.1127, %if.else ], [ %ln.1127, %for.body ] - %ret.0 = phi i32 [ 0, %entry ], [ %ret.1128, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ %ret.2, %for.inc ], [ %ret.3, %if.else118 ], [ %ret.3, %if.end112 ], [ %ret.1128, %if.end104 ], [ %ret.1128, %EVP_DecodeBlock.exit ], [ %ret.1128, %if.then28 ], [ %ret.1128, %if.else ], [ %ret.1128, %for.body ] +end: ; preds = %for.inc, %if.else118, %if.end112, %if.end104, %EVP_DecodeBlock.exit, %if.then28, %for.body, %land.lhs.true, %EVP_DecodeBlock.exit.thread, %entry + %rv.0 = phi i32 [ 0, %entry ], [ 0, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ 1, %for.inc ], [ 0, %if.else118 ], [ 0, %if.end112 ], [ -1, %if.end104 ], [ 0, %EVP_DecodeBlock.exit ], [ -1, %if.then28 ], [ -1, %for.body ] + %exp_nl.0 = phi i32 [ %2, %entry ], [ %spec.select6298, %EVP_DecodeBlock.exit.thread ], [ %2, %land.lhs.true ], [ %exp_nl.2, %for.inc ], [ %spec.select6299, %if.else118 ], [ %spec.select6299, %if.end112 ], [ %spec.select6298, %if.end104 ], [ %spec.select6298, %EVP_DecodeBlock.exit ], [ %exp_nl.1121, %if.then28 ], [ %exp_nl.1121, %for.body ] + %n.0 = phi i32 [ %0, %entry ], [ 0, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ %n.3, %for.inc ], [ 0, %if.else118 ], [ 0, %if.end112 ], [ 0, %if.end104 ], [ 0, %EVP_DecodeBlock.exit ], [ %n.2, %if.then28 ], [ %n.1126, %for.body ] + %ln.0 = phi i32 [ %1, %entry ], [ %ln.5, %EVP_DecodeBlock.exit.thread ], [ %1, %land.lhs.true ], [ %ln.4, %for.inc ], [ %ln.5, %if.else118 ], [ %ln.5, %if.end112 ], [ %ln.5, %if.end104 ], [ %ln.5, %EVP_DecodeBlock.exit ], [ %ln.2, %if.then28 ], [ %ln.1127, %for.body ] + %ret.0 = phi i32 [ 0, %entry ], [ %ret.1128, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ %ret.2, %for.inc ], [ %ret.3, %if.else118 ], [ %ret.3, %if.end112 ], [ %ret.1128, %if.end104 ], [ %ret.1128, %EVP_DecodeBlock.exit ], [ %ret.1128, %if.then28 ], [ %ret.1128, %for.body ] store i32 %ret.0, ptr %out_len, align 4 store i32 %n.0, ptr %ctx, align 4 store i32 %ln.0, ptr %line_num, align 4 diff --git a/bench/lief/optimized/psa_crypto_ecp.c.ll b/bench/lief/optimized/psa_crypto_ecp.c.ll index 5b78eaff27f..426aff5d37a 100644 --- a/bench/lief/optimized/psa_crypto_ecp.c.ll +++ b/bench/lief/optimized/psa_crypto_ecp.c.ll @@ -365,7 +365,6 @@ define hidden i32 @mbedtls_psa_ecdsa_sign_hash(ptr noundef readonly captures(non switch i32 %29, label %switch.early.test [ i32 100664064, label %31 i32 100668160, label %31 - i32 100663808, label %31 i32 100665600, label %31 ] @@ -376,7 +375,7 @@ switch.early.test: ; preds = %28 i32 100664320, label %31 ] -31: ; preds = %28, %28, %28, %28, %switch.early.test, %switch.early.test +31: ; preds = %28, %28, %28, %switch.early.test, %switch.early.test %32 = and i32 %3, 255 %.not43 = icmp eq i32 %32, 0 %33 = or disjoint i32 %32, 33554432 diff --git a/bench/linux/optimized/access.ll b/bench/linux/optimized/access.ll index 6c188646941..2d83e4cf21e 100644 --- a/bench/linux/optimized/access.ll +++ b/bench/linux/optimized/access.ll @@ -374,7 +374,7 @@ define dso_local noundef range(i32 0, 135) i32 @pci_generic_config_write32(ptr n %32 = load i8, ptr %17, align 8 %33 = or i8 %32, 2 store i8 %33, ptr %17, align 8 - br label %34 + br label %35 34: ; preds = %21, %16 %35 = shl i32 %3, 3 @@ -662,27 +662,27 @@ define dso_local range(i32 -2147483648, 1) i32 @pci_user_read_config_dword(ptr n ] 28: ; preds = %27 - br label %34 + br label %35 29: ; preds = %27 - br label %34 + br label %35 30: ; preds = %27 - br label %34 + br label %35 31: ; preds = %27 - br label %34 + br label %35 32: ; preds = %27 - br label %34 + br label %35 33: ; preds = %27 - br label %34 + br label %35 34: ; preds = %33, %32, %31, %30, %29, %28, %27, %13, %3 %35 = phi i32 [ -22, %3 ], [ -34, %33 ], [ -28, %32 ], [ -5, %31 ], [ -14, %30 ], [ -19, %29 ], [ -25, %28 ], [ %22, %13 ], [ -2, %27 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7 - ret i32 %35 + ret i32 %36 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -1240,11 +1240,11 @@ define dso_local i32 @pcie_capability_read_dword(ptr noundef readonly captures(n store i32 0, ptr %2, align 4 %5 = and i32 %1, 3 %6 = icmp eq i32 %5, 0 - br i1 %6, label %7, label %49 + br i1 %6, label %7, label %34 7: ; preds = %3 %8 = tail call fastcc zeroext i1 @pcie_capability_reg_implemented(ptr noundef %0, i32 noundef %1) - br i1 %8, label %9, label %33 + br i1 %8, label %9, label %34 9: ; preds = %7 %10 = getelementptr inbounds nuw i8, ptr %0, i64 180 @@ -1282,35 +1282,16 @@ define dso_local i32 @pcie_capability_read_dword(ptr noundef readonly captures(n %32 = select i1 %30, i32 %31, i32 -1 store i32 %32, ptr %2, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7 - br i1 %30, label %49, label %.thread - -33: ; preds = %7 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 100 - %35 = load i8, ptr %34, align 4 - %36 = icmp eq i8 %35, 0 - br i1 %36, label %49, label %37 - -37: ; preds = %33 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 106 - %39 = load i16, ptr %38, align 2 - %40 = and i16 %39, 208 - %41 = icmp eq i16 %40, 64 - %42 = and i16 %39, 240 - %43 = icmp eq i16 %42, 128 - %44 = or i1 %41, %43 - %45 = icmp eq i32 %1, 26 - %46 = and i1 %45, %44 - br i1 %46, label %.thread, label %49 - -.thread: ; preds = %9, %.thread1, %37, %23 - %47 = phi i32 [ 0, %23 ], [ 64, %37 ], [ 0, %.thread1 ], [ 0, %9 ] - %48 = phi i32 [ %29, %23 ], [ 0, %37 ], [ 135, %.thread1 ], [ 134, %9 ] - store i32 %47, ptr %2, align 4 - br label %49 - -49: ; preds = %.thread, %37, %33, %23, %3 - %50 = phi i32 [ 135, %3 ], [ 0, %23 ], [ 0, %37 ], [ 0, %33 ], [ %48, %.thread ] - ret i32 %50 + br i1 %30, label %34, label %.thread + +.thread: ; preds = %9, %.thread1, %23 + %34 = phi i32 [ %29, %23 ], [ 135, %.thread1 ], [ 134, %9 ] + store i32 0, ptr %2, align 4 + br label %35 + +34: ; preds = %7, %.thread, %23, %3 + %35 = phi i32 [ 135, %3 ], [ 0, %23 ], [ %33, %33 ], [ 0, %7 ] + ret i32 %36 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -1664,65 +1645,46 @@ define dso_local i32 @pcie_capability_clear_and_set_dword(ptr noundef readonly c %31 = icmp eq i32 %30, 0 %32 = load i32, ptr %5, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7 - br i1 %31, label %47, label %pci_bus_write_config_dword.exit - -33: ; preds = %8 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 100 - %35 = load i8, ptr %34, align 4 - %36 = icmp eq i8 %35, 0 - br i1 %36, label %47, label %37 - -37: ; preds = %33 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 106 - %39 = load i16, ptr %38, align 2 - %40 = and i16 %39, 208 - %41 = icmp eq i16 %40, 64 - %42 = and i16 %39, 240 - %43 = icmp eq i16 %42, 128 - %44 = or i1 %41, %43 - %45 = icmp eq i32 %1, 26 - %46 = and i1 %45, %44 - %spec.select = select i1 %46, i32 64, i32 0 - br label %47 - -47: ; preds = %37, %33, %24 - %.0.ph = phi i32 [ 0, %33 ], [ %32, %24 ], [ %spec.select, %37 ] - %48 = xor i32 %2, -1 - %49 = and i32 %.0.ph, %48 - %50 = or i32 %49, %3 - %51 = tail call fastcc zeroext i1 @pcie_capability_reg_implemented(ptr noundef %0, i32 noundef %1) - br i1 %51, label %52, label %pci_bus_write_config_dword.exit - -52: ; preds = %47 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 180 - %54 = load i32, ptr %53, align 4 - %55 = icmp eq i32 %54, 3 - br i1 %55, label %pci_bus_write_config_dword.exit, label %56 - -56: ; preds = %52 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 100 - %58 = load i8, ptr %57, align 4 - %59 = zext i8 %58 to i32 - %60 = and i32 %59, 3 - %61 = icmp eq i32 %60, 0 - br i1 %61, label %62, label %pci_bus_write_config_dword.exit - -62: ; preds = %56 - %63 = add i32 %1, %59 - %64 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %65 = load i32, ptr %64, align 8 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %67 = load ptr, ptr %66, align 8 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 192 - %69 = load ptr, ptr %68, align 8 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 32 - %71 = load ptr, ptr %70, align 8 - %72 = tail call i32 %71(ptr noundef %67, i32 noundef %65, i32 noundef %63, i32 noundef 4, i32 noundef %50) #7 + br i1 %31, label %34, label %pci_bus_write_config_dword.exit + +33: ; preds = %8, %24 + %34 = phi i32 [ %32, %24 ], [ 0, %8 ] + %35 = xor i32 %2, -1 + %35 = and i32 %35, %35 + %36 = or i32 %36, %3 + %37 = tail call fastcc zeroext i1 @pcie_capability_reg_implemented(ptr noundef %0, i32 noundef %1) + br i1 %37, label %38, label %pci_bus_write_config_dword.exit + +38: ; preds = %33 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 180 + %40 = load i32, ptr %40, align 4 + %42 = icmp eq i32 %40, 3 + br i1 %42, label %pci_bus_write_config_dword.exit, label %42 + +42: ; preds = %38 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 100 + %spec.select = load i8, ptr %46, align 4 + %45 = zext i8 %44 to i32 + %46 = and i32 %45, 3 + %47 = icmp eq i32 %46, 0 + br i1 %47, label %48, label %pci_bus_write_config_dword.exit + +48: ; preds = %42 + %50 = add i32 %1, %45 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %51 = load i32, ptr %50, align 8 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %53 = load ptr, ptr %52, align 8 + %53 = getelementptr inbounds nuw i8, ptr %53, i64 192 + %54 = load ptr, ptr %53, align 8 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 32 + %57 = load ptr, ptr %56, align 8 + %58 = tail call i32 %57(ptr noundef %53, i32 noundef %51, i32 noundef %49, i32 noundef 4, i32 noundef %36) #7 br label %pci_bus_write_config_dword.exit -pci_bus_write_config_dword.exit: ; preds = %24, %10, %62, %56, %4, %.thread3, %52, %47 - %73 = phi i32 [ 0, %47 ], [ 134, %52 ], [ 135, %4 ], [ 135, %.thread3 ], [ %72, %62 ], [ 135, %56 ], [ 134, %10 ], [ %30, %24 ] - ret i32 %73 +pci_bus_write_config_dword.exit: ; preds = %24, %10, %.thread3, %4, %48, %42, %38, %33 + %59 = phi i32 [ 0, %33 ], [ 134, %38 ], [ %58, %48 ], [ 135, %42 ], [ 135, %.thread3 ], [ 135, %4 ], [ 134, %10 ], [ %30, %24 ] + ret i32 %59 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/insn-eval.ll b/bench/linux/optimized/insn-eval.ll index 5c2d90b6e91..bab7b822309 100644 --- a/bench/linux/optimized/insn-eval.ll +++ b/bench/linux/optimized/insn-eval.ll @@ -625,20 +625,20 @@ define dso_local ptr @insn_get_addr_ref(ptr noundef %0, ptr noundef %1) local_un %14 = icmp ne ptr %0, null %15 = icmp ne ptr %1, null %16 = and i1 %14, %15 - br i1 %16, label %17, label %166 + br i1 %16, label %17, label %232 17: ; preds = %2 %18 = tail call i32 @insn_get_opcode(ptr noundef nonnull %0) #7 %19 = icmp eq i32 %18, 0 - br i1 %19, label %20, label %166 + br i1 %19, label %20, label %232 20: ; preds = %17 %21 = getelementptr inbounds nuw i8, ptr %0, i64 81 %22 = load i8, ptr %21, align 1 - switch i8 %22, label %166 [ + switch i8 %22, label %232 [ i8 2, label %23 i8 4, label %101 - i8 8, label %137 + i8 8, label %170 ] 23: ; preds = %20 @@ -763,7 +763,7 @@ define dso_local ptr @insn_get_addr_ref(ptr noundef %0, ptr noundef %1) local_un call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7 - br label %166 + br label %232 101: ; preds = %20 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7 @@ -778,120 +778,246 @@ define dso_local ptr @insn_get_addr_ref(ptr noundef %0, ptr noundef %1) local_un %103 = load i32, ptr %102, align 8 %104 = and i32 %103, 192 %105 = icmp eq i32 %104, 192 - br i1 %105, label %106, label %109 + br i1 %105, label %106, label %143 106: ; preds = %101 - %107 = call fastcc i32 @get_eff_addr_reg(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) + %107 = tail call i32 @insn_get_modrm(ptr noundef nonnull %0) #7 %108 = icmp eq i32 %107, 0 - br i1 %108, label %119, label %134 + br i1 %108, label %109, label %166 -109: ; preds = %101 - %110 = getelementptr inbounds nuw i8, ptr %0, i64 45 - %111 = load i8, ptr %110, align 1 - %112 = icmp eq i8 %111, 0 - br i1 %112, label %116, label %113 +109: ; preds = %106 + %110 = load i32, ptr %102, align 8 + %111 = and i32 %110, 192 + %112 = icmp eq i32 %111, 192 + br i1 %112, label %113, label %166 113: ; preds = %109 - %114 = call fastcc i32 @get_eff_addr_sib(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) - %115 = icmp eq i32 %114, 0 - br i1 %115, label %119, label %134 - -116: ; preds = %109 - %117 = call fastcc i32 @get_eff_addr_modrm(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) - %118 = icmp eq i32 %117, 0 - br i1 %118, label %119, label %134 - -119: ; preds = %116, %113, %106 - %120 = load i64, ptr %9, align 8 - %121 = load i32, ptr %8, align 4 - %122 = call fastcc i32 @get_seg_base_limit(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %121, ptr noundef nonnull %6, ptr noundef nonnull %7), !range !25 - %123 = icmp eq i32 %122, 0 - br i1 %123, label %124, label %134 - -124: ; preds = %119 - %125 = getelementptr inbounds nuw i8, ptr %1, i64 136 - %126 = load i64, ptr %125, align 8 - %127 = and i64 %126, 3 - %128 = icmp ne i64 %127, 0 - %129 = icmp ne i64 %126, 51 - %.not8 = and i1 %129, %128 - %.pre4 = and i64 %120, 4294967295 - %130 = load i64, ptr %7, align 8 - %131 = icmp ugt i64 %.pre4, %130 - %or.cond = select i1 %.not8, i1 %131, i1 false - br i1 %or.cond, label %134, label %._crit_edge - -._crit_edge: ; preds = %124 - %132 = load i64, ptr %6, align 8 - %133 = add i64 %132, %.pre4 - br label %134 - -134: ; preds = %124, %._crit_edge, %119, %116, %113, %106 - %135 = phi i64 [ -1, %106 ], [ -1, %119 ], [ %133, %._crit_edge ], [ -1, %113 ], [ -1, %116 ], [ -1, %124 ] + %114 = getelementptr inbounds nuw i8, ptr %0, i64 83 + %115 = load i8, ptr %114, align 1 + %116 = icmp eq i8 %115, 0 + %117 = select i1 %116, i32 8, i32 16 + %118 = and i32 %110, 7 + %117 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %118 = load i32, ptr %117, align 8 + %121 = shl i32 %120, 3 + %122 = and i32 %121, 8 + %123 = or disjoint i32 %122, %118 + %120 = icmp samesign ult i32 %123, %117 + br i1 %124, label %128, label %125 + +125: ; preds = %113 + %126 = load i1, ptr @get_regno.__already_done, align 1 + br i1 %126, label %get_eff_addr_reg.exit.thread, label %127, !prof !17 + +127: ; preds = %125 + store i1 true, ptr @get_regno.__already_done, align 1 + tail call void asm sideeffect "370: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 370b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 370) #7, !srcloc !18 + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str.1) #7 + tail call void asm sideeffect "371: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 371b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 371) #7, !srcloc !19 + tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.2, i32 516, i32 2313, i64 12) #7, !srcloc !20 + tail call void asm sideeffect "372: nop\0A\09.pushsection .discard.instr_end\0A\09.long 372b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 372) #7, !srcloc !21 + tail call void asm sideeffect "373: nop\0A\09.pushsection .discard.instr_end\0A\09.long 373b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 373) #7, !srcloc !22 + br label %166 + +128: ; preds = %113 + %129 = zext nneg i32 %123 to i64 + %130 = getelementptr [16 x i32], ptr @pt_regoff, i64 0, i64 %129 + %132 = load i32, ptr %130, align 4 + store i32 %132, ptr %8, align 4 + %132 = load i8, ptr %21, align 1 + %133 = zext nneg i32 %131 to i64 + %134 = ptrtoint ptr %1 to i64 + %135 = add i64 %133, %134 %136 = inttoptr i64 %135 to ptr + %137 = load i64, ptr %136, align 8 + switch i8 %132, label %get_eff_addr_reg.exit [ + i8 2, label %138 + i8 4, label %140 + ] + +138: ; preds = %128 + %139 = and i64 %137, 65535 + br label %get_eff_addr_reg.exit + +140: ; preds = %128 + %141 = and i64 %137, 4294967295 + br label %get_eff_addr_reg.exit + +get_eff_addr_reg.exit: ; preds = %128, %138, %140 + %140 = phi i64 [ %139, %138 ], [ %141, %140 ], [ %137, %128 ] + store i64 %140, ptr %9, align 8 + br label %153 + +143: ; preds = %101 + %143 = getelementptr inbounds nuw i8, ptr %0, i64 45 + %144 = load i8, ptr %143, align 1 + %146 = icmp eq i8 %145, 0 + br i1 %146, label %150, label %147 + +147: ; preds = %143 + %147 = call fastcc i32 @get_eff_addr_sib(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) + %148 = icmp eq i32 %147, 0 + br i1 %148, label %152, label %166 + +150: ; preds = %143 + %150 = call fastcc i32 @get_eff_addr_modrm(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) + %151 = icmp eq i32 %150, 0 + br i1 %151, label %153, label %166 + +153: ; preds = %get_eff_addr_reg.exit, %150, %147 + %153 = load i64, ptr %9, align 8 + %154 = load i32, ptr %8, align 4 + %156 = call fastcc i32 @get_seg_base_limit(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %155, ptr noundef nonnull %6, ptr noundef nonnull %7), !range !25 + %157 = icmp eq i32 %156, 0 + br i1 %157, label %158, label %166 + +158: ; preds = %153 + %158 = getelementptr inbounds nuw i8, ptr %1, i64 136 + %160 = load i64, ptr %159, align 8 + %161 = and i64 %160, 3 + %162 = icmp ne i64 %161, 0 + %160 = icmp ne i64 %160, 51 + %161 = and i1 %163, %162 + %162 = and i64 %154, 4294967295 + %164 = load i64, ptr %7, align 8 + %165 = icmp ugt i64 %.pre6, %164 + %or.cond = select i1 %161, i1 %165, i1 false + br i1 %or.cond, label %get_eff_addr_reg.exit.thread, label %._crit_edge + +._crit_edge: ; preds = %158 + %166 = load i64, ptr %6, align 8 + %167 = add i64 %166, %.pre6 + br label %166 + +get_eff_addr_reg.exit.thread: ; preds = %158, %125, %127, %109, %106, %._crit_edge, %152, %150, %147 + %168 = phi i64 [ -1, %153 ], [ %167, %._crit_edge ], [ -1, %147 ], [ -1, %150 ], [ -1, %106 ], [ -1, %109 ], [ -1, %127 ], [ -1, %125 ], [ -1, %158 ] + %169 = inttoptr i64 %167 to ptr call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7 - br label %166 + br label %232 -137: ; preds = %20 +170: ; preds = %20 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #7 store i64 0, ptr %3, align 8, !annotation !23 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7 store i32 0, ptr %4, align 4, !annotation !23 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7 store i64 0, ptr %5, align 8, !annotation !23 - %138 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %139 = load i32, ptr %138, align 8 - %140 = and i32 %139, 192 - %141 = icmp eq i32 %140, 192 - br i1 %141, label %142, label %145 - -142: ; preds = %137 - %143 = call fastcc i32 @get_eff_addr_reg(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) - %144 = icmp eq i32 %143, 0 - br i1 %144, label %155, label %163 - -145: ; preds = %137 - %146 = getelementptr inbounds nuw i8, ptr %0, i64 45 - %147 = load i8, ptr %146, align 1 - %148 = icmp eq i8 %147, 0 - br i1 %148, label %152, label %149 - -149: ; preds = %145 - %150 = call fastcc i32 @get_eff_addr_sib(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) - %151 = icmp eq i32 %150, 0 - br i1 %151, label %155, label %163 - -152: ; preds = %145 - %153 = call fastcc i32 @get_eff_addr_modrm(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) - %154 = icmp eq i32 %153, 0 - br i1 %154, label %155, label %163 - -155: ; preds = %152, %149, %142 - %156 = load i32, ptr %4, align 4 - %157 = call fastcc i32 @get_seg_base_limit(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %156, ptr noundef nonnull %3, ptr noundef null), !range !25 - %158 = icmp eq i32 %157, 0 - br i1 %158, label %159, label %163 - -159: ; preds = %155 - %160 = load i64, ptr %5, align 8 - %161 = load i64, ptr %3, align 8 - %162 = add i64 %161, %160 - br label %163 - -163: ; preds = %159, %155, %152, %149, %142 - %164 = phi i64 [ -1, %142 ], [ -1, %155 ], [ %162, %159 ], [ -1, %149 ], [ -1, %152 ] - %165 = inttoptr i64 %164 to ptr + %171 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %172 = load i32, ptr %171, align 8 + %173 = and i32 %172, 192 + %174 = icmp eq i32 %173, 192 + br i1 %174, label %175, label %212 + +175: ; preds = %170 + %176 = tail call i32 @insn_get_modrm(ptr noundef nonnull %0) #7 + %177 = icmp eq i32 %176, 0 + br i1 %177, label %178, label %get_eff_addr_reg.exit5.thread + +178: ; preds = %175 + %179 = load i32, ptr %171, align 8 + %180 = and i32 %179, 192 + %181 = icmp eq i32 %180, 192 + br i1 %181, label %182, label %get_eff_addr_reg.exit5.thread + +182: ; preds = %178 + %183 = getelementptr inbounds nuw i8, ptr %0, i64 83 + %184 = load i8, ptr %183, align 1 + %185 = icmp eq i8 %184, 0 + %186 = select i1 %185, i32 8, i32 16 + %187 = and i32 %179, 7 + %188 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %189 = load i32, ptr %188, align 8 + %190 = shl i32 %189, 3 + %191 = and i32 %190, 8 + %192 = or disjoint i32 %191, %187 + %193 = icmp samesign ult i32 %192, %186 + br i1 %193, label %197, label %194 + +194: ; preds = %182 + %195 = load i1, ptr @get_regno.__already_done, align 1 + br i1 %195, label %get_eff_addr_reg.exit5.thread, label %196, !prof !17 + +196: ; preds = %194 + store i1 true, ptr @get_regno.__already_done, align 1 + tail call void asm sideeffect "370: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 370b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 370) #7, !srcloc !18 + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str.1) #7 + tail call void asm sideeffect "371: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 371b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 371) #7, !srcloc !19 + tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.2, i32 516, i32 2313, i64 12) #7, !srcloc !20 + tail call void asm sideeffect "372: nop\0A\09.pushsection .discard.instr_end\0A\09.long 372b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 372) #7, !srcloc !21 + tail call void asm sideeffect "373: nop\0A\09.pushsection .discard.instr_end\0A\09.long 373b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 373) #7, !srcloc !22 + br label %get_eff_addr_reg.exit5.thread + +197: ; preds = %182 + %198 = zext nneg i32 %192 to i64 + %199 = getelementptr [16 x i32], ptr @pt_regoff, i64 0, i64 %198 + %200 = load i32, ptr %199, align 4 + store i32 %200, ptr %4, align 4 + %201 = load i8, ptr %21, align 1 + %202 = zext nneg i32 %200 to i64 + %203 = ptrtoint ptr %1 to i64 + %204 = add i64 %202, %203 + %205 = inttoptr i64 %204 to ptr + %206 = load i64, ptr %205, align 8 + switch i8 %201, label %get_eff_addr_reg.exit5 [ + i8 2, label %207 + i8 4, label %209 + ] + +207: ; preds = %197 + %208 = and i64 %206, 65535 + br label %get_eff_addr_reg.exit5 + +209: ; preds = %197 + %210 = and i64 %206, 4294967295 + br label %get_eff_addr_reg.exit5 + +get_eff_addr_reg.exit5: ; preds = %197, %207, %209 + %211 = phi i64 [ %208, %207 ], [ %210, %209 ], [ %206, %197 ] + store i64 %211, ptr %5, align 8 + br label %222 + +212: ; preds = %170 + %213 = getelementptr inbounds nuw i8, ptr %0, i64 45 + %214 = load i8, ptr %213, align 1 + %215 = icmp eq i8 %214, 0 + br i1 %215, label %219, label %216 + +216: ; preds = %212 + %217 = call fastcc i32 @get_eff_addr_sib(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) + %218 = icmp eq i32 %217, 0 + br i1 %218, label %222, label %get_eff_addr_reg.exit5.thread + +219: ; preds = %212 + %220 = call fastcc i32 @get_eff_addr_modrm(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) + %221 = icmp eq i32 %220, 0 + br i1 %221, label %222, label %get_eff_addr_reg.exit5.thread + +222: ; preds = %get_eff_addr_reg.exit5, %219, %216 + %223 = load i32, ptr %4, align 4 + %224 = call fastcc i32 @get_seg_base_limit(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %223, ptr noundef nonnull %3, ptr noundef null), !range !25 + %225 = icmp eq i32 %224, 0 + br i1 %225, label %226, label %get_eff_addr_reg.exit5.thread + +226: ; preds = %222 + %227 = load i64, ptr %5, align 8 + %228 = load i64, ptr %3, align 8 + %229 = add i64 %228, %227 + br label %get_eff_addr_reg.exit5.thread + +get_eff_addr_reg.exit5.thread: ; preds = %194, %196, %178, %175, %226, %222, %219, %216 + %230 = phi i64 [ -1, %222 ], [ %229, %226 ], [ -1, %216 ], [ -1, %219 ], [ -1, %175 ], [ -1, %178 ], [ -1, %196 ], [ -1, %194 ] + %231 = inttoptr i64 %230 to ptr call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #7 - br label %166 + br label %232 -166: ; preds = %163, %134, %.thread, %20, %17, %2 - %167 = phi ptr [ %165, %163 ], [ %136, %134 ], [ %100, %.thread ], [ inttoptr (i64 -1 to ptr), %2 ], [ inttoptr (i64 -1 to ptr), %17 ], [ inttoptr (i64 -1 to ptr), %20 ] - ret ptr %167 +232: ; preds = %get_eff_addr_reg.exit5.thread, %get_eff_addr_reg.exit.thread, %.thread, %20, %17, %2 + %233 = phi ptr [ %231, %get_eff_addr_reg.exit5.thread ], [ %169, %get_eff_addr_reg.exit.thread ], [ %100, %.thread ], [ inttoptr (i64 -1 to ptr), %2 ], [ inttoptr (i64 -1 to ptr), %17 ], [ inttoptr (i64 -1 to ptr), %20 ] + ret ptr %233 } ; Function Attrs: null_pointer_is_valid @@ -1136,39 +1262,34 @@ declare dso_local i32 @insn_get_displacement(ptr noundef) local_unnamed_addr #2 define internal fastcc i32 @get_eff_addr_reg(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef writeonly captures(none) %2, ptr noundef writeonly captures(none) %3) unnamed_addr #0 align 16 { %5 = tail call i32 @insn_get_modrm(ptr noundef nonnull %0) #7 %6 = icmp eq i32 %5, 0 - br i1 %6, label %7, label %47 + br i1 %6, label %7, label %44 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %0, i64 32 %9 = load i32, ptr %8, align 8 %10 = and i32 %9, 192 %11 = icmp eq i32 %10, 192 - br i1 %11, label %12, label %47 + br i1 %11, label %12, label %44 12: ; preds = %7 - %13 = and i32 %9, 199 - %14 = icmp eq i32 %13, 5 - br i1 %14, label %.thread4, label %15 - -15: ; preds = %12 - %16 = getelementptr inbounds nuw i8, ptr %0, i64 83 - %17 = load i8, ptr %16, align 1 - %18 = icmp eq i8 %17, 0 - %19 = select i1 %18, i32 8, i32 16 - %20 = and i32 %9, 7 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %22 = load i32, ptr %21, align 8 - %23 = shl i32 %22, 3 - %24 = and i32 %23, 8 - %25 = or disjoint i32 %24, %20 - %26 = icmp samesign ult i32 %25, %19 - br i1 %26, label %30, label %27 - -27: ; preds = %15 - %28 = load i1, ptr @get_regno.__already_done, align 1 - br i1 %28, label %.thread4, label %29, !prof !17 - -29: ; preds = %27 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 83 + %14 = load i8, ptr %13, align 1 + %15 = icmp eq i8 %14, 0 + %16 = select i1 %15, i32 8, i32 16 + %17 = and i32 %9, 7 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %17 = load i32, ptr %16, align 8 + %18 = shl i32 %17, 3 + %19 = and i32 %18, 8 + %20 = or disjoint i32 %19, %17 + %21 = icmp samesign ult i32 %20, %16 + br i1 %23, label %27, label %24 + +24: ; preds = %12 + %25 = load i1, ptr @get_regno.__already_done, align 1 + br i1 %25, label %.thread4, label %26, !prof !17 + +26: ; preds = %24 store i1 true, ptr @get_regno.__already_done, align 1 tail call void asm sideeffect "370: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 370b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 370) #7, !srcloc !18 tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str.1) #7 @@ -1178,44 +1299,43 @@ define internal fastcc i32 @get_eff_addr_reg(ptr noundef nonnull %0, ptr noundef tail call void asm sideeffect "373: nop\0A\09.pushsection .discard.instr_end\0A\09.long 373b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 373) #7, !srcloc !22 br label %.thread4 -.thread4: ; preds = %29, %27, %12 - %.ph = phi i32 [ -22, %29 ], [ -22, %27 ], [ -33, %12 ] - store i32 %.ph, ptr %2, align 4 - br label %47 - -30: ; preds = %15 - %31 = zext nneg i32 %25 to i64 - %32 = getelementptr [16 x i32], ptr @pt_regoff, i64 0, i64 %31 - %33 = load i32, ptr %32, align 4 - store i32 %33, ptr %2, align 4 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 81 - %35 = load i8, ptr %34, align 1 - %36 = zext nneg i32 %33 to i64 - %37 = ptrtoint ptr %1 to i64 - %38 = add i64 %36, %37 - %39 = inttoptr i64 %38 to ptr - %40 = load i64, ptr %39, align 8 - switch i8 %35, label %45 [ - i8 2, label %41 - i8 4, label %43 +.thread4: ; preds = %26, %24 + store i32 -22, ptr %2, align 4 + br label %44 + +27: ; preds = %12 + %28 = zext nneg i32 %22 to i64 + %31 = getelementptr [16 x i32], ptr @pt_regoff, i64 0, i64 %28 + %32 = load i32, ptr %31, align 4 + store i32 %30, ptr %2, align 4 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 81 + %34 = load i8, ptr %31, align 1 + %35 = zext nneg i32 %30 to i64 + %36 = ptrtoint ptr %1 to i64 + %37 = add i64 %33, %34 + %38 = inttoptr i64 %37 to ptr + %39 = load i64, ptr %36, align 8 + switch i8 %32, label %42 [ + i8 2, label %38 + i8 4, label %40 ] -41: ; preds = %30 - %42 = and i64 %40, 65535 - br label %45 +38: ; preds = %27 + %39 = and i64 %37, 65535 + br label %42 -43: ; preds = %30 - %44 = and i64 %40, 4294967295 - br label %45 +40: ; preds = %27 + %41 = and i64 %37, 4294967295 + br label %42 -45: ; preds = %30, %43, %41 - %46 = phi i64 [ %42, %41 ], [ %44, %43 ], [ %40, %30 ] - store i64 %46, ptr %3, align 8 - br label %47 +42: ; preds = %27, %40, %38 + %43 = phi i64 [ %39, %38 ], [ %41, %40 ], [ %37, %27 ] + store i64 %43, ptr %3, align 8 + br label %44 -47: ; preds = %.thread4, %45, %7, %4 - %48 = phi i32 [ %5, %4 ], [ -22, %7 ], [ 0, %45 ], [ -22, %.thread4 ] - ret i32 %48 +44: ; preds = %.thread4, %42, %7, %4 + %45 = phi i32 [ %5, %4 ], [ -22, %7 ], [ 0, %42 ], [ -22, %.thread4 ] + ret i32 %45 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/seq_ports.ll b/bench/linux/optimized/seq_ports.ll index b7ed519ad76..a3f5321ea79 100644 --- a/bench/linux/optimized/seq_ports.ll +++ b/bench/linux/optimized/seq_ports.ll @@ -198,7 +198,7 @@ define dso_local ptr @snd_seq_port_query_nearest(ptr noundef %0, ptr noundef rea define dso_local range(i32 -22, -2147483648) i32 @snd_seq_create_port(ptr noundef %0, i32 noundef %1, ptr noundef writeonly captures(none) initializes((0, 8)) %2) local_unnamed_addr #0 align 16 { store ptr null, ptr %2, align 8 %4 = icmp eq ptr %0, null - br i1 %4, label %87, label %5 + br i1 %4, label %85, label %5 5: ; preds = %3 %6 = getelementptr inbounds nuw i8, ptr %0, i64 132 @@ -210,13 +210,13 @@ define dso_local range(i32 -22, -2147483648) i32 @snd_seq_create_port(ptr nounde %10 = getelementptr inbounds nuw i8, ptr %0, i64 80 %11 = load i32, ptr %10, align 8 %12 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, i32 noundef %11) #11 - br label %87 + br label %85 13: ; preds = %5 %14 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @kmalloc_caches, i64 72), align 8 %15 = tail call noalias align 8 dereferenceable_or_null(336) ptr @kmalloc_trace(ptr noundef %14, i32 noundef 3520, i64 noundef 336) #12 %16 = icmp eq ptr %15, null - br i1 %16, label %87, label %17 + br i1 %16, label %85, label %17 17: ; preds = %13 %18 = getelementptr inbounds nuw i8, ptr %0, i64 80 @@ -280,76 +280,72 @@ define dso_local range(i32 -22, -2147483648) i32 @snd_seq_create_port(ptr nounde %51 = icmp slt i32 %1, 0 br i1 %51, label %.split.us, label %.split -.split.us: ; preds = %50, %60 - %52 = phi ptr [ %62, %60 ], [ %48, %50 ] - %53 = phi i32 [ %61, %60 ], [ %44, %50 ] +.split.us.preheader: ; preds = %50, %58 + %52 = phi ptr [ %60, %58 ], [ %48, %50 ] + %53 = phi i32 [ %59, %58 ], [ %44, %50 ] %54 = getelementptr i8, ptr %52, i64 -79 %55 = load i8, ptr %54, align 1 %56 = zext i8 %55 to i32 - %57 = icmp eq i32 %1, %56 - br i1 %57, label %.split11.us, label %58 + %57 = icmp ult i32 %53, %56 + br i1 %57, label %.loopexit, label %58 58: ; preds = %.split.us - %59 = icmp ult i32 %53, %56 - br i1 %59, label %.loopexit, label %60 - -60: ; preds = %58 - %61 = add nuw nsw i32 %56, 1 - %62 = load ptr, ptr %52, align 8 - %63 = icmp eq ptr %62, %47 - br i1 %63, label %.loopexit, label %.split.us, !llvm.loop !10 - -.split: ; preds = %50, %71 - %64 = phi ptr [ %72, %71 ], [ %48, %50 ] - %65 = getelementptr i8, ptr %64, i64 -79 - %66 = load i8, ptr %65, align 1 - %67 = zext i8 %66 to i32 - %68 = icmp eq i32 %1, %67 - br i1 %68, label %.split11.us, label %69 - -.split11.us: ; preds = %.split, %.split.us + %59 = add nuw nsw i32 %56, 1 + %60 = load ptr, ptr %52, align 8 + %61 = icmp eq ptr %60, %47 + br i1 %61, label %.loopexit, label %.split.us.preheader, !llvm.loop !10 + +.split: ; preds = %50, %69 + %63 = phi ptr [ %70, %69 ], [ %48, %50 ] + %63 = getelementptr i8, ptr %63, i64 -79 + %64 = load i8, ptr %63, align 1 + %65 = zext i8 %64 to i32 + %64 = icmp eq i32 %1, %65 + br i1 %64, label %.split11.us, label %67 + +.split11.us: ; preds = %.split tail call void @kfree(ptr noundef nonnull %15) #10 - br label %85 - -69: ; preds = %.split - %70 = icmp samesign ult i32 %44, %67 - br i1 %70, label %.loopexit, label %71 - -71: ; preds = %69 - %72 = load ptr, ptr %64, align 8 - %73 = icmp eq ptr %72, %47 - br i1 %73, label %.loopexit, label %.split, !llvm.loop !10 - -.loopexit: ; preds = %69, %71, %60, %58, %17 - %74 = phi i32 [ %44, %17 ], [ %53, %58 ], [ %61, %60 ], [ %44, %71 ], [ %44, %69 ] - %75 = phi ptr [ %48, %17 ], [ %52, %58 ], [ %62, %60 ], [ %64, %69 ], [ %72, %71 ] - %76 = getelementptr inbounds nuw i8, ptr %15, i64 80 - %77 = getelementptr inbounds nuw i8, ptr %75, i64 8 - %78 = load ptr, ptr %77, align 8 + br label %83 + +67: ; preds = %.split + %68 = icmp samesign ult i32 %44, %65 + br i1 %68, label %.loopexit, label %69 + +69: ; preds = %.split11.us + %70 = load ptr, ptr %62, align 8 + %71 = icmp eq ptr %70, %47 + br i1 %71, label %.loopexit, label %.split, !llvm.loop !10 + +.loopexit: ; preds = %67, %69, %58, %.split.us, %17 + %73 = phi i32 [ %44, %17 ], [ %53, %.split.us ], [ %59, %58 ], [ %44, %69 ], [ %44, %67 ] + %73 = phi ptr [ %48, %17 ], [ %52, %.split.us ], [ %60, %58 ], [ %62, %67 ], [ %70, %69 ] + %74 = getelementptr inbounds nuw i8, ptr %15, i64 80 + %75 = getelementptr inbounds nuw i8, ptr %73, i64 8 + %74 = load ptr, ptr %75, align 8 + store ptr %74, ptr %75, align 8 + store ptr %73, ptr %74, align 8 + %77 = getelementptr inbounds nuw i8, ptr %15, i64 88 store ptr %76, ptr %77, align 8 - store ptr %75, ptr %76, align 8 - %79 = getelementptr inbounds nuw i8, ptr %15, i64 88 - store ptr %78, ptr %79, align 8 - store volatile ptr %76, ptr %78, align 8 - %80 = load i32, ptr %6, align 4 - %81 = add i32 %80, 1 - store i32 %81, ptr %6, align 4 - %82 = trunc i32 %74 to i8 - store i8 %82, ptr %21, align 1 - %83 = getelementptr inbounds nuw i8, ptr %15, i64 16 - %84 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %83, ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %74) #10 + store volatile ptr %74, ptr %76, align 8 + %78 = load i32, ptr %6, align 4 + %79 = add i32 %78, 1 + store i32 %79, ptr %6, align 4 + %80 = trunc i32 %72 to i8 + store i8 %80, ptr %21, align 1 + %81 = getelementptr inbounds nuw i8, ptr %15, i64 16 + %82 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %81, ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %72) #10 store ptr %15, ptr %2, align 8 - br label %85 + br label %83 -85: ; preds = %.loopexit, %.split11.us - %86 = phi i32 [ -16, %.split11.us ], [ %74, %.loopexit ] +83: ; preds = %.loopexit, %.split11.us + %84 = phi i32 [ -16, %.split11.us ], [ %72, %.loopexit ] tail call void @_raw_write_unlock_irq(ptr noundef nonnull %46) #10 tail call void @mutex_unlock(ptr noundef nonnull %45) #10 - br label %87 + br label %85 -87: ; preds = %85, %13, %9, %3 - %88 = phi i32 [ -22, %9 ], [ %86, %85 ], [ -22, %3 ], [ -12, %13 ] - ret i32 %88 +85: ; preds = %83, %13, %9, %3 + %86 = phi i32 [ -22, %9 ], [ %84, %83 ], [ -22, %3 ], [ -12, %13 ] + ret i32 %86 } ; Function Attrs: cold null_pointer_is_valid diff --git a/bench/llvm/optimized/AArch64FrameLowering.cpp.ll b/bench/llvm/optimized/AArch64FrameLowering.cpp.ll index 17b66963d7a..b0bab76a211 100644 --- a/bench/llvm/optimized/AArch64FrameLowering.cpp.ll +++ b/bench/llvm/optimized/AArch64FrameLowering.cpp.ll @@ -17936,7 +17936,7 @@ _ZSt7reverseIPN12_GLOBAL__N_111RegPairInfoEEvT_S3_.exit: ; preds = %.lr.ph.i.i, %.idx318 = mul nsw i64 %189, 20 %190 = getelementptr inbounds i8, ptr %.val112, i64 %.idx318 %191 = ashr i64 %189, 2 - %192 = icmp sgt i64 %191, 0 + %192 = icmp sgt i64 %.not52, 0 br i1 %192, label %.lr.ph.preheader.i.i.i147, label %._crit_edge.i.i.i138 .lr.ph.preheader.i.i.i147: ; preds = %_ZSt7reverseIPN12_GLOBAL__N_111RegPairInfoEEvT_S3_.exit @@ -18569,7 +18569,7 @@ define dso_local void @_ZNK4llvm20AArch64FrameLowering24determineStackHazardSlot %8 = and i32 %6, 15 %.not = icmp eq i32 %8, 0 %or.cond = and i1 %7, %.not - br i1 %or.cond, label %9, label %245 + br i1 %or.cond, label %9, label %244 9: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 40 @@ -18577,7 +18577,7 @@ define dso_local void @_ZNK4llvm20AArch64FrameLowering24determineStackHazardSlot %12 = getelementptr inbounds nuw i8, ptr %11, i64 80 %13 = load i32, ptr %12, align 8 %.not50 = icmp eq i32 %13, 2147483647 - br i1 %.not50, label %14, label %245 + br i1 %.not50, label %14, label %244 14: ; preds = %9 %15 = load ptr, ptr %1, align 8 @@ -18595,7 +18595,7 @@ define dso_local void @_ZNK4llvm20AArch64FrameLowering24determineStackHazardSlot %20 = load i32, ptr %5, align 4 %21 = and i32 %20, 7 %22 = icmp eq i32 %21, 0 - br i1 %22, label %245, label %23 + br i1 %22, label %244, label %23 23: ; preds = %19, %14 %24 = getelementptr inbounds nuw i8, ptr %1, i64 48 @@ -18698,7 +18698,7 @@ _ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit6.i.i.i.i.i.i.i.i: ; p %85 = shl nuw nsw i32 1, %79 %86 = and i32 %85, %84 %.not13.i.i.i.i.i.i.i.i = icmp eq i32 %86, 0 - br i1 %.not13.i.i.i.i.i.i.i.i, label %.thread9.i.i.i.i.i.i.i.i, label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit" + br i1 %.not13.i.i.i.i.i.i.i.i, label %.thread9.i.i.i.i.i.i.i.i, label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread .thread9.i.i.i.i.i.i.i.i: ; preds = %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit6.i.i.i.i.i.i.i.i, %.thread6.i.i.i.i.i.i.i.i %87 = load i16, ptr %57, align 2 @@ -18716,7 +18716,7 @@ _ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i: ; p %95 = shl nuw nsw i32 1, %89 %96 = and i32 %95, %94 %.not14.i.i.i.i.i.i.i.i = icmp eq i32 %96, 0 - br i1 %.not14.i.i.i.i.i.i.i.i, label %.thread12.i.i.i.i.i.i.i.i, label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit" + br i1 %.not14.i.i.i.i.i.i.i.i, label %.thread12.i.i.i.i.i.i.i.i, label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread .thread12.i.i.i.i.i.i.i.i: ; preds = %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i, %.thread9.i.i.i.i.i.i.i.i %97 = load i16, ptr %60, align 2 @@ -18734,7 +18734,7 @@ _ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i: ; p %105 = shl nuw nsw i32 1, %99 %106 = and i32 %105, %104 %.not10.i.i.i.i.i.i = icmp eq i32 %106, 0 - br i1 %.not10.i.i.i.i.i.i, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i", label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit" + br i1 %.not10.i.i.i.i.i.i, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i", label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread "_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i": ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.i.i.i.i.i.i", %.thread12.i.i.i.i.i.i.i.i, %62 %107 = add i32 %.sroa.4.014.i.i.i.i.i.i, 1 @@ -18784,272 +18784,268 @@ _ZN4llvm28const_set_bits_iterator_implINS_9BitVectorEEppEv.exit.i.i.i.i.i.i: ; p %.not.i.i.i.i.i.i = icmp eq i32 %131, -1 br i1 %.not.i.i.i.i.i.i, label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread", label %62, !llvm.loop !741 -"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit": ; preds = %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit6.i.i.i.i.i.i.i.i, %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i, %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.i.i.i.i.i.i" - %132 = icmp eq i32 %.sroa.4.014.i.i.i.i.i.i, -1 - br i1 %132, label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread", label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread - -"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread": ; preds = %44, %109, %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i", %_ZN4llvm28const_set_bits_iterator_implINS_9BitVectorEEppEv.exit.i.i.i.i.i.i, %126, %_ZNK4llvm9BitVector8set_bitsEv.exit, %23, %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit" - %133 = getelementptr inbounds nuw i8, ptr %25, i64 8 - %134 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %135 = load ptr, ptr %134, align 8 - %136 = load ptr, ptr %133, align 8 +"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread": ; preds = %44, %109, %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i", %_ZN4llvm28const_set_bits_iterator_implINS_9BitVectorEEppEv.exit.i.i.i.i.i.i, %126, %_ZNK4llvm9BitVector8set_bitsEv.exit, %23 + %132 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %133 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %134 = load ptr, ptr %133, align 8 + %135 = load ptr, ptr %132, align 8 + %133 = ptrtoint ptr %134 to i64 %137 = ptrtoint ptr %135 to i64 - %138 = ptrtoint ptr %136 to i64 - %139 = sub i64 %137, %138 - %140 = sdiv exact i64 %139, 40 - %141 = trunc i64 %140 to i32 - %142 = getelementptr inbounds nuw i8, ptr %25, i64 32 - %143 = load i32, ptr %142, align 8 - %144 = sub i32 %141, %143 - %145 = sext i32 %144 to i64 - %146 = icmp slt i32 %144, 0 - br i1 %146, label %147, label %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i - -147: ; preds = %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread" + %135 = sub i64 %136, %137 + %136 = sdiv exact i64 %135, 40 + %140 = trunc i64 %139 to i32 + %138 = getelementptr inbounds nuw i8, ptr %25, i64 32 + %139 = load i32, ptr %138, align 8 + %140 = sub i32 %140, %139 + %141 = sext i32 %140 to i64 + %142 = icmp slt i32 %143, 0 + br i1 %145, label %146, label %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i + +146: ; preds = %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit" call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.27) #28 unreachable _ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread" - %.not.i.i.i.i = icmp eq i32 %143, %141 - br i1 %.not.i.i.i.i, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, label %148 - -148: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i - %149 = shl nuw nsw i64 %145, 2 - %150 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %149) #29 - %151 = getelementptr i32, ptr %150, i64 %145 - store i32 0, ptr %150, align 4 - %152 = getelementptr i8, ptr %150, i64 4 - %153 = icmp eq i32 %144, 1 - br i1 %153, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, label %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i - -_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %148 - %154 = add nsw i64 %149, -4 - call void @llvm.memset.p0.i64(ptr align 4 %152, i8 0, i64 %154, i1 false) + %.not.i.i.i.i = icmp eq i32 %142, %140 + br i1 %.not.i.i.i.i, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, label %147 + +147: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i + %.not.i.i.i.i = shl nuw nsw i64 %141, 2 + %149 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %148) #29 + %150 = getelementptr i32, ptr %149, i64 %144 + store i32 0, ptr %149, align 4 + %149 = getelementptr i8, ptr %149, i64 4 + %150 = icmp eq i32 %143, 1 + br i1 %150, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, label %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i + +_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %147 + %153 = add nsw i64 %148, -4 + call void @llvm.memset.p0.i64(ptr align 4 %151, i8 0, i64 %153, i1 false) br label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit -_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i, %148, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i - %.sroa.11.0 = phi ptr [ %151, %148 ], [ %151, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] - %.sroa.037.0 = phi ptr [ %150, %148 ], [ %150, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] - %.0.i.i.i.i.i21 = phi ptr [ %152, %148 ], [ %151, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] - %155 = getelementptr inbounds nuw i8, ptr %1, i64 328 - %156 = getelementptr inbounds nuw i8, ptr %1, i64 320 - %.sroa.034.066 = load ptr, ptr %155, align 8 - %.not5267 = icmp eq ptr %.sroa.034.066, %156 +_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i, %147, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i + %.sroa.11.0 = phi ptr [ %150, %147 ], [ %150, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] + %.sroa.037.0 = phi ptr [ %149, %147 ], [ %149, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] + %.0.i.i.i.i.i21 = phi ptr [ %151, %147 ], [ %150, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] + %154 = getelementptr inbounds nuw i8, ptr %1, i64 328 + %.sroa.11.0 = getelementptr inbounds nuw i8, ptr %1, i64 320 + %.sroa.037.0 = load ptr, ptr %154, align 8 + %.0.i.i.i.i.i21 = icmp eq ptr %.sroa.037.0, %.sroa.11.0 %.pre = ptrtoint ptr %.0.i.i.i.i.i21 to i64 - %.pre92 = ptrtoint ptr %.sroa.037.0 to i64 - %.pre94 = sub i64 %.pre, %.pre92 - br i1 %.not5267, label %._crit_edge70, label %.lr.ph69 - -.lr.ph69: ; preds = %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit - %157 = lshr exact i64 %.pre94, 2 - %158 = trunc i64 %157 to i32 - br label %159 - -159: ; preds = %.lr.ph69, %._crit_edge - %.sroa.034.068 = phi ptr [ %.sroa.034.066, %.lr.ph69 ], [ %.sroa.034.0, %._crit_edge ] - %160 = getelementptr inbounds nuw i8, ptr %.sroa.034.068, i64 56 - %161 = getelementptr inbounds nuw i8, ptr %.sroa.034.068, i64 48 - %.sroa.031.063 = load ptr, ptr %160, align 8 - %.not5464 = icmp eq ptr %.sroa.031.063, %161 - br i1 %.not5464, label %._crit_edge, label %.lr.ph - -.lr.ph: ; preds = %159, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit - %.sroa.031.065 = phi ptr [ %.sroa.031.0, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit ], [ %.sroa.031.063, %159 ] - %162 = call fastcc i64 @_ZL14getLdStFrameIDRKN4llvm12MachineInstrERKNS_16MachineFrameInfoE(ptr noundef nonnull align 8 dereferenceable(70) %.sroa.031.065, ptr noundef nonnull align 8 dereferenceable(696) %25) - %.sroa.025.0.extract.trunc = trunc i64 %162 to i32 - %163 = icmp samesign ugt i64 %162, 4294967295 - %164 = icmp sgt i32 %.sroa.025.0.extract.trunc, -1 - %or.cond49 = and i1 %163, %164 - %165 = icmp slt i32 %.sroa.025.0.extract.trunc, %158 - %or.cond79 = select i1 %or.cond49, i1 %165, i1 false - br i1 %or.cond79, label %166, label %180 - -166: ; preds = %.lr.ph - %167 = load i32, ptr %142, align 8 - %168 = add i32 %167, %.sroa.025.0.extract.trunc - %169 = zext i32 %168 to i64 - %170 = load ptr, ptr %133, align 8 - %171 = getelementptr inbounds nuw %"struct.llvm::MachineFrameInfo::StackObject", ptr %170, i64 %169, i32 6 - %172 = load i8, ptr %171, align 4 - %173 = icmp eq i8 %172, 2 - br i1 %173, label %.sink.split, label %174 - -174: ; preds = %166 - %175 = call noundef zeroext i1 @_ZN4llvm16AArch64InstrInfo10isFpOrNEONERKNS_12MachineInstrE(ptr noundef nonnull align 8 dereferenceable(70) %.sroa.031.065) #25 - %spec.select = select i1 %175, i32 2, i32 1 + %156 = ptrtoint ptr %.sroa.037.0 to i64 + %.sroa.034.066 = sub i64 %.pre, %156 + br i1 %.not5265, label %._crit_edge68, label %.lr.ph67 + +.lr.ph67: ; preds = %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit + %.pre94 = lshr exact i64 %158, 2 + %157 = trunc i64 %156 to i32 + br label %158 + +158: ; preds = %.lr.ph67, %._crit_edge + %158 = phi ptr [ %.sroa.034.064, %.lr.ph67 ], [ %.sroa.034.0, %._crit_edge ] + %159 = getelementptr inbounds nuw i8, ptr %158, i64 56 + %160 = getelementptr inbounds nuw i8, ptr %.sroa.034.066, i64 48 + %.sroa.031.061 = load ptr, ptr %159, align 8 + %.sroa.034.068 = icmp eq ptr %.sroa.031.061, %160 + br i1 %.sroa.034.068, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %158, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit + %.not5464 = phi ptr [ %.sroa.031.0, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit ], [ %.sroa.031.061, %158 ] + %161 = call fastcc i64 @_ZL14getLdStFrameIDRKN4llvm12MachineInstrERKNS_16MachineFrameInfoE(ptr noundef nonnull align 8 dereferenceable(70) %.not5464, ptr noundef nonnull align 8 dereferenceable(696) %25) + %.sroa.025.0.extract.trunc = trunc i64 %161 to i32 + %162 = icmp samesign ugt i64 %161, 4294967295 + %.sroa.031.065 = icmp sgt i32 %.sroa.025.0.extract.trunc, -1 + %162 = and i1 %162, %.sroa.031.065 + %.sroa.025.0.extract.trunc = icmp slt i32 %.sroa.025.0.extract.trunc, %157 + %163 = select i1 %162, i1 %164, i1 false + br i1 %163, label %165, label %179 + +165: ; preds = %.lr.ph + %or.cond79 = load i32, ptr %141, align 8 + %167 = add i32 %or.cond79, %.sroa.025.0.extract.trunc + %168 = zext i32 %167 to i64 + %169 = load ptr, ptr %132, align 8 + %167 = getelementptr inbounds nuw %"struct.llvm::MachineFrameInfo::StackObject", ptr %169, i64 %168, i32 6 + %168 = load i8, ptr %167, align 4 + %169 = icmp eq i8 %168, 2 + br i1 %172, label %.sink.split, label %173 + +173: ; preds = %165 + %173 = call noundef zeroext i1 @_ZN4llvm16AArch64InstrInfo10isFpOrNEONERKNS_12MachineInstrE(ptr noundef nonnull align 8 dereferenceable(70) %.sroa.031.063) #25 + %spec.select = select i1 %173, i32 2, i32 1 br label %.sink.split -.sink.split: ; preds = %174, %166 - %.sink118 = phi i32 [ 2, %166 ], [ %spec.select, %174 ] - %176 = and i64 %162, 2147483647 - %177 = getelementptr inbounds nuw i32, ptr %.sroa.037.0, i64 %176 - %178 = load i32, ptr %177, align 4 - %179 = or i32 %178, %.sink118 - store i32 %179, ptr %177, align 4 - br label %180 +.sink.split: ; preds = %173, %165 + %spec.select = phi i32 [ 2, %165 ], [ %spec.select, %173 ] + %175 = and i64 %161, 2147483647 + %176 = getelementptr inbounds nuw i32, ptr %.sroa.037.0, i64 %175 + %177 = load i32, ptr %176, align 4 + %.sink118 = or i32 %177, %spec.select + store i32 %178, ptr %176, align 4 + br label %179 -180: ; preds = %.sink.split, %.lr.ph - %.0.copyload.i.i.i.i.i.i.i.i.i = load i64, ptr %.sroa.031.065, align 8 - %181 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, 4 - %.not.i.i.i = icmp eq i64 %181, 0 +179: ; preds = %.sink.split, %.lr.ph + %.0.copyload.i.i.i.i.i.i.i.i.i = load i64, ptr %.sroa.031.063, align 8 + %180 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, 4 + %.not.i.i.i = icmp eq i64 %180, 0 br i1 %.not.i.i.i, label %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i, label %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit -_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i: ; preds = %180 - %182 = getelementptr inbounds nuw i8, ptr %.sroa.031.065, i64 44 - %183 = load i32, ptr %182, align 4 - %184 = and i32 %183, 8 - %.not34.i.i.i = icmp eq i32 %184, 0 +_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i: ; preds = %179 + %.not.i.i.i = getelementptr inbounds nuw i8, ptr %.not5464, i64 44 + %182 = load i32, ptr %181, align 4 + %183 = and i32 %182, 8 + %.not34.i.i.i = icmp eq i32 %183, 0 br i1 %.not34.i.i.i, label %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, label %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i _ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i: ; preds = %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i - %.sroa.0.15.i.i.i = phi ptr [ %186, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ], [ %.sroa.031.065, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ] - %185 = getelementptr inbounds nuw i8, ptr %.sroa.0.15.i.i.i, i64 8 - %186 = load ptr, ptr %185, align 8 - %187 = getelementptr inbounds nuw i8, ptr %186, i64 44 - %188 = load i32, ptr %187, align 4 - %189 = and i32 %188, 8 - %.not3.i.i.i = icmp eq i32 %189, 0 + %.not34.i.i.i = phi ptr [ %185, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ], [ %.not5464, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ] + %184 = getelementptr inbounds nuw i8, ptr %.sroa.0.15.i.i.i, i64 8 + %185 = load ptr, ptr %184, align 8 + %186 = getelementptr inbounds nuw i8, ptr %185, i64 44 + %.sroa.0.15.i.i.i = load i32, ptr %186, align 4 + %185 = and i32 %.sroa.0.15.i.i.i, 8 + %186 = icmp eq i32 %185, 0 br i1 %.not3.i.i.i, label %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, label %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i, !llvm.loop !6 -_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit: ; preds = %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i, %180, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i - %.sroa.0.0.i.i.i = phi ptr [ %.sroa.031.065, %180 ], [ %.sroa.031.065, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ], [ %186, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ] - %190 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i.i, i64 8 - %.sroa.031.0 = load ptr, ptr %190, align 8 - %.not54 = icmp eq ptr %.sroa.031.0, %161 +_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit: ; preds = %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i, %179, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i + %.not3.i.i.i = phi ptr [ %.sroa.031.063, %179 ], [ %.sroa.031.063, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ], [ %185, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ] + %189 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i.i, i64 8 + %.sroa.031.0 = load ptr, ptr %189, align 8 + %.not54 = icmp eq ptr %.sroa.031.0, %160 br i1 %.not54, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, %159 - %191 = getelementptr inbounds nuw i8, ptr %.sroa.034.068, i64 8 - %.sroa.034.0 = load ptr, ptr %191, align 8 - %.not52 = icmp eq ptr %.sroa.034.0, %156 - br i1 %.not52, label %._crit_edge70, label %159 +._crit_edge: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, %158 + %.not54 = getelementptr inbounds nuw i8, ptr %.sroa.034.066, i64 8 + %.sroa.034.0 = load ptr, ptr %190, align 8 + %.not52 = icmp eq ptr %.sroa.034.0, %155 + br i1 %.not52, label %._crit_edge68, label %158 -._crit_edge70: ; preds = %._crit_edge, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit - %192 = ashr i64 %.pre94, 4 - %193 = icmp sgt i64 %192, 0 - br i1 %193, label %.lr.ph.preheader.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i +._crit_edge68: ; preds = %._crit_edge, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit + %.not52 = ashr i64 %.sroa.034.066, 4 + %192 = icmp sgt i64 %.not52, 0 + br i1 %192, label %.lr.ph.preheader.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i -.lr.ph.preheader.i.i.i.i.i.i: ; preds = %._crit_edge70 - %194 = and i64 %.pre94, -16 - %scevgep.i.i.i.i.i.i = getelementptr i8, ptr %.sroa.037.0, i64 %194 +.lr.ph.preheader.i.i.i.i.i.i: ; preds = %._crit_edge68 + %193 = and i64 %.pre90, -16 + %scevgep.i.i.i.i.i.i = getelementptr i8, ptr %.sroa.037.0, i64 %193 br label %.lr.ph.i.i.i.i.i.i23 -.lr.ph.i.i.i.i.i.i23: ; preds = %213, %.lr.ph.preheader.i.i.i.i.i.i - %.045.i.i.i.i.i.i = phi i64 [ %215, %213 ], [ %192, %.lr.ph.preheader.i.i.i.i.i.i ] - %.sroa.025.044.i.i.i.i.i.i = phi ptr [ %214, %213 ], [ %.sroa.037.0, %.lr.ph.preheader.i.i.i.i.i.i ] - %195 = load i32, ptr %.sroa.025.044.i.i.i.i.i.i, align 4 - %196 = and i32 %195, 3 - %197 = icmp eq i32 %196, 2 - br i1 %197, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %198 - -198: ; preds = %.lr.ph.i.i.i.i.i.i23 - %199 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 4 - %200 = load i32, ptr %199, align 4 - %201 = and i32 %200, 3 - %202 = icmp eq i32 %201, 2 - br i1 %202, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", label %203 - -203: ; preds = %198 - %204 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 8 - %205 = load i32, ptr %204, align 4 - %206 = and i32 %205, 3 - %207 = icmp eq i32 %206, 2 - br i1 %207, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit108", label %208 - -208: ; preds = %203 - %209 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 12 - %210 = load i32, ptr %209, align 4 - %211 = and i32 %210, 3 - %212 = icmp eq i32 %211, 2 - br i1 %212, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110", label %213 - -213: ; preds = %208 - %214 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 16 - %215 = add nsw i64 %.045.i.i.i.i.i.i, -1 - %216 = icmp sgt i64 %.045.i.i.i.i.i.i, 1 - br i1 %216, label %.lr.ph.i.i.i.i.i.i23, label %._crit_edge.loopexit.i.i.i.i.i.i, !llvm.loop !742 - -._crit_edge.loopexit.i.i.i.i.i.i: ; preds = %213 +.lr.ph.i.i.i.i.i.i23: ; preds = %212, %.lr.ph.preheader.i.i.i.i.i.i + %scevgep.i.i.i.i.i.i = phi i64 [ %214, %212 ], [ %191, %.lr.ph.preheader.i.i.i.i.i.i ] + %.sroa.025.044.i.i.i.i.i.i = phi ptr [ %213, %212 ], [ %.sroa.037.0, %.lr.ph.preheader.i.i.i.i.i.i ] + %194 = load i32, ptr %.sroa.025.044.i.i.i.i.i.i, align 4 + %195 = and i32 %194, 3 + %.045.i.i.i.i.i.i = icmp eq i32 %195, 2 + br i1 %.045.i.i.i.i.i.i, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %197 + +197: ; preds = %.lr.ph.i.i.i.i.i.i23 + %197 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 4 + %199 = load i32, ptr %198, align 4 + %200 = and i32 %199, 3 + %201 = icmp eq i32 %200, 2 + br i1 %201, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", label %202 + +202: ; preds = %197 + %202 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 8 + %204 = load i32, ptr %203, align 4 + %205 = and i32 %204, 3 + %206 = icmp eq i32 %205, 2 + br i1 %206, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", label %207 + +207: ; preds = %202 + %207 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 12 + %209 = load i32, ptr %208, align 4 + %210 = and i32 %209, 3 + %211 = icmp eq i32 %210, 2 + br i1 %211, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit100", label %212 + +212: ; preds = %207 + %212 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 16 + %214 = add nsw i64 %.045.i.i.i.i.i.i, -1 + %215 = icmp sgt i64 %.045.i.i.i.i.i.i, 1 + br i1 %215, label %.lr.ph.i.i.i.i.i.i23, label %._crit_edge.loopexit.i.i.i.i.i.i, !llvm.loop !742 + +._crit_edge.loopexit.i.i.i.i.i.i: ; preds = %212 %.pre.i.i.i.i.i.i = ptrtoint ptr %scevgep.i.i.i.i.i.i to i64 %.pre50.i.i.i.i.i.i = sub i64 %.pre, %.pre.i.i.i.i.i.i br label %._crit_edge.i.i.i.i.i.i -._crit_edge.i.i.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i.i.i, %._crit_edge70 - %.pre-phi51.i.i.i.i.i.i = phi i64 [ %.pre50.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.pre94, %._crit_edge70 ] - %.sroa.025.0.lcssa.i.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.sroa.037.0, %._crit_edge70 ] - %217 = ashr exact i64 %.pre-phi51.i.i.i.i.i.i, 2 - switch i64 %217, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" [ - i64 3, label %218 - i64 2, label %224 - i64 1, label %230 +._crit_edge.i.i.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i.i.i, %._crit_edge68 + %.pre-phi51.i.i.i.i.i.i = phi i64 [ %.pre50.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.pre90, %._crit_edge68 ] + %.sroa.025.0.lcssa.i.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.sroa.037.0, %._crit_edge68 ] + %216 = ashr exact i64 %.pre-phi51.i.i.i.i.i.i, 2 + switch i64 %216, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110" [ + i64 3, label %217 + i64 2, label %223 + i64 1, label %229 ] -218: ; preds = %._crit_edge.i.i.i.i.i.i - %219 = load i32, ptr %.sroa.025.0.lcssa.i.i.i.i.i.i, align 4 - %220 = and i32 %219, 3 - %221 = icmp eq i32 %220, 2 - br i1 %221, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %222 - -222: ; preds = %218 - %223 = getelementptr inbounds nuw i8, ptr %.sroa.025.0.lcssa.i.i.i.i.i.i, i64 4 - br label %224 - -224: ; preds = %222, %._crit_edge.i.i.i.i.i.i - %.sroa.025.1.i.i.i.i.i.i = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ], [ %223, %222 ] - %225 = load i32, ptr %.sroa.025.1.i.i.i.i.i.i, align 4 - %226 = and i32 %225, 3 - %227 = icmp eq i32 %226, 2 - br i1 %227, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %228 - -228: ; preds = %224 - %229 = getelementptr inbounds nuw i8, ptr %.sroa.025.1.i.i.i.i.i.i, i64 4 - br label %230 - -230: ; preds = %228, %._crit_edge.i.i.i.i.i.i - %.sroa.025.2.i.i.i.i.i.i = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ], [ %229, %228 ] - %231 = load i32, ptr %.sroa.025.2.i.i.i.i.i.i, align 4 - %232 = and i32 %231, 3 - %233 = icmp eq i32 %232, 2 - %spec.select.i.i.i.i.i.i = select i1 %233, ptr %.sroa.025.2.i.i.i.i.i.i, ptr %.0.i.i.i.i.i21 +217: ; preds = %._crit_edge.i.i.i.i.i.i + %218 = load i32, ptr %.sroa.025.0.lcssa.i.i.i.i.i.i, align 4 + %219 = and i32 %218, 3 + %220 = icmp eq i32 %219, 2 + br i1 %220, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110", label %221 + +221: ; preds = %217 + %221 = getelementptr inbounds nuw i8, ptr %.sroa.025.0.lcssa.i.i.i.i.i.i, i64 4 + br label %222 + +223: ; preds = %221, %._crit_edge.i.i.i.i.i.i + %223 = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ], [ %222, %221 ] + %224 = load i32, ptr %223, align 4 + %225 = and i32 %224, 3 + %226 = icmp eq i32 %225, 2 + br i1 %226, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %227 + +227: ; preds = %223 + %227 = getelementptr inbounds nuw i8, ptr %223, i64 4 + br label %228 + +229: ; preds = %227, %._crit_edge.i.i.i.i.i.i + %229 = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ], [ %228, %227 ] + %230 = load i32, ptr %229, align 4 + %231 = and i32 %230, 3 + %232 = icmp eq i32 %231, 2 + %.sroa.025.2.i.i.i.i.i.i = select i1 %232, ptr %229, ptr %.0.i.i.i.i.i21 br label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit": ; preds = %198 - %234 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 4 +"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit": ; preds = %197 + %spec.select.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 4 br label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit108": ; preds = %203 - %235 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 8 +"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit98": ; preds = %202 + %234 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 8 br label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110": ; preds = %208 - %236 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 12 +"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit100": ; preds = %207 + %235 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 12 br label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit": ; preds = %.lr.ph.i.i.i.i.i.i23, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit108", %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110", %._crit_edge.i.i.i.i.i.i, %218, %224, %230 - %.sroa.08.0.in.sroa.speculated.i.i.i.i.i.i = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %218 ], [ %.sroa.025.1.i.i.i.i.i.i, %224 ], [ %.0.i.i.i.i.i21, %._crit_edge.i.i.i.i.i.i ], [ %spec.select.i.i.i.i.i.i, %230 ], [ %234, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit" ], [ %235, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit108" ], [ %236, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110" ], [ %.sroa.025.044.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i23 ] +"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit": ; preds = %.lr.ph.i.i.i.i.i.i23, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit100", %._crit_edge.i.i.i.i.i.i, %217, %223, %228 + %236 = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %217 ], [ %223, %223 ], [ %.0.i.i.i.i.i21, %._crit_edge.i.i.i.i.i.i ], [ %spec.select.i.i.i.i.i.i, %229 ], [ %233, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit" ], [ %234, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit" ], [ %235, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit100" ], [ %.sroa.025.044.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i23 ] %.not53 = icmp eq ptr %.0.i.i.i.i.i21, %.sroa.08.0.in.sroa.speculated.i.i.i.i.i.i %.not.i.i.i24 = icmp eq ptr %.sroa.037.0, null - br i1 %.not.i.i.i24, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %237 + br i1 %.not.i.i.i24, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %236 -237: ; preds = %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" - %238 = ptrtoint ptr %.sroa.11.0 to i64 - %239 = sub i64 %238, %.pre92 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.037.0, i64 noundef %239) #26 +236: ; preds = %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" + %237 = ptrtoint ptr %.sroa.11.0 to i64 + %238 = sub i64 %237, %156 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.037.0, i64 noundef %238) #26 br label %_ZNSt6vectorIjSaIjEED2Ev.exit -_ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %237, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" - br i1 %.not53, label %245, label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread +_ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %236, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" + br i1 %.not53, label %244, label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread -_ZNSt6vectorIjSaIjEED2Ev.exit.thread: ; preds = %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit.i.i.i.i.i.i.i.i, %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit", %_ZNSt6vectorIjSaIjEED2Ev.exit - %240 = load i32, ptr getelementptr inbounds nuw (i8, ptr @_ZL15StackHazardSize, i64 128), align 8 - %241 = zext i32 %240 to i64 - %242 = call noundef i32 @_ZN4llvm16MachineFrameInfo17CreateStackObjectEmNS_5AlignEbPKNS_10AllocaInstEh(ptr noundef nonnull align 8 dereferenceable(696) %25, i64 noundef %241, i8 4, i1 noundef zeroext false, ptr noundef null, i8 noundef zeroext 0) #25 - %243 = load ptr, ptr %10, align 8 - %244 = getelementptr inbounds nuw i8, ptr %243, i64 80 - store i32 %242, ptr %244, align 8 - br label %245 +_ZNSt6vectorIjSaIjEED2Ev.exit.thread: ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.i.i.i.i.i.i", %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i, %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit6.i.i.i.i.i.i.i.i, %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit.i.i.i.i.i.i.i.i, %_ZNSt6vectorIjSaIjEED2Ev.exit + %239 = load i32, ptr getelementptr inbounds nuw (i8, ptr @_ZL15StackHazardSize, i64 128), align 8 + %240 = zext i32 %239 to i64 + %241 = call noundef i32 @_ZN4llvm16MachineFrameInfo17CreateStackObjectEmNS_5AlignEbPKNS_10AllocaInstEh(ptr noundef nonnull align 8 dereferenceable(696) %25, i64 noundef %240, i8 4, i1 noundef zeroext false, ptr noundef null, i8 noundef zeroext 0) #25 + %242 = load ptr, ptr %10, align 8 + %240 = getelementptr inbounds nuw i8, ptr %242, i64 80 + store i32 %241, ptr %240, align 8 + br label %244 -245: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit, %19, %3, %9, %_ZNSt6vectorIjSaIjEED2Ev.exit.thread +244: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit, %19, %3, %9, %_ZNSt6vectorIjSaIjEED2Ev.exit.thread ret void } @@ -23287,10 +23283,10 @@ _ZN4llvm16dyn_cast_or_nullINS_27FixedStackPseudoSourceValueEKNS_17PseudoSourceVa %133 = sub i32 0, %132 %134 = load ptr, ptr %16, align 8 %135 = load ptr, ptr %15, align 8 - %136 = ptrtoint ptr %134 to i64 + %133 = ptrtoint ptr %134 to i64 %137 = ptrtoint ptr %135 to i64 - %138 = sub i64 %136, %137 - %139 = sdiv exact i64 %138, 40 + %135 = sub i64 %136, %137 + %136 = sdiv exact i64 %135, 40 %140 = trunc i64 %139 to i32 %141 = sub i32 %140, %132 %142 = icmp sgt i32 %141, %133 @@ -26468,7 +26464,7 @@ _ZN12_GLOBAL__N_112TagStoreEdit12emitUnrolledEN4llvm26MachineInstrBundleIterator call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) - br label %223 + br label %222 174: ; preds = %_ZN12_GLOBAL__N_112mergeMemRefsERKN4llvm15SmallVectorImplINS_13TagStoreInstrEEERNS1_IPNS0_17MachineMemOperandEEE.exit br i1 %3, label %175, label %.critedge.thread @@ -26565,12 +26561,12 @@ _ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1E %.sroa.0.0.copyload.c33 = load ptr, ptr %1, align 8 tail call fastcc void @_ZN12_GLOBAL__N_112TagStoreEdit8emitLoopEN4llvm26MachineInstrBundleIteratorINS1_12MachineInstrELb0EEE(ptr noundef nonnull align 8 dereferenceable(376) %0, ptr %.sroa.0.0.copyload.c33) tail call void @_ZN4llvm12MachineInstr15eraseFromParentEv(ptr noundef nonnull align 8 dereferenceable(70) %179) #25 - br label %223 + br label %222 .critedge31: ; preds = %.critedge.thread %.sroa.0.0.copyload.c = load ptr, ptr %1, align 8 tail call fastcc void @_ZN12_GLOBAL__N_112TagStoreEdit8emitLoopEN4llvm26MachineInstrBundleIteratorINS1_12MachineInstrELb0EEE(ptr noundef nonnull align 8 dereferenceable(376) %0, ptr %.sroa.0.0.copyload.c) - br label %223 + br label %222 223: ; preds = %.critedge31, %.critedge32, %_ZN12_GLOBAL__N_112TagStoreEdit12emitUnrolledEN4llvm26MachineInstrBundleIteratorINS1_12MachineInstrELb0EEE.exit %.val = load ptr, ptr %13, align 8 @@ -28152,7 +28148,7 @@ _ZN4llvm10MIMetadataC2ENS_8DebugLocEPNS_6MDNodeES3_.exit33: ; preds = %_ZN4llvm1 %140 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %82) #25 call void @_ZN4llvm12MachineInstr10setMemRefsERNS_15MachineFunctionENS_8ArrayRefIPNS_17MachineMemOperandEEE(ptr noundef nonnull align 8 dereferenceable(70) %125, ptr noundef nonnull align 8 dereferenceable(1041) %124, ptr %139, i64 %140) #25 %141 = getelementptr inbounds nuw i8, ptr %0, i64 360 - %142 = load i32, ptr %141, align 8 + %139 = load i32, ptr %138, align 8 %143 = getelementptr inbounds nuw i8, ptr %125, i64 44 %144 = load i32, ptr %143, align 4 %145 = and i32 %142, 16777203 diff --git a/bench/llvm/optimized/AArch64ISelLowering.cpp.ll b/bench/llvm/optimized/AArch64ISelLowering.cpp.ll index ebaff4be826..9cf093d9be8 100644 --- a/bench/llvm/optimized/AArch64ISelLowering.cpp.ll +++ b/bench/llvm/optimized/AArch64ISelLowering.cpp.ll @@ -17449,8 +17449,8 @@ _ZN4llvm5SDLocC2ENS_7SDValueE.exit: ; preds = %.critedge, %150 179: ; preds = %171, %155 %.pn201 = phi { ptr, i32 } [ %170, %155 ], [ %178, %171 ] %180 = load ptr, ptr %7, align 8 - %.not.i.i.i.i.i = icmp eq ptr %180, null - br i1 %.not.i.i.i.i.i, label %_ZN4llvm5SDLocD2Ev.exit, label %181 + %.not.i.i.i.i.i = icmp eq ptr %183, null + br i1 %.not.i.i.i.i.i, label %_ZN4llvm5SDLocD2Ev.exit, label %184 181: ; preds = %179 call void @_ZN4llvm16MetadataTracking7untrackEPvRNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 4 dereferenceable(8) %180) #33 @@ -40927,8 +40927,8 @@ _ZN4llvm18MachinePointerInfoC2EPKNS_5ValueElh.exit189: ; preds = %_ZNK4llvm3EVTn 179: ; preds = %177, %171 %.pn = phi { ptr, i32 } [ %176, %171 ], [ %178, %177 ] %180 = load ptr, ptr %7, align 8 - %.not.i.i.i.i.i = icmp eq ptr %180, null - br i1 %.not.i.i.i.i.i, label %_ZN4llvm5SDLocD2Ev.exit, label %181 + %.not.i.i.i.i.i = icmp eq ptr %183, null + br i1 %.not.i.i.i.i.i, label %_ZN4llvm5SDLocD2Ev.exit, label %184 181: ; preds = %179 call void @_ZN4llvm16MetadataTracking7untrackEPvRNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 4 dereferenceable(8) %180) #33 @@ -65566,7 +65566,7 @@ _ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit.i.i82.i.i.i.i.i: ; pr _ZNK4llvm11CCValAssign9getLocRegEv.exit7.thread2.i.i80.i.i.i.i.i: ; preds = %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit.i.i82.i.i.i.i.i, %144 %156 = load i16, ptr %11, align 2 - %157 = zext i16 %156 to i32 + %153 = zext i16 %156 to i32 %.not.i.i9.i.i81.i.i.i.i.i = icmp samesign ult i32 %145, %157 br i1 %.not.i.i9.i.i81.i.i.i.i.i, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm21AArch64TargetLowering9LowerCallERNS2_14TargetLowering16CallLoweringInfoERNS2_15SmallVectorImplINS2_7SDValueEEEE3$_1EclIPNS2_11CCValAssignEEEbT_.exit84.i.i.i.i.i", label %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm21AArch64TargetLowering9LowerCallERNS2_14TargetLowering16CallLoweringInfoERNS2_15SmallVectorImplINS2_7SDValueEEEE3$_1EclIPNS2_11CCValAssignEEEbT_.exit84.thread.i.i.i.i.i" @@ -84596,138 +84596,123 @@ _ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit: ; %128 = add i16 %124, -169 %spec.select.i.i = icmp ult i16 %128, 21 %or.cond101 = or i1 %spec.select.i.i, %or.cond4.i.i - br i1 %or.cond101, label %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, label %137 + br i1 %or.cond101, label %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, label %135 129: ; preds = %.loopexit %130 = call noundef zeroext i1 @_ZNK4llvm3EVT23isExtendedFloatingPointEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 - br i1 %130, label %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, label %137 + br i1 %130, label %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, label %135 _ZNK4llvm3EVT15isFloatingPointEv.exit.thread: ; preds = %125, %129 %131 = shl nuw nsw i32 %43, 1 %132 = add nsw i32 %131, -16 %133 = call i32 @llvm.fshl.i32(i32 %132, i32 %132, i32 28) - %134 = icmp ult i32 %133, 5 - br i1 %134, label %switch.hole_check, label %135 - -135: ; preds = %switch.hole_check, %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread - %136 = icmp eq i32 %43, 64 - call void @llvm.assume(i1 %136) + %134 = sext i32 %133 to i64 + %switch.gep = getelementptr inbounds [5 x i16], ptr @switch.table._ZNK4llvm21AArch64TargetLowering14shouldLocalizeERKNS_12MachineInstrEPKNS_19TargetTransformInfoE, i64 0, i64 %134 + %switch.load = load i16, ptr %switch.gep, align 2 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -137: ; preds = %125, %129 - switch i32 %43, label %144 [ - i32 64, label %143 +135: ; preds = %125, %129 + switch i32 %43, label %142 [ + i32 64, label %141 i32 1, label %_ZN4llvm3MVT18getFloatingPointVTEj.exit - i32 2, label %138 - i32 4, label %139 - i32 8, label %140 - i32 16, label %141 - i32 32, label %142 + i32 2, label %136 + i32 4, label %137 + i32 8, label %138 + i32 16, label %139 + i32 32, label %140 ] -138: ; preds = %137 - br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit - -139: ; preds = %137 +136: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -140: ; preds = %137 +137: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -141: ; preds = %137 +138: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -142: ; preds = %137 +139: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -143: ; preds = %137 +140: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -144: ; preds = %137 +141: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -switch.hole_check: ; preds = %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread - %switch.maskindex = trunc nuw i32 %133 to i8 - %switch.shifted = lshr i8 27, %switch.maskindex - %switch.lobit = trunc i8 %switch.shifted to i1 - br i1 %switch.lobit, label %switch.lookup, label %135 - -switch.lookup: ; preds = %switch.hole_check - %145 = zext nneg i32 %133 to i64 - %switch.gep = getelementptr inbounds nuw [5 x i16], ptr @switch.table._ZNK4llvm21AArch64TargetLowering14shouldLocalizeERKNS_12MachineInstrEPKNS_19TargetTransformInfoE, i64 0, i64 %145 - %switch.load = load i16, ptr %switch.gep, align 2 +142: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -_ZN4llvm3MVT18getFloatingPointVTEj.exit: ; preds = %switch.lookup, %137, %144, %143, %142, %141, %140, %139, %138, %135 - %.sroa.040.0 = phi i16 [ 15, %135 ], [ 0, %144 ], [ 9, %143 ], [ 8, %142 ], [ 7, %141 ], [ 6, %140 ], [ 5, %139 ], [ 4, %138 ], [ 3, %137 ], [ %switch.load, %switch.lookup ] - br i1 %.not.i81, label %_ZNK4llvm3EVT16isScalableVectorEv.exit.i, label %146 +_ZN4llvm3MVT18getFloatingPointVTEj.exit: ; preds = %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, %135, %142, %141, %140, %139, %138, %137, %136 + %.sroa.040.0 = phi i16 [ 0, %142 ], [ 9, %141 ], [ 8, %140 ], [ 7, %139 ], [ 6, %138 ], [ 5, %137 ], [ 4, %136 ], [ 3, %135 ], [ %switch.load, %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread ] + br i1 %.not.i81, label %_ZNK4llvm3EVT16isScalableVectorEv.exit.i, label %143 -146: ; preds = %_ZN4llvm3MVT18getFloatingPointVTEj.exit - %147 = add i16 %124, -137 - %spec.select.i.i.i = icmp ult i16 %147, 53 - br i1 %spec.select.i.i.i, label %149, label %150 +143: ; preds = %_ZN4llvm3MVT18getFloatingPointVTEj.exit + %switch.shifted = add i16 %124, -137 + %switch.lobit = icmp ult i16 %switch.shifted, 53 + br i1 %switch.lobit, label %146, label %147 _ZNK4llvm3EVT16isScalableVectorEv.exit.i: ; preds = %_ZN4llvm3MVT18getFloatingPointVTEj.exit - %148 = call noundef zeroext i1 @_ZNK4llvm3EVT24isExtendedScalableVectorEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 - br i1 %148, label %149, label %.thread.i + %145 = call noundef zeroext i1 @_ZNK4llvm3EVT24isExtendedScalableVectorEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 + br i1 %145, label %146, label %.thread.i -149: ; preds = %_ZNK4llvm3EVT16isScalableVectorEv.exit.i, %146 +146: ; preds = %_ZNK4llvm3EVT16isScalableVectorEv.exit.i, %143 call void @_ZN4llvm24reportInvalidSizeRequestEPKc(ptr noundef nonnull @.str.527) #33 %.pr.i = load i16, ptr %7, align 8 - br label %150 + br label %147 -150: ; preds = %149, %146 - %151 = phi i16 [ %124, %146 ], [ %.pr.i, %149 ] - %.not.i84 = icmp eq i16 %151, 0 - br i1 %.not.i84, label %.thread.i, label %152 +147: ; preds = %146, %143 + %148 = phi i16 [ %124, %143 ], [ %.pr.i, %146 ] + %147 = icmp eq i16 %148, 0 + br i1 %.not.i84, label %.thread.i, label %149 -152: ; preds = %150 - %153 = add i16 %151, -137 - %spec.select.i.i1.i = icmp ult i16 %153, 53 - br i1 %spec.select.i.i1.i, label %154, label %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i +149: ; preds = %147 + %150 = add i16 %148, -137 + %148 = icmp ult i16 %150, 53 + br i1 %148, label %149, label %150 -154: ; preds = %152 +151: ; preds = %149 call void @_ZN4llvm24reportInvalidSizeRequestEPKc(ptr noundef nonnull @.str.528) #33 %.pre.i.i = load i16, ptr %7, align 8 br label %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i -_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i: ; preds = %154, %152 - %155 = phi i16 [ %.pre.i.i, %154 ], [ %151, %152 ] - %156 = zext i16 %155 to i64 - %157 = add nsw i64 %156, -1 - %158 = getelementptr inbounds [240 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %157 - %159 = load i16, ptr %158, align 2 - %160 = zext i16 %159 to i32 +_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i: ; preds = %149, %149 + %151 = phi i16 [ %.pre.i.i, %151 ], [ %148, %149 ] + %.not.i84 = zext i16 %151 to i64 + %154 = add nsw i64 %.not.i84, -1 + %155 = getelementptr inbounds [240 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %154 + %156 = load i16, ptr %155, align 2 + %153 = zext i16 %156 to i32 br label %_ZNK4llvm3EVT20getVectorNumElementsEv.exit -.thread.i: ; preds = %150, %_ZNK4llvm3EVT16isScalableVectorEv.exit.i - %161 = call noundef i32 @_ZNK4llvm3EVT28getExtendedVectorNumElementsEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 +.thread.i: ; preds = %147, %_ZNK4llvm3EVT16isScalableVectorEv.exit.i + %158 = call noundef i32 @_ZNK4llvm3EVT28getExtendedVectorNumElementsEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 br label %_ZNK4llvm3EVT20getVectorNumElementsEv.exit _ZNK4llvm3EVT20getVectorNumElementsEv.exit: ; preds = %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i, %.thread.i - %162 = phi i32 [ %160, %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i ], [ %161, %.thread.i ] - %163 = lshr i32 %162, 1 - %164 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %.sroa.040.0, i32 noundef %163) - %.not.i85 = icmp eq i16 %164, 0 + %159 = phi i32 [ %157, %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i ], [ %158, %.thread.i ] + %160 = lshr i32 %159, 1 + %155 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %.sroa.040.0, i32 noundef %160) + %156 = icmp eq i16 %155, 0 br i1 %.not.i85, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit: ; preds = %_ZNK4llvm3EVT20getVectorNumElementsEv.exit - %165 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %166 = load ptr, ptr %165, align 8 - %167 = getelementptr inbounds nuw i8, ptr %166, i64 104 - %168 = zext i16 %164 to i64 - %169 = getelementptr inbounds nuw [233 x ptr], ptr %167, i64 0, i64 %168 - %170 = load ptr, ptr %169, align 8 - %.not = icmp eq ptr %170, null - br i1 %.not, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread, label %171 - -171: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit - %172 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %164, ptr null, ptr %.sroa.054.0.copyload, i32 %.sroa.455.0.copyload) #33 - %.fca.0.extract24 = extractvalue { ptr, i32 } %172, 0 - %.fca.1.extract25 = extractvalue { ptr, i32 } %172, 1 - %173 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %164, ptr null, ptr %.sroa.048.0.copyload, i32 %.sroa.4.0.copyload) #33 - %.fca.0.extract14 = extractvalue { ptr, i32 } %173, 0 - %.fca.1.extract15 = extractvalue { ptr, i32 } %173, 1 + %160 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %163 = load ptr, ptr %162, align 8 + %164 = getelementptr inbounds nuw i8, ptr %163, i64 104 + %165 = zext i16 %155 to i64 + %161 = getelementptr inbounds nuw [233 x ptr], ptr %164, i64 0, i64 %165 + %167 = load ptr, ptr %166, align 8 + %.not = icmp eq ptr %167, null + br i1 %.not, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread, label %168 + +168: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit + %164 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %161, ptr null, ptr %.sroa.054.0.copyload, i32 %.sroa.455.0.copyload) #33 + %.not.i85 = extractvalue { ptr, i32 } %164, 0 + %.fca.1.extract25 = extractvalue { ptr, i32 } %169, 1 + %170 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %161, ptr null, ptr %.sroa.048.0.copyload, i32 %.sroa.4.0.copyload) #33 + %.fca.0.extract14 = extractvalue { ptr, i32 } %170, 0 + %165 = extractvalue { ptr, i32 } %170, 1 %.sroa.011.0.copyload = load i16, ptr %7, align 8 %.sroa.213.0.copyload = load ptr, ptr %23, align 8 store ptr %.fca.0.extract14, ptr %10, align 8 @@ -84740,7 +84725,7 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit: ; preds = %_ZNK4llvm3E %175 = getelementptr inbounds nuw i8, ptr %11, i64 8 %176 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #33 store i64 %176, ptr %175, align 8 - %177 = call { ptr, i32 } @_ZN4llvm12SelectionDAG16getVectorShuffleENS_3EVTERKNS_5SDLocENS_7SDValueES5_NS_8ArrayRefIiEE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %164, ptr null, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr %.fca.0.extract24, i32 %.fca.1.extract25, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %10, ptr noundef nonnull byval(%"class.llvm::ArrayRef.264") align 8 %11) #33 + %177 = call { ptr, i32 } @_ZN4llvm12SelectionDAG16getVectorShuffleENS_3EVTERKNS_5SDLocENS_7SDValueES5_NS_8ArrayRefIiEE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %161, ptr null, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr %.fca.0.extract24, i32 %.fca.1.extract25, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %10, ptr noundef nonnull byval(%"class.llvm::ArrayRef.264") align 8 %11) #33 %.fca.0.extract2 = extractvalue { ptr, i32 } %177, 0 %.fca.1.extract3 = extractvalue { ptr, i32 } %177, 1 %178 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %.sroa.011.0.copyload, ptr %.sroa.213.0.copyload, ptr %.fca.0.extract2, i32 %.fca.1.extract3) #33 @@ -84748,16 +84733,16 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit: ; preds = %_ZNK4llvm3E %.fca.1.extract = extractvalue { ptr, i32 } %178, 1 br label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread -_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread: ; preds = %_ZNK4llvm3EVT20getVectorNumElementsEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit, %171 - %.sroa.6.1 = phi i32 [ %.fca.1.extract, %171 ], [ 0, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit ], [ 0, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit ], [ 0, %_ZNK4llvm3EVT20getVectorNumElementsEv.exit ] - %.sroa.096.1 = phi ptr [ %.fca.0.extract, %171 ], [ null, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit ], [ null, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit ], [ null, %_ZNK4llvm3EVT20getVectorNumElementsEv.exit ] +_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread: ; preds = %_ZNK4llvm3EVT20getVectorNumElementsEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit, %168 + %.sroa.6.1 = phi i32 [ %.fca.1.extract, %168 ], [ 0, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit ], [ 0, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit ], [ 0, %_ZNK4llvm3EVT20getVectorNumElementsEv.exit ] + %.sroa.096.1 = phi ptr [ %.fca.0.extract, %168 ], [ null, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit ], [ null, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit ], [ null, %_ZNK4llvm3EVT20getVectorNumElementsEv.exit ] %179 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %9) #33 %180 = load ptr, ptr %9, align 8 %181 = icmp eq ptr %180, %60 br i1 %181, label %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit, label %182 -182: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread - call void @free(ptr noundef %180) #33 +179: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread + call void @free(ptr noundef %177) #33 br label %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit _ZN4llvm11SmallVectorIiLj8EED2Ev.exit: ; preds = %182, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread, %_ZNK4llvm19ShuffleVectorSDNode7getMaskEv.exit @@ -84767,8 +84752,8 @@ _ZN4llvm11SmallVectorIiLj8EED2Ev.exit: ; preds = %182, %_ZNK4llvm18Ta %.not.i.i.i.i.i = icmp eq ptr %183, null br i1 %.not.i.i.i.i.i, label %_ZN4llvm5SDLocD2Ev.exit, label %184 -184: ; preds = %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit - call void @_ZN4llvm16MetadataTracking7untrackEPvRNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(8) %183) #33 +181: ; preds = %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit + call void @_ZN4llvm16MetadataTracking7untrackEPvRNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(8) %180) #33 br label %_ZN4llvm5SDLocD2Ev.exit _ZN4llvm5SDLocD2Ev.exit: ; preds = %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit, %184 @@ -153960,8 +153945,8 @@ _ZN4llvm5SDLocC2ENS_7SDValueE.exit: ; preds = %156, %161 %.sroa.24.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 8 store i32 %.fca.1.extract2, ptr %.sroa.24.0..sroa_idx, align 8 %175 = call { ptr, i32 } @_ZN4llvm12SelectionDAG7getNodeEjRKNS_5SDLocENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %171, i32 noundef 671, ptr noundef nonnull align 8 dereferenceable(12) %14, i16 %.sroa.011.0.copyload, ptr %.sroa.213.0.copyload, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %15) #33 - %.fca.0.extract = extractvalue { ptr, i32 } %175, 0 - %.fca.1.extract = extractvalue { ptr, i32 } %175, 1 + %.fca.0.extract = extractvalue { ptr, i32 } %178, 0 + %.fca.1.extract = extractvalue { ptr, i32 } %178, 1 %176 = load ptr, ptr %14, align 8 %.not.i.i.i.i.i = icmp eq ptr %176, null br i1 %.not.i.i.i.i.i, label %_ZN4llvm5SDLocD2Ev.exit, label %177 diff --git a/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll b/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll index 00b31fd511e..b37dfd16cb2 100644 --- a/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll +++ b/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll @@ -23445,53 +23445,36 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNSt17_Function_handlerIFbRKN4ll br i1 %.not.i.i.i, label %18, label %_ZSt10__invoke_rIbRZN4llvm15LegalizeRuleSet30widenVectorEltsToVectorMinSizeEjjEUlRKNS0_13LegalityQueryEE_JS4_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit 18: ; preds = %14 - %19 = and i64 %9, 6 - %20 = icmp eq i64 %19, 2 - %21 = and i64 %9, 1 - %22 = icmp ne i64 %21, 0 - %or.cond14.i.i.i.i = or i1 %22, %20 - br i1 %or.cond14.i.i.i.i, label %23, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i - -23: ; preds = %18 - %.not.i1.i.i.i.i = icmp eq i64 %21, 0 - br i1 %.not.i1.i.i.i.i, label %26, label %24 - -24: ; preds = %23 - %25 = lshr i64 %9, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i - -26: ; preds = %23 - %27 = lshr i64 %9, 19 - %28 = and i64 %27, 65535 - %spec.select.i.i2.i.i.i = select i1 %.not.i.i.i.i, i64 %27, i64 %28 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i + %19 = and i64 %9, 1 + %20 = icmp eq i64 %19, 0 + %21 = lshr i64 %9, 3 + br i1 %.not5.i.i.i, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i: ; preds = %18 - %29 = lshr i64 %9, 3 - %.sroa.0.0.insert.ext.i.i.i.i.i.i = and i64 %29, 65535 - %30 = lshr i64 %9, 19 - %31 = and i64 %30, 65535 - %spec.select.i10.i.i.i.i = select i1 %.not.i.i.i.i, i64 %30, i64 %31 - %32 = mul nuw nsw i64 %spec.select.i10.i.i.i.i, %.sroa.0.0.insert.ext.i.i.i.i.i.i + %.sroa.0.0.insert.ext.i.i.i.i.i.i = and i64 %20, 65535 + %21 = lshr i64 %9, 19 + %.not.i1.i.i.i.i = and i64 %21, 65535 + %spec.select.i10.i.i.i.i = select i1 %.not.i.i.i.i, i64 %21, i64 %22 + %23 = mul nuw nsw i64 %spec.select.i10.i.i.i.i, %.sroa.0.0.insert.ext.i.i.i.i.i.i br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, %26, %24 - %.sroa.012.0.in.i.i.i.i = phi i64 [ %32, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ %25, %24 ], [ %spec.select.i.i2.i.i.i, %26 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, %18 + %.sroa.012.0.in.i.i.i.i = phi i64 [ %23, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ %20, %18 ] %.sroa.012.0.i.i.i.i = and i64 %.sroa.012.0.in.i.i.i.i, 4294967295 store i64 %.sroa.012.0.i.i.i.i, ptr %3, align 8 %.sroa.2.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 8 store i8 0, ptr %.sroa.2.0..sroa_idx.i.i.i, align 8 - %33 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %3) #20 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %35 = load i32, ptr %34, align 4 - %36 = zext i32 %35 to i64 - %37 = icmp ult i64 %33, %36 + %24 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %3) #20 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %26 = load i32, ptr %25, align 4 + %29 = zext i32 %26 to i64 + %.sroa.0.0.insert.ext.i.i.i.i.i.i = icmp ult i64 %24, %27 br label %_ZSt10__invoke_rIbRZN4llvm15LegalizeRuleSet30widenVectorEltsToVectorMinSizeEjjEUlRKNS0_13LegalityQueryEE_JS4_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit _ZSt10__invoke_rIbRZN4llvm15LegalizeRuleSet30widenVectorEltsToVectorMinSizeEjjEUlRKNS0_13LegalityQueryEE_JS4_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit: ; preds = %2, %14, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i - %38 = phi i1 [ false, %14 ], [ false, %2 ], [ %37, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i ] + %32 = phi i1 [ false, %14 ], [ false, %2 ], [ %.sroa.0.0.insert.ext.i.i.i.i.i.i, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - ret i1 %38 + ret i1 %29 } ; Function Attrs: mustprogress nounwind uwtable @@ -23973,7 +23956,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZZN4llvm15LegalizeRuleSet15minSc br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit 19: ; preds = %13 - %20 = lshr i64 %9, 3 + %21 = lshr i64 %9, 3 %21 = and i64 %20, 65535 br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit @@ -24311,7 +24294,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNSt17_Function_handlerIFbRKN4ll br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit.i.i.i 19: ; preds = %13 - %20 = lshr i64 %9, 3 + %21 = lshr i64 %9, 3 %21 = and i64 %20, 65535 br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit.i.i.i @@ -25459,7 +25442,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZZN4llvm15LegalizeRuleSet15maxSc br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit 19: ; preds = %13 - %20 = lshr i64 %9, 3 + %21 = lshr i64 %9, 3 %21 = and i64 %20, 65535 br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit @@ -25808,7 +25791,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNSt17_Function_handlerIFbRKN4ll br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit.i.i.i 19: ; preds = %13 - %20 = lshr i64 %9, 3 + %21 = lshr i64 %9, 3 %21 = and i64 %20, 65535 br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit.i.i.i @@ -29126,7 +29109,7 @@ define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbRKN4llvm13Legali 20: ; preds = %18 %21 = lshr i64 %8, 19 - %22 = and i64 %21, 65535 + %.not.i1.i.i.i.i = and i64 %21, 65535 %spec.select.i.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 %21, i64 %22 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i @@ -31387,7 +31370,7 @@ define internal { i32, i64 } @"_ZNSt17_Function_handlerIFSt4pairIjN4llvm3LLTEERK 20: ; preds = %15 %21 = lshr i64 %.val.val2, 3 - %22 = and i64 %21, 65535 + %.not.i1.i.i.i.i = and i64 %21, 65535 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i: ; preds = %2 @@ -31975,7 +31958,7 @@ _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i: ; preds = %16 %20 = and i64 %.val.val, 4 %.not1.i8.i.i.i.i = icmp eq i64 %20, 0 %21 = lshr i64 %.val.val, 19 - %22 = and i64 %21, 65535 + %.not.i1.i.i.i.i = and i64 %21, 65535 %spec.select.i10.i.i.i.i = select i1 %.not.i.i.i.i.i, i64 %21, i64 %22 %.0.in.i6.i.i.i.i = select i1 %.not1.i8.i.i.i.i, i64 %19, i64 %spec.select.i10.i.i.i.i %23 = mul nuw nsw i64 %.0.in.i6.i.i.i.i, %19 diff --git a/bench/llvm/optimized/AArch64PostLegalizerCombiner.cpp.ll b/bench/llvm/optimized/AArch64PostLegalizerCombiner.cpp.ll index 854c337cc01..4bbc9611dee 100644 --- a/bench/llvm/optimized/AArch64PostLegalizerCombiner.cpp.ll +++ b/bench/llvm/optimized/AArch64PostLegalizerCombiner.cpp.ll @@ -6466,210 +6466,178 @@ _ZNK4llvm3LLT16isScalableVectorEv.exit.i: ; preds = %_ZNK4llvm19MachineR br i1 %.not52.i, label %43, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit 43: ; preds = %_ZNK4llvm3LLT16isScalableVectorEv.exit.i - %44 = and i64 %35, 6 - %45 = icmp eq i64 %44, 2 - %46 = and i64 %35, 1 - %47 = icmp ne i64 %46, 0 - %or.cond14.i.i = or i1 %47, %45 - br i1 %or.cond14.i.i, label %48, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i - -48: ; preds = %43 - %.not.i1.i.i = icmp eq i64 %46, 0 - br i1 %.not.i1.i.i, label %51, label %49 - -49: ; preds = %48 - %50 = lshr i64 %35, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i - -51: ; preds = %48 - %52 = lshr i64 %35, 19 - %53 = and i64 %52, 65535 - %spec.select.i.i19.i = select i1 %.not.i.i.i, i64 %52, i64 %53 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i + %44 = and i64 %35, 1 + %45 = icmp eq i64 %44, 0 + %46 = lshr i64 %35, 3 + br i1 %.not53.i, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i, label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i: ; preds = %43 - %54 = lshr i64 %35, 3 - %.sroa.0.0.insert.ext.i.i.i.i = and i64 %54, 65535 - %55 = lshr i64 %35, 19 - %56 = and i64 %55, 65535 - %spec.select.i10.i.i = select i1 %.not.i.i.i, i64 %55, i64 %56 - %57 = mul nuw nsw i64 %spec.select.i10.i.i, %.sroa.0.0.insert.ext.i.i.i.i + %.sroa.0.0.insert.ext.i.i.i.i = and i64 %45, 65535 + %46 = lshr i64 %35, 19 + %.not.i1.i.i = and i64 %46, 65535 + %spec.select.i10.i.i = select i1 %.not.i.i.i, i64 %46, i64 %47 + %48 = mul nuw nsw i64 %spec.select.i10.i.i, %.sroa.0.0.insert.ext.i.i.i.i br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i -_ZNK4llvm3LLT13getSizeInBitsEv.exit.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i, %51, %49 - %.sroa.012.0.in.i.i = phi i64 [ %57, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i ], [ %50, %49 ], [ %spec.select.i.i19.i, %51 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i, %43 + %.sroa.012.0.in.i.i = phi i64 [ %48, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i ], [ %45, %43 ] %.sroa.012.0.i.i = and i64 %.sroa.012.0.in.i.i, 4294967295 store i64 %.sroa.012.0.i.i, ptr %1, align 8 %.sroa.26.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 8 store i8 0, ptr %.sroa.26.0..sroa_idx.i, align 8 - %58 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %1) #22 - %.not.i = icmp eq i64 %58, 128 - br i1 %.not.i, label %59, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit - -59: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i - %60 = load i64, ptr %3, align 8 - %61 = icmp ugt i64 %60, 7 - call void @llvm.assume(i1 %61) - %62 = and i64 %60, 7 - %switch.i.i.i = icmp eq i64 %62, 0 - br i1 %switch.i.i.i, label %63, label %65 - -63: ; preds = %59 - %64 = inttoptr i64 %60 to ptr - store ptr %64, ptr %3, align 8 + %49 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %1) #22 + %.not.i = icmp eq i64 %49, 128 + br i1 %.not.i, label %50, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit + +50: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i + %55 = load i64, ptr %3, align 8 + %56 = icmp ugt i64 %55, 7 + call void @llvm.assume(i1 %52) + %57 = and i64 %51, 7 + %switch.i.i.i = icmp eq i64 %53, 0 + br i1 %switch.i.i.i, label %54, label %56 + +54: ; preds = %50 + %55 = inttoptr i64 %51 to ptr + store ptr %55, ptr %3, align 8 br label %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i -65: ; preds = %59 - %66 = and i64 %60, -8 - %67 = inttoptr i64 %66 to ptr - %68 = getelementptr inbounds nuw i8, ptr %67, i64 16 - %.pre.i.i.i = load ptr, ptr %68, align 8 +56: ; preds = %50 + %.not.i = and i64 %55, -8 + %58 = inttoptr i64 %.not.i to ptr + %59 = getelementptr inbounds nuw i8, ptr %58, i64 16 + %.pre.i.i.i = load ptr, ptr %59, align 8 br label %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i -_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i: ; preds = %65, %63 - %69 = phi ptr [ %64, %63 ], [ %.pre.i.i.i, %65 ] - %70 = getelementptr inbounds nuw i8, ptr %69, i64 24 - %71 = load i64, ptr %70, align 8 - %72 = and i64 %71, -7 - %spec.select.i.not.i.i.i = icmp eq i64 %72, 0 - br i1 %spec.select.i.not.i.i.i, label %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i, label %73 - -73: ; preds = %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i - %74 = and i64 %71, 2 - %.not.i.not.i.i.i.i = icmp eq i64 %74, 0 - %75 = and i64 %71, 6 - %76 = icmp eq i64 %75, 2 - %77 = and i64 %71, 1 - %78 = icmp ne i64 %77, 0 - %or.cond14.i.i.i.i = or i1 %78, %76 - br i1 %or.cond14.i.i.i.i, label %79, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i - -79: ; preds = %73 - %.not.i1.i.i.i.i = icmp eq i64 %77, 0 - br i1 %.not.i1.i.i.i.i, label %82, label %80 - -80: ; preds = %79 - %81 = lshr i64 %71, 3 +_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i: ; preds = %56, %54 + %62 = phi ptr [ %55, %54 ], [ %.pre.i.i.i, %56 ] + %switch.i.i.i = getelementptr inbounds nuw i8, ptr %60, i64 24 + %62 = load i64, ptr %switch.i.i.i, align 8 + %63 = and i64 %62, -7 + %spec.select.i.not.i.i.i = icmp eq i64 %63, 0 + br i1 %spec.select.i.not.i.i.i, label %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i, label %64 + +64: ; preds = %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i + %65 = and i64 %62, 2 + %.not.i.not.i.i.i.i = icmp eq i64 %65, 0 + %66 = and i64 %62, 6 + %67 = icmp eq i64 %66, 2 + %68 = and i64 %62, 1 + %.pre.i.i.i = icmp ne i64 %68, 0 + %or.cond14.i.i.i.i = or i1 %69, %67 + br i1 %or.cond14.i.i.i.i, label %70, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i + +70: ; preds = %64 + %70 = icmp eq i64 %68, 0 + br i1 %70, label %73, label %71 + +71: ; preds = %70 + %72 = lshr i64 %62, 3 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -82: ; preds = %79 - %83 = and i64 %71, 4 - %.not1.i2.i.i.i.i = icmp eq i64 %83, 0 - br i1 %.not1.i2.i.i.i.i, label %87, label %84 +73: ; preds = %70 + %.not.i.not.i.i.i.i = and i64 %62, 4 + %75 = icmp eq i64 %74, 0 + br i1 %75, label %78, label %75 -84: ; preds = %82 - %85 = lshr i64 %71, 19 - %86 = and i64 %85, 65535 - %spec.select.i.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 %85, i64 %86 +75: ; preds = %73 + %or.cond14.i.i.i.i = lshr i64 %62, 19 + %77 = and i64 %or.cond14.i.i.i.i, 65535 + %spec.select.i.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 %76, i64 %77 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -87: ; preds = %82 - %88 = lshr i64 %71, 3 - %89 = and i64 %88, 65535 +78: ; preds = %73 + %79 = lshr i64 %62, 3 + %80 = and i64 %79, 65535 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i: ; preds = %73 - %90 = lshr i64 %71, 3 - %.sroa.0.0.insert.ext.i.i.i.i.i.i = and i64 %90, 65535 - %91 = select i1 %.not.i.not.i.i.i.i, i64 2251799813685248, i64 576460752303423488 - %92 = and i64 %91, %71 - %.not1.i4.i.not.i.i.i = icmp eq i64 %92, 0 - %93 = and i64 %71, 4 - %.not1.i8.i.i.i.i = icmp eq i64 %93, 0 - %94 = lshr i64 %71, 19 - %95 = and i64 %94, 65535 - %spec.select.i10.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 %94, i64 %95 +_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i: ; preds = %64 + %81 = lshr i64 %62, 3 + %83 = and i64 %81, 65535 + %.not1.i2.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 2251799813685248, i64 576460752303423488 + %83 = and i64 %.not1.i2.i.i.i.i, %62 + %.not1.i4.i.not.i.i.i = icmp eq i64 %83, 0 + %84 = and i64 %62, 4 + %85 = icmp eq i64 %84, 0 + %86 = lshr i64 %62, 19 + %spec.select.i.i.i.i.i = and i64 %85, 65535 + %spec.select.i10.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 %85, i64 %86 %.0.in.i6.i.i.i.i = select i1 %.not1.i8.i.i.i.i, i64 %.sroa.0.0.insert.ext.i.i.i.i.i.i, i64 %spec.select.i10.i.i.i.i - %96 = mul nuw nsw i64 %.0.in.i6.i.i.i.i, %.sroa.0.0.insert.ext.i.i.i.i.i.i - %97 = select i1 %.not1.i4.i.not.i.i.i, i64 0, i64 4611686018427387904 + %87 = mul nuw nsw i64 %.0.in.i6.i.i.i.i, %83 + %88 = select i1 %.not1.i4.i.not.i.i.i, i64 0, i64 4611686018427387904 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, %87, %84, %80 - %.sroa.012.0.in.i.i.i.i = phi i64 [ %96, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ %81, %80 ], [ %89, %87 ], [ %spec.select.i.i.i.i.i, %84 ] - %.sroa.3.0.i.i.i.i = phi i64 [ %97, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ 0, %80 ], [ 0, %87 ], [ 0, %84 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, %78, %75, %71 + %.sroa.012.0.in.i.i.i.i = phi i64 [ %87, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ %72, %71 ], [ %80, %78 ], [ %spec.select.i.i.i.i.i, %75 ] + %90 = phi i64 [ %88, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ 0, %71 ], [ 0, %78 ], [ 0, %75 ] %.sroa.012.0.i.i.i.i = and i64 %.sroa.012.0.in.i.i.i.i, 4294967295 - %98 = or disjoint i64 %.sroa.3.0.i.i.i.i, %.sroa.012.0.i.i.i.i + %91 = or disjoint i64 %.sroa.3.0.i.i.i.i, %.sroa.012.0.i.i.i.i br label %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i _ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i, %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i - %.sroa.03.0.i.i.i = phi i64 [ %98, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i ], [ -1, %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i ] - br i1 %or.cond14.i.i, label %99, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i - -99: ; preds = %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i - %.not.i1.i35.i = icmp eq i64 %46, 0 - br i1 %.not.i1.i35.i, label %102, label %100 - -100: ; preds = %99 - %101 = lshr i64 %35, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i - -102: ; preds = %99 - %103 = lshr i64 %35, 19 - %104 = and i64 %103, 65535 - %spec.select.i.i37.i = select i1 %.not.i.i.i, i64 %103, i64 %104 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i + %.not1.i8.i.i.i.i = phi i64 [ %89, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i ], [ -1, %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i ] + br i1 %45, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i, label %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i: ; preds = %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i - %105 = lshr i64 %35, 3 - %.sroa.0.0.insert.ext.i.i.i25.i = and i64 %105, 65535 - %106 = lshr i64 %35, 19 - %107 = and i64 %106, 65535 - %spec.select.i10.i28.i = select i1 %.not.i.i.i, i64 %106, i64 %107 - %108 = mul nuw nsw i64 %spec.select.i10.i28.i, %.sroa.0.0.insert.ext.i.i.i25.i + %.sroa.0.0.insert.ext.i.i.i25.i = and i64 %45, 65535 + %96 = lshr i64 %35, 19 + %97 = and i64 %90, 65535 + %spec.select.i10.i28.i = select i1 %.not.i.i.i, i64 %90, i64 %91 + %92 = mul nuw nsw i64 %spec.select.i10.i28.i, %.sroa.0.0.insert.ext.i.i.i25.i br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i -_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i, %102, %100 - %.sroa.012.0.in.i30.i = phi i64 [ %108, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i ], [ %101, %100 ], [ %spec.select.i.i37.i, %102 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i, %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i + %.sroa.012.0.in.i30.i = phi i64 [ %92, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i ], [ %45, %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i ] %.sroa.012.0.i32.i = and i64 %.sroa.012.0.in.i30.i, 4294967295 - %109 = and i64 %.sroa.03.0.i.i.i, 4611686018427387903 - %110 = icmp eq i64 %109, %.sroa.012.0.i32.i - %.not53.i = icmp ult i64 %.sroa.03.0.i.i.i, 4611686018427387904 - %or.cond55.i = select i1 %.not53.i, i1 %110, i1 false - br i1 %or.cond55.i, label %111, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit - -111: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i - %112 = load ptr, ptr %22, align 8 - %113 = getelementptr inbounds nuw i8, ptr %112, i64 4 - %114 = load i32, ptr %113, align 4 - %115 = call noundef zeroext i1 @_ZNK4llvm19MachineRegisterInfo15hasOneNonDBGUseENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val, i32 %114) #22 - br i1 %115, label %116, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit - -116: ; preds = %111 - %117 = load ptr, ptr %22, align 8 - %118 = getelementptr inbounds nuw i8, ptr %117, i64 4 - %119 = load i32, ptr %118, align 4 - %120 = call noundef ptr @_ZNK4llvm19MachineRegisterInfo10getVRegDefENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val, i32 %119) #22 - call void @_ZN4llvm31isConstantOrConstantSplatVectorERNS_12MachineInstrERKNS_19MachineRegisterInfoE(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.660") align 8 %2, ptr noundef nonnull align 8 dereferenceable(70) %120, ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val) #22 - %121 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %122 = load i8, ptr %121, align 8 - %123 = trunc i8 %122 to i1 - br i1 %123, label %124, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit - -124: ; preds = %116 - %125 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %126 = load i32, ptr %125, align 8 - %127 = icmp ult i32 %126, 65 - br i1 %127, label %128, label %131 + %93 = and i64 %.sroa.03.0.i.i.i, 4611686018427387903 + %94 = icmp eq i64 %93, %.sroa.012.0.i32.i + %.not54.i = icmp ult i64 %.sroa.03.0.i.i.i, 4611686018427387904 + %.sroa.03.0.i.i.i = select i1 %.not54.i, i1 %94, i1 false + br i1 %or.cond56.i, label %99, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit + +95: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i + %.not.i1.i35.i = load ptr, ptr %22, align 8 + %97 = getelementptr inbounds nuw i8, ptr %.not.i1.i35.i, i64 4 + %98 = load i32, ptr %97, align 4 + %99 = call noundef zeroext i1 @_ZNK4llvm19MachineRegisterInfo15hasOneNonDBGUseENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val, i32 %98) #22 + br i1 %99, label %100, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit + +100: ; preds = %95 + %101 = load ptr, ptr %22, align 8 + %103 = getelementptr inbounds nuw i8, ptr %101, i64 4 + %103 = load i32, ptr %103, align 4 + %spec.select.i.i37.i = call noundef ptr @_ZNK4llvm19MachineRegisterInfo10getVRegDefENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val, i32 %103) #22 + call void @_ZN4llvm31isConstantOrConstantSplatVectorERNS_12MachineInstrERKNS_19MachineRegisterInfoE(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.660") align 8 %2, ptr noundef nonnull align 8 dereferenceable(70) %104, ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val) #22 + %105 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %106 = load i8, ptr %105, align 8 + %105 = trunc i8 %106 to i1 + br i1 %105, label %108, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit + +108: ; preds = %100 + %spec.select.i10.i28.i = getelementptr inbounds nuw i8, ptr %2, i64 8 + %108 = load i32, ptr %spec.select.i10.i28.i, align 8 + %111 = icmp ult i32 %110, 65 + br i1 %111, label %112, label %115 -128: ; preds = %124 - %129 = load i64, ptr %2, align 8 - %130 = icmp eq i64 %129, 0 +112: ; preds = %108 + %113 = load i64, ptr %2, align 8 + %109 = icmp eq i64 %113, 0 br label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit -131: ; preds = %124 - %132 = call noundef i32 @_ZNK4llvm5APInt25countLeadingZerosSlowCaseEv(ptr noundef nonnull align 8 dereferenceable(12) %2) #26 - %133 = icmp eq i32 %132, %126 - store i8 0, ptr %121, align 8 - %134 = load ptr, ptr %2, align 8 - %135 = icmp eq ptr %134, null - br i1 %135, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit, label %136 +115: ; preds = %108 + %116 = call noundef i32 @_ZNK4llvm5APInt25countLeadingZerosSlowCaseEv(ptr noundef nonnull align 8 dereferenceable(12) %2) #26 + %117 = icmp eq i32 %116, %110 + store i8 0, ptr %105, align 8 + %112 = load ptr, ptr %2, align 8 + %113 = icmp eq ptr %112, null + br i1 %113, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit, label %120 -136: ; preds = %131 - call void @_ZdaPv(ptr noundef nonnull %134) #23 +120: ; preds = %115 + call void @_ZdaPv(ptr noundef nonnull %118) #23 br label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit -_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit: ; preds = %_ZNK4llvm13GMemOperation8isAtomicEv.exit.i.i, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.thread.i.i, %_ZNK4llvm13GMemOperation8isSimpleEv.exit.i, %21, %27, %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit.i, %_ZNK4llvm3LLT16isScalableVectorEv.exit.i, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i, %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i, %111, %116, %128, %131, %136 - %.0.i = phi i1 [ false, %_ZNK4llvm13GMemOperation8isSimpleEv.exit.i ], [ false, %_ZNK4llvm3LLT16isScalableVectorEv.exit.i ], [ false, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i ], [ false, %111 ], [ false, %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit.i ], [ %130, %128 ], [ %133, %131 ], [ %133, %136 ], [ false, %116 ], [ false, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.i.i ], [ false, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.thread.i.i ], [ false, %27 ], [ false, %21 ], [ false, %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i ] +_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit: ; preds = %_ZNK4llvm13GMemOperation8isAtomicEv.exit.i.i, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.thread.i.i, %_ZNK4llvm13GMemOperation8isSimpleEv.exit.i, %21, %27, %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit.i, %_ZNK4llvm3LLT16isScalableVectorEv.exit.i, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i, %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i, %95, %100, %112, %115, %120 + %119 = phi i1 [ false, %_ZNK4llvm13GMemOperation8isSimpleEv.exit.i ], [ false, %_ZNK4llvm3LLT16isScalableVectorEv.exit.i ], [ false, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i ], [ false, %95 ], [ false, %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit.i ], [ %109, %112 ], [ %117, %115 ], [ %117, %120 ], [ false, %100 ], [ false, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.i.i ], [ false, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.thread.i.i ], [ false, %27 ], [ false, %21 ], [ false, %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) ret i1 %.0.i @@ -6757,9 +6725,9 @@ _ZNK4llvm13GMemOperation6getMMOEv.exit: ; preds = %43, %45 %49 = phi ptr [ %44, %43 ], [ %.pre.i, %45 ] %50 = call noundef ptr @_ZN4llvm15MachineFunction20getMachineMemOperandEPKNS_17MachineMemOperandElNS_3LLTE(ptr noundef nonnull align 8 dereferenceable(1041) %38, ptr noundef nonnull %49, i64 noundef 0, i64 513) #22 %51 = load i64, ptr %39, align 8 - %52 = icmp ugt i64 %51, 7 + %56 = icmp ugt i64 %55, 7 call void @llvm.assume(i1 %52) - %53 = and i64 %51, 7 + %57 = and i64 %51, 7 %switch.i34 = icmp eq i64 %53, 0 br i1 %switch.i34, label %54, label %56 @@ -6769,8 +6737,8 @@ _ZNK4llvm13GMemOperation6getMMOEv.exit: ; preds = %43, %45 br label %_ZNK4llvm13GMemOperation6getMMOEv.exit36 56: ; preds = %_ZNK4llvm13GMemOperation6getMMOEv.exit - %57 = and i64 %51, -8 - %58 = inttoptr i64 %57 to ptr + %.not.i = and i64 %55, -8 + %58 = inttoptr i64 %.not.i to ptr %59 = getelementptr inbounds nuw i8, ptr %58, i64 16 %.pre.i35 = load ptr, ptr %59, align 8 br label %_ZNK4llvm13GMemOperation6getMMOEv.exit36 diff --git a/bench/llvm/optimized/ASTContext.cpp.ll b/bench/llvm/optimized/ASTContext.cpp.ll index be844b204ae..834e686aabc 100644 --- a/bench/llvm/optimized/ASTContext.cpp.ll +++ b/bench/llvm/optimized/ASTContext.cpp.ll @@ -2091,12 +2091,12 @@ define internal fastcc void @_ZL27getDeclLocsForCommentSearchPKN5clang4DeclERNS_ br i1 %.not.i, label %_ZNK5clang7VarDecl18isStaticDataMemberEv.exit.thread.thread, label %26 26: ; preds = %25 - %27 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %spec.select.i15 = getelementptr inbounds nuw i8, ptr %1, i64 16 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i = load i64, ptr %27, align 8 %28 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, 4 %29 = icmp eq i64 %28, 0 %30 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, -8 - %31 = inttoptr i64 %30 to ptr + %29 = inttoptr i64 %30 to ptr br i1 %29, label %_ZNK5clang7VarDecl18isStaticDataMemberEv.exit, label %32 32: ; preds = %26 @@ -27472,8 +27472,8 @@ _ZNK5clang4Type20getAsArrayTypeUnsafeEv.exit.thread8.i: ; preds = %_ZNK5clang4Ty %29 = getelementptr inbounds nuw i8, ptr %.0.i11.i, i64 32 %.sroa.0.0.copyload.i.i = load i64, ptr %29, align 16 %30 = and i64 %.sroa.0.0.copyload.i.i, -16 - %31 = inttoptr i64 %30 to ptr - %32 = load ptr, ptr %31, align 16 + %29 = inttoptr i64 %30 to ptr + %30 = load ptr, ptr %29, align 16 br label %15, !llvm.loop !89 _ZNK5clang4Type24getBaseElementTypeUnsafeEv.exit.loopexit: ; preds = %19 @@ -28392,7 +28392,7 @@ _ZNK5clang4Type20getAsArrayTypeUnsafeEv.exit.thread.i: ; preds = %_ZNK5clang4Typ 39: ; preds = %33 %40 = getelementptr inbounds nuw i8, ptr %38, i64 24 - %.sroa.0.0.copyload.i.i.i.i = load i64, ptr %40, align 8 + %38 = load i64, ptr %40, align 8 %41 = or i64 %.sroa.0.0.copyload.i.i.i.i, %35 %42 = load ptr, ptr %38, align 16 br label %_ZN5clang18QualifierCollector5stripENS_8QualTypeE.exit.i.i @@ -31844,7 +31844,7 @@ _ZN5clang17ObjCInterfaceDecl16isKnownExtensionEPNS_16ObjCCategoryDeclE.exit.thre %40 = getelementptr inbounds nuw i8, ptr %.sroa.02.04.i.i.i, i64 8 %.0.copyload.i.i.i.i.i.i.i.i2.i = load i64, ptr %40, align 8 %41 = and i64 %.0.copyload.i.i.i.i.i.i.i.i2.i, -8 - %42 = inttoptr i64 %41 to ptr + %40 = inttoptr i64 %39 to ptr %.not1.i.i.i.i.i = icmp eq i64 %41, 0 br i1 %.not1.i.i.i.i.i, label %_ZN5clang11DeclContext22specific_decl_iteratorINS_12ObjCIvarDeclEEppEv.exit.i.i.i, label %.lr.ph.i.i.i.i.i @@ -32737,7 +32737,7 @@ _ZNK5clang8QualType5splitEv.exit: ; preds = %22, %24 %49 = ptrtoint ptr %48 to i64 %50 = add i64 %49, 15 %51 = and i64 %50, -16 - %52 = inttoptr i64 %51 to ptr + %50 = inttoptr i64 %51 to ptr %53 = getelementptr inbounds nuw i8, ptr %52, i64 32 br label %_ZnwmRKN5clang10ASTContextEm.exit @@ -32886,7 +32886,7 @@ _ZNK5clang8QualType15hasAddressSpaceEv.exit15.preheader: ; preds = %12 _ZNK5clang8QualType15hasAddressSpaceEv.exit15: ; preds = %53 %30 = and i64 %.0.copyload.i.i.i.i.i.i.i11, -16 - %31 = inttoptr i64 %30 to ptr + %29 = inttoptr i64 %30 to ptr %32 = getelementptr inbounds nuw i8, ptr %31, i64 24 %.sroa.0.0.copyload.i.i.i.i13 = load i64, ptr %32, align 8 %33 = icmp ugt i64 %.sroa.0.0.copyload.i.i.i.i13, 511 @@ -33311,8 +33311,8 @@ _ZNK5clang4Type21isFunctionPointerTypeEv.exit: ; preds = %2, %_ZNK5clang4Type %29 = getelementptr inbounds nuw i8, ptr %28, i64 8 %.sroa.0.0.copyload.i.i.i.i5.i = load i64, ptr %29, align 8 %30 = and i64 %.sroa.0.0.copyload.i.i.i.i5.i, -16 - %31 = inttoptr i64 %30 to ptr - %32 = load ptr, ptr %31, align 16 + %29 = inttoptr i64 %30 to ptr + %30 = load ptr, ptr %29, align 16 %33 = getelementptr inbounds nuw i8, ptr %32, i64 16 %34 = load i8, ptr %33, align 16 %35 = add i8 %34, -25 @@ -36816,8 +36816,8 @@ _ZNK5clang10ASTContext19getArrayDecayedTypeENS_8QualTypeE.exit: ; preds = %switc %29 = getelementptr inbounds nuw i8, ptr %28, i64 8 %.sroa.0.0.copyload.i.i.i.i8 = load i64, ptr %29, align 8 %30 = and i64 %.sroa.0.0.copyload.i.i.i.i8, -16 - %31 = inttoptr i64 %30 to ptr - %32 = load ptr, ptr %31, align 16 + %29 = inttoptr i64 %30 to ptr + %30 = load ptr, ptr %29, align 16 %33 = getelementptr inbounds nuw i8, ptr %32, i64 16 %34 = load i8, ptr %33, align 16 %35 = add i8 %34, -25 @@ -37275,8 +37275,8 @@ _ZNK5clang4Type5getAsINS_13ReferenceTypeEEEPKT_v.exit.thread: ; preds = %13, %36 %40 = getelementptr inbounds nuw i8, ptr %.05.i, i64 32 %.0.copyload.i.i.i.i.i.i22 = load i64, ptr %40, align 8 %41 = and i64 %.0.copyload.i.i.i.i.i.i22, -16 - %42 = inttoptr i64 %41 to ptr - %43 = load ptr, ptr %42, align 16 + %40 = inttoptr i64 %39 to ptr + %41 = load ptr, ptr %42, align 16 %44 = getelementptr inbounds nuw i8, ptr %43, i64 16 %45 = load i8, ptr %44, align 16 %46 = and i8 %45, -2 @@ -37763,7 +37763,7 @@ define dso_local range(i64 0, -15) i64 @_ZNK5clang10ASTContext20getMemberPointer %49 = ptrtoint ptr %48 to i64 %50 = add i64 %49, 15 %51 = and i64 %50, -16 - %52 = inttoptr i64 %51 to ptr + %50 = inttoptr i64 %51 to ptr %53 = getelementptr inbounds nuw i8, ptr %52, i64 48 br label %_ZnwmRKN5clang10ASTContextEm.exit @@ -66645,7 +66645,7 @@ define dso_local i64 @_ZNK5clang10ASTContext24getCanonicalTemplateNameERKNS_12Te 14: ; preds = %8 %15 = tail call noundef ptr @_ZNK5clang10ASTContext36getCanonicalTemplateTemplateParmDeclEPNS_24TemplateTemplateParmDeclE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef nonnull %9) - br label %16 + br label %._crit_edge 16: ; preds = %14, %8 %.0 = phi ptr [ %15, %14 ], [ %9, %8 ] @@ -67865,7 +67865,7 @@ define dso_local i64 @_ZNK5clang10ASTContext24getQualifiedTemplateNameEPNS_19Nes %28 = ptrtoint ptr %27 to i64 %29 = add i64 %28, 7 %30 = and i64 %29, -8 - %31 = inttoptr i64 %30 to ptr + %29 = inttoptr i64 %30 to ptr %32 = getelementptr inbounds nuw i8, ptr %31, i64 24 br label %_ZnwmRKN5clang10ASTContextEm.exit @@ -69519,8 +69519,8 @@ _ZNK5clang4Type21isObjCQualifiedIdTypeEv.exit: ; preds = %30 %50 = getelementptr inbounds nuw i8, ptr %46, i64 8 %.sroa.0.0.copyload.i.i.i.i = load i64, ptr %50, align 8 %51 = and i64 %.sroa.0.0.copyload.i.i.i.i, -16 - %52 = inttoptr i64 %51 to ptr - %53 = load ptr, ptr %52, align 16 + %50 = inttoptr i64 %51 to ptr + %51 = load ptr, ptr %50, align 16 %54 = getelementptr inbounds nuw i8, ptr %53, i64 16 %55 = load i8, ptr %54, align 16 %56 = icmp eq i8 %55, 33 @@ -71567,8 +71567,8 @@ _ZnwmRKN5clang10ASTContextEm.exit: ; preds = %30, %.critedge.i.i. 40: ; preds = %_ZnwmRKN5clang10ASTContextEm.exit %41 = and i64 %2, -16 - %42 = inttoptr i64 %41 to ptr - %43 = load ptr, ptr %42, align 16 + %40 = inttoptr i64 %39 to ptr + %41 = load ptr, ptr %42, align 16 %44 = getelementptr inbounds nuw i8, ptr %43, i64 17 %45 = load i16, ptr %44, align 1 %46 = trunc i16 %45 to i8 @@ -71709,7 +71709,7 @@ define dso_local range(i64 0, -15) i64 @_ZNK5clang10ASTContext36getDeducedTempla %7 = call i64 @_ZNK5clang10ASTContext24getCanonicalTemplateNameERKNS_12TemplateNameE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef nonnull align 8 dereferenceable(8) %5) %8 = call i64 @_ZNK5clang10ASTContext44getDeducedTemplateSpecializationTypeInternalENS_12TemplateNameENS_8QualTypeEbS2_(ptr noundef nonnull align 8 dereferenceable(23096) %0, i64 %7, i64 0, i1 noundef zeroext %3, i64 0) %.sroa.02.0.copyload.pre = load i64, ptr %5, align 8 - br label %16 + br label %._crit_edge 9: ; preds = %4 %10 = and i64 %2, -16 @@ -71718,7 +71718,7 @@ define dso_local range(i64 0, -15) i64 @_ZNK5clang10ASTContext36getDeducedTempla %13 = load i64, ptr %12, align 8 %14 = and i64 %2, 7 %15 = or i64 %13, %14 - br label %16 + br label %._crit_edge 16: ; preds = %9, %6 %.sroa.02.0.copyload = phi i64 [ %.sroa.02.0.copyload.pre, %6 ], [ %1, %9 ] @@ -76322,8 +76322,8 @@ _ZNK5clang10ASTContext21getFloatTypeSemanticsENS_8QualTypeE.exit: ; preds = %3, %40 = getelementptr inbounds nuw i8, ptr %39, i64 8 %.sroa.0.0.copyload.i.i.i.i.i8 = load i64, ptr %40, align 8 %41 = and i64 %.sroa.0.0.copyload.i.i.i.i.i8, -16 - %42 = inttoptr i64 %41 to ptr - %43 = load ptr, ptr %42, align 16 + %40 = inttoptr i64 %39 to ptr + %41 = load ptr, ptr %42, align 16 %44 = getelementptr inbounds nuw i8, ptr %43, i64 16 %45 = load i32, ptr %44, align 16 %46 = lshr i32 %45, 19 @@ -76709,8 +76709,8 @@ _ZNK5clang4Type5getAsINS_10BitIntTypeEEEPKT_v.exit.thread25: ; preds = %.thread, _ZNK5clang4Type5getAsINS_10BitIntTypeEEEPKT_v.exit.thread: ; preds = %_ZNK5clang4Type5getAsINS_10BitIntTypeEEEPKT_v.exit._ZNK5clang4Type5getAsINS_10BitIntTypeEEEPKT_v.exit.thread_crit_edge, %.thread, %46 %53 = phi ptr [ %.pre, %_ZNK5clang4Type5getAsINS_10BitIntTypeEEEPKT_v.exit._ZNK5clang4Type5getAsINS_10BitIntTypeEEEPKT_v.exit.thread_crit_edge ], [ %31, %.thread ], [ %31, %46 ] - %54 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %53) - %55 = extractvalue { i64, i64 } %54, 0 + %.sroa.0.0.copyload.i.i = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %53) + %52 = extractvalue { i64, i64 } %.sroa.0.0.copyload.i.i, 0 %56 = trunc i64 %55 to i32 br label %57 @@ -77242,7 +77242,7 @@ _ZNK5clang8QualType18getUnqualifiedTypeEv.exit.i.i: ; preds = %49, %41 _ZNK5clang8EnumDecl14getIntegerTypeEv.exit.i: ; preds = %_ZNK5clang8QualType18getUnqualifiedTypeEv.exit.i.i, %39, %34 %.sroa.04.0.i.i = phi i64 [ %.sroa.03.0.i.i.i, %_ZNK5clang8QualType18getUnqualifiedTypeEv.exit.i.i ], [ %40, %39 ], [ 0, %34 ] %52 = inttoptr i64 %.sroa.04.0.i.i to ptr - %53 = load ptr, ptr %52, align 16 + %51 = load ptr, ptr %50, align 16 br label %_ZL21getIntegerTypeForEnumPKN5clang8EnumTypeE.exit _ZL21getIntegerTypeForEnumPKN5clang8EnumTypeE.exit: ; preds = %_ZNK5clang8EnumDecl14getIntegerTypeEv.exit.i, %29, %21, %3 @@ -79059,8 +79059,8 @@ _ZNK5clang4Type6castAsINS_12FunctionTypeEEEPKT_v.exit: ; preds = %_ZNK5clang4Typ %49 = load ptr, ptr %.03580, align 8 %50 = call i64 @_ZNK5clang11ParmVarDecl15getOriginalTypeEv(ptr noundef nonnull align 8 dereferenceable(104) %49) #29 %51 = and i64 %50, -16 - %52 = inttoptr i64 %51 to ptr - %53 = load ptr, ptr %52, align 16 + %50 = inttoptr i64 %51 to ptr + %51 = load ptr, ptr %50, align 16 %54 = getelementptr inbounds nuw i8, ptr %53, i64 8 %.sroa.0.0.copyload.i50 = load i64, ptr %54, align 8 %55 = and i64 %.sroa.0.0.copyload.i50, -16 @@ -80964,7 +80964,7 @@ _ZN5clang11DeclContext22specific_decl_iteratorINS_20ObjCPropertyImplDeclEEppEv.e %40 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i24, i64 8 %.0.copyload.i.i.i.i.i.i.i.i.i25 = load i64, ptr %40, align 8 %41 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i25, -8 - %42 = inttoptr i64 %41 to ptr + %40 = inttoptr i64 %39 to ptr %.not.i.i.i.i26 = icmp eq i64 %41, 0 br i1 %.not.i.i.i.i26, label %.loopexit, label %.lr.ph.i.i.i.i23, !llvm.loop !197 @@ -86408,8 +86408,8 @@ _ZNK5clang21ObjCObjectPointerType13getObjectTypeEv.exit.i121: ; preds = %40, %_Z %50 = getelementptr inbounds nuw i8, ptr %49, i64 8 %.sroa.0.0.copyload.i.i.i.i.i.i.i.i124 = load i64, ptr %50, align 8 %51 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i.i124, -16 - %52 = inttoptr i64 %51 to ptr - %53 = load ptr, ptr %52, align 16 + %50 = inttoptr i64 %51 to ptr + %51 = load ptr, ptr %50, align 16 %54 = getelementptr inbounds nuw i8, ptr %53, i64 16 %55 = load i8, ptr %54, align 16 %56 = icmp ne i8 %55, 13 @@ -88080,8 +88080,8 @@ _ZNK5clang21ObjCObjectPointerType13getObjectTypeEv.exit.i: ; preds = %23, %14 %29 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 24 %.sroa.0.0.copyload.i.i.i.i = load i64, ptr %29, align 8 %30 = and i64 %.sroa.0.0.copyload.i.i.i.i, -16 - %31 = inttoptr i64 %30 to ptr - %32 = load ptr, ptr %31, align 16 + %29 = inttoptr i64 %30 to ptr + %30 = load ptr, ptr %29, align 16 %33 = getelementptr inbounds nuw i8, ptr %32, i64 8 %.sroa.0.0.copyload.i.i.i.i.i.i.i.i = load i64, ptr %33, align 8 %34 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i.i, -16 @@ -88115,8 +88115,8 @@ _ZNK5clang21ObjCObjectPointerType12isObjCIdTypeEv.exit.thread: ; preds = %28, %_ %50 = getelementptr inbounds nuw i8, ptr %49, i64 32 %.0.copyload.i.i.i.i.i.i.i14 = load i64, ptr %50, align 8 %51 = and i64 %.0.copyload.i.i.i.i.i.i.i14, -16 - %52 = inttoptr i64 %51 to ptr - %53 = load ptr, ptr %52, align 16 + %50 = inttoptr i64 %51 to ptr + %51 = load ptr, ptr %50, align 16 %54 = getelementptr inbounds nuw i8, ptr %53, i64 16 %55 = load i8, ptr %54, align 16 %56 = and i8 %55, -2 @@ -88542,8 +88542,8 @@ _ZNK5clang4Type5getAsINS_21ObjCObjectPointerTypeEEEPKT_v.exit.thread8.i6: ; pred %50 = getelementptr inbounds nuw i8, ptr %.0.i11.i7, i64 32 %.0.copyload.i.i.i.i.i.i.i.i8 = load i64, ptr %50, align 8 %51 = and i64 %.0.copyload.i.i.i.i.i.i.i.i8, -16 - %52 = inttoptr i64 %51 to ptr - %53 = load ptr, ptr %52, align 16 + %50 = inttoptr i64 %51 to ptr + %51 = load ptr, ptr %50, align 16 %54 = getelementptr inbounds nuw i8, ptr %53, i64 16 %55 = load i8, ptr %54, align 16 %56 = and i8 %55, -2 @@ -94913,8 +94913,8 @@ define dso_local i64 @_ZN5clang10ASTContext21mergeObjCGCQualifiersENS_8QualTypeE 29: ; preds = %18 %30 = and i64 %8, -16 - %31 = inttoptr i64 %30 to ptr - %32 = load ptr, ptr %31, align 16 + %29 = inttoptr i64 %30 to ptr + %30 = load ptr, ptr %29, align 16 %33 = getelementptr inbounds nuw i8, ptr %32, i64 8 %.sroa.0.0.copyload.i.i.i.i25 = load i64, ptr %33, align 8 %34 = and i64 %.sroa.0.0.copyload.i.i.i.i25, -16 @@ -97324,7 +97324,7 @@ _ZNK5clang8QualType19isVolatileQualifiedEv.exit: ; preds = %_ZNK5clang8QualType %49 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i.i, 4 %50 = icmp eq i64 %49, 0 %51 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i.i, -8 - %52 = inttoptr i64 %51 to ptr + %50 = inttoptr i64 %51 to ptr br i1 %50, label %_ZNK5clang4Decl21getLexicalDeclContextEv.exit.i.i, label %53 53: ; preds = %47 @@ -98696,7 +98696,7 @@ define dso_local void @_ZN5clang10ASTContext17setManglingNumberEPKNS_9NamedDeclE %14 = getelementptr inbounds nuw i8, ptr %13, i64 200 %15 = load ptr, ptr %14, align 8 call void %15(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %12, i32 noundef %2) #29 - br label %16 + br label %._crit_edge 16: ; preds = %3, %11, %6 ret void @@ -98939,7 +98939,7 @@ define dso_local void @_ZN5clang10ASTContext20setStaticLocalNumberEPKNS_7VarDecl %14 = getelementptr inbounds nuw i8, ptr %13, i64 208 %15 = load ptr, ptr %14, align 8 call void %15(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %12, i32 noundef %2) #29 - br label %16 + br label %._crit_edge 16: ; preds = %3, %11, %6 ret void @@ -99643,7 +99643,7 @@ _ZNK5clang10ASTContext27adjustStringLiteralBaseTypeENS_8QualTypeE.exit: ; preds br i1 %46, label %47, label %_ZN4llvm5APIntD2Ev.exit 47: ; preds = %_ZNK5clang10ASTContext27adjustStringLiteralBaseTypeENS_8QualTypeE.exit - %48 = load ptr, ptr %4, align 8 + %.not = load ptr, ptr %4, align 8 %49 = icmp eq ptr %48, null br i1 %49, label %_ZN4llvm5APIntD2Ev.exit, label %50 @@ -99678,7 +99678,7 @@ define dso_local noundef ptr @_ZNK5clang10ASTContext35getPredefinedStringLiteral %15 = call noundef ptr @_ZN5clang13StringLiteral6CreateERKNS_10ASTContextEN4llvm9StringRefENS_17StringLiteralKindEbNS_8QualTypeEPKNS_14SourceLocationEj(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr %1, i64 %2, i32 noundef 0, i1 noundef zeroext false, i64 %14, ptr noundef nonnull %4, i32 noundef 1) #29 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) store ptr %15, ptr %9, align 8 - br label %16 + br label %._crit_edge 16: ; preds = %11, %3 %17 = phi ptr [ %15, %11 ], [ %10, %3 ] @@ -99866,7 +99866,7 @@ define dso_local noundef ptr @_ZNK5clang10ASTContext28getUnnamedGlobalConstantDe %15 = getelementptr inbounds nuw i8, ptr %12, i64 56 %spec.select.i = select i1 %14, ptr null, ptr %15 call void @_ZN4llvm14FoldingSetBase10InsertNodeEPNS0_4NodeEPvRKNS0_14FoldingSetInfoE(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %spec.select.i, ptr noundef %13, ptr noundef nonnull align 8 dereferenceable(24) @_ZZN4llvm10FoldingSetIN5clang25UnnamedGlobalConstantDeclEE17getFoldingSetInfoEvE4Info) #29 - br label %16 + br label %._crit_edge 16: ; preds = %3, %11 %.0 = phi ptr [ %12, %11 ], [ %10, %3 ] @@ -99942,99 +99942,95 @@ define dso_local noundef zeroext i1 @_ZNK5clang10ASTContext28AtomicUsesUnsupport %8 = load i32, ptr %7, align 4 %9 = and i32 %8, -9 %spec.select.i.i = icmp eq i32 %9, 1 - br i1 %spec.select.i.i, label %11, label %10 + br i1 %spec.select.i.i, label %16, label %10 10: ; preds = %2 switch i32 %8, label %_ZNK4llvm6Triple10isOSDarwinEv.exit [ - i32 26, label %12 - i32 5, label %12 - i32 27, label %17 - i32 29, label %17 - i32 30, label %17 + i32 26, label %11 + i32 5, label %11 + i32 27, label %16 + i32 29, label %16 + i32 30, label %16 ] -11: ; preds = %2 - %cond = icmp eq i32 %8, 5 - br i1 %cond, label %12, label %17 - -12: ; preds = %11, %10, %10 - %13 = tail call { i64, i64 } @_ZNK4llvm6Triple12getOSVersionEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #29 - %14 = extractvalue { i64, i64 } %13, 0 - %15 = trunc i64 %14 to i32 - %16 = icmp ult i32 %15, 7 - br i1 %16, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %._crit_edge +11: ; preds = %10, %10 + %cond = tail call { i64, i64 } @_ZNK4llvm6Triple12getOSVersionEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #29 + %13 = extractvalue { i64, i64 } %12, 0 + %14 = trunc i64 %13 to i32 + %15 = icmp ult i32 %14, 7 + br i1 %15, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %._crit_edge -._crit_edge: ; preds = %12 +._crit_edge: ; preds = %11 %.pre = load i32, ptr %7, align 4 - br label %17 + br label %._crit_edge -17: ; preds = %11, %._crit_edge, %10, %10, %10 - %18 = phi i32 [ %.pre, %._crit_edge ], [ %8, %10 ], [ %8, %10 ], [ %8, %10 ], [ %8, %11 ] - %19 = and i32 %18, -9 - %spec.select.i14 = icmp eq i32 %19, 1 - br i1 %spec.select.i14, label %20, label %_ZNK4llvm6Triple10isOSDarwinEv.exit +16: ; preds = %2, %._crit_edge, %10, %10, %10 + %17 = phi i32 [ %.pre, %._crit_edge ], [ %8, %10 ], [ %8, %10 ], [ %8, %10 ], [ %8, %2 ] + %18 = and i32 %17, -9 + %spec.select.i14 = icmp eq i32 %18, 1 + br i1 %spec.select.i14, label %19, label %_ZNK4llvm6Triple10isOSDarwinEv.exit -20: ; preds = %17 - %21 = tail call { i64, i64 } @_ZNK4llvm6Triple12getOSVersionEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #29 - %22 = extractvalue { i64, i64 } %21, 0 - %23 = trunc i64 %22 to i32 - %24 = icmp ult i32 %23, 10 - br i1 %24, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit - -_ZNK4llvm6Triple13isOSVersionLTEjjj.exit: ; preds = %20 - %25 = icmp eq i32 %23, 10 - %26 = and i64 %22, 9223372032559808512 - %27 = icmp samesign ult i64 %26, 38654705664 - %spec.select.i15 = select i1 %25, i1 %27, i1 false +19: ; preds = %16 + %spec.select.i14 = tail call { i64, i64 } @_ZNK4llvm6Triple12getOSVersionEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #29 + %21 = extractvalue { i64, i64 } %spec.select.i14, 0 + %22 = trunc i64 %21 to i32 + %23 = icmp ult i32 %22, 10 + br i1 %23, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit + +_ZNK4llvm6Triple13isOSVersionLTEjjj.exit: ; preds = %19 + %24 = icmp eq i32 %22, 10 + %25 = and i64 %21, 9223372032559808512 + %26 = icmp samesign ult i64 %25, 38654705664 + %spec.select.i15 = select i1 %24, i1 %26, i1 false br i1 %spec.select.i15, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %_ZNK4llvm6Triple10isOSDarwinEv.exit -_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread: ; preds = %20, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit, %12 - %28 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %29 = load ptr, ptr %28, align 8 - %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 - %.sroa.0.0.copyload.i = load i64, ptr %30, align 8 - %31 = and i64 %.sroa.0.0.copyload.i, -16 - %32 = inttoptr i64 %31 to ptr - %33 = load ptr, ptr %32, align 16 - %34 = tail call i64 @_ZNK5clang4Type14getPointeeTypeEv(ptr noundef nonnull align 16 dereferenceable(24) %33) #29 +_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread: ; preds = %19, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit, %11 + %spec.select.i15 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %28 = load ptr, ptr %27, align 8 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 8 + %.sroa.0.0.copyload.i = load i64, ptr %29, align 8 + %28 = and i64 %.sroa.0.0.copyload.i, -16 + %29 = inttoptr i64 %30 to ptr + %30 = load ptr, ptr %29, align 16 + %.sroa.0.0.copyload.i = tail call i64 @_ZNK5clang4Type14getPointeeTypeEv(ptr noundef nonnull align 16 dereferenceable(24) %32) #29 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - call void @_ZNK5clang10ASTContext18getTypeInfoInCharsENS_8QualTypeE(ptr dead_on_unwind nonnull writable sret(%"struct.clang::TypeInfoChars") align 8 %3, ptr noundef nonnull align 8 dereferenceable(23096) %0, i64 %34) + call void @_ZNK5clang10ASTContext18getTypeInfoInCharsENS_8QualTypeE(ptr dead_on_unwind nonnull writable sret(%"struct.clang::TypeInfoChars") align 8 %3, ptr noundef nonnull align 8 dereferenceable(23096) %0, i64 %33) %.sroa.02.0.copyload.i = load i64, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) - %35 = and i64 %34, -16 - %36 = inttoptr i64 %35 to ptr - %37 = load ptr, ptr %36, align 16 - %38 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %37) - %39 = extractvalue { i64, i64 } %38, 1 - %40 = and i64 %39, 4294967295 - %41 = getelementptr inbounds nuw i8, ptr %0, i64 18440 - %.sroa.0.0.copyload.i.i.i.i = load i64, ptr %41, align 8 - %42 = and i64 %.sroa.0.0.copyload.i.i.i.i, -16 - %43 = inttoptr i64 %42 to ptr - %44 = load ptr, ptr %43, align 16 - %45 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %44) - %46 = extractvalue { i64, i64 } %45, 0 - %47 = udiv i64 %40, %46 - %.not = icmp eq i64 %.sroa.02.0.copyload.i, %47 - br i1 %.not, label %48, label %_ZNK4llvm6Triple10isOSDarwinEv.exit - -48: ; preds = %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread - %49 = load ptr, ptr %4, align 8 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 287 - %51 = load i8, ptr %50, align 1 - %.sroa.0.0.copyload.i.i = load i64, ptr %41, align 8 - %52 = and i64 %.sroa.0.0.copyload.i.i, -16 - %53 = inttoptr i64 %52 to ptr - %54 = load ptr, ptr %53, align 16 - %55 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %54) - %56 = extractvalue { i64, i64 } %55, 0 - %57 = mul i64 %56, %.sroa.02.0.copyload.i - %58 = zext i8 %51 to i64 - %59 = icmp sgt i64 %57, %58 + %34 = and i64 %33, -16 + %35 = inttoptr i64 %34 to ptr + %36 = load ptr, ptr %35, align 16 + %37 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %36) + %35 = extractvalue { i64, i64 } %37, 1 + %36 = and i64 %38, 4294967295 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 18440 + %38 = load i64, ptr %40, align 8 + %39 = and i64 %38, -16 + %40 = inttoptr i64 %39 to ptr + %41 = load ptr, ptr %42, align 16 + %.sroa.0.0.copyload.i.i.i.i = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %43) + %42 = extractvalue { i64, i64 } %.sroa.0.0.copyload.i.i.i.i, 0 + %43 = udiv i64 %39, %42 + %44 = icmp eq i64 %.sroa.02.0.copyload.i, %46 + br i1 %44, label %47, label %_ZNK4llvm6Triple10isOSDarwinEv.exit + +47: ; preds = %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread + %.not = load ptr, ptr %4, align 8 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 287 + %50 = load i8, ptr %49, align 1 + %.sroa.0.0.copyload.i.i = load i64, ptr %40, align 8 + %49 = and i64 %.sroa.0.0.copyload.i.i, -16 + %50 = inttoptr i64 %51 to ptr + %51 = load ptr, ptr %50, align 16 + %.sroa.0.0.copyload.i.i = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %53) + %52 = extractvalue { i64, i64 } %.sroa.0.0.copyload.i.i, 0 + %53 = mul i64 %52, %.sroa.02.0.copyload.i + %54 = zext i8 %50 to i64 + %55 = icmp sgt i64 %56, %54 br label %_ZNK4llvm6Triple10isOSDarwinEv.exit -_ZNK4llvm6Triple10isOSDarwinEv.exit: ; preds = %10, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, %48, %17, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit - %.0 = phi i1 [ false, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit ], [ false, %17 ], [ true, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread ], [ %59, %48 ], [ false, %10 ] +_ZNK4llvm6Triple10isOSDarwinEv.exit: ; preds = %10, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, %47, %16, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit + %59 = phi i1 [ false, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit ], [ false, %16 ], [ true, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread ], [ %58, %47 ], [ false, %10 ] ret i1 %.0 } @@ -109113,7 +109109,7 @@ _ZNK5clang17ObjCInterfaceDecl13hasDefinitionEv.exit: ; preds = %1, %3 %.0.copyload.i.i.i.i3.pre = load i64, ptr %2, align 8 %.pre = and i64 %.0.copyload.i.i.i.i3.pre, -8 %.pre8 = inttoptr i64 %.pre to ptr - br label %16 + br label %._crit_edge 16: ; preds = %15, %9 %.pre-phi9 = phi ptr [ %.pre8, %15 ], [ %11, %9 ] @@ -109206,7 +109202,7 @@ _ZNK5clang17ObjCInterfaceDecl13hasDefinitionEv.exit: ; preds = %1, %3 %.0.copyload.i.i.i.i3.pre = load i64, ptr %2, align 8 %.pre = and i64 %.0.copyload.i.i.i.i3.pre, -8 %.pre8 = inttoptr i64 %.pre to ptr - br label %16 + br label %._crit_edge 16: ; preds = %15, %9 %.pre-phi9 = phi ptr [ %.pre8, %15 ], [ %11, %9 ] @@ -130234,7 +130230,7 @@ define linkonce_odr hidden { ptr, i8 } @_ZN4llvm9StringMapIPN5clang13StringLiter %14 = load i32, ptr %13, align 8 %15 = add i32 %14, -1 store i32 %15, ptr %13, align 8 - br label %16 + br label %._crit_edge 16: ; preds = %4, %12 %17 = add i64 %2, 17 @@ -130860,7 +130856,7 @@ define linkonce_odr hidden { ptr, i8 } @_ZN4llvm9StringMapINS_11SmallVectorINSt7 %14 = load i32, ptr %13, align 8 %15 = add i32 %14, -1 store i32 %15, ptr %13, align 8 - br label %16 + br label %._crit_edge 16: ; preds = %4, %12 %17 = add i64 %2, 89 @@ -131214,7 +131210,7 @@ define linkonce_odr void @_ZSt13__heap_selectIPNSt7__cxx1112basic_stringIcSt11ch 13: ; preds = %3 %14 = add nsw i64 %11, -2 %15 = lshr i64 %14, 1 - br label %16 + br label %._crit_edge 16: ; preds = %16, %13 %.012.i = phi i64 [ %15, %13 ], [ %18, %16 ] @@ -131455,7 +131451,7 @@ define linkonce_odr hidden { ptr, i8 } @_ZN4llvm9StringMapISt9nullopt_tNS_15Mall %14 = load i32, ptr %13, align 8 %15 = add i32 %14, -1 store i32 %15, ptr %13, align 8 - br label %16 + br label %._crit_edge 16: ; preds = %4, %12 %17 = add i64 %2, 9 diff --git a/bench/llvm/optimized/ExprConstant.cpp.ll b/bench/llvm/optimized/ExprConstant.cpp.ll index e9ebab6eb05..20626838a68 100644 --- a/bench/llvm/optimized/ExprConstant.cpp.ll +++ b/bench/llvm/optimized/ExprConstant.cpp.ll @@ -102223,7 +102223,7 @@ _ZNK5clang4Type21castAsArrayTypeUnsafeEv.exit: ; preds = %42, %46 br label %68 49: ; preds = %.lr.ph._crit_edge, %22 - %50 = phi ptr [ %.pre66, %.lr.ph._crit_edge ], [ %.pre67, %22 ] + %50 = phi ptr [ %.pre66, %.lr.ph._crit_edge ], [ %.pre66, %22 ] %51 = phi ptr [ %.pre, %.lr.ph._crit_edge ], [ %.pre65, %22 ] %52 = getelementptr inbounds nuw %"class.clang::APValue::LValuePathEntry", ptr %51, i64 %indvars.iv %53 = load i64, ptr %52, align 8 diff --git a/bench/llvm/optimized/InstrProfiling.cpp.ll b/bench/llvm/optimized/InstrProfiling.cpp.ll index 963fd85a0ce..c2d9bb84e76 100644 --- a/bench/llvm/optimized/InstrProfiling.cpp.ll +++ b/bench/llvm/optimized/InstrProfiling.cpp.ll @@ -4845,65 +4845,61 @@ _ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.i.i.i: ; preds _ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i: ; preds = %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.i.i.i, %_ZL38needsRuntimeRegistrationOfSectionRangeRKN4llvm6TripleE.exit.thread.i %272 = getelementptr inbounds nuw i8, ptr %175, i64 32 %273 = load i32, ptr %272, align 8 - %274 = and i32 %273, 15 - %275 = and i32 %273, 14 - %spec.select.i.i.i.i120.i = icmp eq i32 %275, 2 - br i1 %spec.select.i.i.i.i120.i, label %277, label %276 - -276: ; preds = %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i - switch i32 %274, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i [ - i32 1, label %279 - i32 7, label %281 - i32 8, label %281 + %274 = and i32 %273, 14 + %275 = icmp eq i32 %274, 2 + br i1 %spec.select.i.i.i.i120.i, label %279, label %275 + +275: ; preds = %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i + %276 = and i32 %273, 15 + switch i32 %276, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i [ + i32 1, label %277 + i32 7, label %279 + i32 8, label %279 ] -277: ; preds = %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i - %278 = icmp eq i32 %274, 1 - br i1 %278, label %279, label %281 +277: ; preds = %275 + %278 = call noundef zeroext i1 @_ZNK4llvm8Function14hasFnAttributeENS_9Attribute8AttrKindE(ptr noundef nonnull align 8 dereferenceable(136) %175, i32 noundef 3) #19 + br i1 %278, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i, label %279 -279: ; preds = %277, %276 - %280 = call noundef zeroext i1 @_ZNK4llvm8Function14hasFnAttributeENS_9Attribute8AttrKindE(ptr noundef nonnull align 8 dereferenceable(136) %175, i32 noundef 3) #19 - br i1 %280, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i, label %._crit_edge.i.i.i - -._crit_edge.i.i.i: ; preds = %279 +._crit_edge16.i.i.i: ; preds = %277 %.pre.i.i.i = load i32, ptr %272, align 8 - %.pre16.i.i.i = and i32 %.pre.i.i.i, 15 - br label %281 + br label %._crit_edge.i.i.i -281: ; preds = %._crit_edge.i.i.i, %277, %276, %276 - %.pre-phi.i.i.i = phi i32 [ %.pre16.i.i.i, %._crit_edge.i.i.i ], [ %274, %276 ], [ %274, %276 ], [ %274, %277 ] - %282 = add nsw i32 %.pre-phi.i.i.i, -7 +279: ; preds = %._crit_edge16.i.i.i, %275, %275, %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i + %280 = phi i32 [ %.pre.i.i.i, %._crit_edge16.i.i.i ], [ %273, %275 ], [ %273, %275 ], [ %273, %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i ] + %.pre16.i.i.i = and i32 %280, 15 + %282 = add nsw i32 %281, -7 %spec.select.i.i12.i.i.i = icmp ult i32 %282, 2 br i1 %spec.select.i.i12.i.i.i, label %283, label %286 -283: ; preds = %281 +283: ; preds = %._crit_edge.i.i.i %284 = getelementptr inbounds nuw i8, ptr %175, i64 48 %285 = load ptr, ptr %284, align 8 %.not15.i.i.i = icmp eq ptr %285, null br i1 %.not15.i.i.i, label %286, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i -286: ; preds = %283, %281 +286: ; preds = %283, %279 %287 = call noundef zeroext i1 @_ZNK4llvm8Function15hasAddressTakenEPPKNS_4UserEbbbbb(ptr noundef nonnull align 8 dereferenceable(136) %175, ptr noundef null, i1 noundef zeroext false, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext false) #19 %.pre.i.i = load i32, ptr %272, align 8 %288 = and i32 %.pre.i.i, 14 %spec.select.i.i13.i.i.i = icmp eq i32 %288, 2 %or.cond.i.i = select i1 %287, i1 true, i1 %spec.select.i.i13.i.i.i - br i1 %or.cond.i.i, label %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i_crit_edge.i, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i + br i1 %or.cond.i.i, label %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i_crit_edge.i, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i -._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i_crit_edge.i: ; preds = %286 +._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i_crit_edge.i: ; preds = %286 %.pre.i = and i32 %.pre.i.i, 15 - br label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i + br label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i -_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i: ; preds = %286, %283, %279, %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.i.i.i, %262, %260 +_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i: ; preds = %286, %283, %277, %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.i.i.i, %262, %260 %289 = call noundef ptr @_ZN4llvm19ConstantPointerNull3getEPNS_11PointerTypeE(ptr noundef %256) #19 br label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i -_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i: ; preds = %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i_crit_edge.i, %276 - %.pre-phi.i = phi i32 [ %.pre.i, %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i_crit_edge.i ], [ %274, %276 ] +_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i: ; preds = %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i_crit_edge.i, %275 + %.pre-phi.i = phi i32 [ %.pre.i, %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i_crit_edge.i ], [ %276, %275 ] %290 = icmp eq i32 %.pre-phi.i, 1 br i1 %290, label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i, label %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i -_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i: ; preds = %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i +_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i: ; preds = %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i %291 = call noundef zeroext i1 @_ZNK4llvm11GlobalValue13isDeclarationEv(ptr noundef nonnull align 8 dereferenceable(48) %175) #19 br i1 %291, label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i, label %292 @@ -4988,13 +4984,13 @@ _ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i: ; preds = %_ZNK4 %.not26.i.i = icmp eq i32 %331, 9 br i1 %.not26.i.i, label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i, label %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i -_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i: ; preds = %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i +_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i19.i.i: ; preds = %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i %332 = or i32 %329, 16400 store i32 %332, ptr %320, align 8 br label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i -_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i: ; preds = %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i, %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i, %_ZL21shouldUsePublicSymbolPN4llvm8FunctionE.exit.i.i, %303, %_ZNK4llvm5Value11hasMetadataEj.exit.i.i.i, %292, %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i - %.0.i119.i = phi ptr [ %289, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i ], [ %314, %_ZL21shouldUsePublicSymbolPN4llvm8FunctionE.exit.i.i ], [ %314, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i ], [ %175, %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i ], [ %175, %292 ], [ %175, %_ZNK4llvm5Value11hasMetadataEj.exit.i.i.i ], [ %175, %303 ], [ %175, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i ], [ %314, %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i ] +_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i: ; preds = %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i, %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i, %_ZL21shouldUsePublicSymbolPN4llvm8FunctionE.exit.i.i, %303, %_ZNK4llvm5Value11hasMetadataEj.exit.i.i.i, %292, %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i + %.0.i119.i = phi ptr [ %289, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i ], [ %314, %_ZL21shouldUsePublicSymbolPN4llvm8FunctionE.exit.i.i ], [ %314, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i ], [ %175, %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i ], [ %175, %292 ], [ %175, %_ZNK4llvm5Value11hasMetadataEj.exit.i.i.i ], [ %175, %303 ], [ %175, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i ], [ %314, %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) br label %333 diff --git a/bench/llvm/optimized/Legalizer.cpp.ll b/bench/llvm/optimized/Legalizer.cpp.ll index a51ea910cec..fd41388dbee 100644 --- a/bench/llvm/optimized/Legalizer.cpp.ll +++ b/bench/llvm/optimized/Legalizer.cpp.ll @@ -8803,7 +8803,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN4llvm28LegalizationArtifactCom %5 = alloca %"class.llvm::TypeSize", align 8 %6 = alloca %"class.llvm::TypeSize", align 8 %7 = alloca %"class.llvm::TypeSize", align 8 - switch i32 %0, label %129 [ + switch i32 %0, label %119 [ i32 74, label %8 i32 73, label %8 i32 76, label %32 @@ -8811,7 +8811,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN4llvm28LegalizationArtifactCom 8: ; preds = %4, %4 %9 = icmp eq i32 %1, 0 - br i1 %9, label %129, label %10 + br i1 %9, label %119, label %10 10: ; preds = %8 %11 = and i64 %3, -7 @@ -8819,7 +8819,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN4llvm28LegalizationArtifactCom %12 = and i64 %3, 4 %13 = icmp ne i64 %12, 0 %14 = and i1 %spec.select.i.i, %13 - br i1 %14, label %129, label %15 + br i1 %14, label %119, label %15 15: ; preds = %10 %16 = and i64 %2, -7 @@ -8827,7 +8827,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN4llvm28LegalizationArtifactCom %17 = and i64 %2, 4 %18 = icmp ne i64 %17, 0 %19 = and i1 %spec.select.i.i15, %18 - br i1 %19, label %20, label %129 + br i1 %19, label %20, label %119 20: ; preds = %15 %21 = and i64 %2, 2 @@ -8856,11 +8856,11 @@ _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit9.i: ; preds = %20 _ZNK4llvm3LLT14getElementTypeEv.exit: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit.i, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit9.i %.sroa.0.0.i = phi i64 [ %28, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit.i ], [ %31, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit9.i ] %spec.select.i = icmp eq i64 %3, %.sroa.0.0.i - br label %129 + br label %119 32: ; preds = %4 %33 = icmp eq i32 %1, 0 - br i1 %33, label %129, label %34 + br i1 %33, label %119, label %34 34: ; preds = %32 %35 = and i64 %3, -7 @@ -8868,7 +8868,7 @@ _ZNK4llvm3LLT14getElementTypeEv.exit: ; preds = %_ZNK4llvm3LLT19getS %36 = and i64 %3, 4 %37 = icmp ne i64 %36, 0 %38 = and i1 %spec.select.i.i16, %37 - br i1 %38, label %39, label %129 + br i1 %38, label %39, label %119 39: ; preds = %34 %40 = and i64 %2, 2 @@ -8986,101 +8986,80 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit: ; preds = %70, %74, %77, %_ZNK store i8 %.sroa.3.0.i, ptr %.sroa.28.0..sroa_idx, align 8 %88 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %5) #25 %89 = icmp eq i32 %1, 127 - %90 = and i64 %3, 2 + %90 = and i64 %3, 1 %.not.i.not.i36 = icmp eq i64 %90, 0 - %91 = and i64 %3, 6 - %92 = icmp eq i64 %91, 2 - %93 = and i64 %3, 1 - %94 = icmp ne i64 %93, 0 - %or.cond14.i38 = or i1 %94, %92 - br i1 %89, label %95, label %112 - -95: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit - br i1 %or.cond14.i38, label %96, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 - -96: ; preds = %95 - %.not.i1.i51 = icmp eq i64 %93, 0 - br i1 %.not.i1.i51, label %99, label %97 - -97: ; preds = %96 - %98 = lshr i64 %3, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 + br i1 %89, label %91, label %105 + +91: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit + br i1 %.not84, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39, label %92 -99: ; preds = %96 - %100 = lshr i64 %3, 19 - %101 = and i64 %100, 65535 - %spec.select.i.i53 = select i1 %.not.i.not.i36, i64 %100, i64 %101 +92: ; preds = %91 + %93 = lshr i64 %3, 3 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 -_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39: ; preds = %95 - %102 = lshr i64 %3, 3 - %.sroa.0.0.insert.ext.i.i.i40 = and i64 %102, 65535 - %103 = select i1 %.not.i.not.i36, i64 2251799813685248, i64 576460752303423488 - %104 = and i64 %103, %3 - %.not1.i4.i41 = icmp ne i64 %104, 0 - %105 = lshr i64 %3, 19 - %106 = and i64 %105, 65535 - %spec.select.i10.i43 = select i1 %.not.i.not.i36, i64 %105, i64 %106 - %107 = mul nuw nsw i64 %spec.select.i10.i43, %.sroa.0.0.insert.ext.i.i.i40 - %108 = zext i1 %.not1.i4.i41 to i8 +_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39: ; preds = %91 + %94 = and i64 %3, 2 + %.not.i1.i51 = icmp eq i64 %94, 0 + %95 = lshr i64 %3, 3 + %.sroa.0.0.insert.ext.i.i.i40 = and i64 %95, 65535 + %96 = select i1 %.not.i1.i51, i64 2251799813685248, i64 576460752303423488 + %98 = and i64 %96, %3 + %.not1.i4.i41 = icmp ne i64 %97, 0 + %98 = lshr i64 %3, 19 + %99 = and i64 %98, 65535 + %100 = select i1 %.not.i1.i51, i64 %98, i64 %99 + %100 = mul nuw nsw i64 %100, %.sroa.0.0.insert.ext.i.i.i40 + %spec.select.i.i53 = zext i1 %.not1.i4.i41 to i8 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 -_ZNK4llvm3LLT13getSizeInBitsEv.exit54: ; preds = %97, %99, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 - %.sroa.012.0.in.i46 = phi i64 [ %107, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 ], [ %98, %97 ], [ %spec.select.i.i53, %99 ] - %.sroa.3.0.i47 = phi i8 [ %108, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 ], [ 0, %97 ], [ 0, %99 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit54: ; preds = %92, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 + %102 = phi i64 [ %100, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 ], [ %93, %92 ] + %.sroa.0.0.insert.ext.i.i.i40 = phi i8 [ %101, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 ], [ 0, %92 ] %.sroa.012.0.i48 = and i64 %.sroa.012.0.in.i46, 4294967295 store i64 %.sroa.012.0.i48, ptr %6, align 8 %.sroa.24.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 store i8 %.sroa.3.0.i47, ptr %.sroa.24.0..sroa_idx, align 8 - %109 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %6) #25 - %110 = and i64 %88, 4294967295 - %111 = icmp ule i64 %109, %110 - br label %129 + %106 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %6) #25 + %spec.select.i10.i43 = and i64 %88, 4294967295 + %107 = icmp ule i64 %102, %spec.select.i10.i43 + br label %119 -112: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit - br i1 %or.cond14.i38, label %113, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 +105: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit + br i1 %.not84, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59, label %106 -113: ; preds = %112 - %.not.i1.i71 = icmp eq i64 %93, 0 - br i1 %.not.i1.i71, label %116, label %114 - -114: ; preds = %113 - %115 = lshr i64 %3, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 - -116: ; preds = %113 - %117 = lshr i64 %3, 19 - %118 = and i64 %117, 65535 - %spec.select.i.i73 = select i1 %.not.i.not.i36, i64 %117, i64 %118 +106: ; preds = %105 + %107 = lshr i64 %3, 3 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 -_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59: ; preds = %112 - %119 = lshr i64 %3, 3 - %.sroa.0.0.insert.ext.i.i.i60 = and i64 %119, 65535 - %120 = select i1 %.not.i.not.i36, i64 2251799813685248, i64 576460752303423488 - %121 = and i64 %120, %3 - %.not1.i4.i61 = icmp ne i64 %121, 0 - %122 = lshr i64 %3, 19 - %123 = and i64 %122, 65535 - %spec.select.i10.i63 = select i1 %.not.i.not.i36, i64 %122, i64 %123 - %124 = mul nuw nsw i64 %spec.select.i10.i63, %.sroa.0.0.insert.ext.i.i.i60 - %125 = zext i1 %.not1.i4.i61 to i8 +_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59: ; preds = %105 + %109 = and i64 %3, 2 + %110 = icmp eq i64 %108, 0 + %111 = lshr i64 %3, 3 + %.sroa.0.0.insert.ext.i.i.i60 = and i64 %109, 65535 + %110 = select i1 %.not.i.not.i56, i64 2251799813685248, i64 576460752303423488 + %111 = and i64 %110, %3 + %.not1.i4.i61 = icmp ne i64 %111, 0 + %112 = lshr i64 %3, 19 + %113 = and i64 %112, 65535 + %.not.i1.i71 = select i1 %110, i64 %112, i64 %113 + %114 = mul nuw nsw i64 %.not.i1.i71, %.sroa.0.0.insert.ext.i.i.i60 + %115 = zext i1 %.not1.i4.i61 to i8 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 -_ZNK4llvm3LLT13getSizeInBitsEv.exit74: ; preds = %114, %116, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 - %.sroa.012.0.in.i66 = phi i64 [ %124, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 ], [ %115, %114 ], [ %spec.select.i.i73, %116 ] - %.sroa.3.0.i67 = phi i8 [ %125, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 ], [ 0, %114 ], [ 0, %116 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit74: ; preds = %106, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 + %.sroa.012.0.in.i66 = phi i64 [ %114, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 ], [ %107, %106 ] + %.sroa.3.0.i67 = phi i8 [ %115, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 ], [ 0, %106 ] %.sroa.012.0.i68 = and i64 %.sroa.012.0.in.i66, 4294967295 store i64 %.sroa.012.0.i68, ptr %7, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 store i8 %.sroa.3.0.i67, ptr %.sroa.2.0..sroa_idx, align 8 - %126 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %7) #25 - %127 = and i64 %88, 4294967295 - %128 = icmp uge i64 %126, %127 - br label %129 + %116 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %7) #25 + %117 = and i64 %88, 4294967295 + %119 = icmp uge i64 %116, %117 + br label %119 -129: ; preds = %34, %32, %10, %15, %_ZNK4llvm3LLT14getElementTypeEv.exit, %8, %4, %_ZNK4llvm3LLT13getSizeInBitsEv.exit74, %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 - %.0 = phi i1 [ %111, %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 ], [ %128, %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 ], [ false, %4 ], [ true, %8 ], [ false, %15 ], [ false, %10 ], [ %spec.select.i, %_ZNK4llvm3LLT14getElementTypeEv.exit ], [ true, %32 ], [ false, %34 ] +119: ; preds = %34, %32, %10, %15, %_ZNK4llvm3LLT14getElementTypeEv.exit, %8, %4, %_ZNK4llvm3LLT13getSizeInBitsEv.exit74, %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 + %.not1.i4.i61 = phi i1 [ %104, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 ], [ %118, %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 ], [ false, %4 ], [ true, %8 ], [ false, %15 ], [ false, %10 ], [ %spec.select.i, %_ZNK4llvm3LLT14getElementTypeEv.exit ], [ true, %32 ], [ false, %34 ] ret i1 %.0 } @@ -10582,7 +10561,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit60: ; preds = %84, %88, %91, %_ZNK store i64 %.sroa.012.0.i54, ptr %6, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 store i8 %.sroa.3.0.i53, ptr %.sroa.2.0..sroa_idx, align 8 - %102 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %6) #25 + %106 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %6) #25 %103 = icmp eq i64 %102, %65 br i1 %103, label %104, label %.critedge diff --git a/bench/llvm/optimized/MemorySanitizer.cpp.ll b/bench/llvm/optimized/MemorySanitizer.cpp.ll index 5560a2ee458..4fa4ec018c5 100644 --- a/bench/llvm/optimized/MemorySanitizer.cpp.ll +++ b/bench/llvm/optimized/MemorySanitizer.cpp.ll @@ -14176,7 +14176,7 @@ _ZN4llvm13IRBuilderBase9CreateShlEPNS_5ValueEmRKNS_5TwineEbb.exit.i: ; preds = % 155: ; preds = %_ZN4llvm13IRBuilderBase9CreateShlEPNS_5ValueEmRKNS_5TwineEbb.exit.i %156 = getelementptr inbounds nuw i8, ptr %10, i64 32 - store i16 257, ptr %156, align 8 + store i16 257, ptr %155, align 8 %157 = call noundef ptr @_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineENS_14InsertPositionE(i32 noundef 29, ptr noundef nonnull %121, ptr noundef %.0.i.i.i, ptr noundef nonnull align 8 dereferenceable(34) %10, ptr null, i64 0) #23 %158 = getelementptr inbounds nuw i8, ptr %1, i64 88 %159 = load ptr, ptr %158, align 8 @@ -20425,7 +20425,7 @@ _ZN4llvm13IRBuilderBase9CreateAddEPNS_5ValueES2_RKNS_5TwineEbb.exit.i26: ; preds %265 = load ptr, ptr %146, align 8 %266 = call noundef ptr @_ZN4llvm4Type9getInt8TyERNS_11LLVMContextE(ptr noundef nonnull align 8 dereferenceable(8) %265) #23 %267 = load ptr, ptr %148, align 8 - store i16 257, ptr %156, align 8 + store i16 257, ptr %155, align 8 %268 = call noundef ptr @_ZN4llvm13IRBuilderBase18CreateConstGEP1_32EPNS_4TypeEPNS_5ValueEjRKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(144) %21, ptr noundef %266, ptr noundef %267, i32 noundef 160, ptr noundef nonnull align 8 dereferenceable(34) %8) %269 = load ptr, ptr %157, align 8 %270 = call noundef ptr @_ZN4llvm13IRBuilderBase21CreateMemTransferInstEjPNS_5ValueENS_10MaybeAlignES2_S3_S2_bPNS_6MDNodeES5_S5_S5_(ptr noundef nonnull align 8 dereferenceable(144) %21, i32 noundef 232, ptr noundef %264, i16 259, ptr noundef %268, i16 259, ptr noundef %269, i1 noundef zeroext false, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null) #23 @@ -25926,7 +25926,7 @@ _ZN4llvm13IRBuilderBase18CreateExtractValueEPNS_5ValueENS_8ArrayRefIjEERKNS_5Twi %162 = load ptr, ptr %111, align 8 %163 = load ptr, ptr %162, align 8 %164 = getelementptr inbounds nuw i8, ptr %163, i64 16 - %165 = load ptr, ptr %164, align 8 + %164 = load ptr, ptr %163, align 8 %166 = call noundef ptr %165(ptr noundef nonnull align 8 dereferenceable(8) %162, i32 noundef 29, ptr noundef %.017.i99, ptr noundef %161) #23 %.not.i43 = icmp eq ptr %166, null br i1 %.not.i43, label %167, label %_ZN4llvm13IRBuilderBase8CreateOrEPNS_5ValueES2_RKNS_5TwineE.exit52 @@ -32934,7 +32934,7 @@ _ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRB %.0.i42 = phi ptr [ %162, %160 ], [ %.tr14.lcssa.i, %tailrecurse._crit_edge.i ] %163 = load ptr, ptr %113, align 8 %164 = getelementptr inbounds nuw i8, ptr %163, i64 88 - %165 = load ptr, ptr %164, align 8 + %164 = load ptr, ptr %163, align 8 %166 = getelementptr inbounds nuw i8, ptr %12, i64 32 store i16 257, ptr %166, align 8 %167 = call noundef ptr @_ZN4llvm13IRBuilderBase17CreateAlignedLoadEPNS_4TypeEPNS_5ValueENS_10MaybeAlignEbRKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(128) %6, ptr noundef %165, ptr noundef %108, i16 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(34) %12) @@ -36480,7 +36480,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_5ValueELb1EE28reserveForParamAndGetAddress %155 = sub nsw i64 0, %154 %156 = getelementptr inbounds %"class.llvm::Use", ptr %1, i64 %155 %157 = getelementptr inbounds nuw %"class.llvm::Use", ptr %156, i64 %indvars.iv71 - %158 = load ptr, ptr %157, align 8 + %157 = load ptr, ptr %156, align 8 %159 = call fastcc noundef nonnull align 8 dereferenceable(32) ptr @_ZN12_GLOBAL__N_122MemorySanitizerVisitor8CombinerILb0EE3AddEPN4llvm5ValueE(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %158) %indvars.iv.next72 = add nuw nsw i64 %indvars.iv71, 1 %exitcond75.not = icmp eq i64 %indvars.iv.next72, %wide.trip.count74 @@ -36491,8 +36491,8 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_5ValueELb1EE28reserveForParamAndGetAddress %161 = call noundef nonnull align 8 dereferenceable(512) ptr @_ZNK4llvm8Function13getDataLayoutEv(ptr noundef nonnull align 8 dereferenceable(136) %160) #23 %162 = call { i64, i8 } @_ZNK4llvm10DataLayout17getTypeSizeInBitsEPNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(512) %161, ptr noundef %95) %163 = load ptr, ptr %151, align 8 - %164 = getelementptr inbounds nuw i8, ptr %163, i64 8 - %165 = load ptr, ptr %164, align 8 + %163 = getelementptr inbounds nuw i8, ptr %162, i64 8 + %164 = load ptr, ptr %163, align 8 %166 = getelementptr inbounds nuw i8, ptr %165, i64 4 %167 = load i32, ptr %166, align 4 %.not.i = icmp eq i32 %167, 0 @@ -37612,9 +37612,9 @@ tailrecurse._crit_edge.i: ; preds = %tailrecurse.i %151 = icmp eq i32 %.mask.i, 256 br i1 %151, label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit, label %152 -152: ; preds = %tailrecurse._crit_edge.i +153: ; preds = %tailrecurse._crit_edge.i %153 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef nonnull %146, i64 noundef 0, i1 noundef zeroext false) #23 - %154 = call noundef ptr @_ZN4llvm13IRBuilderBase10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 33, ptr noundef nonnull %144, ptr noundef %153, ptr noundef nonnull align 8 dereferenceable(34) %17) + %155 = call noundef ptr @_ZN4llvm13IRBuilderBase10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 33, ptr noundef nonnull %144, ptr noundef %153, ptr noundef nonnull align 8 dereferenceable(34) %17) br label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit _ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit: ; preds = %tailrecurse._crit_edge.i, %152 @@ -37648,7 +37648,7 @@ tailrecurse._crit_edge.i53: ; preds = %tailrecurse.i51, %_ %169 = icmp eq i32 %.mask.i57, 256 br i1 %169, label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59, label %170 -170: ; preds = %tailrecurse._crit_edge.i53 +171: ; preds = %tailrecurse._crit_edge.i53 %171 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef nonnull %.lcssa17.i55, i64 noundef 0, i1 noundef zeroext false) #23 %172 = call noundef ptr @_ZN4llvm13IRBuilderBase10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 33, ptr noundef nonnull %.tr14.lcssa.i54, ptr noundef %171, ptr noundef nonnull align 8 dereferenceable(34) %18) br label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59 @@ -37668,7 +37668,7 @@ _ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRB %.not.i60 = icmp eq i32 %179, 0 br i1 %.not.i60, label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit, label %180 -180: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59 +181: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59 %181 = getelementptr inbounds nuw i8, ptr %0, i64 368 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) %182 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -37684,8 +37684,8 @@ _ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRB i64 -8192, label %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i ] -185: ; preds = %180 - call void @_ZN4llvm15ValueHandleBase12AddToUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #23 +186: ; preds = %180 + call void @_ZN4llvm15ValueHandleBase12AddToUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %183) #23 br label %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i _ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i: ; preds = %185, %180, %180, %180 @@ -37701,8 +37701,8 @@ _ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0E i64 -8192, label %_ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i ] -189: ; preds = %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i - call void @_ZN4llvm15ValueHandleBase17RemoveFromUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #23 +190: ; preds = %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i + call void @_ZN4llvm15ValueHandleBase17RemoveFromUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %183) #23 br label %_ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i _ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i: ; preds = %189, %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i, %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i, %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i @@ -37719,8 +37719,8 @@ _ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit: ; pr %193 = icmp eq ptr %192, %24 br i1 %193, label %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit, label %194 -194: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit - call void @free(ptr noundef %192) #23 +195: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit + call void @free(ptr noundef %193) #23 br label %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit _ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit, %194 diff --git a/bench/llvm/optimized/OSTargets.cpp.ll b/bench/llvm/optimized/OSTargets.cpp.ll index ea922b501fd..b4c54ee8d56 100644 --- a/bench/llvm/optimized/OSTargets.cpp.ll +++ b/bench/llvm/optimized/OSTargets.cpp.ll @@ -377,8 +377,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit54.thread221: ; preds = %102, %114, %_ZN4llv store i8 %145, ptr %146, align 1 %147 = getelementptr inbounds nuw i8, ptr %27, i64 4 store i8 0, ptr %147, align 1 - %cond = icmp eq i32 %116, 5 - br i1 %cond, label %200, label %.thread246 + br label %.thread246 .critedge: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit54.thread221 %148 = icmp ult i32 %119, 10 @@ -461,11 +460,11 @@ _ZN4llvmeqENS_9StringRefES0_.exit54.thread221: ; preds = %102, %114, %_ZN4llv %193 = or disjoint i8 %192, 48 store i8 %193, ptr %.sink249.sroa.phi, align 1 store i8 0, ptr %.sink247.sroa.phi, align 1 - switch i32 %116, label %219 [ + switch i32 %116, label %218 [ i32 26, label %194 i32 5, label %200 - i32 27, label %207 - i32 29, label %213 + i32 27, label %206 + i32 29, label %212 ] 194: ; preds = %184 @@ -488,151 +487,150 @@ _ZN4llvm5TwineC2EPKc.exit: ; preds = %194, %199 %storemerge.i = phi i8 [ 3, %199 ], [ 1, %194 ] store i8 %storemerge.i, ptr %197, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %28, ptr noundef nonnull align 8 dereferenceable(34) %29) - br label %226 + br label %225 -200: ; preds = %.thread, %184 - %201 = phi i8 [ %185, %184 ], [ 1, %.thread ] - %202 = getelementptr inbounds nuw i8, ptr %30, i64 32 - %203 = getelementptr inbounds nuw i8, ptr %30, i64 33 - store i8 1, ptr %203, align 1 +200: ; preds = %184 + %201 = getelementptr inbounds nuw i8, ptr %30, i64 32 + %202 = getelementptr inbounds nuw i8, ptr %30, i64 33 + store i8 1, ptr %202, align 1 store ptr @.str.20, ptr %30, align 8 - store i8 3, ptr %202, align 8 - %204 = getelementptr inbounds nuw i8, ptr %31, i64 32 - %205 = getelementptr inbounds nuw i8, ptr %31, i64 33 - store i8 1, ptr %205, align 1 - %.not.i122 = icmp eq i8 %201, 0 - br i1 %.not.i122, label %_ZN4llvm5TwineC2EPKc.exit124, label %206 - -206: ; preds = %200 + store i8 3, ptr %201, align 8 + %203 = getelementptr inbounds nuw i8, ptr %31, i64 32 + %204 = getelementptr inbounds nuw i8, ptr %31, i64 33 + store i8 1, ptr %204, align 1 + %.not.i122 = icmp eq i8 %185, 0 + br i1 %.not.i122, label %_ZN4llvm5TwineC2EPKc.exit124, label %205 + +205: ; preds = %200 store ptr %27, ptr %31, align 8 br label %_ZN4llvm5TwineC2EPKc.exit124 -_ZN4llvm5TwineC2EPKc.exit124: ; preds = %200, %206 - %storemerge.i123 = phi i8 [ 3, %206 ], [ 1, %200 ] - store i8 %storemerge.i123, ptr %204, align 8 +_ZN4llvm5TwineC2EPKc.exit124: ; preds = %200, %205 + %storemerge.i123 = phi i8 [ 3, %205 ], [ 1, %200 ] + store i8 %storemerge.i123, ptr %203, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %30, ptr noundef nonnull align 8 dereferenceable(34) %31) - br label %226 + br label %225 -207: ; preds = %184 - %208 = getelementptr inbounds nuw i8, ptr %32, i64 32 - %209 = getelementptr inbounds nuw i8, ptr %32, i64 33 - store i8 1, ptr %209, align 1 +206: ; preds = %184 + %207 = getelementptr inbounds nuw i8, ptr %32, i64 32 + %208 = getelementptr inbounds nuw i8, ptr %32, i64 33 + store i8 1, ptr %208, align 1 store ptr @.str.21, ptr %32, align 8 - store i8 3, ptr %208, align 8 - %210 = getelementptr inbounds nuw i8, ptr %33, i64 32 - %211 = getelementptr inbounds nuw i8, ptr %33, i64 33 - store i8 1, ptr %211, align 1 + store i8 3, ptr %207, align 8 + %209 = getelementptr inbounds nuw i8, ptr %33, i64 32 + %210 = getelementptr inbounds nuw i8, ptr %33, i64 33 + store i8 1, ptr %210, align 1 %.not.i126 = icmp eq i8 %185, 0 - br i1 %.not.i126, label %_ZN4llvm5TwineC2EPKc.exit128, label %212 + br i1 %.not.i126, label %_ZN4llvm5TwineC2EPKc.exit128, label %211 -212: ; preds = %207 +211: ; preds = %206 store ptr %27, ptr %33, align 8 br label %_ZN4llvm5TwineC2EPKc.exit128 -_ZN4llvm5TwineC2EPKc.exit128: ; preds = %207, %212 - %storemerge.i127 = phi i8 [ 3, %212 ], [ 1, %207 ] - store i8 %storemerge.i127, ptr %210, align 8 +_ZN4llvm5TwineC2EPKc.exit128: ; preds = %206, %211 + %storemerge.i127 = phi i8 [ 3, %211 ], [ 1, %206 ] + store i8 %storemerge.i127, ptr %209, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %32, ptr noundef nonnull align 8 dereferenceable(34) %33) - br label %226 + br label %225 -213: ; preds = %184 - %214 = getelementptr inbounds nuw i8, ptr %34, i64 32 - %215 = getelementptr inbounds nuw i8, ptr %34, i64 33 - store i8 1, ptr %215, align 1 +212: ; preds = %184 + %213 = getelementptr inbounds nuw i8, ptr %34, i64 32 + %214 = getelementptr inbounds nuw i8, ptr %34, i64 33 + store i8 1, ptr %214, align 1 store ptr @.str.22, ptr %34, align 8 - store i8 3, ptr %214, align 8 - %216 = getelementptr inbounds nuw i8, ptr %35, i64 32 - %217 = getelementptr inbounds nuw i8, ptr %35, i64 33 - store i8 1, ptr %217, align 1 + store i8 3, ptr %213, align 8 + %215 = getelementptr inbounds nuw i8, ptr %35, i64 32 + %216 = getelementptr inbounds nuw i8, ptr %35, i64 33 + store i8 1, ptr %216, align 1 %.not.i130 = icmp eq i8 %185, 0 - br i1 %.not.i130, label %_ZN4llvm5TwineC2EPKc.exit132, label %218 + br i1 %.not.i130, label %_ZN4llvm5TwineC2EPKc.exit132, label %217 -218: ; preds = %213 +217: ; preds = %212 store ptr %27, ptr %35, align 8 br label %_ZN4llvm5TwineC2EPKc.exit132 -_ZN4llvm5TwineC2EPKc.exit132: ; preds = %213, %218 - %storemerge.i131 = phi i8 [ 3, %218 ], [ 1, %213 ] - store i8 %storemerge.i131, ptr %216, align 8 +_ZN4llvm5TwineC2EPKc.exit132: ; preds = %212, %217 + %storemerge.i131 = phi i8 [ 3, %217 ], [ 1, %212 ] + store i8 %storemerge.i131, ptr %215, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %34, ptr noundef nonnull align 8 dereferenceable(34) %35) - br label %226 + br label %225 -219: ; preds = %184 - br i1 %spec.select.i55, label %.thread246, label %226 +218: ; preds = %184 + br i1 %spec.select.i55, label %.thread246, label %225 -.thread246: ; preds = %.thread, %219 - %220 = phi i8 [ %185, %219 ], [ 1, %.thread ] - %221 = getelementptr inbounds nuw i8, ptr %36, i64 32 - %222 = getelementptr inbounds nuw i8, ptr %36, i64 33 - store i8 1, ptr %222, align 1 +.thread246: ; preds = %.thread, %218 + %219 = phi i8 [ %185, %218 ], [ 1, %.thread ] + %220 = getelementptr inbounds nuw i8, ptr %36, i64 32 + %221 = getelementptr inbounds nuw i8, ptr %36, i64 33 + store i8 1, ptr %221, align 1 store ptr @.str.23, ptr %36, align 8 - store i8 3, ptr %221, align 8 - %223 = getelementptr inbounds nuw i8, ptr %37, i64 32 - %224 = getelementptr inbounds nuw i8, ptr %37, i64 33 - store i8 1, ptr %224, align 1 - %.not.i135 = icmp eq i8 %220, 0 - br i1 %.not.i135, label %_ZN4llvm5TwineC2EPKc.exit137, label %225 - -225: ; preds = %.thread246 + store i8 3, ptr %220, align 8 + %222 = getelementptr inbounds nuw i8, ptr %37, i64 32 + %223 = getelementptr inbounds nuw i8, ptr %37, i64 33 + store i8 1, ptr %223, align 1 + %.not.i135 = icmp eq i8 %219, 0 + br i1 %.not.i135, label %_ZN4llvm5TwineC2EPKc.exit137, label %224 + +224: ; preds = %.thread246 store ptr %27, ptr %37, align 8 br label %_ZN4llvm5TwineC2EPKc.exit137 -_ZN4llvm5TwineC2EPKc.exit137: ; preds = %.thread246, %225 - %storemerge.i136 = phi i8 [ 3, %225 ], [ 1, %.thread246 ] - store i8 %storemerge.i136, ptr %223, align 8 +_ZN4llvm5TwineC2EPKc.exit137: ; preds = %.thread246, %224 + %storemerge.i136 = phi i8 [ 3, %224 ], [ 1, %.thread246 ] + store i8 %storemerge.i136, ptr %222, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %36, ptr noundef nonnull align 8 dereferenceable(34) %37) - br label %226 - -226: ; preds = %_ZN4llvm5TwineC2EPKc.exit124, %_ZN4llvm5TwineC2EPKc.exit132, %_ZN4llvm5TwineC2EPKc.exit137, %219, %_ZN4llvm5TwineC2EPKc.exit128, %_ZN4llvm5TwineC2EPKc.exit - %227 = load i32, ptr %98, align 4 - %228 = and i32 %227, -9 - %spec.select.i.i = icmp eq i32 %228, 1 - br i1 %spec.select.i.i, label %230, label %229 - -229: ; preds = %226 - switch i32 %227, label %_ZN4llvmeqENS_9StringRefES0_.exit54.thread [ - i32 26, label %230 - i32 5, label %230 - i32 27, label %230 - i32 29, label %230 - i32 30, label %230 + br label %225 + +225: ; preds = %_ZN4llvm5TwineC2EPKc.exit124, %_ZN4llvm5TwineC2EPKc.exit132, %_ZN4llvm5TwineC2EPKc.exit137, %218, %_ZN4llvm5TwineC2EPKc.exit128, %_ZN4llvm5TwineC2EPKc.exit + %226 = load i32, ptr %98, align 4 + %227 = and i32 %226, -9 + %228 = icmp eq i32 %227, 1 + br i1 %spec.select.i.i, label %229, label %228 + +228: ; preds = %225 + switch i32 %226, label %_ZN4llvmeqENS_9StringRefES0_.exit54.thread [ + i32 26, label %229 + i32 5, label %229 + i32 27, label %229 + i32 29, label %229 + i32 30, label %229 ] -230: ; preds = %229, %229, %229, %229, %229, %226 - %231 = getelementptr inbounds nuw i8, ptr %38, i64 32 - %232 = getelementptr inbounds nuw i8, ptr %38, i64 33 - store i8 1, ptr %232, align 1 +229: ; preds = %228, %228, %228, %228, %228, %225 + %230 = getelementptr inbounds nuw i8, ptr %38, i64 32 + %231 = getelementptr inbounds nuw i8, ptr %38, i64 33 + store i8 1, ptr %231, align 1 store ptr @.str.24, ptr %38, align 8 - store i8 3, ptr %231, align 8 - %233 = getelementptr inbounds nuw i8, ptr %39, i64 32 - %234 = getelementptr inbounds nuw i8, ptr %39, i64 33 - store i8 1, ptr %234, align 1 - %235 = load i8, ptr %27, align 1 - %.not.i139 = icmp eq i8 %235, 0 - br i1 %.not.i139, label %_ZN4llvm5TwineC2EPKc.exit141, label %236 - -236: ; preds = %230 + store i8 3, ptr %230, align 8 + %232 = getelementptr inbounds nuw i8, ptr %39, i64 32 + %233 = getelementptr inbounds nuw i8, ptr %39, i64 33 + store i8 1, ptr %233, align 1 + %234 = load i8, ptr %27, align 1 + %235 = icmp eq i8 %234, 0 + br i1 %.not.i139, label %_ZN4llvm5TwineC2EPKc.exit141, label %235 + +235: ; preds = %229 store ptr %27, ptr %39, align 8 br label %_ZN4llvm5TwineC2EPKc.exit141 -_ZN4llvm5TwineC2EPKc.exit141: ; preds = %230, %236 - %storemerge.i140 = phi i8 [ 3, %236 ], [ 1, %230 ] - store i8 %storemerge.i140, ptr %233, align 8 +_ZN4llvm5TwineC2EPKc.exit141: ; preds = %229, %235 + %storemerge.i140 = phi i8 [ 3, %235 ], [ 1, %229 ] + store i8 %storemerge.i140, ptr %232, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %38, ptr noundef nonnull align 8 dereferenceable(34) %39) - %237 = getelementptr inbounds nuw i8, ptr %40, i64 32 - %238 = getelementptr inbounds nuw i8, ptr %40, i64 33 - store i8 1, ptr %238, align 1 + %236 = getelementptr inbounds nuw i8, ptr %40, i64 32 + %237 = getelementptr inbounds nuw i8, ptr %40, i64 33 + store i8 1, ptr %237, align 1 store ptr @.str.25, ptr %40, align 8 - store i8 3, ptr %237, align 8 - %239 = getelementptr inbounds nuw i8, ptr %41, i64 32 - %240 = getelementptr inbounds nuw i8, ptr %41, i64 33 - store i8 1, ptr %240, align 1 + store i8 3, ptr %236, align 8 + %238 = getelementptr inbounds nuw i8, ptr %41, i64 32 + %239 = getelementptr inbounds nuw i8, ptr %41, i64 33 + store i8 1, ptr %239, align 1 store ptr @.str.3, ptr %41, align 8 - store i8 3, ptr %239, align 8 + store i8 3, ptr %238, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %40, ptr noundef nonnull align 8 dereferenceable(34) %41) br label %_ZN4llvmeqENS_9StringRefES0_.exit54.thread -_ZN4llvmeqENS_9StringRefES0_.exit54.thread: ; preds = %_ZN4llvm5TwineC2EPKc.exit141, %229, %_ZN4llvmeqENS_9StringRefES0_.exit54 +_ZN4llvmeqENS_9StringRefES0_.exit54.thread: ; preds = %_ZN4llvm5TwineC2EPKc.exit141, %228, %_ZN4llvmeqENS_9StringRefES0_.exit54 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %26, i64 16, i1 false) ret void } diff --git a/bench/llvm/optimized/Verifier.cpp.ll b/bench/llvm/optimized/Verifier.cpp.ll index b066d9cb9ef..36b5be35e8b 100644 --- a/bench/llvm/optimized/Verifier.cpp.ll +++ b/bench/llvm/optimized/Verifier.cpp.ll @@ -12589,9 +12589,9 @@ _ZN4llvm7mdconst19dyn_extract_or_nullINS_11ConstantIntERKNS_9MDOperandEEENSt9ena store i32 0, ptr %337, align 8 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %398 - %.0160 = phi i8 [ %376, %398 ], [ 0, %.lr.ph.preheader ] - %338 = phi ptr [ %399, %398 ], [ %.pr, %.lr.ph.preheader ] +.lr.ph: ; preds = %.lr.ph.preheader, %397 + %.0160 = phi i8 [ %376, %397 ], [ 0, %.lr.ph.preheader ] + %338 = phi ptr [ %398, %397 ], [ %.pr, %.lr.ph.preheader ] %339 = getelementptr inbounds i8, ptr %338, i64 -16 %340 = load i64, ptr %339, align 8 %341 = and i64 %340, 2 @@ -12708,78 +12708,75 @@ _ZNK4llvm5APInteqEm.exit.thread: ; preds = %_ZNK4llvm5APInt13ge ._crit_edge: ; preds = %372, %_ZNK4llvm5APInteqEm.exit %388 = icmp eq i32 %380, %.sroa.2136.0.extract.trunc - br i1 %388, label %397, label %389 + br i1 %388, label %396, label %389 389: ; preds = %._crit_edge %390 = icmp ult i64 %371, 4294967296 - br i1 %390, label %391, label %394 + br i1 %390, label %391, label %393 391: ; preds = %389 %392 = call noundef zeroext i1 @_ZNK4llvm5APInteqEm(ptr noundef nonnull align 8 dereferenceable(12) %22, i64 noundef 0) - %393 = icmp eq i64 %.sroa.2136.0.extract.shift, 4294967295 - %or.cond3 = and i1 %.0.i142145, %393 - %or.cond173 = or i1 %392, %or.cond3 - br i1 %or.cond173, label %397, label %395 + br i1 %392, label %396, label %394 -394: ; preds = %389 +393: ; preds = %389 %.old = icmp eq i64 %.sroa.2136.0.extract.shift, 4294967295 %or.cond3.old = and i1 %.0.i142145, %.old - br i1 %or.cond3.old, label %397, label %395 + br i1 %or.cond3.old, label %396, label %394 -395: ; preds = %391, %394 +394: ; preds = %391, %393 store ptr %1, ptr %28, align 8 - %396 = load i32, ptr %326, align 8 - store i32 %396, ptr %29, align 4 + %395 = load i32, ptr %326, align 8 + store i32 %395, ptr %29, align 4 call void @_ZN4llvm12TBAAVerifier11CheckFailedIJRA55_KcPNS_11InstructionERPKNS_6MDNodeERjjEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 1 dereferenceable(55) @.str.26, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %29) br label %.loopexit -397: ; preds = %394, %391, %._crit_edge +396: ; preds = %393, %391, %._crit_edge %brmerge.not = select i1 %.0.i142145, i1 %.not57, i1 false - br i1 %brmerge.not, label %.critedge, label %398 + br i1 %brmerge.not, label %.critedge, label %397 -398: ; preds = %397 - %399 = call noundef ptr @_ZN4llvm12TBAAVerifier28getFieldNodeFromTBAABaseNodeERNS_11InstructionEPKNS_6MDNodeERNS_5APIntEb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(72) %1, ptr noundef %352, ptr noundef nonnull align 8 dereferenceable(12) %22, i1 noundef zeroext %.0.i142145) - store ptr %399, ptr %12, align 8 - %.not56 = icmp eq ptr %399, null +397: ; preds = %396 + %398 = call noundef ptr @_ZN4llvm12TBAAVerifier28getFieldNodeFromTBAABaseNodeERNS_11InstructionEPKNS_6MDNodeERNS_5APIntEb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(72) %1, ptr noundef %352, ptr noundef nonnull align 8 dereferenceable(12) %22, i1 noundef zeroext %.0.i142145) + store ptr %398, ptr %12, align 8 + %.not56 = icmp eq ptr %398, null br i1 %.not56, label %.critedge, label %.lr.ph, !llvm.loop !92 -.critedge: ; preds = %398, %_ZL14IsRootTBAANodePKN4llvm6MDNodeE.exit, %397 - %.1.ph = phi i8 [ %376, %398 ], [ %.0160, %_ZL14IsRootTBAANodePKN4llvm6MDNodeE.exit ], [ %376, %397 ] - %400 = trunc nuw i8 %.1.ph to i1 - br i1 %400, label %.loopexit, label %401 +.critedge: ; preds = %397, %_ZL14IsRootTBAANodePKN4llvm6MDNodeE.exit, %396 + %.1.ph = phi i8 [ %376, %397 ], [ %.0160, %_ZL14IsRootTBAANodePKN4llvm6MDNodeE.exit ], [ %376, %396 ] + %399 = trunc nuw i8 %.1.ph to i1 + br i1 %399, label %.loopexit, label %400 -401: ; preds = %.critedge +400: ; preds = %.critedge store ptr %1, ptr %30, align 8 call void @_ZN4llvm12TBAAVerifier11CheckFailedIJRA40_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.27, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %8) br label %.loopexit -.loopexit: ; preds = %370, %.critedge, %401, %395, %_ZNK4llvm5APInteqEm.exit.thread, %.critedge175 - %.148 = phi i1 [ false, %.critedge175 ], [ false, %401 ], [ false, %395 ], [ false, %_ZNK4llvm5APInteqEm.exit.thread ], [ true, %.critedge ], [ false, %370 ] - %402 = load ptr, ptr %334, align 8 - %403 = load ptr, ptr %23, align 8 - %404 = icmp eq ptr %402, %403 - br i1 %404, label %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit, label %405 +.loopexit: ; preds = %370, %.critedge, %400, %394, %_ZNK4llvm5APInteqEm.exit.thread, %.critedge175 + %.148 = phi i1 [ false, %.critedge175 ], [ false, %400 ], [ false, %394 ], [ false, %_ZNK4llvm5APInteqEm.exit.thread ], [ true, %.critedge ], [ false, %370 ] + %401 = load ptr, ptr %334, align 8 + %402 = load ptr, ptr %23, align 8 + %.148 = icmp eq ptr %401, %402 + br i1 %403, label %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit, label %404 -405: ; preds = %.loopexit - call void @free(ptr noundef %402) #23 +404: ; preds = %.loopexit + call void @free(ptr noundef %401) #23 br label %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit -_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit: ; preds = %.loopexit, %405 - %406 = load i32, ptr %326, align 8 - %407 = icmp ugt i32 %406, 64 - br i1 %407, label %408, label %_ZN4llvm5APIntD2Ev.exit +_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit: ; preds = %.loopexit, %404 + %405 = load i32, ptr %326, align 8 + %406 = icmp ugt i32 %405, 64 + br i1 %406, label %407, label %_ZN4llvm5APIntD2Ev.exit -408: ; preds = %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit - %409 = load ptr, ptr %22, align 8 - %410 = icmp eq ptr %409, null - br i1 %410, label %_ZN4llvm5APIntD2Ev.exit, label %411 +407: ; preds = %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit + %408 = load ptr, ptr %22, align 8 + %409 = icmp eq ptr %408, null + br i1 %409, label %_ZN4llvm5APIntD2Ev.exit, label %410 -411: ; preds = %408 - call void @_ZdaPv(ptr noundef nonnull %409) #25 +410: ; preds = %407 + call void @_ZdaPv(ptr noundef nonnull %408) #25 br label %_ZN4llvm5APIntD2Ev.exit -_ZN4llvm5APIntD2Ev.exit: ; preds = %411, %408, %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit, %324, %302, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA99_KcPNS_11InstructionERPKNS_6MDNodeERPS7_SC_EEEvDpOT_.exit, %277, %266, %229, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA53_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit, %177, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA66_KcPNS_11InstructionEEEEvDpOT_.exit, %62, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA37_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit - %.047 = phi i1 [ false, %324 ], [ false, %302 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA99_KcPNS_11InstructionERPKNS_6MDNodeERPS7_SC_EEEvDpOT_.exit ], [ false, %277 ], [ false, %266 ], [ false, %229 ], [ false, %177 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA53_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA66_KcPNS_11InstructionEEEEvDpOT_.exit ], [ false, %62 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA37_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit ], [ %.148, %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit ], [ %.148, %408 ], [ %.148, %411 ] +_ZN4llvm5APIntD2Ev.exit: ; preds = %410, %407, %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit, %324, %302, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA99_KcPNS_11InstructionERPKNS_6MDNodeERPS7_SC_EEEvDpOT_.exit, %277, %266, %229, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA53_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit, %177, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA66_KcPNS_11InstructionEEEEvDpOT_.exit, %62, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA37_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit + %.047 = phi i1 [ false, %324 ], [ false, %302 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA99_KcPNS_11InstructionERPKNS_6MDNodeERPS7_SC_EEEvDpOT_.exit ], [ false, %277 ], [ false, %266 ], [ false, %229 ], [ false, %177 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA53_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA66_KcPNS_11InstructionEEEEvDpOT_.exit ], [ false, %62 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA37_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit ], [ %.148, %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit ], [ %.148, %407 ], [ %.148, %410 ] ret i1 %.047 } diff --git a/bench/luajit/optimized/lj_str.ll b/bench/luajit/optimized/lj_str.ll index fff28517143..aa0c6631378 100644 --- a/bench/luajit/optimized/lj_str.ll +++ b/bench/luajit/optimized/lj_str.ll @@ -203,11 +203,7 @@ for.body.lr.ph: ; preds = %if.then9 %7 = zext i32 %6 to i64 br label %for.body -for.cond28.preheader: ; preds = %for.inc - %cmp29.not148 = icmp eq i32 %newmask, -1 - br i1 %cmp29.not148, label %for.end43, label %for.body31.preheader - -for.body31.preheader: ; preds = %if.then9, %for.cond28.preheader +for.body31.preheader: ; preds = %for.inc, %if.then9 %8 = zext nneg i32 %newmask to i64 br label %for.body31 @@ -330,9 +326,8 @@ for.body31: ; preds = %for.body31.preheade %indvars.iv.next160 = add nsw i64 %indvars.iv159, -1 br i1 %cmp29.not, label %for.end43, label %for.body31, !llvm.loop !10 -for.end43: ; preds = %for.body31, %for.cond28.preheader - %newsecond.0.lcssa = phi i8 [ 0, %for.cond28.preheader ], [ %or, %for.body31 ] - store i8 %newsecond.0.lcssa, ptr %second, align 1 +for.end43: ; preds = %for.body31 + store i8 %or, ptr %second, align 1 br label %if.end47 if.end47: ; preds = %for.end43, %if.end diff --git a/bench/luau/optimized/Flags.cpp.ll b/bench/luau/optimized/Flags.cpp.ll index 8e11b8058fe..9c7a2c45b7f 100644 --- a/bench/luau/optimized/Flags.cpp.ll +++ b/bench/luau/optimized/Flags.cpp.ll @@ -108,14 +108,14 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit: ; preds = %_ZNSt1 %13 = ptrtoint ptr %.sroa.6.0179 to i64 %14 = sub i64 %12, %13 %.fr235 = freeze i64 %14 - %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %.sroa.0147.0178, i64 %.fr235) + %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %.sroa.0147.0178, i64 %.fr233) %.not161 = icmp eq i64 %.fr235, 0 - br i1 %.not161, label %.thread155, label %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i + br i1 %.not161, label %.thread159, label %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i _ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %8, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit %.fr11.i97206 = phi i64 [ %.sroa.speculated.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ %.sroa.0147.0178, %8 ], [ %.sroa.0147.0178, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i ] %.020.i.i204 = phi i64 [ %.fr235, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ -1, %8 ], [ -1, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i ] - %15 = tail call ptr @memchr(ptr noundef %.sroa.6.0179, i32 noundef 61, i64 noundef %.fr11.i97206) #8 + %15 = tail call ptr @memchr(ptr noundef %.sroa.6.0179, i32 noundef 61, i64 noundef %.fr11.i97203) #8 %.not.i = icmp eq ptr %15, null br i1 %.not.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit @@ -134,7 +134,7 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit: ; preds = %_ZNSt11c br i1 %.not162, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit, label %21 21: ; preds = %19 - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.10, i64 noundef %20, i64 noundef %.fr11.i97206) #9 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.10, i64 noundef %20, i64 noundef %.fr11.i97203) #9 unreachable _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit: ; preds = %19 @@ -289,19 +289,12 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69: ; preds = %_ZNKSt17basic_strin %65 = icmp eq i32 %bcmp.i70, 0 br i1 %65, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 -.thread155: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit - switch i64 %.sroa.speculated.i, label %.thread159 [ - i64 4, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72 - i64 5, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84 - ] - _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69 %bcmp.i74 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %.sroa.6.0179, ptr noundef nonnull dereferenceable(4) @.str.3, i64 4) %66 = icmp eq i32 %bcmp.i74, 0 br i1 %66, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72, label %.thread159 -_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72: ; preds = %.thread155, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69 - %.020.i.i202 = phi i64 [ 0, %.thread155 ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69 ] +_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69 %.04.i = load ptr, ptr @_ZN4Luau6FValueIbE4listE, align 8 %.not5.i = icmp eq ptr %.04.i, null br i1 %.not5.i, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit, label %.lr.ph.i77 @@ -325,7 +318,7 @@ _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_ br i1 %.not.i79, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit, label %.lr.ph.i77, !llvm.loop !9 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i81: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread - %bcmp.i82 = tail call i32 @bcmp(ptr %.sroa.6.0179, ptr nonnull @.str.4, i64 %.fr11.i97206) + %bcmp.i82 = tail call i32 @bcmp(ptr %.sroa.6.0179, ptr nonnull @.str.4, i64 %.fr11.i97203) %74 = icmp eq i32 %bcmp.i82, 0 br i1 %74, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 @@ -334,8 +327,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85: ; preds = %_ZNSt11char_traitsI %75 = icmp eq i32 %bcmp.i86, 0 br i1 %75, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84, label %.thread159 -_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84: ; preds = %.thread155, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i81 - %.020.i.i201 = phi i64 [ 0, %.thread155 ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i81 ] +_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i81 %.04.i89 = load ptr, ptr @_ZN4Luau6FValueIbE4listE, align 8 %.not5.i90 = icmp eq ptr %.04.i89, null br i1 %.not5.i90, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit, label %.lr.ph.i91 @@ -358,9 +350,9 @@ _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_ %.not.i94 = icmp eq ptr %.0.i93, null br i1 %.not.i94, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit, label %.lr.ph.i91, !llvm.loop !9 -.thread159: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73, %.thread155, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 - %.fr11.i97205 = phi i64 [ 4, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ %.sroa.speculated.i, %.thread155 ], [ %.fr11.i97206, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread ], [ 5, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ] - %.020.i.i203 = phi i64 [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ 0, %.thread155 ], [ %.020.i.i204, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ] +.thread159: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 + %.fr11.i97205 = phi i64 [ 4, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ %.sroa.speculated.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ %.fr11.i97203, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread ], [ 5, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ] + %.020.i.i203 = phi i64 [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ 0, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ %.020.i.i204, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ] %.07.i98 = load ptr, ptr @_ZN4Luau6FValueIbE4listE, align 8 %.not8.i99 = icmp eq ptr %.07.i98, null br i1 %.not8.i99, label %._crit_edge.i105, label %.lr.ph.i100 @@ -392,7 +384,7 @@ _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_ br i1 %92, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i106, label %94 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i106: ; preds = %.lr.ph.split.i101 - %bcmp.i.i107 = tail call i32 @bcmp(ptr %.sroa.6.0179, ptr nonnull %90, i64 %.fr11.i97205) + %bcmp.i.i107 = tail call i32 @bcmp(ptr %.sroa.6.0179, ptr nonnull %90, i64 %.fr11.i97204) %93 = icmp eq i32 %bcmp.i.i107, 0 br i1 %93, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i108, label %94 @@ -414,7 +406,7 @@ _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_ br label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit _ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit: ; preds = %81, %72, %._crit_edge.i105, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i108, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72, %._crit_edge.i58, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i61, %._crit_edge.i, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i, %60 - %.020.i.i200 = phi i64 [ %.020.i.i203, %._crit_edge.i105 ], [ %.020.i.i203, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i108 ], [ %.020.i.i201, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84 ], [ %.020.i.i202, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72 ], [ %.020.i.i204, %._crit_edge.i58 ], [ %.020.i.i204, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i61 ], [ %.020.i.i204, %._crit_edge.i ], [ %.020.i.i204, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i ], [ %.020.i.i204, %60 ], [ %.020.i.i202, %72 ], [ %.020.i.i201, %81 ] + %.020.i.i200 = phi i64 [ %.020.i.i203, %._crit_edge.i105 ], [ %.020.i.i203, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i108 ], [ %.020.i.i204, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84 ], [ %.020.i.i204, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72 ], [ %.020.i.i204, %._crit_edge.i58 ], [ %.020.i.i204, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i61 ], [ %.020.i.i204, %._crit_edge.i ], [ %.020.i.i204, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i ], [ %.020.i.i204, %60 ], [ %.020.i.i204, %72 ], [ %.020.i.i204, %81 ] %.not27 = icmp eq i64 %.020.i.i200, -1 br i1 %.not27, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit._crit_edge, label %99 diff --git a/bench/node/optimized/simdutf.ll b/bench/node/optimized/simdutf.ll index 01f559ca790..c4285a7f9e4 100644 --- a/bench/node/optimized/simdutf.ll +++ b/bench/node/optimized/simdutf.ll @@ -24799,15 +24799,11 @@ _ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inp %cmp.i16.i.i.i = icmp ult i64 %add.i58.i.i.i, %spec.select.i.i.i br i1 %cmp.i16.i.i.i, label %while.body.i.i.i, label %while.end.i.i.i, !llvm.loop !239 -while.end.i.i.i: ; preds = %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i - %cmp.i63.i.i.i = icmp eq i64 %length, %add.i58.i.i.i - br i1 %cmp.i63.i.i.i, label %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i, label %if.end.i.i.i.i - -if.end.i.i.i.i: ; preds = %if.else, %while.end.i.i.i - %c.sroa.22.0.lcssa.i.i.i24 = phi <4 x i64> [ %c.sroa.22.1.i.i.i, %while.end.i.i.i ], [ zeroinitializer, %if.else ] - %c.sroa.17.0.lcssa.i.i.i22 = phi <4 x i64> [ %c.sroa.17.1.i.i.i, %while.end.i.i.i ], [ zeroinitializer, %if.else ] - %c.sroa.0.0.lcssa.i.i.i20 = phi <4 x i64> [ %c.sroa.0.1.i.i.i, %while.end.i.i.i ], [ zeroinitializer, %if.else ] - %reader.sroa.11.0.lcssa.i.i.i19 = phi i64 [ %add.i58.i.i.i, %while.end.i.i.i ], [ 0, %if.else ] +if.end.i.i.i.i: ; preds = %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i, %if.else + %cmp.i63.i.i.i = phi <4 x i64> [ zeroinitializer, %if.else ], [ %c.sroa.22.1.i.i.i, %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i ] + %c.sroa.17.0.lcssa.i.i.i22 = phi <4 x i64> [ zeroinitializer, %if.else ], [ %c.sroa.17.1.i.i.i, %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i ] + %c.sroa.0.0.lcssa.i.i.i20 = phi <4 x i64> [ zeroinitializer, %if.else ], [ %c.sroa.0.1.i.i.i, %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i ] + %reader.sroa.11.0.lcssa.i.i.i19 = phi i64 [ 0, %if.else ], [ %add.i58.i.i.i, %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %block.i.i.i, i8 32, i64 64, i1 false) %add.ptr.i64.i.i.i = getelementptr inbounds i8, ptr %input, i64 %reader.sroa.11.0.lcssa.i.i.i19 %sub.i66.i.i.i = sub i64 %length, %reader.sroa.11.0.lcssa.i.i.i19 @@ -24815,24 +24811,16 @@ if.end.i.i.i.i: ; preds = %if.else, %while.end %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i = load <4 x i64>, ptr %block.i.i.i, align 16, !noalias !240 %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32.add.ptr.i26.sroa_idx = getelementptr inbounds nuw i8, ptr %block.i.i.i, i64 32 %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i = load <4 x i64>, ptr %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32.add.ptr.i26.sroa_idx, align 16, !noalias !243 - br label %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i - -_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i: ; preds = %if.end.i.i.i.i, %while.end.i.i.i - %c.sroa.22.0.lcssa.i.i.i25 = phi <4 x i64> [ %c.sroa.22.1.i.i.i, %while.end.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i24, %if.end.i.i.i.i ] - %c.sroa.17.0.lcssa.i.i.i23 = phi <4 x i64> [ %c.sroa.17.1.i.i.i, %while.end.i.i.i ], [ %c.sroa.17.0.lcssa.i.i.i22, %if.end.i.i.i.i ] - %c.sroa.0.0.lcssa.i.i.i21 = phi <4 x i64> [ %c.sroa.0.1.i.i.i, %while.end.i.i.i ], [ %c.sroa.0.0.lcssa.i.i.i20, %if.end.i.i.i.i ] - %block.32.block.32.block.32..i.i.i = phi <4 x i64> [ zeroinitializer, %while.end.i.i.i ], [ %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i, %if.end.i.i.i.i ] - %block.0.block.0.block.0..i.i.i = phi <4 x i64> [ zeroinitializer, %while.end.i.i.i ], [ %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i, %if.end.i.i.i.i ] - %or.i.i344.i.i.i = or <4 x i64> %block.0.block.0.block.0..i.i.i, %block.32.block.32.block.32..i.i.i + %or.i.i344.i.i.i = or <4 x i64> %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i, %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i %170 = bitcast <4 x i64> %or.i.i344.i.i.i to <32 x i8> %171 = icmp slt <32 x i8> %170, zeroinitializer %172 = bitcast <32 x i1> %171 to i32 %cmp.i296.i.i.i = icmp eq i32 %172, 0 br i1 %cmp.i296.i.i.i, label %_ZNK7simdutf7haswell14implementation13validate_utf8EPKcm.exit, label %if.else.i.i.i.i -if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i - %173 = bitcast <4 x i64> %block.0.block.0.block.0..i.i.i to <32 x i8> - %vperm.i.i.i.i = shufflevector <4 x i64> %c.sroa.17.0.lcssa.i.i.i23, <4 x i64> %block.0.block.0.block.0..i.i.i, <4 x i32> +if.else.i.i.i.i: ; preds = %if.end.i.i.i.i + %or.i.i344.i.i.i = bitcast <4 x i64> %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i to <32 x i8> + %vperm.i.i.i.i = shufflevector <4 x i64> %c.sroa.17.0.lcssa.i.i.i22, <4 x i64> %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i, <4 x i32> %174 = bitcast <4 x i64> %vperm.i.i.i.i to <32 x i8> %palignr.i.i.i.i = shufflevector <32 x i8> %174, <32 x i8> %173, <32 x i32> %175 = bitcast <32 x i8> %palignr.i.i.i.i to <16 x i16> @@ -24842,7 +24830,7 @@ if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswel %179 = tail call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> , <32 x i8> %178) %180 = and <32 x i8> %palignr.i.i.i.i, splat (i8 15) %181 = tail call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> , <32 x i8> %180) - %182 = bitcast <4 x i64> %block.0.block.0.block.0..i.i.i to <16 x i16> + %182 = bitcast <4 x i64> %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i to <16 x i16> %183 = lshr <16 x i16> %182, splat (i16 4) %184 = bitcast <16 x i16> %183 to <32 x i8> %185 = and <32 x i8> %184, splat (i8 15) @@ -24860,8 +24848,8 @@ if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswel %187 = bitcast <32 x i8> %sext.i.i.i.i.i to <4 x i64> %and.i.i1921.i.i.i = and <4 x i64> %187, splat (i64 -9187201950435737472) %xor.i.i7507.i.i.i = xor <4 x i64> %and.i.i1921.i.i.i, %and.i.i2321.i.i.i - %188 = bitcast <4 x i64> %block.32.block.32.block.32..i.i.i to <32 x i8> - %vperm.i695.i.i.i = shufflevector <4 x i64> %block.0.block.0.block.0..i.i.i, <4 x i64> %block.32.block.32.block.32..i.i.i, <4 x i32> + %188 = bitcast <4 x i64> %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i to <32 x i8> + %vperm.i695.i.i.i = shufflevector <4 x i64> %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i, <4 x i64> %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i, <4 x i32> %189 = bitcast <4 x i64> %vperm.i695.i.i.i to <32 x i8> %palignr.i696.i.i.i = shufflevector <32 x i8> %189, <32 x i8> %188, <32 x i32> %190 = bitcast <32 x i8> %palignr.i696.i.i.i to <16 x i16> @@ -24871,7 +24859,7 @@ if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswel %194 = tail call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> , <32 x i8> %193) %195 = and <32 x i8> %palignr.i696.i.i.i, splat (i8 15) %196 = tail call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> , <32 x i8> %195) - %197 = bitcast <4 x i64> %block.32.block.32.block.32..i.i.i to <16 x i16> + %197 = bitcast <4 x i64> %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i to <16 x i16> %198 = lshr <16 x i16> %197, splat (i16 4) %199 = bitcast <16 x i16> %198 to <32 x i8> %200 = and <32 x i8> %199, splat (i8 15) @@ -24894,10 +24882,10 @@ if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswel %204 = bitcast <32 x i8> %elt.sat.i.i.i.i.i to <4 x i64> br label %_ZNK7simdutf7haswell14implementation13validate_utf8EPKcm.exit -_ZNK7simdutf7haswell14implementation13validate_utf8EPKcm.exit: ; preds = %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i, %if.else.i.i.i.i - %c.sroa.22.0.lcssa.pn.i.i.i = phi <4 x i64> [ %203, %if.else.i.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i25, %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i ] - %c.sroa.22.2.i.i.i = phi <4 x i64> [ %204, %if.else.i.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i25, %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i ] - %c.sroa.0.2.i.i.i = or <4 x i64> %c.sroa.22.0.lcssa.pn.i.i.i, %c.sroa.0.0.lcssa.i.i.i21 +_ZNK7simdutf7haswell14implementation13validate_utf8EPKcm.exit: ; preds = %if.end.i.i.i.i, %if.else.i.i.i.i + %c.sroa.22.0.lcssa.pn.i.i.i = phi <4 x i64> [ %203, %if.else.i.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i24, %if.end.i.i.i.i ] + %c.sroa.22.2.i.i.i = phi <4 x i64> [ %204, %if.else.i.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i24, %if.end.i.i.i.i ] + %c.sroa.0.2.i.i.i = or <4 x i64> %c.sroa.22.0.lcssa.pn.i.i.i, %c.sroa.0.0.lcssa.i.i.i20 %or.i.i610.i.i.i = or <4 x i64> %c.sroa.0.2.i.i.i, %c.sroa.22.2.i.i.i %205 = tail call noundef i32 @llvm.x86.avx.ptestz.256(<4 x i64> %or.i.i610.i.i.i, <4 x i64> %or.i.i610.i.i.i) %tobool.i.i.i.i.not = icmp ne i32 %205, 0 diff --git a/bench/opencv/optimized/dxt.cpp.ll b/bench/opencv/optimized/dxt.cpp.ll index ef36f43e9ca..309bc8f16f7 100644 --- a/bench/opencv/optimized/dxt.cpp.ll +++ b/bench/opencv/optimized/dxt.cpp.ll @@ -1346,7 +1346,7 @@ _ZN2cv3PtrINS_3hal5DFT1DEED2Ev.exit: ; preds = %_ZN2cv3PtrINS_3hal5 264: ; preds = %262 tail call void @_ZdaPv(ptr noundef nonnull %261) #20 - br label %265 + br label %266 265: ; preds = %264, %262 store ptr %140, ptr %138, align 8 @@ -6143,123 +6143,119 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou 76: ; preds = %71 %77 = icmp samesign ult i32 %14, 257 %invariant.op283 = add nsw i32 %66, %72 - br i1 %77, label %78, label %97 + br i1 %77, label %78, label %96 -78: ; preds = %76 +.lr.ph288.preheader: ; preds = %76 %79 = sub nsw i32 10, %.1 - %.not239285 = icmp eq i32 %14, 3 - br i1 %.not239285, label %.loopexit268, label %.lr.ph288.preheader - -.lr.ph288.preheader: ; preds = %78 - %80 = add nsw i32 %14, -4 - %81 = zext nneg i32 %80 to i64 + %.not239285 = add nsw i32 %14, -4 + %80 = sext i32 %.not239285 to i64 br label %.lr.ph288 .lr.ph288: ; preds = %.lr.ph288.preheader, %.lr.ph288 %indvars.iv333 = phi i64 [ 0, %.lr.ph288.preheader ], [ %indvars.iv.next334, %.lr.ph288 ] - %82 = lshr exact i64 %indvars.iv333, 2 - %83 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %82 - %84 = load i8, ptr %83, align 1 - %85 = zext i8 %84 to i32 - %86 = lshr i32 %85, %79 - %87 = mul nsw i32 %86, %64 - %88 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv333 - store i32 %87, ptr %88, align 4 - %89 = add nsw i32 %87, %66 - %90 = or disjoint i64 %indvars.iv333, 1 + %81 = lshr exact i64 %indvars.iv333, 2 + %82 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %81 + %83 = load i8, ptr %82, align 1 + %84 = zext i8 %83 to i32 + %82 = lshr i32 %84, %78 + %83 = mul nsw i32 %82, %64 + %84 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv333 + store i32 %86, ptr %87, align 4 + %86 = add nsw i32 %86, %66 + %87 = or disjoint i64 %indvars.iv333, 1 + %88 = getelementptr inbounds nuw i32, ptr %.0, i64 %89 + store i32 %86, ptr %88, align 4 + %89 = add nsw i32 %83, %72 + %90 = or disjoint i64 %indvars.iv333, 2 %91 = getelementptr inbounds nuw i32, ptr %.0, i64 %90 store i32 %89, ptr %91, align 4 - %92 = add nsw i32 %87, %72 - %93 = or disjoint i64 %indvars.iv333, 2 + %92 = add i32 %86, %invariant.op283 + %93 = or disjoint i64 %indvars.iv333, 3 %94 = getelementptr inbounds nuw i32, ptr %.0, i64 %93 store i32 %92, ptr %94, align 4 - %.reass284 = add i32 %87, %invariant.op283 - %95 = or disjoint i64 %indvars.iv333, 3 - %96 = getelementptr inbounds nuw i32, ptr %.0, i64 %95 - store i32 %.reass284, ptr %96, align 4 %indvars.iv.next334 = add nuw nsw i64 %indvars.iv333, 4 - %.not239 = icmp samesign ugt i64 %indvars.iv.next334, %81 + %95 = icmp sgt i64 %indvars.iv.next334, %80 br i1 %.not239, label %.loopexit268, label %.lr.ph288, !llvm.loop !57 -97: ; preds = %76 - %98 = sub nsw i32 34, %.1 - %99 = zext nneg i32 %14 to i64 - br label %100 - -100: ; preds = %97, %100 - %indvars.iv330 = phi i64 [ 0, %97 ], [ %indvars.iv.next331, %100 ] - %101 = lshr exact i64 %indvars.iv330, 2 - %102 = and i64 %101, 255 - %103 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %102 - %104 = load i8, ptr %103, align 1 - %105 = zext i8 %104 to i32 - %106 = shl nuw i32 %105, 24 - %107 = lshr i64 %indvars.iv330, 10 - %108 = and i64 %107, 255 - %109 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %108 - %110 = load i8, ptr %109, align 1 - %111 = zext i8 %110 to i32 - %112 = shl nuw nsw i32 %111, 16 - %113 = or disjoint i32 %112, %106 - %114 = lshr i64 %indvars.iv330, 18 - %115 = and i64 %114, 255 - %116 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %115 - %117 = load i8, ptr %116, align 1 - %118 = zext i8 %117 to i32 - %119 = shl nuw nsw i32 %118, 8 - %120 = or disjoint i32 %113, %119 - %121 = lshr i64 %indvars.iv330, 26 - %122 = and i64 %121, 63 - %123 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %122 - %124 = load i8, ptr %123, align 1 - %125 = zext i8 %124 to i32 - %126 = or disjoint i32 %120, %125 - %127 = lshr i32 %126, %98 - %128 = mul nsw i32 %127, %64 - %129 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv330 - store i32 %128, ptr %129, align 4 - %130 = add nsw i32 %128, %66 - %131 = or disjoint i64 %indvars.iv330, 1 +96: ; preds = %76 + %.not239 = sub nsw i32 34, %.1 + %98 = zext nneg i32 %14 to i64 + br label %99 + +99: ; preds = %96, %99 + %99 = phi i64 [ 0, %96 ], [ %indvars.iv.next331, %99 ] + %100 = lshr exact i64 %99, 2 + %101 = and i64 %100, 255 + %102 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %101 + %indvars.iv330 = load i8, ptr %102, align 1 + %101 = zext i8 %indvars.iv330 to i32 + %102 = shl nuw i32 %101, 24 + %103 = lshr i64 %indvars.iv330, 10 + %104 = and i64 %103, 255 + %105 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %104 + %106 = load i8, ptr %105, align 1 + %107 = zext i8 %109 to i32 + %108 = shl nuw nsw i32 %107, 16 + %109 = or disjoint i32 %108, %105 + %110 = lshr i64 %99, 18 + %111 = and i64 %113, 255 + %112 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %111 + %113 = load i8, ptr %112, align 1 + %114 = zext i8 %116 to i32 + %115 = shl nuw nsw i32 %114, 8 + %116 = or disjoint i32 %109, %115 + %117 = lshr i64 %99, 26 + %118 = and i64 %117, 63 + %119 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %118 + %120 = load i8, ptr %122, align 1 + %121 = zext i8 %123 to i32 + %122 = or disjoint i32 %116, %121 + %123 = lshr i32 %125, %.not239 + %124 = mul nsw i32 %123, %64 + %125 = getelementptr inbounds nuw i32, ptr %.0, i64 %99 + store i32 %127, ptr %125, align 4 + %127 = add nsw i32 %124, %66 + %128 = or disjoint i64 %99, 1 + %129 = getelementptr inbounds nuw i32, ptr %.0, i64 %130 + store i32 %127, ptr %129, align 4 + %130 = add nsw i32 %127, %72 + %131 = or disjoint i64 %indvars.iv330, 2 %132 = getelementptr inbounds nuw i32, ptr %.0, i64 %131 store i32 %130, ptr %132, align 4 - %133 = add nsw i32 %128, %72 - %134 = or disjoint i64 %indvars.iv330, 2 + %133 = add i32 %124, %invariant.op283 + %134 = or disjoint i64 %indvars.iv330, 3 %135 = getelementptr inbounds nuw i32, ptr %.0, i64 %134 store i32 %133, ptr %135, align 4 - %.reass = add i32 %128, %invariant.op283 - %136 = or disjoint i64 %indvars.iv330, 3 - %137 = getelementptr inbounds nuw i32, ptr %.0, i64 %136 - store i32 %.reass, ptr %137, align 4 %indvars.iv.next331 = add nuw nsw i64 %indvars.iv330, 4 - %138 = icmp samesign ult i64 %indvars.iv.next331, %99 - br i1 %138, label %100, label %.loopexit268, !llvm.loop !58 - -.loopexit268: ; preds = %100, %.lr.ph288, %78, %74 - %139 = getelementptr inbounds nuw i8, ptr %8, i64 4 - %140 = load i32, ptr %139, align 4 - %141 = add nsw i32 %140, 1 - store i32 %141, ptr %139, align 4 - %142 = icmp sgt i32 %1, 1 - br i1 %142, label %143, label %.loopexit267 - -143: ; preds = %.loopexit268 - %144 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %145 = load i32, ptr %144, align 8 - %146 = icmp slt i32 %14, %0 - br i1 %146, label %.preheader266.lr.ph, label %.loopexit267 - -.preheader266.lr.ph: ; preds = %143 - %147 = icmp sgt i32 %14, 0 - %148 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %149 = sext i32 %14 to i64 - %150 = zext nneg i32 %0 to i64 + %136 = icmp samesign ult i64 %indvars.iv.next331, %98 + br i1 %137, label %99, label %.loopexit268, !llvm.loop !58 + +.loopexit268: ; preds = %99, %.lr.ph288, %74 + %138 = getelementptr inbounds nuw i8, ptr %8, i64 4 + %139 = load i32, ptr %138, align 4 + %140 = add nsw i32 %139, 1 + store i32 %140, ptr %138, align 4 + %139 = icmp sgt i32 %1, 1 + br i1 %139, label %142, label %.loopexit267 + +142: ; preds = %.loopexit268 + %142 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %144 = load i32, ptr %143, align 8 + %145 = icmp slt i32 %14, %0 + br i1 %145, label %.preheader266.lr.ph, label %.loopexit267 + +.preheader266.lr.ph: ; preds = %142 + %146 = icmp sgt i32 %14, 0 + %147 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %148 = sext i32 %14 to i64 + %149 = zext nneg i32 %0 to i64 %wide.trip.count339 = zext nneg i32 %14 to i64 br label %.preheader266 .preheader266: ; preds = %.preheader266.backedge, %.preheader266.lr.ph - %indvars.iv344 = phi i64 [ %149, %.preheader266.lr.ph ], [ %indvars.iv.next345, %.preheader266.backedge ] - %.0214298 = phi i32 [ %145, %.preheader266.lr.ph ], [ %.0214298.be, %.preheader266.backedge ] - br i1 %147, label %.lr.ph290.preheader, label %._crit_edge291 + %indvars.iv344 = phi i64 [ %148, %.preheader266.lr.ph ], [ %indvars.iv.next345, %.preheader266.backedge ] + %.0214298 = phi i32 [ %144, %.preheader266.lr.ph ], [ %.0214298.be, %.preheader266.backedge ] + br i1 %146, label %.lr.ph290.preheader, label %._crit_edge291 .lr.ph290.preheader: ; preds = %.preheader266 %invariant.gep = getelementptr i32, ptr %.0, i64 %indvars.iv344 @@ -6268,8 +6264,8 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou .lr.ph290: ; preds = %.lr.ph290.preheader, %.lr.ph290 %indvars.iv336 = phi i64 [ 0, %.lr.ph290.preheader ], [ %indvars.iv.next337, %.lr.ph290 ] %151 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv336 - %152 = load i32, ptr %151, align 4 - %153 = add nsw i32 %152, %.0214298 + %151 = load i32, ptr %151, align 4 + %152 = add nsw i32 %152, %.0214298 %gep = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv336 store i32 %153, ptr %gep, align 4 %indvars.iv.next337 = add nuw nsw i64 %indvars.iv336, 1 @@ -6277,113 +6273,113 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou br i1 %exitcond340.not, label %._crit_edge291, label %.lr.ph290, !llvm.loop !59 ._crit_edge291: ; preds = %.lr.ph290, %.preheader266 - %indvars.iv.next345 = add nsw i64 %indvars.iv344, %149 - %.not240 = icmp slt i64 %indvars.iv.next345, %150 + %indvars.iv.next345 = add nsw i64 %indvars.iv344, %148 + %.not240 = icmp slt i64 %indvars.iv.next345, %149 br i1 %.not240, label %154, label %.loopexit267 -154: ; preds = %._crit_edge291 - %155 = add nsw i32 %.0214298, %145 - %156 = load i32, ptr %139, align 4 - %157 = add nsw i32 %156, 1 - store i32 %157, ptr %139, align 4 - %158 = load i32, ptr %148, align 4 - %.not241292 = icmp slt i32 %157, %158 +153: ; preds = %._crit_edge291 + %155 = add nsw i32 %.0214298, %144 + %156 = load i32, ptr %138, align 4 + %156 = add nsw i32 %156, 1 + store i32 %157, ptr %138, align 4 + %158 = load i32, ptr %147, align 4 + %.not241292 = icmp slt i32 %157, %157 br i1 %.not241292, label %.preheader266.backedge, label %.lr.ph296 .preheader266.backedge: ; preds = %.lr.ph296, %154 - %.0214298.be = phi i32 [ %155, %154 ], [ %166, %.lr.ph296 ] + %.0214298.be = phi i32 [ %155, %153 ], [ %166, %.lr.ph296 ] br label %.preheader266 .lr.ph296: ; preds = %154, %.lr.ph296 %indvars.iv341 = phi i64 [ %indvars.iv.next342, %.lr.ph296 ], [ 1, %154 ] - %159 = phi ptr [ %167, %.lr.ph296 ], [ %139, %154 ] - %.1215294 = phi i32 [ %166, %.lr.ph296 ], [ %155, %154 ] + %159 = phi ptr [ %167, %.lr.ph296 ], [ %138, %154 ] + %.1215294 = phi i32 [ %166, %.lr.ph296 ], [ %155, %153 ] store i32 0, ptr %159, align 4 %160 = add nuw nsw i64 %indvars.iv341, 2 - %161 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %160 - %162 = load i32, ptr %161, align 4 + %160 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %160 + %161 = load i32, ptr %161, align 4 %163 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %indvars.iv341 - %164 = load i32, ptr %163, align 4 + %163 = load i32, ptr %163, align 4 %165 = add i32 %162, %.1215294 - %166 = sub i32 %165, %164 + %165 = sub i32 %165, %163 %indvars.iv.next342 = add nuw nsw i64 %indvars.iv341, 1 %167 = getelementptr inbounds nuw [34 x i32], ptr %8, i64 0, i64 %indvars.iv.next342 - %168 = load i32, ptr %167, align 4 - %169 = add nsw i32 %168, 1 + %167 = load i32, ptr %167, align 4 + %168 = add nsw i32 %168, 1 store i32 %169, ptr %167, align 4 %170 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next342 - %171 = load i32, ptr %170, align 4 + %170 = load i32, ptr %170, align 4 %.not241 = icmp slt i32 %169, %171 br i1 %.not241, label %.preheader266.backedge, label %.lr.ph296, !llvm.loop !60 .loopexit270: ; preds = %.lr.ph278, %173 - %.3217.lcssa = phi i32 [ %174, %173 ], [ %185, %.lr.ph278 ] + %.3217.lcssa = phi i32 [ %174, %172 ], [ %185, %.lr.ph278 ] %172 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv325 store i32 %.3217.lcssa, ptr %172, align 4 %indvars.iv.next326 = add nuw nsw i64 %indvars.iv325, 1 %exitcond329.not = icmp eq i64 %indvars.iv.next326, %wide.trip.count328 br i1 %exitcond329.not, label %.loopexit267, label %173, !llvm.loop !61 -173: ; preds = %.lr.ph281, %.loopexit270 +172: ; preds = %.lr.ph281, %.loopexit270 %indvars.iv325 = phi i64 [ 1, %.lr.ph281 ], [ %indvars.iv.next326, %.loopexit270 ] %.2216280 = phi i32 [ 0, %.lr.ph281 ], [ %.3217.lcssa, %.loopexit270 ] %174 = add nsw i32 %61, %.2216280 %175 = load i32, ptr %8, align 16 - %176 = add nsw i32 %175, 1 + %175 = add nsw i32 %175, 1 store i32 %176, ptr %8, align 16 %177 = load i32, ptr %2, align 4 - %.not238274 = icmp slt i32 %176, %177 + %.not238274 = icmp slt i32 %176, %176 br i1 %.not238274, label %.loopexit270, label %.lr.ph278 .lr.ph278: ; preds = %173, %.lr.ph278 %indvars.iv322 = phi i64 [ %indvars.iv.next323, %.lr.ph278 ], [ 0, %173 ] %178 = phi ptr [ %186, %.lr.ph278 ], [ %8, %173 ] - %.3217276 = phi i32 [ %185, %.lr.ph278 ], [ %174, %173 ] + %.3217276 = phi i32 [ %185, %.lr.ph278 ], [ %174, %172 ] store i32 0, ptr %178, align 4 %179 = add nuw nsw i64 %indvars.iv322, 2 - %180 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %179 - %181 = load i32, ptr %180, align 4 + %179 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %179 + %180 = load i32, ptr %180, align 4 %182 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %indvars.iv322 - %183 = load i32, ptr %182, align 4 + %182 = load i32, ptr %182, align 4 %184 = add i32 %181, %.3217276 - %185 = sub i32 %184, %183 + %184 = sub i32 %184, %182 %indvars.iv.next323 = add nuw nsw i64 %indvars.iv322, 1 %186 = getelementptr inbounds nuw [34 x i32], ptr %8, i64 0, i64 %indvars.iv.next323 - %187 = load i32, ptr %186, align 4 - %188 = add nsw i32 %187, 1 + %186 = load i32, ptr %186, align 4 + %187 = add nsw i32 %187, 1 store i32 %188, ptr %186, align 4 %189 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next323 - %190 = load i32, ptr %189, align 4 + %189 = load i32, ptr %189, align 4 %.not238 = icmp slt i32 %188, %190 br i1 %.not238, label %.loopexit270, label %.lr.ph278, !llvm.loop !62 -.loopexit267: ; preds = %.loopexit270, %._crit_edge291, %143, %.loopexit268 - %.2 = phi i32 [ %.1, %.loopexit268 ], [ %.1, %143 ], [ %.1, %._crit_edge291 ], [ 0, %.loopexit270 ] +.loopexit267: ; preds = %.loopexit270, %._crit_edge291, %142, %.loopexit268 + %.2 = phi i32 [ %.1, %.loopexit268 ], [ %.1, %142 ], [ %.1, %._crit_edge291 ], [ 0, %.loopexit270 ] %.not242 = icmp eq ptr %.0, %3 br i1 %.not242, label %.loopexit, label %.lr.ph303.preheader .lr.ph303.preheader: ; preds = %.loopexit267 store i32 0, ptr %3, align 4 %191 = and i32 %0, 1 - %192 = zext nneg i32 %191 to i64 + %192 = zext nneg i32 %190 to i64 %193 = zext nneg i32 %0 to i64 br label %.lr.ph303 .lr.ph303: ; preds = %.lr.ph303.preheader, %.lr.ph303 %indvars.iv347 = phi i64 [ %192, %.lr.ph303.preheader ], [ %indvars.iv.next348, %.lr.ph303 ] %194 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv347 - %195 = load i32, ptr %194, align 4 + %194 = load i32, ptr %194, align 4 %196 = add nuw nsw i64 %indvars.iv347, 1 - %197 = getelementptr inbounds nuw i32, ptr %.0, i64 %196 - %198 = load i32, ptr %197, align 4 + %196 = getelementptr inbounds nuw i32, ptr %.0, i64 %196 + %197 = load i32, ptr %197, align 4 %199 = sext i32 %195 to i64 - %200 = getelementptr inbounds i32, ptr %3, i64 %199 + %199 = getelementptr inbounds i32, ptr %3, i64 %199 %201 = trunc nuw nsw i64 %indvars.iv347 to i32 - store i32 %201, ptr %200, align 4 + store i32 %201, ptr %199, align 4 %202 = sext i32 %198 to i64 - %203 = getelementptr inbounds i32, ptr %3, i64 %202 + %202 = getelementptr inbounds i32, ptr %3, i64 %202 %204 = trunc nuw nsw i64 %196 to i32 - store i32 %204, ptr %203, align 4 + store i32 %204, ptr %202, align 4 %indvars.iv.next348 = add nuw nsw i64 %indvars.iv347, 2 %205 = icmp samesign ult i64 %indvars.iv.next348, %193 br i1 %205, label %.lr.ph303, label %.loopexit, !llvm.loop !63 @@ -6391,54 +6387,54 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou .loopexit: ; preds = %.lr.ph303, %.thread262, %.loopexit267 %.0210 = phi i32 [ %.2, %.loopexit267 ], [ 2, %.thread262 ], [ %.2, %.lr.ph303 ] %206 = tail call range(i32 0, 33) i32 @llvm.ctpop.i32(i32 %0) - %207 = icmp samesign ult i32 %206, 2 - br i1 %207, label %208, label %215 + %206 = icmp samesign ult i32 %206, 2 + br i1 %207, label %207, label %215 -208: ; preds = %.loopexit +207: ; preds = %.loopexit %209 = sext i32 %.0210 to i64 - %210 = getelementptr inbounds [32 x [2 x double]], ptr @_ZN2cvL6DFTTabE, i64 0, i64 %209 - %211 = load double, ptr %210, align 16 + %209 = getelementptr inbounds [32 x [2 x double]], ptr @_ZN2cvL6DFTTabE, i64 0, i64 %209 + %210 = load double, ptr %210, align 16 %212 = getelementptr inbounds nuw i8, ptr %210, i64 8 - %213 = load double, ptr %212, align 8 - %214 = fneg double %213 + %212 = load double, ptr %212, align 8 + %213 = fneg double %213 br label %222 -215: ; preds = %.loopexit +214: ; preds = %.loopexit %216 = sitofp i32 %0 to double - %217 = fdiv double 0xC01921FB54442D18, %216 - %218 = tail call double @sin(double noundef %217) #19 - %219 = fneg double %218 - %220 = tail call double @llvm.fmuladd.f64(double %219, double %218, double 1.000000e+00) - %221 = tail call double @sqrt(double noundef %220) #19 + %216 = fdiv double 0xC01921FB54442D18, %216 + %218 = tail call double @sin(double noundef %216) #19 + %218 = fneg double %218 + %220 = tail call double @llvm.fmuladd.f64(double %218, double %218, double 1.000000e+00) + %221 = tail call double @sqrt(double noundef %219) #19 br label %222 -222: ; preds = %215, %208 - %.sroa.5.0 = phi double [ %214, %208 ], [ %218, %215 ] +221: ; preds = %215, %208 + %.sroa.5.0 = phi double [ %214, %208 ], [ %218, %214 ] %.sroa.0250.0 = phi double [ %211, %208 ], [ %221, %215 ] %223 = add nsw i32 %0, 1 - %224 = sdiv i32 %223, 2 + %223 = sdiv i32 %223, 2 switch i32 %4, label %247 [ i32 16, label %225 i32 8, label %254 ] -225: ; preds = %222 +224: ; preds = %222 store double 1.000000e+00, ptr %5, align 8 %226 = getelementptr inbounds nuw i8, ptr %5, i64 8 store double 0.000000e+00, ptr %226, align 8 %227 = and i32 %0, 1 - %228 = icmp eq i32 %227, 0 - br i1 %228, label %229, label %233 + %227 = icmp eq i32 %227, 0 + br i1 %228, label %228, label %233 -229: ; preds = %225 +228: ; preds = %225 %230 = sext i32 %224 to i64 - %231 = getelementptr inbounds %"class.cv::Complex", ptr %5, i64 %230 + %230 = getelementptr inbounds %"class.cv::Complex", ptr %5, i64 %230 store double -1.000000e+00, ptr %231, align 8 - %232 = getelementptr inbounds nuw i8, ptr %231, i64 8 + %231 = getelementptr inbounds nuw i8, ptr %231, i64 8 store double 0.000000e+00, ptr %232, align 8 br label %233 -233: ; preds = %229, %225 +232: ; preds = %229, %225 %234 = icmp sgt i32 %0, 2 br i1 %234, label %.lr.ph316, label %.thread261 @@ -6449,7 +6445,7 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou %wide.trip.count365 = zext nneg i32 %smax364 to i64 br label %237 -237: ; preds = %.lr.ph316, %237 +236: ; preds = %.lr.ph316, %237 %indvars.iv361 = phi i64 [ 1, %.lr.ph316 ], [ %indvars.iv.next362, %237 ] %.sroa.0253.1313 = phi double [ %.sroa.0250.0, %.lr.ph316 ], [ %244, %237 ] %.sroa.11.1312 = phi double [ %.sroa.5.0, %.lr.ph316 ], [ %246, %237 ] @@ -6458,59 +6454,59 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou %.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %238, i64 8 store double %.sroa.11.1312, ptr %.sroa.11.0..sroa_idx, align 8 %239 = sub nsw i64 %236, %indvars.iv361 - %240 = getelementptr inbounds %"class.cv::Complex", ptr %5, i64 %239 + %239 = getelementptr inbounds %"class.cv::Complex", ptr %5, i64 %239 store double %.sroa.0253.1313, ptr %240, align 8 %241 = fneg double %.sroa.11.1312 %242 = getelementptr inbounds nuw i8, ptr %240, i64 8 - store double %241, ptr %242, align 8 + store double %241, ptr %241, align 8 %243 = fmul double %.sroa.11.1312, %235 - %244 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.1313, double %.sroa.0250.0, double %243) + %244 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.1313, double %.sroa.0250.0, double %242) %245 = fmul double %.sroa.0250.0, %.sroa.11.1312 - %246 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.1313, double %.sroa.5.0, double %245) + %246 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.1313, double %.sroa.5.0, double %244) %indvars.iv.next362 = add nuw nsw i64 %indvars.iv361, 1 %exitcond366.not = icmp eq i64 %indvars.iv.next362, %wide.trip.count365 br i1 %exitcond366.not, label %.thread261, label %237, !llvm.loop !64 -247: ; preds = %222 +246: ; preds = %222 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #19 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %13) to label %248 unwind label %250 -248: ; preds = %247 +247: ; preds = %247 invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @__func__._ZN2cvL7DFTInitEiiPKiPiiPvi, ptr noundef nonnull @.str.1, i32 noundef 375) #21 to label %249 unwind label %252 -249: ; preds = %248 +248: ; preds = %248 unreachable -250: ; preds = %247 +249: ; preds = %247 %251 = landingpad { ptr, i32 } cleanup br label %279 -252: ; preds = %248 +251: ; preds = %248 %253 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #19 br label %279 -254: ; preds = %222 +253: ; preds = %222 store float 1.000000e+00, ptr %5, align 4 %255 = getelementptr inbounds nuw i8, ptr %5, i64 4 store float 0.000000e+00, ptr %255, align 4 %256 = and i32 %0, 1 - %257 = icmp eq i32 %256, 0 - br i1 %257, label %258, label %262 + %256 = icmp eq i32 %256, 0 + br i1 %257, label %257, label %262 -258: ; preds = %254 +257: ; preds = %254 %259 = sext i32 %224 to i64 - %260 = getelementptr inbounds %"class.cv::Complex.13", ptr %5, i64 %259 + %259 = getelementptr inbounds %"class.cv::Complex.13", ptr %5, i64 %259 store float -1.000000e+00, ptr %260, align 4 - %261 = getelementptr inbounds nuw i8, ptr %260, i64 4 + %260 = getelementptr inbounds nuw i8, ptr %260, i64 4 store float 0.000000e+00, ptr %261, align 4 br label %262 -262: ; preds = %258, %254 +261: ; preds = %258, %254 %263 = icmp sgt i32 %0, 2 br i1 %263, label %.lr.ph311, label %.thread261 @@ -6521,26 +6517,26 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou %wide.trip.count359 = zext nneg i32 %smax358 to i64 br label %266 -266: ; preds = %.lr.ph311, %266 +265: ; preds = %.lr.ph311, %266 %indvars.iv355 = phi i64 [ 1, %.lr.ph311 ], [ %indvars.iv.next356, %266 ] %.sroa.0253.2308 = phi double [ %.sroa.0250.0, %.lr.ph311 ], [ %276, %266 ] %.sroa.11.2307 = phi double [ %.sroa.5.0, %.lr.ph311 ], [ %278, %266 ] %267 = fptrunc double %.sroa.0253.2308 to float %268 = getelementptr inbounds nuw %"class.cv::Complex.13", ptr %5, i64 %indvars.iv355 - store float %267, ptr %268, align 4 + store float %267, ptr %267, align 4 %269 = fptrunc double %.sroa.11.2307 to float %270 = getelementptr inbounds nuw i8, ptr %268, i64 4 - store float %269, ptr %270, align 4 + store float %269, ptr %269, align 4 %271 = sub nsw i64 %265, %indvars.iv355 - %272 = getelementptr inbounds %"class.cv::Complex.13", ptr %5, i64 %271 + %271 = getelementptr inbounds %"class.cv::Complex.13", ptr %5, i64 %271 store float %267, ptr %272, align 4 %273 = fneg float %269 %274 = getelementptr inbounds nuw i8, ptr %272, i64 4 - store float %273, ptr %274, align 4 + store float %273, ptr %273, align 4 %275 = fmul double %.sroa.11.2307, %264 - %276 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.2308, double %.sroa.0250.0, double %275) + %276 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.2308, double %.sroa.0250.0, double %274) %277 = fmul double %.sroa.0250.0, %.sroa.11.2307 - %278 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.2308, double %.sroa.5.0, double %277) + %278 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.2308, double %.sroa.5.0, double %276) %indvars.iv.next356 = add nuw nsw i64 %indvars.iv355, 1 %exitcond360.not = icmp eq i64 %indvars.iv.next356, %wide.trip.count359 br i1 %exitcond360.not, label %.thread261, label %266, !llvm.loop !65 @@ -6548,9 +6544,9 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou .thread261: ; preds = %266, %237, %.preheader, %262, %233, %._crit_edge306, %29, %28 ret void -279: ; preds = %250, %252, %35, %37 +278: ; preds = %250, %252, %35, %37 %.sink = phi ptr [ %11, %37 ], [ %11, %35 ], [ %13, %252 ], [ %13, %250 ] - %.pn244.pn = phi { ptr, i32 } [ %38, %37 ], [ %36, %35 ], [ %253, %252 ], [ %251, %250 ] + %.pn244.pn = phi { ptr, i32 } [ %38, %37 ], [ %36, %35 ], [ %253, %251 ], [ %251, %249 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %.sink) #19 resume { ptr, i32 } %.pn244.pn } @@ -6773,7 +6769,7 @@ define internal fastcc void @_ZN2cvL3DFTIfEEvRKNS_13OcvDftOptionsEPKNS_7ComplexI %93 = getelementptr inbounds %"class.cv::Complex.13", ptr %2, i64 %91 %94 = load i64, ptr %92, align 4 store i64 %94, ptr %93, align 4 - br label %236 + br label %237 95: ; preds = %.lr.ph734, %108 %indvars.iv849 = phi i64 [ 0, %.lr.ph734 ], [ %indvars.iv.next850, %108 ] @@ -6855,7 +6851,7 @@ define internal fastcc void @_ZN2cvL3DFTIfEEvRKNS_13OcvDftOptionsEPKNS_7ComplexI store i32 %131, ptr %136, align 4 %.sroa_idx686 = getelementptr inbounds nuw i8, ptr %136, i64 4 store float %134, ptr %.sroa_idx686, align 4 - br label %236 + br label %237 137: ; preds = %42 br i1 %46, label %.loopexit721, label %138 @@ -7081,7 +7077,7 @@ define internal fastcc void @_ZN2cvL3DFTIfEEvRKNS_13OcvDftOptionsEPKNS_7ComplexI %234 = load float, ptr %233, align 4 %235 = fneg float %234 store float %235, ptr %233, align 4 - br label %236 + br label %237 236: ; preds = %.loopexit721, %230, %._crit_edge747, %89, %._crit_edge, %127, %._crit_edge735 %237 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -8802,7 +8798,7 @@ define internal fastcc void @_ZN2cvL7CCSIDFTIfEEvRKNS_13OcvDftOptionsEPKT_PS4_(p %179 = getelementptr inbounds nuw i8, ptr %0, i64 24 %180 = load ptr, ptr %179, align 8 %181 = getelementptr inbounds i32, ptr %180, i64 %171 - %182 = load i32, ptr %181, align 4 + %182 = load i32, ptr %182, align 4 %183 = shl nsw i32 %182, 1 %184 = sext i32 %183 to i64 %185 = getelementptr inbounds float, ptr %2, i64 %184 @@ -11050,7 +11046,7 @@ define internal fastcc void @_ZN2cvL7CCSIDFTIdEEvRKNS_13OcvDftOptionsEPKT_PS4_(p %158 = load ptr, ptr %114, align 8 %159 = sub nsw i64 %115, %151 %160 = getelementptr inbounds i32, ptr %158, i64 %159 - %161 = load i32, ptr %160, align 4 + %161 = load i32, ptr %161, align 4 %162 = sext i32 %161 to i64 %163 = getelementptr inbounds double, ptr %2, i64 %162 store double %142, ptr %163, align 8 @@ -11111,7 +11107,7 @@ define internal fastcc void @_ZN2cvL7CCSIDFTIdEEvRKNS_13OcvDftOptionsEPKT_PS4_(p store i32 %192, ptr %190, align 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %9, ptr noundef nonnull align 8 dereferenceable(72) %0, i64 72, i1 false) %193 = load ptr, ptr %189, align 8 - %194 = load i32, ptr %193, align 4 + %194 = load i32, ptr %194, align 4 %195 = icmp eq i32 %194, 1 %196 = getelementptr inbounds nuw i8, ptr %9, i64 8 %197 = load ptr, ptr %196, align 8 @@ -12096,7 +12092,7 @@ _ZN2cvL10CopyColumnEPKhmPhmim.exit162: ; preds = %.lr.ph.i145, %.lr.p %183 = getelementptr inbounds nuw i8, ptr %.24959.i166, i64 8 %184 = load i32, ptr %183, align 4 %185 = getelementptr inbounds nuw i8, ptr %.24959.i166, i64 12 - %186 = load i32, ptr %185, align 4 + %186 = load i32, ptr %186, align 4 %187 = getelementptr inbounds nuw i8, ptr %.260.i165, i64 8 store i32 %184, ptr %187, align 4 %188 = getelementptr inbounds nuw i8, ptr %.260.i165, i64 12 @@ -13971,7 +13967,7 @@ _ZN2cv10AutoBufferIiLm264EE8allocateEm.exit: ; preds = %.noexc82, %_ZN2cv10 166: ; preds = %_ZN2cv10AutoBufferIiLm264EE8allocateEm.exit %167 = sdiv i32 %.155, 2 - %168 = add nsw i32 %167, 1 + %168 = add nsw i32 %168, 1 %169 = shl i32 %168, %37 %170 = sext i32 %169 to i64 %171 = load i64, ptr %14, align 8 @@ -14259,7 +14255,7 @@ _ZN2cv10AutoBufferIhLm1032EE8allocateEm.exit95: ; preds = %199, %_ZN2cv10AutoB _ZN2cvL7DCTInitEiiPvi.exit: ; preds = %257, %268, %_ZN2cv10AutoBufferIhLm1032EE8allocateEm.exit95, %.preheader.i, %263 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) - br label %278 + br label %279 278: ; preds = %_ZN2cvL7DCTInitEiiPvi.exit, %59 %.171 = phi ptr [ %.070124, %59 ], [ %.2, %_ZN2cvL7DCTInitEiiPvi.exit ] diff --git a/bench/opencv/optimized/loadsave.cpp.ll b/bench/opencv/optimized/loadsave.cpp.ll index 4104b0e9735..9484f37612a 100644 --- a/bench/opencv/optimized/loadsave.cpp.ll +++ b/bench/opencv/optimized/loadsave.cpp.ll @@ -1200,7 +1200,7 @@ _ZN2cv3PtrINS_16BaseImageDecoderEED2Ev.exit: ; preds = %_ZN2cv3PtrINS_16Bas %122 = invoke noundef i32 %121(ptr noundef nonnull align 8 dereferenceable(272) %99, ptr noundef nonnull align 4 dereferenceable(4) %6) to label %123 unwind label %100 -123: ; preds = %118 +123: ; preds = %117 %124 = load ptr, ptr %99, align 8 %125 = getelementptr inbounds nuw i8, ptr %124, i64 24 %126 = load ptr, ptr %125, align 8 @@ -7306,7 +7306,7 @@ _ZNK2cv11_InputArray6getMatEi.exit: ; preds = %32, %35 to label %133 unwind label %131 131: ; preds = %203, %189, %183, %176, %174, %169, %138, %129 - %132 = landingpad { ptr, i32 } + %131 = landingpad { ptr, i32 } cleanup br label %314 @@ -9537,7 +9537,7 @@ _ZN2cvL8calcTypeEii.exit: ; preds = %2, %28, %31 .invoke.sink.split: ; preds = %104, %72 %.sink42 = phi ptr [ %6, %72 ], [ %8, %104 ] %.sink = phi ptr [ %5, %72 ], [ %7, %104 ] - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink42) #27 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink40) #27 call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %.sink) #27 br label %.invoke @@ -9560,12 +9560,12 @@ _ZN2cvL8calcTypeEii.exit: ; preds = %2, %28, %31 %.not41 = icmp eq i32 %114, 0 br i1 %.not41, label %115, label %_ZN2cv11ExifEntry_tD2Ev.exit -115: ; preds = %112 +116: ; preds = %112 %116 = load ptr, ptr %11, align 8 invoke void @_ZNK2cv16BaseImageDecoder10getExifTagENS_11ExifTagNameE(ptr dead_on_unwind nonnull writable sret(%"struct.cv::ExifEntry_t") align 8 %9, ptr noundef nonnull align 8 dereferenceable(272) %116, i32 noundef 274) to label %117 unwind label %79 -117: ; preds = %115 +118: ; preds = %115 %118 = getelementptr inbounds nuw i8, ptr %10, i64 8 %119 = getelementptr inbounds nuw i8, ptr %10, i64 16 store i64 0, ptr %119, align 8 @@ -9578,18 +9578,18 @@ _ZN2cvL8calcTypeEii.exit: ; preds = %2, %28, %31 invoke fastcc void @_ZN2cvL20ApplyExifOrientationENS_11ExifEntry_tERKNS_12_OutputArrayE(i16 %.val, i16 %.val40, ptr noundef nonnull align 8 dereferenceable(24) %10) to label %122 unwind label %126 -122: ; preds = %117 +123: ; preds = %117 %123 = getelementptr inbounds nuw i8, ptr %9, i64 24 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #27 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #27 %124 = load ptr, ptr %9, align 8 %.not.i.i.i.i = icmp eq ptr %124, null br i1 %.not.i.i.i.i, label %_ZN2cv11ExifEntry_tD2Ev.exit, label %125 -125: ; preds = %122 - call void @_ZdlPv(ptr noundef nonnull %124) #30 +126: ; preds = %122 + call void @_ZdlPv(ptr noundef nonnull %125) #30 br label %_ZN2cv11ExifEntry_tD2Ev.exit -126: ; preds = %117 +127: ; preds = %117 %127 = landingpad { ptr, i32 } cleanup call void @_ZN2cv11ExifEntry_tD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #27 @@ -9599,20 +9599,20 @@ _ZN2cv11ExifEntry_tD2Ev.exit: ; preds = %125, %122, %112 call void @_ZN2cv3MatC1EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %0, ptr noundef nonnull align 8 dereferenceable(96) %4) #27 br label %128 -128: ; preds = %_ZN2cv11ExifEntry_tD2Ev.exit, %.critedge +129: ; preds = %_ZN2cv11ExifEntry_tD2Ev.exit, %.critedge call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #27 ret void -129: ; preds = %111, %81, %126, %79 +130: ; preds = %111, %81, %126, %79 %.pn37.pn = phi { ptr, i32 } [ %127, %126 ], [ %80, %79 ], [ %.pn33.pn, %111 ], [ %.pn.pn, %81 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #27 resume { ptr, i32 } %.pn37.pn -130: ; preds = %111, %81 +131: ; preds = %111, %81 %131 = landingpad { ptr, i32 } catch ptr null %132 = extractvalue { ptr, i32 } %131, 0 - call void @__clang_call_terminate(ptr %132) #28 + call void @__clang_call_terminate(ptr %133) #28 unreachable } @@ -11612,11 +11612,11 @@ _ZN2cv3PtrINS_16BaseImageDecoderEED2Ev.exit: ; preds = %_ZNSt6vectorIN2cv3P 125: ; preds = %123 %126 = add nsw i32 %117, -1 store i32 %126, ptr %114, align 4 - br label %129 + br label %128 127: ; preds = %123 %128 = atomicrmw volatile add ptr %114, i32 -1 acq_rel, align 4 - br label %129 + br label %128 129: ; preds = %127, %125 %.0.i.i.i.i.i10 = phi i32 [ %117, %125 ], [ %128, %127 ] diff --git a/bench/opencv/optimized/qrcode_encoder.cpp.ll b/bench/opencv/optimized/qrcode_encoder.cpp.ll index 290436e954a..1cf85a0bb83 100644 --- a/bench/opencv/optimized/qrcode_encoder.cpp.ll +++ b/bench/opencv/optimized/qrcode_encoder.cpp.ll @@ -935,7 +935,7 @@ define hidden void @_ZN2cv17QRCodeEncoderImpl10generateQRERKNSt7__cxx1112basic_s %21 = xor i8 %20, %19 store i8 %21, ptr %16, align 8 %22 = add nuw i64 %.02964, 1 - %23 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 + %24 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 %24 = icmp ult i64 %22, %23 br i1 %24, label %17, label %._crit_edge, !llvm.loop !6 @@ -2086,8 +2086,8 @@ _ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i: ; preds = %.lr.ph.i.i invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %19, ptr nonnull %5, ptr nonnull %6) to label %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit unwind label %20 -common.resume: ; preds = %127, %88, %20 - %common.resume.op = phi { ptr, i32 } [ %21, %20 ], [ %89, %88 ], [ %128, %127 ] +common.resume: ; preds = %127, %87, %20 + %common.resume.op = phi { ptr, i32 } [ %21, %20 ], [ %88, %87 ], [ %128, %127 ] resume { ptr, i32 } %common.resume.op 20: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i @@ -2236,120 +2236,120 @@ _ZN2cvL9mapSymbolEc.exit: ; preds = %33, %37, %39, %40, _ZN2cvL9mapSymbolEc.exit34: ; preds = %54, %58, %60, %61, %62, %63, %64, %65, %66, %67, %68 %.0.i33 = phi i32 [ %55, %54 ], [ %59, %58 ], [ 44, %68 ], [ 43, %67 ], [ 42, %66 ], [ 41, %65 ], [ 40, %64 ], [ 39, %63 ], [ 38, %62 ], [ 37, %61 ], [ 36, %60 ] %69 = icmp eq i32 %.0.i, -1 - %70 = icmp eq i32 %.0.i33, -1 - %or.cond = select i1 %69, i1 true, i1 %70 - br i1 %or.cond, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %71 - -71: ; preds = %_ZN2cvL9mapSymbolEc.exit34 - %72 = mul nuw nsw i32 %.0.i, 45 - %73 = add nsw i32 %.0.i33, %72 - %74 = tail call noalias noundef nonnull dereferenceable(11) ptr @_Znwm(i64 noundef 11) #28 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 11 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(11) %74, i8 0, i64 11, i1 false) + br i1 %69, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %70 + +70: ; preds = %_ZN2cvL9mapSymbolEc.exit34 + %71 = mul nuw nsw i32 %.0.i, 45 + %72 = add nsw i32 %.0.i33, %71 + %72 = tail call noalias noundef nonnull dereferenceable(11) ptr @_Znwm(i64 noundef 11) #28 + %73 = getelementptr inbounds nuw i8, ptr %72, i64 11 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(11) %73, i8 0, i64 11, i1 false) br label %.lr.ph.i.i35 -.lr.ph.i.i35: ; preds = %.lr.ph.i.i35, %71 - %indvars.iv.i.i36 = phi i64 [ 0, %71 ], [ %indvars.iv.next.i.i37, %.lr.ph.i.i35 ] - %76 = trunc nuw nsw i64 %indvars.iv.i.i36 to i32 - %77 = ashr i32 %73, %76 - %78 = srem i32 %77, 2 - %79 = trunc nsw i32 %78 to i8 - %80 = xor i64 %indvars.iv.i.i36, -1 - %81 = getelementptr i8, ptr %75, i64 %80 - store i8 %79, ptr %81, align 1 +.lr.ph.i.i35: ; preds = %.lr.ph.i.i35, %70 + %indvars.iv.i.i36 = phi i64 [ 0, %70 ], [ %indvars.iv.next.i.i37, %.lr.ph.i.i35 ] + %75 = trunc nuw nsw i64 %indvars.iv.i.i36 to i32 + %indvars.iv.i.i36 = ashr i32 %72, %75 + %76 = srem i32 %indvars.iv.i.i36, 2 + %77 = trunc nsw i32 %77 to i8 + %78 = xor i64 %indvars.iv.i.i36, -1 + %79 = getelementptr i8, ptr %74, i64 %78 + store i8 %78, ptr %79, align 1 %indvars.iv.next.i.i37 = add nuw nsw i64 %indvars.iv.i.i36, 1 %exitcond.not.i.i38 = icmp eq i64 %indvars.iv.next.i.i37, 11 br i1 %exitcond.not.i.i38, label %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39, label %.lr.ph.i.i35, !llvm.loop !10 _ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39: ; preds = %.lr.ph.i.i35 - %82 = load ptr, ptr %13, align 8 - %83 = load ptr, ptr %2, align 8 + %81 = load ptr, ptr %13, align 8 + %82 = load ptr, ptr %2, align 8 + %82 = ptrtoint ptr %81 to i64 %84 = ptrtoint ptr %82 to i64 - %85 = ptrtoint ptr %83 to i64 - %86 = sub i64 %84, %85 - %87 = getelementptr inbounds i8, ptr %83, i64 %86 - invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %87, ptr nonnull %74, ptr nonnull %75) - to label %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit40 unwind label %88 + %85 = sub i64 %83, %84 + %85 = getelementptr inbounds i8, ptr %82, i64 %85 + invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %85, ptr nonnull %73, ptr nonnull %74) + to label %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit40 unwind label %87 -88: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39 - %89 = landingpad { ptr, i32 } +87: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39 + %88 = landingpad { ptr, i32 } cleanup - tail call void @_ZdlPv(ptr noundef nonnull %74) #29 + tail call void @_ZdlPv(ptr noundef nonnull %73) #29 br label %common.resume _ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit40: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39 - tail call void @_ZdlPv(ptr noundef nonnull %74) #29 + tail call void @_ZdlPv(ptr noundef nonnull %73) #29 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2 - %90 = trunc nuw i64 %indvars.iv.next to i32 - %91 = icmp sgt i32 %27, %90 - br i1 %91, label %.lr.ph, label %._crit_edge, !llvm.loop !14 + %89 = trunc nuw i64 %indvars.iv.next to i32 + %90 = icmp sgt i32 %27, %89 + br i1 %90, label %.lr.ph, label %._crit_edge, !llvm.loop !14 ._crit_edge: ; preds = %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit40, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit - %92 = and i32 %26, 1 - %.not = icmp eq i32 %92, 0 - br i1 %.not, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %93 + %91 = and i32 %26, 1 + %.not = icmp eq i32 %91, 0 + br i1 %13, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %92 -93: ; preds = %._crit_edge +92: ; preds = %._crit_edge call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv(ptr dead_on_unwind nonnull writable sret(%"class.std::reverse_iterator") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %1) #26 - %94 = load i64, ptr %4, align 8 - %95 = inttoptr i64 %94 to ptr - %96 = getelementptr inbounds i8, ptr %95, i64 -1 - %97 = load i8, ptr %96, align 1 - %98 = sext i8 %97 to i32 - %99 = add i8 %97, -48 - %or.cond.i41 = icmp ult i8 %99, 10 - br i1 %or.cond.i41, label %_ZN2cvL9mapSymbolEc.exit44, label %100 - -100: ; preds = %93 - %101 = add i8 %97, -65 - %or.cond5.i42 = icmp ult i8 %101, 26 - br i1 %or.cond5.i42, label %_ZN2cvL9mapSymbolEc.exit44, label %102 - -102: ; preds = %100 - switch i8 %97, label %_ZN2cvL9mapSymbolEc.exit44.thread53 [ + %93 = load i64, ptr %4, align 8 + %94 = inttoptr i64 %93 to ptr + %94 = getelementptr inbounds i8, ptr %94, i64 -1 + %95 = load i8, ptr %94, align 1 + %96 = sext i8 %95 to i32 + %97 = add i8 %96, -48 + %98 = icmp ult i8 %97, 10 + br i1 %98, label %99, label %101 + +99: ; preds = %92 + %100 = add nsw i32 %97, -48 + br label %_ZN2cvL9mapSymbolEc.exit44.thread + +101: ; preds = %92 + %102 = add i8 %96, -65 + %or.cond5.i42 = icmp ult i8 %102, 26 + br i1 %or.cond5.i42, label %103, label %105 + +103: ; preds = %101 + %104 = add nsw i32 %97, -55 + br label %_ZN2cvL9mapSymbolEc.exit44.thread + +105: ; preds = %101 + switch i8 %95, label %_ZN2cvL9mapSymbolEc.exit44.thread53 [ i8 32, label %_ZN2cvL9mapSymbolEc.exit44.thread - i8 36, label %103 - i8 37, label %104 - i8 42, label %105 - i8 43, label %106 - i8 45, label %107 - i8 46, label %108 - i8 47, label %109 - i8 58, label %110 + i8 36, label %106 + i8 37, label %107 + i8 42, label %108 + i8 43, label %109 + i8 45, label %110 + i8 46, label %111 + i8 47, label %112 + i8 58, label %113 ] -103: ; preds = %102 +106: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -104: ; preds = %102 +107: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -105: ; preds = %102 +108: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -106: ; preds = %102 +109: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -107: ; preds = %102 +110: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -108: ; preds = %102 +111: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -109: ; preds = %102 +112: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -110: ; preds = %102 +113: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -_ZN2cvL9mapSymbolEc.exit44: ; preds = %100, %93 - %.sink = phi i32 [ -48, %93 ], [ -55, %100 ] - %111 = add nsw i32 %.sink, %98 - %112 = icmp eq i32 %111, -1 - br i1 %112, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %_ZN2cvL9mapSymbolEc.exit44.thread - -_ZN2cvL9mapSymbolEc.exit44.thread: ; preds = %102, %103, %104, %105, %106, %107, %108, %109, %110, %_ZN2cvL9mapSymbolEc.exit44 - %.0.i4352 = phi i32 [ %111, %_ZN2cvL9mapSymbolEc.exit44 ], [ 36, %102 ], [ 37, %103 ], [ 38, %104 ], [ 39, %105 ], [ 40, %106 ], [ 41, %107 ], [ 42, %108 ], [ 43, %109 ], [ 44, %110 ] +_ZN2cvL9mapSymbolEc.exit44.thread: ; preds = %103, %99, %105, %106, %107, %108, %109, %110, %111, %_ZN2cvL9mapSymbolEc.exit44, %113 + %.0.i4352 = phi i32 [ 36, %105 ], [ 37, %106 ], [ 38, %107 ], [ 39, %108 ], [ 40, %109 ], [ 41, %110 ], [ 42, %111 ], [ 43, %112 ], [ 44, %113 ], [ %100, %99 ], [ %104, %103 ] %113 = call noalias noundef nonnull dereferenceable(6) ptr @_Znwm(i64 noundef 6) #28 %114 = getelementptr inbounds nuw i8, ptr %113, i64 6 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(6) %113, i8 0, i64 6, i1 false) @@ -2371,25 +2371,25 @@ _ZN2cvL9mapSymbolEc.exit44.thread: ; preds = %102, %103, %104, %1 _ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i49: ; preds = %.lr.ph.i.i45 %121 = load ptr, ptr %13, align 8 %122 = load ptr, ptr %2, align 8 - %123 = ptrtoint ptr %121 to i64 %124 = ptrtoint ptr %122 to i64 - %125 = sub i64 %123, %124 + %125 = ptrtoint ptr %123 to i64 + %125 = sub i64 %124, %125 %126 = getelementptr inbounds i8, ptr %122, i64 %125 - invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %126, ptr nonnull %113, ptr nonnull %114) + invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %126, ptr nonnull %113, ptr nonnull %115) to label %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50 unwind label %127 -127: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i49 +128: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i49 %128 = landingpad { ptr, i32 } cleanup - call void @_ZdlPv(ptr noundef nonnull %113) #29 + call void @_ZdlPv(ptr noundef nonnull %114) #29 br label %common.resume _ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i49 - call void @_ZdlPv(ptr noundef nonnull %113) #29 + call void @_ZdlPv(ptr noundef nonnull %114) #29 br label %_ZN2cvL9mapSymbolEc.exit44.thread53 -_ZN2cvL9mapSymbolEc.exit44.thread53: ; preds = %_ZN2cvL9mapSymbolEc.exit34, %60, %102, %._crit_edge, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50, %_ZN2cvL9mapSymbolEc.exit44 - %.0 = phi i1 [ false, %_ZN2cvL9mapSymbolEc.exit44 ], [ true, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50 ], [ true, %._crit_edge ], [ false, %102 ], [ false, %60 ], [ false, %_ZN2cvL9mapSymbolEc.exit34 ] +_ZN2cvL9mapSymbolEc.exit44.thread53: ; preds = %_ZN2cvL9mapSymbolEc.exit34, %60, %105, %._crit_edge, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50 + %.0 = phi i1 [ true, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50 ], [ true, %._crit_edge ], [ false, %105 ], [ false, %60 ], [ false, %_ZN2cvL9mapSymbolEc.exit34 ] ret i1 %.0 } @@ -2528,7 +2528,7 @@ _ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit: ; preds = %_ZN2cvL8decToBinEi %21 = load i32, ptr %20, align 8 %22 = icmp sgt i32 %21, 9 %spec.store.select = select i1 %22, i32 16, i32 8 - %23 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 + %24 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 %24 = trunc i64 %23 to i32 tail call fastcc void @_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE(i32 noundef %24, i32 noundef %spec.store.select, ptr noundef nonnull align 8 dereferenceable(24) %2) %25 = icmp sgt i32 %24, 0 @@ -2635,7 +2635,7 @@ _ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit: ; preds = %_ZN2cvL8decToBinEi %.inv = icmp slt i32 %21, 10 %spec.select = select i1 %.inv, i32 10, i32 12 %.055 = select i1 %22, i32 14, i32 %spec.select - %23 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 + %24 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 %24 = trunc i64 %23 to i32 tail call fastcc void @_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE(i32 noundef %24, i32 noundef %.055, ptr noundef nonnull align 8 dereferenceable(24) %2) %.not68 = icmp slt i32 %24, 3 @@ -3275,20 +3275,17 @@ define hidden noundef zeroext i1 @_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKN br i1 %4, label %_ZN2cvL9mapSymbolEc.exit.thread7, label %.lr.ph .lr.ph: ; preds = %2, %_ZN2cvL9mapSymbolEc.exit.thread - %.09 = phi i64 [ %14, %_ZN2cvL9mapSymbolEc.exit.thread ], [ 0, %2 ] + %.09 = phi i64 [ %10, %_ZN2cvL9mapSymbolEc.exit.thread ], [ 0, %2 ] %5 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1, i64 noundef %.09) #26 %6 = load i8, ptr %5, align 1 - %7 = sext i8 %6 to i32 - %8 = add i8 %6, -48 - %or.cond.i = icmp ult i8 %8, 10 - br i1 %or.cond.i, label %_ZN2cvL9mapSymbolEc.exit, label %9 + %7 = add i8 %6, -48 + %8 = icmp ult i8 %7, 10 + %or.cond.i = add i8 %6, -65 + %or.cond5.i = icmp ult i8 %8, 26 + %or.cond = or i1 %or.cond.i, %or.cond5.i + br i1 %or.cond, label %_ZN2cvL9mapSymbolEc.exit.thread, label %9 9: ; preds = %.lr.ph - %10 = add i8 %6, -65 - %or.cond5.i = icmp ult i8 %10, 26 - br i1 %or.cond5.i, label %_ZN2cvL9mapSymbolEc.exit, label %11 - -11: ; preds = %9 switch i8 %6, label %_ZN2cvL9mapSymbolEc.exit.thread7 [ i8 32, label %_ZN2cvL9mapSymbolEc.exit.thread i8 36, label %_ZN2cvL9mapSymbolEc.exit.thread @@ -3301,20 +3298,14 @@ define hidden noundef zeroext i1 @_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKN i8 58, label %_ZN2cvL9mapSymbolEc.exit.thread ] -_ZN2cvL9mapSymbolEc.exit: ; preds = %9, %.lr.ph - %.sink = phi i32 [ -48, %.lr.ph ], [ -55, %9 ] - %12 = add nsw i32 %.sink, %7 - %13 = icmp eq i32 %12, -1 - br i1 %13, label %_ZN2cvL9mapSymbolEc.exit.thread7, label %_ZN2cvL9mapSymbolEc.exit.thread - -_ZN2cvL9mapSymbolEc.exit.thread: ; preds = %11, %11, %11, %11, %11, %11, %11, %11, %11, %_ZN2cvL9mapSymbolEc.exit - %14 = add nuw i64 %.09, 1 - %15 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 - %.not = icmp ult i64 %14, %15 +_ZN2cvL9mapSymbolEc.exit.thread: ; preds = %.lr.ph, %9, %9, %9, %9, %9, %9, %9, %9, %9 + %.sink = add nuw i64 %.09, 1 + %12 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 + %13 = icmp ult i64 %10, %11 br i1 %.not, label %.lr.ph, label %_ZN2cvL9mapSymbolEc.exit.thread7, !llvm.loop !19 -_ZN2cvL9mapSymbolEc.exit.thread7: ; preds = %_ZN2cvL9mapSymbolEc.exit, %_ZN2cvL9mapSymbolEc.exit.thread, %11, %2 - %.lcssa = phi i1 [ true, %2 ], [ false, %11 ], [ true, %_ZN2cvL9mapSymbolEc.exit.thread ], [ false, %_ZN2cvL9mapSymbolEc.exit ] +_ZN2cvL9mapSymbolEc.exit.thread7: ; preds = %_ZN2cvL9mapSymbolEc.exit, %9, %2 + %14 = phi i1 [ true, %2 ], [ false, %9 ], [ true, %_ZN2cvL9mapSymbolEc.exit ] ret i1 %.lcssa } @@ -3349,20 +3340,17 @@ _ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_trait br i1 %16, label %_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %.lr.ph.i3 .lr.ph.i3: ; preds = %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, %_ZN2cvL9mapSymbolEc.exit.thread.i - %.09.i = phi i64 [ %26, %_ZN2cvL9mapSymbolEc.exit.thread.i ], [ 0, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ] + %.09.i = phi i64 [ %22, %_ZN2cvL9mapSymbolEc.exit.thread.i ], [ 0, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ] %17 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1, i64 noundef %.09.i) #26 %18 = load i8, ptr %17, align 1 - %19 = sext i8 %18 to i32 - %20 = add i8 %18, -48 - %or.cond.i.i = icmp ult i8 %20, 10 - br i1 %or.cond.i.i, label %_ZN2cvL9mapSymbolEc.exit.i, label %21 + %19 = add i8 %18, -48 + %20 = icmp ult i8 %19, 10 + %or.cond.i.i = add i8 %18, -65 + %or.cond5.i.i = icmp ult i8 %20, 26 + %or.cond.i = or i1 %or.cond.i.i, %or.cond5.i.i + br i1 %or.cond.i, label %_ZN2cvL9mapSymbolEc.exit.thread.i, label %21 21: ; preds = %.lr.ph.i3 - %22 = add i8 %18, -65 - %or.cond5.i.i = icmp ult i8 %22, 26 - br i1 %or.cond5.i.i, label %_ZN2cvL9mapSymbolEc.exit.i, label %23 - -23: ; preds = %21 switch i8 %18, label %_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit [ i8 32, label %_ZN2cvL9mapSymbolEc.exit.thread.i i8 36, label %_ZN2cvL9mapSymbolEc.exit.thread.i @@ -3375,20 +3363,14 @@ _ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_trait i8 58, label %_ZN2cvL9mapSymbolEc.exit.thread.i ] -_ZN2cvL9mapSymbolEc.exit.i: ; preds = %21, %.lr.ph.i3 - %.sink.i = phi i32 [ -48, %.lr.ph.i3 ], [ -55, %21 ] - %24 = add nsw i32 %.sink.i, %19 - %25 = icmp eq i32 %24, -1 - br i1 %25, label %_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %_ZN2cvL9mapSymbolEc.exit.thread.i - -_ZN2cvL9mapSymbolEc.exit.thread.i: ; preds = %_ZN2cvL9mapSymbolEc.exit.i, %23, %23, %23, %23, %23, %23, %23, %23, %23 - %26 = add nuw i64 %.09.i, 1 - %27 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 - %.not.i4 = icmp ult i64 %26, %27 +_ZN2cvL9mapSymbolEc.exit.thread.i: ; preds = %21, %21, %21, %21, %21, %21, %21, %21, %21, %.lr.ph.i3 + %.sink.i = add nuw i64 %.09.i, 1 + %24 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 + %25 = icmp ult i64 %22, %23 br i1 %.not.i4, label %.lr.ph.i3, label %_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, !llvm.loop !19 -_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %5, %23, %_ZN2cvL9mapSymbolEc.exit.i, %_ZN2cvL9mapSymbolEc.exit.thread.i, %2, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit - %.0 = phi i32 [ 2, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ], [ 1, %2 ], [ 2, %_ZN2cvL9mapSymbolEc.exit.thread.i ], [ 4, %_ZN2cvL9mapSymbolEc.exit.i ], [ 4, %23 ], [ 1, %5 ] +_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %5, %21, %_ZN2cvL9mapSymbolEc.exit.i, %2, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit + %26 = phi i32 [ 2, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ], [ 1, %2 ], [ 2, %_ZN2cvL9mapSymbolEc.exit.i ], [ 4, %21 ], [ 1, %5 ] ret i32 %.0 } @@ -3953,7 +3935,7 @@ _ZNSt16allocator_traitsISaIhEE8allocateERS0_m.exit.i.i.i.i.i.i.i: ; preds = %115 %123 = load ptr, ptr %40, align 8 %124 = ptrtoint ptr %123 to i64 %125 = ptrtoint ptr %122 to i64 - %126 = sub i64 %124, %125 + %125 = sub i64 %124, %125 %.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %123, %122 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZNSt16allocator_traitsISaISt6vectorIhSaIhEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i, label %127 @@ -6256,7 +6238,7 @@ define hidden void @_ZN2cv17QRCodeEncoderImpl17writeReservedAreaEv(ptr noundef n 120: ; preds = %118 %121 = load ptr, ptr %12, align 8 - %122 = load ptr, ptr %13, align 8 + %121 = load ptr, ptr %13, align 8 %123 = load i64, ptr %122, align 8 %124 = mul i64 %123, %indvars.iv285 %125 = getelementptr inbounds i8, ptr %121, i64 %124 diff --git a/bench/openjdk/optimized/jfrModuleEvent.ll b/bench/openjdk/optimized/jfrModuleEvent.ll index f843a6c42a0..bde68676de6 100644 --- a/bench/openjdk/optimized/jfrModuleEvent.ll +++ b/bench/openjdk/optimized/jfrModuleEvent.ll @@ -227,51 +227,49 @@ define internal void @_ZL28module_export_event_callbackP12PackageEntry(ptr nound br i1 %.not.i, label %_ZNK12PackageEntry11is_exportedEv.exit, label %_ZNK12PackageEntry11is_exportedEv.exit.thread _ZNK12PackageEntry11is_exportedEv.exit: ; preds = %9 - %13 = icmp ne i32 %11, 1 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %15 = load ptr, ptr %14, align 8 - %16 = icmp ne ptr %15, null - %17 = select i1 %13, i1 %16, i1 false - br i1 %17, label %_ZNK12PackageEntry11is_exportedEv.exit.thread, label %33 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %14 = load ptr, ptr %13, align 8 + %15 = icmp eq ptr %14, null + br i1 %15, label %30, label %_ZNK12PackageEntry11is_exportedEv.exit.thread _ZNK12PackageEntry11is_exportedEv.exit.thread: ; preds = %9, %_ZNK12PackageEntry11is_exportedEv.exit - %18 = icmp ne i32 %11, 1 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %20 = load ptr, ptr %19, align 8 - %21 = icmp ne ptr %20, null - %22 = select i1 %18, i1 %21, i1 false - br i1 %22, label %23, label %_ZNK12PackageEntry11is_exportedEv.exit.thread.thread - -23: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit.thread - %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr @_ZL25write_module_export_eventPKvPK11ModuleEntry, ptr %24, align 8 + %15 = icmp ne i32 %11, 1 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %18 = load ptr, ptr %16, align 8 + %19 = icmp ne ptr %17, null + %19 = select i1 %15, i1 %19, i1 false + br i1 %19, label %20, label %_ZNK12PackageEntry11is_exportedEv.exit.thread.thread + +20: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit.thread + %21 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr @_ZL25write_module_export_eventPKvPK11ModuleEntry, ptr %21, align 8 store ptr getelementptr inbounds nuw inrange(-16, 8) (i8, ptr @_ZTV19ModuleExportClosure, i64 16), ptr %3, align 8 - %25 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %0, ptr %25, align 8 + %22 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr %0, ptr %22, align 8 call void @_ZN12PackageEntry18package_exports_doEP13ModuleClosure(ptr noundef nonnull align 8 dereferenceable(44) %0, ptr noundef nonnull %3) #7 - br label %33 + br label %30 _ZNK12PackageEntry11is_exportedEv.exit.thread.thread: ; preds = %1, %_ZNK12PackageEntry11is_exportedEv.exit.thread call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %2) - %26 = getelementptr inbounds nuw i8, ptr %2, i64 16 - store i8 1, ptr %26, align 8 - %27 = getelementptr inbounds nuw i8, ptr %2, i64 17 - store i8 0, ptr %27, align 1 - %28 = getelementptr inbounds nuw i8, ptr %2, i64 18 - store i8 0, ptr %28, align 2 - %29 = load i64, ptr @_ZL15invocation_time.0, align 8 - store i64 %29, ptr %2, align 8 - %30 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 %29, ptr %30, align 8 - %31 = getelementptr inbounds nuw i8, ptr %2, i64 24 - store ptr %0, ptr %31, align 8 - %32 = getelementptr inbounds nuw i8, ptr %2, i64 32 - store ptr null, ptr %32, align 8 + %23 = getelementptr inbounds nuw i8, ptr %2, i64 16 + store i8 1, ptr %23, align 8 + %26 = getelementptr inbounds nuw i8, ptr %2, i64 17 + store i8 0, ptr %26, align 1 + %27 = getelementptr inbounds nuw i8, ptr %2, i64 18 + store i8 0, ptr %27, align 2 + %28 = load i64, ptr @_ZL15invocation_time.0, align 8 + store i64 %26, ptr %2, align 8 + %29 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 %26, ptr %27, align 8 + %30 = getelementptr inbounds nuw i8, ptr %2, i64 24 + store ptr %0, ptr %30, align 8 + %31 = getelementptr inbounds nuw i8, ptr %2, i64 32 + store ptr null, ptr %31, align 8 call void @_ZN8JfrEventI17EventModuleExportE6commitEv(ptr noundef nonnull align 8 dereferenceable(19) %2) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %2) - br label %33 + br label %30 -33: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit.thread.thread, %23, %_ZNK12PackageEntry11is_exportedEv.exit +30: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit.thread.thread, %20, %_ZNK12PackageEntry11is_exportedEv.exit ret void } @@ -671,7 +669,7 @@ define linkonce_odr hidden void @_ZN15EventWriterHostI11EncoderHostI20BigEndianE 14: ; preds = %8 %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 %16 = getelementptr inbounds nuw i8, ptr %13, i64 16 - %17 = load ptr, ptr %16, align 8 + %18 = load ptr, ptr %16, align 8 store ptr %17, ptr %0, align 8 store ptr %17, ptr %15, align 8 %18 = getelementptr inbounds nuw i8, ptr %13, i64 40 diff --git a/bench/openjdk/optimized/jfrTypeSet.ll b/bench/openjdk/optimized/jfrTypeSet.ll index eb39a55894f..8c2b3366e88 100644 --- a/bench/openjdk/optimized/jfrTypeSet.ll +++ b/bench/openjdk/optimized/jfrTypeSet.ll @@ -734,78 +734,76 @@ _ZL9module_idPK12PackageEntryb.exit: ; preds = %_ZL10get_modulePK12 br i1 %.not.i10, label %77, label %_ZNK12PackageEntry11is_exportedEv.exit 77: ; preds = %73 - %78 = icmp ne i32 %75, 1 - %79 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %80 = load ptr, ptr %79, align 8 - %81 = icmp ne ptr %80, null - %82 = select i1 %78, i1 %81, i1 false - %83 = zext i1 %82 to i8 + %78 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %79 = load ptr, ptr %78, align 8 + %80 = icmp ne ptr %79, null + %81 = zext i1 %80 to i8 br label %_ZNK12PackageEntry11is_exportedEv.exit _ZNK12PackageEntry11is_exportedEv.exit: ; preds = %_ZL9module_idPK12PackageEntryb.exit, %73, %77 - %84 = phi i8 [ 1, %73 ], [ 1, %_ZL9module_idPK12PackageEntryb.exit ], [ %83, %77 ] - %85 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %86 = load ptr, ptr %85, align 8 - %.not.i.i.i.i11 = icmp eq ptr %86, null - br i1 %.not.i.i.i.i11, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit, label %87 - -87: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit - %88 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %89 = load ptr, ptr %88, align 8 - %90 = icmp eq ptr %86, %89 - br i1 %90, label %91, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i - -91: ; preds = %87 - %92 = ptrtoint ptr %86 to i64 - %93 = load ptr, ptr %0, align 8 - %94 = ptrtoint ptr %93 to i64 - %95 = sub i64 %92, %94 - %96 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %82 = phi i8 [ 1, %73 ], [ 1, %_ZL9module_idPK12PackageEntryb.exit ], [ %81, %77 ] + %83 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %84 = load ptr, ptr %83, align 8 + %85 = icmp eq ptr %84, null + br i1 %85, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit, label %85 + +85: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit + %86 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %87 = load ptr, ptr %86, align 8 + %88 = icmp eq ptr %84, %87 + br i1 %88, label %89, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i + +89: ; preds = %85 + %90 = ptrtoint ptr %84 to i64 + %91 = load ptr, ptr %0, align 8 + %92 = ptrtoint ptr %91 to i64 + %93 = sub i64 %90, %92 + %94 = getelementptr inbounds nuw i8, ptr %0, i64 24 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) + %96 = load ptr, ptr %94, align 8 + %96 = getelementptr inbounds nuw i8, ptr %0, i64 32 %97 = load ptr, ptr %96, align 8 - %98 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %99 = load ptr, ptr %98, align 8 - call void @_ZN18JfrCheckpointFlushC1EP9JfrBuffermmP6Thread(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %97, i64 noundef %95, i64 noundef 1, ptr noundef %99) #9 - %100 = load ptr, ptr %4, align 8 - store ptr %100, ptr %96, align 8 - %.not5.i.i.i.i = icmp eq ptr %100, null + call void @_ZN18JfrCheckpointFlushC1EP9JfrBuffermmP6Thread(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %95, i64 noundef %93, i64 noundef 1, ptr noundef %97) #9 + %99 = load ptr, ptr %4, align 8 + store ptr %98, ptr %94, align 8 + %100 = icmp eq ptr %99, null call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) br i1 %.not5.i.i.i.i, label %.sink.split.i.i.i.i, label %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i -_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i: ; preds = %91 - %101 = getelementptr inbounds nuw i8, ptr %100, i64 16 - %102 = load ptr, ptr %101, align 8 - store ptr %102, ptr %0, align 8 - store ptr %102, ptr %88, align 8 - %103 = getelementptr inbounds nuw i8, ptr %100, i64 40 - %104 = load i16, ptr %103, align 8 - %105 = zext i16 %104 to i64 - %106 = getelementptr inbounds nuw i8, ptr %100, i64 %105 - %107 = getelementptr inbounds nuw i8, ptr %100, i64 32 - %108 = load i64, ptr %107, align 8 - %109 = getelementptr inbounds i8, ptr %106, i64 %108 - %110 = getelementptr inbounds i8, ptr %102, i64 %95 - store ptr %110, ptr %88, align 8 +_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i: ; preds = %89 + %99 = getelementptr inbounds nuw i8, ptr %98, i64 16 + %100 = load ptr, ptr %99, align 8 + store ptr %100, ptr %0, align 8 + store ptr %100, ptr %86, align 8 + %101 = getelementptr inbounds nuw i8, ptr %98, i64 40 + %102 = load i16, ptr %101, align 8 + %103 = zext i16 %102 to i64 + %104 = getelementptr inbounds nuw i8, ptr %98, i64 %103 + %105 = getelementptr inbounds nuw i8, ptr %98, i64 32 + %106 = load i64, ptr %105, align 8 + %107 = getelementptr inbounds i8, ptr %104, i64 %106 + %108 = getelementptr inbounds i8, ptr %100, i64 %93 + store ptr %108, ptr %86, align 8 br label %.sink.split.i.i.i.i -.sink.split.i.i.i.i: ; preds = %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i, %91 - %.sink.i.i.i.i13 = phi ptr [ %109, %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i ], [ null, %91 ] - %.0.ph.i.i.i.i = phi ptr [ %110, %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i ], [ null, %91 ] - store ptr %.sink.i.i.i.i13, ptr %85, align 8 +.sink.split.i.i.i.i: ; preds = %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i, %89 + %.sink.i.i.i.i13 = phi ptr [ %107, %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i ], [ null, %89 ] + %.0.ph.i.i.i.i = phi ptr [ %108, %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i ], [ null, %89 ] + store ptr %.sink.i.i.i.i13, ptr %83, align 8 br label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i -_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i: ; preds = %.sink.split.i.i.i.i, %87 - %.0.i.i.i.i = phi ptr [ %89, %87 ], [ %.0.ph.i.i.i.i, %.sink.split.i.i.i.i ] +_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i: ; preds = %.sink.split.i.i.i.i, %85 + %.0.i.i.i.i = phi ptr [ %87, %85 ], [ %.0.ph.i.i.i.i, %.sink.split.i.i.i.i ] %.not.i.i.i12 = icmp eq ptr %.0.i.i.i.i, null - br i1 %.not.i.i.i12, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit, label %111 + br i1 %.not.i.i.i12, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit, label %109 -111: ; preds = %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i - store i8 %84, ptr %.0.i.i.i.i, align 1 - %112 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 1 - store ptr %112, ptr %88, align 8 +109: ; preds = %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i + store i8 %82, ptr %.0.i.i.i.i, align 1 + %110 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 1 + store ptr %110, ptr %86, align 8 br label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit -_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit, %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i, %111 +_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit, %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i, %109 ret void } diff --git a/bench/openjdk/optimized/loopTransform.ll b/bench/openjdk/optimized/loopTransform.ll index 86c1fa5523c..c7bf5123cc9 100644 --- a/bench/openjdk/optimized/loopTransform.ll +++ b/bench/openjdk/optimized/loopTransform.ll @@ -23486,14 +23486,14 @@ _ZN9VectorSet3setEj.exit265: ; preds = %710, %715 %wide.trip.count335 = zext i32 %724 to i64 br label %728 -728: ; preds = %.lr.ph305, %756 - %indvars.iv332 = phi i64 [ 0, %.lr.ph305 ], [ %indvars.iv.next333, %756 ] +728: ; preds = %.lr.ph305, %754 + %indvars.iv332 = phi i64 [ 0, %.lr.ph305 ], [ %indvars.iv.next333, %754 ] %729 = getelementptr inbounds nuw ptr, ptr %725, i64 %indvars.iv332 %730 = load ptr, ptr %729, align 8 %731 = getelementptr inbounds nuw i8, ptr %730, i64 32 %732 = load i32, ptr %731, align 8 %733 = icmp eq i32 %732, 0 - br i1 %733, label %756, label %734 + br i1 %733, label %754, label %734 734: ; preds = %728 %735 = getelementptr inbounds nuw i8, ptr %730, i64 40 @@ -23510,176 +23510,173 @@ _ZNK9VectorSet4testEj.exit: ; preds = %734 %742 = load i32, ptr %741, align 4 %743 = and i32 %742, %739 %.not285 = icmp eq i32 %743, 0 - br i1 %.not285, label %_ZNK9VectorSet4testEj.exit.thread, label %756 + br i1 %.not285, label %_ZNK9VectorSet4testEj.exit.thread, label %754 _ZNK9VectorSet4testEj.exit.thread: ; preds = %734, %_ZNK9VectorSet4testEj.exit %744 = getelementptr inbounds nuw i8, ptr %730, i64 44 %745 = load i32, ptr %744, align 4 %746 = and i32 %745, 255 %747 = icmp eq i32 %746, 200 - br i1 %747, label %748, label %755 + br i1 %747, label %748, label %753 748: ; preds = %_ZNK9VectorSet4testEj.exit.thread %749 = getelementptr inbounds nuw i8, ptr %730, i64 8 %750 = load ptr, ptr %749, align 8 %751 = load ptr, ptr %750, align 8 %752 = icmp eq ptr %751, %.0.i.i.i234 - %753 = and i32 %745, 968 - %754 = icmp eq i32 %753, 512 - %or.cond283 = or i1 %754, %752 - br i1 %or.cond283, label %756, label %.critedge201 + br i1 %752, label %754, label %.critedge201 -755: ; preds = %_ZNK9VectorSet4testEj.exit.thread +753: ; preds = %_ZNK9VectorSet4testEj.exit.thread %.old = and i32 %745, 1023 %.old282 = icmp eq i32 %.old, 512 - br i1 %.old282, label %756, label %.critedge201 + br i1 %.old282, label %754, label %.critedge201 -756: ; preds = %755, %748, %_ZNK9VectorSet4testEj.exit, %728 +754: ; preds = %753, %748, %_ZNK9VectorSet4testEj.exit, %728 %indvars.iv.next333 = add nuw nsw i64 %indvars.iv332, 1 %exitcond336.not = icmp eq i64 %indvars.iv.next333, %wide.trip.count335 br i1 %exitcond336.not, label %.lr.ph318, label %728, !llvm.loop !62 -.lr.ph318: ; preds = %756, %723 - %757 = load i32, ptr %12, align 8 - %.not372386.not = icmp eq i32 %757, 0 +.lr.ph318: ; preds = %754, %723 + %755 = load i32, ptr %12, align 8 + %.not372386.not = icmp eq i32 %755, 0 br i1 %.not372386.not, label %.critedge201, label %.lr.ph388 .lr.ph388: ; preds = %.lr.ph318, %_ZNK9Node_List8containsEPK4Node.exit.thread %indvars.iv337387 = phi i64 [ %indvars.iv.next338, %_ZNK9Node_List8containsEPK4Node.exit.thread ], [ 0, %.lr.ph318 ] - %758 = load ptr, ptr %13, align 8 - %759 = getelementptr inbounds nuw ptr, ptr %758, i64 %indvars.iv337387 - %760 = load ptr, ptr %759, align 8 - %761 = load ptr, ptr %2, align 8 - %762 = icmp eq ptr %760, %761 - %763 = icmp eq ptr %760, %.0.i.i.i234 - %or.cond209 = or i1 %763, %762 - br i1 %or.cond209, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %764 - -764: ; preds = %.lr.ph388 - %765 = load ptr, ptr %14, align 8 - %766 = getelementptr inbounds nuw i8, ptr %765, i64 16 - %767 = load ptr, ptr %766, align 8 - %768 = icmp eq ptr %767, null - br i1 %768, label %_ZNK19BaseCountedLoopNode4incrEv.exit272, label %769 - -769: ; preds = %764 - %770 = getelementptr inbounds nuw i8, ptr %767, i64 8 - %771 = load ptr, ptr %770, align 8 - %772 = load ptr, ptr %771, align 8 - %773 = getelementptr inbounds nuw i8, ptr %772, i64 44 - %774 = load i32, ptr %773, align 4 - %775 = and i32 %774, 63 - %776 = icmp eq i32 %775, 53 - br i1 %776, label %777, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 - -777: ; preds = %769 - %778 = load ptr, ptr %772, align 8 - %779 = getelementptr inbounds nuw i8, ptr %778, i64 208 - %780 = load ptr, ptr %779, align 8 - %781 = call noundef zeroext i8 %780(ptr noundef nonnull align 8 dereferenceable(60) %772) #11 - %782 = load ptr, ptr %11, align 8 - %783 = getelementptr inbounds nuw i8, ptr %782, i64 232 - %784 = load ptr, ptr %783, align 8 - %785 = call noundef zeroext i8 %784(ptr noundef nonnull align 8 dereferenceable(72) %11) #11 - %.not.i.i268 = icmp eq i8 %781, %785 + %756 = load ptr, ptr %13, align 8 + %757 = getelementptr inbounds nuw ptr, ptr %756, i64 %indvars.iv337387 + %758 = load ptr, ptr %757, align 8 + %758 = load ptr, ptr %2, align 8 + %759 = icmp eq ptr %758, %758 + %760 = icmp eq ptr %758, %.0.i.i.i234 + %761 = or i1 %761, %760 + br i1 %761, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %762 + +762: ; preds = %.lr.ph388 + %763 = load ptr, ptr %14, align 8 + %764 = getelementptr inbounds nuw i8, ptr %763, i64 16 + %765 = load ptr, ptr %764, align 8 + %765 = icmp eq ptr %765, null + br i1 %766, label %_ZNK19BaseCountedLoopNode4incrEv.exit272, label %767 + +767: ; preds = %762 + %768 = getelementptr inbounds nuw i8, ptr %765, i64 8 + %769 = load ptr, ptr %768, align 8 + %770 = load ptr, ptr %769, align 8 + %770 = getelementptr inbounds nuw i8, ptr %770, i64 44 + %771 = load i32, ptr %770, align 4 + %772 = and i32 %771, 63 + %773 = icmp eq i32 %772, 53 + br i1 %774, label %775, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 + +775: ; preds = %767 + %776 = load ptr, ptr %770, align 8 + %777 = getelementptr inbounds nuw i8, ptr %776, i64 208 + %778 = load ptr, ptr %777, align 8 + %778 = call noundef zeroext i8 %778(ptr noundef nonnull align 8 dereferenceable(60) %770) #11 + %779 = load ptr, ptr %11, align 8 + %780 = getelementptr inbounds nuw i8, ptr %779, i64 232 + %781 = load ptr, ptr %780, align 8 + %782 = call noundef zeroext i8 %782(ptr noundef nonnull align 8 dereferenceable(72) %11) #11 + %783 = icmp eq i8 %779, %782 br i1 %.not.i.i268, label %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 -_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269: ; preds = %777 - %786 = getelementptr inbounds nuw i8, ptr %772, i64 8 +_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269: ; preds = %775 + %784 = getelementptr inbounds nuw i8, ptr %770, i64 8 + %785 = load ptr, ptr %784, align 8 + %786 = getelementptr inbounds nuw i8, ptr %785, i64 8 %787 = load ptr, ptr %786, align 8 - %788 = getelementptr inbounds nuw i8, ptr %787, i64 8 - %789 = load ptr, ptr %788, align 8 - %790 = getelementptr inbounds nuw i8, ptr %789, i64 24 - %791 = load i32, ptr %790, align 8 - %792 = icmp ugt i32 %791, 1 - br i1 %792, label %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 + %788 = getelementptr inbounds nuw i8, ptr %787, i64 24 + %788 = load i32, ptr %788, align 8 + %789 = icmp ugt i32 %788, 1 + br i1 %790, label %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 _ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270: ; preds = %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269 - %793 = getelementptr inbounds nuw i8, ptr %789, i64 8 + %791 = getelementptr inbounds nuw i8, ptr %787, i64 8 + %792 = load ptr, ptr %791, align 8 + %793 = getelementptr inbounds nuw i8, ptr %792, i64 8 %794 = load ptr, ptr %793, align 8 - %795 = getelementptr inbounds nuw i8, ptr %794, i64 8 - %796 = load ptr, ptr %795, align 8 - %.not.i3.i271 = icmp eq ptr %796, null - br i1 %.not.i3.i271, label %_ZNK19BaseCountedLoopNode4incrEv.exit272, label %797 - -797: ; preds = %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270 - %798 = getelementptr inbounds nuw i8, ptr %796, i64 24 - %799 = load i32, ptr %798, align 8 - %800 = icmp eq i32 %799, 3 - br i1 %800, label %801, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 - -801: ; preds = %797 - %802 = getelementptr inbounds nuw i8, ptr %796, i64 8 + %.not.i3.i271 = icmp eq ptr %794, null + br i1 %.not.i3.i271, label %_ZNK19BaseCountedLoopNode4incrEv.exit272, label %795 + +795: ; preds = %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270 + %796 = getelementptr inbounds nuw i8, ptr %794, i64 24 + %797 = load i32, ptr %796, align 8 + %798 = icmp eq i32 %797, 3 + br i1 %798, label %799, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 + +799: ; preds = %795 + %800 = getelementptr inbounds nuw i8, ptr %794, i64 8 + %801 = load ptr, ptr %800, align 8 + %802 = getelementptr inbounds nuw i8, ptr %801, i64 8 %803 = load ptr, ptr %802, align 8 - %804 = getelementptr inbounds nuw i8, ptr %803, i64 8 - %805 = load ptr, ptr %804, align 8 br label %_ZNK19BaseCountedLoopNode4incrEv.exit272 -_ZNK19BaseCountedLoopNode4incrEv.exit272: ; preds = %764, %769, %777, %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269, %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270, %797, %801 - %806 = phi ptr [ %805, %801 ], [ null, %797 ], [ null, %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270 ], [ null, %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269 ], [ null, %764 ], [ null, %769 ], [ null, %777 ] - %807 = icmp eq ptr %760, %806 - br i1 %807, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %808 +_ZNK19BaseCountedLoopNode4incrEv.exit272: ; preds = %762, %767, %775, %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269, %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270, %795, %799 + %804 = phi ptr [ %803, %799 ], [ null, %795 ], [ null, %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270 ], [ null, %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269 ], [ null, %762 ], [ null, %767 ], [ null, %775 ] + %805 = icmp eq ptr %758, %804 + br i1 %805, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %806 -808: ; preds = %_ZNK19BaseCountedLoopNode4incrEv.exit272 - %809 = load ptr, ptr %2, align 8 +806: ; preds = %_ZNK19BaseCountedLoopNode4incrEv.exit272 + %807 = load ptr, ptr %2, align 8 + %808 = getelementptr inbounds nuw i8, ptr %807, i64 8 + %809 = load ptr, ptr %808, align 8 %810 = getelementptr inbounds nuw i8, ptr %809, i64 8 %811 = load ptr, ptr %810, align 8 - %812 = getelementptr inbounds nuw i8, ptr %811, i64 8 - %813 = load ptr, ptr %812, align 8 - %814 = icmp eq ptr %760, %813 - br i1 %814, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %815 - -815: ; preds = %808 - %816 = getelementptr inbounds nuw i8, ptr %760, i64 16 - %817 = load ptr, ptr %816, align 8 - %818 = getelementptr inbounds nuw i8, ptr %760, i64 32 - %819 = load i32, ptr %818, align 8 - %820 = zext i32 %819 to i64 - %821 = getelementptr inbounds nuw ptr, ptr %817, i64 %820 - %.not325 = icmp eq i32 %819, 0 + %812 = icmp eq ptr %758, %811 + br i1 %812, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %813 + +813: ; preds = %806 + %814 = getelementptr inbounds nuw i8, ptr %758, i64 16 + %815 = load ptr, ptr %814, align 8 + %816 = getelementptr inbounds nuw i8, ptr %758, i64 32 + %816 = load i32, ptr %816, align 8 + %817 = zext i32 %816 to i64 + %818 = getelementptr inbounds nuw ptr, ptr %815, i64 %818 + %819 = icmp eq i32 %817, 0 br i1 %.not325, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %.lr.ph313 -.lr.ph313: ; preds = %815 - %822 = load i32, ptr %12, align 8 - %.not.i273 = icmp eq i32 %822, 0 - %wide.trip.count.i = zext i32 %822 to i64 +.lr.ph313: ; preds = %813 + %820 = load i32, ptr %12, align 8 + %.not.i273 = icmp eq i32 %820, 0 + %wide.trip.count.i = zext i32 %820 to i64 br i1 %.not.i273, label %.critedge201, label %.lr.ph313.split .lr.ph313.split: ; preds = %.lr.ph313 - %823 = load ptr, ptr %13, align 8 + %821 = load ptr, ptr %13, align 8 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph313.split, %_ZNK9Node_List8containsEPK4Node.exit - %.sroa.3.0311 = phi ptr [ %817, %.lr.ph313.split ], [ %830, %_ZNK9Node_List8containsEPK4Node.exit ] - %824 = load ptr, ptr %.sroa.3.0311, align 8 - br label %826 + %.sroa.3.0311 = phi ptr [ %815, %.lr.ph313.split ], [ %828, %_ZNK9Node_List8containsEPK4Node.exit ] + %822 = load ptr, ptr %.sroa.3.0311, align 8 + br label %824 -825: ; preds = %826 +823: ; preds = %824 %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 - br i1 %exitcond.not.i, label %.critedge201, label %826, !llvm.loop !63 + br i1 %exitcond.not.i, label %.critedge201, label %824, !llvm.loop !63 -826: ; preds = %825, %.lr.ph.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %825 ] - %827 = getelementptr inbounds nuw ptr, ptr %823, i64 %indvars.iv.i - %828 = load ptr, ptr %827, align 8 - %829 = icmp eq ptr %828, %824 - br i1 %829, label %_ZNK9Node_List8containsEPK4Node.exit, label %825 +824: ; preds = %823, %.lr.ph.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %823 ] + %825 = getelementptr inbounds nuw ptr, ptr %821, i64 %indvars.iv.i + %826 = load ptr, ptr %825, align 8 + %indvars.iv.i = icmp eq ptr %826, %822 + br i1 %827, label %_ZNK9Node_List8containsEPK4Node.exit, label %823 -_ZNK9Node_List8containsEPK4Node.exit: ; preds = %826 - %830 = getelementptr inbounds nuw i8, ptr %.sroa.3.0311, i64 8 - %831 = icmp ult ptr %830, %821 - br i1 %831, label %.lr.ph.i, label %_ZNK9Node_List8containsEPK4Node.exit.thread, !llvm.loop !64 +_ZNK9Node_List8containsEPK4Node.exit: ; preds = %824 + %828 = getelementptr inbounds nuw i8, ptr %.sroa.3.0311, i64 8 + %829 = icmp ult ptr %828, %819 + br i1 %829, label %.lr.ph.i, label %_ZNK9Node_List8containsEPK4Node.exit.thread, !llvm.loop !64 -_ZNK9Node_List8containsEPK4Node.exit.thread: ; preds = %_ZNK9Node_List8containsEPK4Node.exit, %815, %.lr.ph388, %_ZNK19BaseCountedLoopNode4incrEv.exit272, %808 +_ZNK9Node_List8containsEPK4Node.exit.thread: ; preds = %_ZNK9Node_List8containsEPK4Node.exit, %813, %.lr.ph388, %_ZNK19BaseCountedLoopNode4incrEv.exit272, %806 %indvars.iv.next338 = add nuw nsw i64 %indvars.iv337387, 1 - %832 = load i32, ptr %12, align 8 - %833 = zext i32 %832 to i64 - %.not372 = icmp samesign ult i64 %indvars.iv.next338, %833 + %830 = load i32, ptr %12, align 8 + %831 = zext i32 %830 to i64 + %.not372 = icmp samesign ult i64 %indvars.iv.next338, %831 br i1 %.not372, label %.lr.ph388, label %.critedge201, !llvm.loop !65 -.critedge201: ; preds = %748, %755, %_ZNK9Node_List8containsEPK4Node.exit.thread, %.lr.ph313, %825, %.lr.ph318, %175, %.thread.thread, %.critedge.thread, %._crit_edge, %switch.early.test, %169, %.critedge - %.0 = phi i1 [ false, %.critedge ], [ false, %169 ], [ false, %switch.early.test ], [ false, %._crit_edge ], [ false, %.critedge.thread ], [ false, %.thread.thread ], [ false, %175 ], [ true, %.lr.ph318 ], [ false, %825 ], [ false, %.lr.ph313 ], [ true, %_ZNK9Node_List8containsEPK4Node.exit.thread ], [ false, %755 ], [ false, %748 ] +.critedge201: ; preds = %748, %753, %_ZNK9Node_List8containsEPK4Node.exit.thread, %.lr.ph313, %823, %.lr.ph318, %175, %.thread.thread, %.critedge.thread, %._crit_edge, %switch.early.test, %169, %.critedge + %.0 = phi i1 [ false, %.critedge ], [ false, %169 ], [ false, %switch.early.test ], [ false, %._crit_edge ], [ false, %.critedge.thread ], [ false, %.thread.thread ], [ false, %175 ], [ true, %.lr.ph318 ], [ false, %823 ], [ false, %.lr.ph313 ], [ true, %_ZNK9Node_List8containsEPK4Node.exit.thread ], [ false, %753 ], [ false, %748 ] ret i1 %.0 } diff --git a/bench/openmpi/optimized/coll_base_allgather.ll b/bench/openmpi/optimized/coll_base_allgather.ll index 714e68b2a61..512844f5205 100644 --- a/bench/openmpi/optimized/coll_base_allgather.ll +++ b/bench/openmpi/optimized/coll_base_allgather.ll @@ -102,12 +102,12 @@ ompi_datatype_copy_content_same_ddt.exit.thread: ; preds = %26, %19, %ompi_data 52: ; preds = %40 %53 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %3, i32 noundef %49, ptr noundef %5, ptr noundef %47, i32 noundef %49, ptr noundef %5) #8 - br label %ompi_coll_base_sendrecv.exit + br label %43 54: ; preds = %40 %55 = sext i32 %49 to i64 %56 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %3, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %55, ptr noundef %5, i32 noundef %44, i32 noundef -10, ptr noundef %47, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %55, ptr noundef %5, i32 noundef %42, i32 noundef -10, ptr noundef %6, ptr noundef null) #8 - br label %ompi_coll_base_sendrecv.exit + br label %43 ompi_coll_base_sendrecv.exit: ; preds = %52, %54 %.0.i116 = phi i32 [ %53, %52 ], [ %56, %54 ] @@ -352,13 +352,13 @@ define i32 @ompi_coll_base_allgather_intra_recursivedoubling(ptr noundef %0, i32 43: ; preds = %37 %44 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %.066, i32 noundef 0, ptr noundef %5, ptr noundef %.0, i32 noundef 0, ptr noundef %5) #8 - br label %ompi_coll_base_sendrecv.exit + br label %43 45: ; preds = %37 %46 = sext i32 %.06887 to i64 %47 = mul nsw i64 %46, %33 %48 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %.066, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %47, ptr noundef %5, i32 noundef %38, i32 noundef -10, ptr noundef %.0, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %47, ptr noundef %5, i32 noundef %38, i32 noundef -10, ptr noundef %6, ptr noundef null) #8 - br label %ompi_coll_base_sendrecv.exit + br label %43 ompi_coll_base_sendrecv.exit: ; preds = %43, %45 %.0.i81 = phi i32 [ %44, %43 ], [ %48, %45 ] @@ -467,7 +467,7 @@ define i32 @ompi_coll_base_allgather_intra_sparbit(ptr noundef %0, i32 noundef % %73 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @mca_pml, i64 64), align 8 %74 = sext i32 %65 to i64 %75 = mul i64 %45, %74 - %76 = getelementptr inbounds i8, ptr %3, i64 %75 + %70 = getelementptr inbounds i8, ptr %3, i64 %75 %77 = sub nsw i32 -1073741823, %65 %78 = getelementptr inbounds nuw ptr, ptr %58, i64 %indvars.iv %79 = tail call i32 %73(ptr noundef %76, i64 noundef %44, ptr noundef %5, i32 noundef %50, i32 noundef %77, ptr noundef %6, ptr noundef %78) #8 @@ -660,7 +660,7 @@ define i32 @ompi_coll_base_allgather_intra_neighborexchange(ptr noundef %0, i32 %42 = add nsw i32 %.val96, 1 br label %43 -43: ; preds = %38, %33 +ompi_coll_base_sendrecv.exit: ; preds = %38, %33 %.sink108 = phi i32 [ %35, %33 ], [ %41, %38 ] %.pn = phi i32 [ %37, %33 ], [ %42, %38 ] %44 = phi i32 [ %.val96, %33 ], [ %41, %38 ] @@ -676,82 +676,70 @@ define i32 @ompi_coll_base_allgather_intra_neighborexchange(ptr noundef %0, i32 store i32 %.sink104, ptr %10, align 4 %47 = getelementptr inbounds nuw i8, ptr %10, i64 4 store i32 %.sink, ptr %47, align 4 + %47 = mul i64 %23, %25 %48 = sext i32 %.sink108 to i64 - %49 = mul i64 %23, %25 - %50 = mul i64 %49, %48 - %51 = getelementptr inbounds i8, ptr %3, i64 %50 + %50 = mul i64 %47, %48 + %50 = getelementptr inbounds i8, ptr %3, i64 %50 %52 = mul nsw i64 %23, %26 - %53 = getelementptr inbounds i8, ptr %3, i64 %52 - %54 = icmp eq i32 %.sink108, %.val96 - br i1 %54, label %55, label %57 - -55: ; preds = %43 - %56 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %53, i32 noundef %4, ptr noundef nonnull %5, ptr noundef %51, i32 noundef %4, ptr noundef nonnull %5) #8 - br label %ompi_coll_base_sendrecv.exit - -57: ; preds = %43 - %58 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %53, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %25, ptr noundef nonnull %5, i32 noundef %.sink108, i32 noundef -10, ptr noundef %51, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %25, ptr noundef nonnull %5, i32 noundef %.sink108, i32 noundef -10, ptr noundef nonnull %6, ptr noundef null) #8 - br label %ompi_coll_base_sendrecv.exit - -ompi_coll_base_sendrecv.exit: ; preds = %55, %57 - %.0.i = phi i32 [ %56, %55 ], [ %58, %57 ] - %.not94 = icmp eq i32 %.0.i, 0 - br i1 %.not94, label %59, label %.loopexit - -59: ; preds = %ompi_coll_base_sendrecv.exit - %60 = ashr exact i32 %.val.val, 1 - %61 = icmp sgt i32 %60, 1 - br i1 %61, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %59 - %62 = shl nsw i64 %25, 1 - %63 = trunc i64 %62 to i32 - br label %66 - -64: ; preds = %ompi_coll_base_sendrecv.exit98 - %65 = add nuw nsw i32 %.085101, 1 - %exitcond.not = icmp eq i32 %65, %60 - br i1 %exitcond.not, label %.loopexit, label %66, !llvm.loop !11 - -66: ; preds = %.lr.ph, %64 - %.1102 = phi i32 [ %44, %.lr.ph ], [ %75, %64 ] - %.085101 = phi i32 [ 1, %.lr.ph ], [ %65, %64 ] - %67 = and i32 %.085101, 1 - %68 = zext nneg i32 %67 to i64 - %69 = getelementptr inbounds nuw [2 x i32], ptr %11, i64 0, i64 %68 - %70 = load i32, ptr %69, align 4 - %71 = getelementptr inbounds nuw [2 x i32], ptr %10, i64 0, i64 %68 + %52 = getelementptr inbounds i8, ptr %3, i64 %52 + %54 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %52, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %25, ptr noundef nonnull %5, i32 noundef %.sink108, i32 noundef -10, ptr noundef %50, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %25, ptr noundef nonnull %5, i32 noundef %.sink108, i32 noundef -10, ptr noundef nonnull %6, ptr noundef null) #8 + %.not94 = icmp eq i32 %54, 0 + br i1 %.not94, label %54, label %.loopexit + +54: ; preds = %ompi_coll_base_sendrecv.exit + %55 = ashr exact i32 %.val.val, 1 + %56 = icmp sgt i32 %55, 1 + br i1 %56, label %.lr.ph, label %.loopexit + +.lr.ph: ; preds = %54 + %57 = shl nsw i64 %25, 1 + %58 = trunc i64 %57 to i32 + br label %61 + +59: ; preds = %ompi_coll_base_sendrecv.exit98 + %60 = add nuw nsw i32 %.085101, 1 + %exitcond.not = icmp eq i32 %60, %55 + br i1 %exitcond.not, label %.loopexit, label %61, !llvm.loop !11 + +61: ; preds = %.lr.ph, %59 + %.1102 = phi i32 [ %43, %.lr.ph ], [ %70, %59 ] + %.085101 = phi i32 [ 1, %.lr.ph ], [ %60, %59 ] + %62 = and i32 %.085101, 1 + %63 = zext nneg i32 %62 to i64 + %64 = getelementptr inbounds nuw [2 x i32], ptr %11, i64 0, i64 %63 + %65 = load i32, ptr %64, align 4 + %66 = getelementptr inbounds nuw [2 x i32], ptr %10, i64 0, i64 %63 + %65 = load i32, ptr %66, align 4 + %exitcond.not = add i32 %65, %.val.val + %69 = add i32 %exitcond.not, %67 + %70 = srem i32 %69, %.val.val + store i32 %70, ptr %64, align 4 + %.1102 = sext i32 %70 to i64 + %.085101 = mul i64 %47, %71 + %67 = getelementptr inbounds i8, ptr %3, i64 %.085101 + %68 = sext i32 %.1102 to i64 + %69 = mul i64 %47, %68 + %70 = getelementptr inbounds i8, ptr %3, i64 %75 + %71 = getelementptr inbounds nuw [2 x i32], ptr %9, i64 0, i64 %63 %72 = load i32, ptr %71, align 4 - %73 = add i32 %70, %.val.val - %74 = add i32 %73, %72 - %75 = srem i32 %74, %.val.val - store i32 %75, ptr %69, align 4 - %76 = sext i32 %75 to i64 - %77 = mul i64 %49, %76 - %78 = getelementptr inbounds i8, ptr %3, i64 %77 - %79 = sext i32 %.1102 to i64 - %80 = mul i64 %49, %79 - %81 = getelementptr inbounds i8, ptr %3, i64 %80 - %82 = getelementptr inbounds nuw [2 x i32], ptr %9, i64 0, i64 %68 - %83 = load i32, ptr %82, align 4 - %84 = icmp eq i32 %83, %.val96 - br i1 %84, label %85, label %87 - -85: ; preds = %66 - %86 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %81, i32 noundef %63, ptr noundef %5, ptr noundef %78, i32 noundef %63, ptr noundef %5) #8 + %73 = icmp eq i32 %78, %.val96 + br i1 %73, label %80, label %82 + +80: ; preds = %61 + %76 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %70, i32 noundef %58, ptr noundef nonnull %5, ptr noundef %73, i32 noundef %58, ptr noundef nonnull %5) #8 br label %ompi_coll_base_sendrecv.exit98 -87: ; preds = %66 - %88 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %81, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %62, ptr noundef %5, i32 noundef %83, i32 noundef -10, ptr noundef %78, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %62, ptr noundef %5, i32 noundef %83, i32 noundef -10, ptr noundef %6, ptr noundef null) #8 +82: ; preds = %61 + %80 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %76, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %57, ptr noundef nonnull %5, i32 noundef %78, i32 noundef -10, ptr noundef %73, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %57, ptr noundef nonnull %5, i32 noundef %78, i32 noundef -10, ptr noundef nonnull %6, ptr noundef null) #8 br label %ompi_coll_base_sendrecv.exit98 -ompi_coll_base_sendrecv.exit98: ; preds = %85, %87 - %.0.i97 = phi i32 [ %86, %85 ], [ %88, %87 ] +ompi_coll_base_sendrecv.exit98: ; preds = %80, %82 + %84 = phi i32 [ %81, %80 ], [ %83, %82 ] %.not95 = icmp eq i32 %.0.i97, 0 - br i1 %.not95, label %64, label %.loopexit + br i1 %.not95, label %59, label %.loopexit -.loopexit: ; preds = %64, %ompi_coll_base_sendrecv.exit98, %59, %27, %ompi_coll_base_sendrecv.exit, %16 - %.0 = phi i32 [ %17, %16 ], [ %30, %27 ], [ %.0.i, %ompi_coll_base_sendrecv.exit ], [ 0, %59 ], [ 0, %64 ], [ %.0.i97, %ompi_coll_base_sendrecv.exit98 ] +.loopexit: ; preds = %59, %ompi_coll_base_sendrecv.exit98, %54, %27, %43, %16 + %.0 = phi i32 [ %17, %16 ], [ %30, %27 ], [ %53, %ompi_coll_base_sendrecv.exit ], [ 0, %54 ], [ 0, %59 ], [ %.0.i97, %ompi_coll_base_sendrecv.exit98 ] ret i32 %.0 } diff --git a/bench/openmpi/optimized/coll_base_allgatherv.ll b/bench/openmpi/optimized/coll_base_allgatherv.ll index d5cbdd697cb..80abd62d432 100644 --- a/bench/openmpi/optimized/coll_base_allgatherv.ll +++ b/bench/openmpi/optimized/coll_base_allgatherv.ll @@ -90,7 +90,7 @@ define i32 @ompi_coll_base_allgatherv_intra_bruck(ptr noundef %0, i32 noundef %1 %59 = getelementptr inbounds nuw i32, ptr %38, i64 %indvars.iv store i32 %58, ptr %59, align 4 %60 = getelementptr inbounds i32, ptr %5, i64 %56 - %61 = load i32, ptr %60, align 4 + %62 = load i32, ptr %60, align 4 %62 = getelementptr inbounds nuw i32, ptr %39, i64 %indvars.iv store i32 %61, ptr %62, align 4 %63 = sext i32 %55 to i64 @@ -134,11 +134,11 @@ define i32 @ompi_coll_base_allgatherv_intra_bruck(ptr noundef %0, i32 noundef %1 81: ; preds = %76 %82 = call i32 @ompi_datatype_sndrcv(ptr noundef %3, i32 noundef 1, ptr noundef %77, ptr noundef %3, i32 noundef 1, ptr noundef %78) #7 - br label %ompi_coll_base_sendrecv.exit + br label %53 83: ; preds = %76 %84 = call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %3, i64 noundef 1, ptr noundef %77, i32 noundef %47, i32 noundef -11, ptr noundef %3, i64 noundef 1, ptr noundef %78, i32 noundef %45, i32 noundef -11, ptr noundef %7, ptr noundef null) #7 - br label %ompi_coll_base_sendrecv.exit + br label %53 ompi_coll_base_sendrecv.exit: ; preds = %81, %83 %.0.i = phi i32 [ %82, %81 ], [ %84, %83 ] @@ -260,9 +260,9 @@ define i32 @ompi_coll_base_allgatherv_intra_sparbit(ptr noundef %0, i32 noundef %65 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @mca_pml, i64 88), align 8 %66 = getelementptr inbounds i32, ptr %5, i64 %60 %67 = load i32, ptr %66, align 4 - %68 = sext i32 %67 to i64 + %69 = sext i32 %67 to i64 %69 = mul nsw i64 %17, %68 - %70 = getelementptr inbounds i8, ptr %3, i64 %69 + %71 = getelementptr inbounds i8, ptr %3, i64 %69 %71 = zext nneg i32 %62 to i64 %72 = sub nsw i32 -1073741823, %57 %73 = add nsw i32 %.1103, 1 @@ -282,7 +282,7 @@ define i32 @ompi_coll_base_allgatherv_intra_sparbit(ptr noundef %0, i32 noundef 82: ; preds = %77 %83 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @mca_pml, i64 64), align 8 %84 = getelementptr inbounds i32, ptr %5, i64 %78 - %85 = load i32, ptr %84, align 4 + %82 = load i32, ptr %84, align 4 %86 = sext i32 %85 to i64 %87 = mul nsw i64 %17, %86 %88 = getelementptr inbounds i8, ptr %3, i64 %87 @@ -517,7 +517,7 @@ define i32 @ompi_coll_base_allgatherv_intra_neighborexchange(ptr noundef %0, i32 %52 = add nsw i32 %.val121, 1 br label %53 -53: ; preds = %48, %43 +ompi_coll_base_sendrecv.exit: ; preds = %48, %43 %.sink142 = phi i32 [ %45, %43 ], [ %51, %48 ] %.pn = phi i32 [ %47, %43 ], [ %52, %48 ] %54 = phi i32 [ %.val121, %43 ], [ %51, %48 ] @@ -534,141 +534,129 @@ define i32 @ompi_coll_base_allgatherv_intra_neighborexchange(ptr noundef %0, i32 %57 = getelementptr inbounds nuw i8, ptr %11, i64 4 store i32 %.sink, ptr %57, align 4 %58 = sext i32 %.sink142 to i64 - %59 = getelementptr inbounds i32, ptr %5, i64 %58 - %60 = load i32, ptr %59, align 4 - %61 = sext i32 %60 to i64 - %62 = mul nsw i64 %30, %61 - %63 = getelementptr inbounds i8, ptr %3, i64 %62 - %64 = load i32, ptr %32, align 4 - %65 = sext i32 %64 to i64 - %66 = mul nsw i64 %30, %65 - %67 = getelementptr inbounds i8, ptr %3, i64 %66 - %68 = getelementptr inbounds i32, ptr %4, i64 %31 - %69 = load i32, ptr %68, align 4 - %70 = getelementptr inbounds i32, ptr %4, i64 %58 - %71 = load i32, ptr %70, align 4 - %72 = icmp eq i32 %.sink142, %.val121 - br i1 %72, label %73, label %75 - -73: ; preds = %53 - %74 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %67, i32 noundef %69, ptr noundef nonnull %6, ptr noundef %63, i32 noundef %71, ptr noundef nonnull %6) #7 - br label %ompi_coll_base_sendrecv.exit - -75: ; preds = %53 - %76 = sext i32 %71 to i64 - %77 = sext i32 %69 to i64 - %78 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %67, i64 noundef range(i64 -2147483648, 2147483648) %77, ptr noundef nonnull %6, i32 noundef %.sink142, i32 noundef -11, ptr noundef %63, i64 noundef range(i64 -2147483648, 2147483648) %76, ptr noundef nonnull %6, i32 noundef %.sink142, i32 noundef -11, ptr noundef nonnull %7, ptr noundef null) #7 - br label %ompi_coll_base_sendrecv.exit - -ompi_coll_base_sendrecv.exit: ; preds = %73, %75 - %.0.i = phi i32 [ %74, %73 ], [ %78, %75 ] - %.not115 = icmp eq i32 %.0.i, 0 - br i1 %.not115, label %79, label %.loopexit - -79: ; preds = %ompi_coll_base_sendrecv.exit - %80 = ashr exact i32 %.val.val, 1 - %81 = icmp sgt i32 %80, 1 - br i1 %81, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %79 - %82 = getelementptr inbounds nuw i8, ptr %13, i64 4 - %83 = getelementptr inbounds nuw i8, ptr %14, i64 4 - %84 = getelementptr inbounds nuw i8, ptr %15, i64 4 - %85 = getelementptr inbounds nuw i8, ptr %16, i64 4 - br label %86 - -86: ; preds = %.lr.ph, %133 - %.1128 = phi i32 [ %54, %.lr.ph ], [ %95, %133 ] - %.0102127 = phi i32 [ 1, %.lr.ph ], [ %136, %133 ] - %87 = and i32 %.0102127, 1 - %88 = zext nneg i32 %87 to i64 - %89 = getelementptr inbounds nuw [2 x i32], ptr %12, i64 0, i64 %88 - %90 = load i32, ptr %89, align 4 - %91 = getelementptr inbounds nuw [2 x i32], ptr %11, i64 0, i64 %88 + %58 = getelementptr inbounds i32, ptr %4, i64 %58 + %59 = load i32, ptr %59, align 4 + %61 = getelementptr inbounds i32, ptr %5, i64 %57 + %62 = load i32, ptr %60, align 4 + %63 = sext i32 %61 to i64 + %64 = mul nsw i64 %30, %62 + %65 = getelementptr inbounds i8, ptr %3, i64 %63 + %66 = getelementptr inbounds i32, ptr %4, i64 %31 + %67 = load i32, ptr %65, align 4 + %68 = load i32, ptr %32, align 4 + %69 = sext i32 %67 to i64 + %70 = mul nsw i64 %30, %68 + %71 = getelementptr inbounds i8, ptr %3, i64 %69 + %72 = sext i32 %59 to i64 + %72 = sext i32 %67 to i64 + %73 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %70, i64 noundef range(i64 -2147483648, 2147483648) %72, ptr noundef nonnull %6, i32 noundef %.sink142, i32 noundef -11, ptr noundef %64, i64 noundef range(i64 -2147483648, 2147483648) %71, ptr noundef nonnull %6, i32 noundef %.sink142, i32 noundef -11, ptr noundef nonnull %7, ptr noundef null) #7 + %.not115 = icmp eq i32 %73, 0 + br i1 %.not115, label %74, label %ompi_coll_base_sendrecv.exit125 + +74: ; preds = %ompi_coll_base_sendrecv.exit + %75 = ashr exact i32 %.val.val, 1 + %76 = icmp sgt i32 %75, 1 + br i1 %76, label %.lr.ph, label %.loopexit + +.lr.ph: ; preds = %74 + %77 = getelementptr inbounds nuw i8, ptr %13, i64 4 + %78 = getelementptr inbounds nuw i8, ptr %14, i64 4 + %.0.i = getelementptr inbounds nuw i8, ptr %15, i64 4 + %.not115 = getelementptr inbounds nuw i8, ptr %16, i64 4 + br label %79 + +81: ; preds = %.lr.ph, %128 + %80 = phi i32 [ %53, %.lr.ph ], [ %90, %128 ] + %81 = phi i32 [ 1, %.lr.ph ], [ %131, %128 ] + %82 = and i32 %.0102127, 1 + %83 = zext nneg i32 %82 to i64 + %84 = getelementptr inbounds nuw [2 x i32], ptr %12, i64 0, i64 %83 + %82 = load i32, ptr %84, align 4 + %83 = getelementptr inbounds nuw [2 x i32], ptr %11, i64 0, i64 %83 + %84 = load i32, ptr %83, align 4 + %85 = add i32 %85, %.val.val + %89 = add i32 %88, %87 + %90 = srem i32 %89, %.val.val + store i32 %90, ptr %84, align 4 + %.1128 = sext i32 %80 to i64 + %.0102127 = getelementptr inbounds i32, ptr %4, i64 %91 + %87 = load i32, ptr %.0102127, align 4 + store i32 %87, ptr %13, align 4 + %89 = add nsw i32 %.1128, 1 + %90 = sext i32 %89 to i64 + %91 = getelementptr inbounds i32, ptr %4, i64 %95 %92 = load i32, ptr %91, align 4 - %93 = add i32 %90, %.val.val - %94 = add i32 %93, %92 - %95 = srem i32 %94, %.val.val - store i32 %95, ptr %89, align 4 - %96 = sext i32 %.1128 to i64 - %97 = getelementptr inbounds i32, ptr %4, i64 %96 - %98 = load i32, ptr %97, align 4 - store i32 %98, ptr %13, align 4 - %99 = add nsw i32 %.1128, 1 - %100 = sext i32 %99 to i64 - %101 = getelementptr inbounds i32, ptr %4, i64 %100 - %102 = load i32, ptr %101, align 4 - store i32 %102, ptr %82, align 4 - %103 = getelementptr inbounds i32, ptr %5, i64 %96 - %104 = load i32, ptr %103, align 4 - store i32 %104, ptr %14, align 4 - %105 = getelementptr inbounds i32, ptr %5, i64 %100 - %106 = load i32, ptr %105, align 4 - store i32 %106, ptr %83, align 4 - %107 = call i32 @ompi_datatype_create_indexed(i32 noundef 2, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %6, ptr noundef nonnull %18) #7 - %.not116 = icmp eq i32 %107, 0 - br i1 %.not116, label %108, label %.loopexit - -108: ; preds = %86 + store i32 %97, ptr %77, align 4 + %94 = getelementptr inbounds i32, ptr %5, i64 %.1128 + %95 = load i32, ptr %94, align 4 + store i32 %95, ptr %14, align 4 + %96 = getelementptr inbounds i32, ptr %5, i64 %95 + %97 = load i32, ptr %100, align 4 + store i32 %101, ptr %78, align 4 + %102 = call i32 @ompi_datatype_create_indexed(i32 noundef 2, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %6, ptr noundef nonnull %18) #7 + %99 = icmp eq i32 %102, 0 + br i1 %99, label %103, label %.loopexit + +103: ; preds = %81 %.val123 = load ptr, ptr %18, align 8 - %109 = call i32 @opal_datatype_commit(ptr noundef %.val123) #7 - %.not117 = icmp eq i32 %109, 0 - br i1 %.not117, label %110, label %.loopexit - -110: ; preds = %108 - %111 = sext i32 %95 to i64 - %112 = getelementptr inbounds i32, ptr %4, i64 %111 - %113 = load i32, ptr %112, align 4 - store i32 %113, ptr %15, align 4 - %114 = getelementptr i8, ptr %112, i64 4 - %115 = load i32, ptr %114, align 4 - store i32 %115, ptr %84, align 4 - %116 = getelementptr inbounds i32, ptr %5, i64 %111 - %117 = load i32, ptr %116, align 4 - store i32 %117, ptr %16, align 4 - %118 = getelementptr i8, ptr %116, i64 4 - %119 = load i32, ptr %118, align 4 - store i32 %119, ptr %85, align 4 - %120 = call i32 @ompi_datatype_create_indexed(i32 noundef 2, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %6, ptr noundef nonnull %17) #7 - %.not118 = icmp eq i32 %120, 0 - br i1 %.not118, label %121, label %.loopexit - -121: ; preds = %110 + %103 = call i32 @opal_datatype_commit(ptr noundef %.val123) #7 + %104 = icmp eq i32 %103, 0 + br i1 %104, label %105, label %.loopexit + +105: ; preds = %103 + %106 = sext i32 %90 to i64 + %107 = getelementptr inbounds i32, ptr %4, i64 %106 + %.not116 = load i32, ptr %107, align 4 + store i32 %.not116, ptr %15, align 4 + %109 = getelementptr i8, ptr %107, i64 4 + %110 = load i32, ptr %109, align 4 + store i32 %110, ptr %79, align 4 + %109 = getelementptr inbounds i32, ptr %5, i64 %106 + %.not117 = load i32, ptr %109, align 4 + store i32 %.not117, ptr %16, align 4 + %113 = getelementptr i8, ptr %111, i64 4 + %114 = load i32, ptr %113, align 4 + store i32 %114, ptr %80, align 4 + %112 = call i32 @ompi_datatype_create_indexed(i32 noundef 2, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %6, ptr noundef nonnull %17) #7 + %113 = icmp eq i32 %112, 0 + br i1 %113, label %116, label %.loopexit + +116: ; preds = %105 %.val122 = load ptr, ptr %17, align 8 - %122 = call i32 @opal_datatype_commit(ptr noundef %.val122) #7 - %.not119 = icmp eq i32 %122, 0 - br i1 %.not119, label %123, label %.loopexit - -123: ; preds = %121 - %124 = load ptr, ptr %18, align 8 - %125 = getelementptr inbounds nuw [2 x i32], ptr %10, i64 0, i64 %88 - %126 = load i32, ptr %125, align 4 - %127 = load ptr, ptr %17, align 8 - %128 = icmp eq i32 %126, %.val121 - br i1 %128, label %129, label %131 - -129: ; preds = %123 - %130 = call i32 @ompi_datatype_sndrcv(ptr noundef %3, i32 noundef 1, ptr noundef %124, ptr noundef %3, i32 noundef 1, ptr noundef %127) #7 + %116 = call i32 @opal_datatype_commit(ptr noundef %.val122) #7 + %117 = icmp eq i32 %116, 0 + br i1 %117, label %118, label %.loopexit + +118: ; preds = %116 + %119 = load ptr, ptr %18, align 8 + %120 = getelementptr inbounds nuw [2 x i32], ptr %10, i64 0, i64 %83 + %.not118 = load i32, ptr %120, align 4 + %122 = load ptr, ptr %17, align 8 + %123 = icmp eq i32 %121, %.val121 + br i1 %123, label %124, label %126 + +124: ; preds = %118 + %.not119 = call i32 @ompi_datatype_sndrcv(ptr noundef %3, i32 noundef 1, ptr noundef %119, ptr noundef %3, i32 noundef 1, ptr noundef %122) #7 br label %ompi_coll_base_sendrecv.exit125 -131: ; preds = %123 - %132 = call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %3, i64 noundef 1, ptr noundef %124, i32 noundef %126, i32 noundef -11, ptr noundef %3, i64 noundef 1, ptr noundef %127, i32 noundef %126, i32 noundef -11, ptr noundef %7, ptr noundef null) #7 +126: ; preds = %118 + %124 = call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %3, i64 noundef 1, ptr noundef %119, i32 noundef %.not118, i32 noundef -11, ptr noundef %3, i64 noundef 1, ptr noundef %122, i32 noundef %.not118, i32 noundef -11, ptr noundef nonnull %7, ptr noundef null) #7 br label %ompi_coll_base_sendrecv.exit125 -ompi_coll_base_sendrecv.exit125: ; preds = %129, %131 - %.0.i124 = phi i32 [ %130, %129 ], [ %132, %131 ] +ompi_coll_base_sendrecv.exit125: ; preds = %124, %126 + %128 = phi i32 [ %125, %124 ], [ %127, %123 ] %.not120 = icmp eq i32 %.0.i124, 0 - br i1 %.not120, label %133, label %.loopexit + br i1 %.not120, label %128, label %.loopexit -133: ; preds = %ompi_coll_base_sendrecv.exit125 - %134 = call i32 @ompi_datatype_destroy(ptr noundef nonnull %18) #7 - %135 = call i32 @ompi_datatype_destroy(ptr noundef nonnull %17) #7 - %136 = add nuw nsw i32 %.0102127, 1 - %exitcond.not = icmp eq i32 %136, %80 - br i1 %exitcond.not, label %.loopexit, label %86, !llvm.loop !10 +128: ; preds = %ompi_coll_base_sendrecv.exit125 + %129 = call i32 @ompi_datatype_destroy(ptr noundef nonnull %18) #7 + %130 = call i32 @ompi_datatype_destroy(ptr noundef nonnull %17) #7 + %131 = add nuw nsw i32 %.0102127, 1 + %132 = icmp eq i32 %131, %75 + br i1 %exitcond.not, label %.loopexit, label %81, !llvm.loop !10 -.loopexit: ; preds = %133, %ompi_coll_base_sendrecv.exit125, %121, %110, %108, %86, %79, %33, %ompi_coll_base_sendrecv.exit, %23 - %.0 = phi i32 [ %24, %23 ], [ %40, %33 ], [ %.0.i, %ompi_coll_base_sendrecv.exit ], [ 0, %79 ], [ 0, %133 ], [ %.0.i124, %ompi_coll_base_sendrecv.exit125 ], [ %122, %121 ], [ %120, %110 ], [ %109, %108 ], [ %107, %86 ] +.loopexit: ; preds = %128, %ompi_coll_base_sendrecv.exit125, %116, %105, %103, %81, %74, %33, %53, %23 + %.0.i124 = phi i32 [ %24, %23 ], [ %40, %33 ], [ %73, %53 ], [ 0, %74 ], [ 0, %128 ], [ %128, %ompi_coll_base_sendrecv.exit125 ], [ %117, %116 ], [ %115, %105 ], [ %104, %103 ], [ %102, %81 ] ret i32 %.0 } diff --git a/bench/openmpi/optimized/mpl_trmem.ll b/bench/openmpi/optimized/mpl_trmem.ll index a6cc02823a2..5f16f42b3b1 100644 --- a/bench/openmpi/optimized/mpl_trmem.ll +++ b/bench/openmpi/optimized/mpl_trmem.ll @@ -311,38 +311,34 @@ define internal fastcc ptr @trmalloc(i64 noundef %0, i64 noundef %1, i32 noundef %14 = alloca [6 x i64], align 16 %15 = alloca i64, align 8 %16 = icmp eq i64 %0, 0 - br i1 %16, label %.loopexit, label %17 + br i1 %16, label %is_valid_alignment.exit, label %17 17: ; preds = %5 %18 = and i64 %0, 7 %.not.i = icmp eq i64 %18, 0 - br i1 %.not.i, label %.preheader.i, label %is_valid_alignment.exit - -.preheader.i: ; preds = %17 - %.not12.i = icmp eq i64 %0, 1 - br i1 %.not12.i, label %.loopexit, label %.lr.ph.i + br i1 %.not.i, label %.lr.ph.i, label %is_valid_alignment.exit 19: ; preds = %.lr.ph.i %20 = lshr exact i64 %.09.i, 1 %21 = icmp ugt i64 %.09.i, 2 - br i1 %21, label %.lr.ph.i, label %.loopexit, !llvm.loop !4 + br i1 %21, label %.lr.ph.i, label %is_valid_alignment.exit, !llvm.loop !4 -.lr.ph.i: ; preds = %.preheader.i, %19 - %.09.i = phi i64 [ %20, %19 ], [ %0, %.preheader.i ] +.lr.ph.i: ; preds = %17, %19 + %.09.i = phi i64 [ %20, %19 ], [ %0, %17 ] %22 = and i64 %.09.i, 1 %.not8.i = icmp eq i64 %22, 0 br i1 %.not8.i, label %19, label %is_valid_alignment.exit -.loopexit: ; preds = %19, %5, %.preheader.i +is_valid_alignment.exit: ; preds = %19, %5 %.b83 = load i1, ptr @TRdebugLevel, align 4 br i1 %.b83, label %23, label %25 -23: ; preds = %.loopexit +23: ; preds = %is_valid_alignment.exit %24 = tail call i32 @MPL_trvalid2(ptr noundef nonnull @.str.29, i32 noundef %3, ptr noundef %4) %.not86 = icmp eq i32 %24, 0 - br i1 %.not86, label %25, label %is_valid_alignment.exit + br i1 %.not86, label %25, label %is_valid_alignment.exit.thread -25: ; preds = %23, %.loopexit +25: ; preds = %23, %is_valid_alignment.exit %.biased = add i64 %1, 7 %.076 = and i64 %.biased, -8 %26 = load volatile i64, ptr @allocated, align 8 @@ -628,7 +624,7 @@ define internal fastcc ptr @trmalloc(i64 noundef %0, i64 noundef %1, i32 noundef %.0..0..0..0. = load volatile i64, ptr %15, align 8 br label %is_valid_alignment.exit -is_valid_alignment.exit: ; preds = %.lr.ph.i, %17, %35, %23, %154, %57, %32 +is_valid_alignment.exit.thread: ; preds = %.lr.ph.i, %17, %35, %23, %154, %57, %32 %.075 = phi ptr [ null, %23 ], [ null, %32 ], [ null, %57 ], [ %53, %154 ], [ null, %35 ], [ null, %17 ], [ null, %.lr.ph.i ] ret ptr %.075 } diff --git a/bench/openspiel/optimized/cards.cc.ll b/bench/openspiel/optimized/cards.cc.ll index 8adf8c678f0..563cc9d5deb 100644 --- a/bench/openspiel/optimized/cards.cc.ll +++ b/bench/openspiel/optimized/cards.cc.ll @@ -4938,7 +4938,7 @@ _ZNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE11_M_allocateEm.exit.i: ; preds = % %44 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %43) #19 to label %.lr.ph unwind label %104 -.lr.ph: ; preds = %_ZNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE11_M_allocateEm.exit.i +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit.lr.ph: ; preds = %_ZNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE11_M_allocateEm.exit.i %45 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %44, ptr %5, align 8 store ptr %44, ptr %45, align 8 @@ -4954,7 +4954,7 @@ _ZNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE11_M_allocateEm.exit.i: ; preds = % _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit: ; preds = %.lr.ph, %_ZNSt6vectorIlSaIlEED2Ev.exit %.019102 = phi i32 [ 0, %.lr.ph ], [ %103, %_ZNSt6vectorIlSaIlEED2Ev.exit ] %.sroa.0.0101 = phi ptr [ %30, %.lr.ph ], [ %52, %_ZNSt6vectorIlSaIlEED2Ev.exit ] - %.sroa.070.0100 = phi ptr [ %30, %.lr.ph ], [ %96, %_ZNSt6vectorIlSaIlEED2Ev.exit ] + %.sroa.070.0100 = phi ptr [ %30, %.lr.ph ], [ %97, %_ZNSt6vectorIlSaIlEED2Ev.exit ] %52 = getelementptr inbounds nuw i64, ptr %.sroa.0.0101, i64 %47 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) %53 = ptrtoint ptr %52 to i64 @@ -5080,18 +5080,22 @@ _ZNSt16allocator_traitsISaISt6vectorIlSaIlEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpO invoke void @_ZNSt6vectorIS_IlSaIlEESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr %71, ptr noundef nonnull align 8 dereferenceable(24) %6) to label %_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit unwind label %.loopexit85 -_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit: ; preds = %_ZNSt16allocator_traitsISaISt6vectorIlSaIlEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i, %95 - %96 = getelementptr inbounds nuw i64, ptr %.sroa.070.0100, i64 %47 - %97 = load ptr, ptr %6, align 8 - %.not.i.i.i48 = icmp eq ptr %97, null +._ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit_crit_edge: ; preds = %95 + %96 = load ptr, ptr %6, align 8 + br label %_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit + +_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit: ; preds = %._ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit_crit_edge, %_ZNSt16allocator_traitsISaISt6vectorIlSaIlEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i + %96 = phi ptr [ %.pre, %._ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit_crit_edge ], [ %86, %_ZNSt16allocator_traitsISaISt6vectorIlSaIlEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i ] + %97 = getelementptr inbounds nuw i64, ptr %.sroa.070.0100, i64 %47 + %.not.i.i.i48 = icmp eq ptr %96, null br i1 %.not.i.i.i48, label %_ZNSt6vectorIlSaIlEED2Ev.exit, label %98 98: ; preds = %_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit %99 = load ptr, ptr %48, align 8 %100 = ptrtoint ptr %99 to i64 - %101 = ptrtoint ptr %97 to i64 + %101 = ptrtoint ptr %96 to i64 %102 = sub i64 %100, %101 - call void @_ZdlPvm(ptr noundef nonnull %97, i64 noundef %102) #21 + call void @_ZdlPvm(ptr noundef nonnull %96, i64 noundef %102) #21 br label %_ZNSt6vectorIlSaIlEED2Ev.exit _ZNSt6vectorIlSaIlEED2Ev.exit: ; preds = %_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit, %98 diff --git a/bench/openssl/optimized/libcrypto-lib-conf_def.ll b/bench/openssl/optimized/libcrypto-lib-conf_def.ll index 6582d6bccba..f1a188e7297 100644 --- a/bench/openssl/optimized/libcrypto-lib-conf_def.ll +++ b/bench/openssl/optimized/libcrypto-lib-conf_def.ll @@ -320,7 +320,7 @@ if.else: ; preds = %if.then51 br label %if.end57 if.end57: ; preds = %if.else, %if.then48 - %call59 = call ptr @OPENSSL_sk_pop(ptr noundef %biosk.1.ph361500) #13 + %call59 = call ptr @OPENSSL_sk_pop(ptr noundef %biosk.1.ph361501) #13 %cmp60 = icmp eq ptr %call59, null br i1 %cmp60, label %for.end, label %read_retry.backedge @@ -514,7 +514,7 @@ while.cond.i68.i: ; preds = %is_keytype.exit66.i %p.addr.0.i70.i = getelementptr inbounds nuw i8, ptr %p.pn.i69.i, i64 1 %37 = load i8, ptr %p.addr.0.i70.i, align 1 %cmp.i.i71.i = icmp slt i8 %37, 0 - br i1 %cmp.i.i71.i, label %land.rhs.i.i, label %is_keytype.exit.i72.i + br i1 %cmp.i.i71.i, label %while.cond.i68.i.backedge, label %is_keytype.exit.i72.i is_keytype.exit.i72.i: ; preds = %while.cond.i68.i %idxprom.i.i73.i = zext nneg i8 %37 to i64 @@ -526,10 +526,6 @@ is_keytype.exit.i72.i: ; preds = %while.cond.i68.i %or.cond.i.i = or i1 %cmp.not37.i.i, %tobool.not.i75.i br i1 %or.cond.i.i, label %while.end.i.i, label %is_keytype.exit24.i.i -land.rhs.i.i: ; preds = %while.cond.i68.i - %cmp.not.i.i = icmp eq i8 %37, %27 - br i1 %cmp.not.i.i, label %while.end.i.i, label %while.cond.i68.i.backedge - is_keytype.exit24.i.i: ; preds = %is_keytype.exit.i72.i %40 = and i16 %38, 32 %tobool4.not.i.i = icmp eq i16 %40, 0 @@ -549,15 +545,13 @@ is_keytype.exit34.i.i: ; preds = %if.then.i76.i %tobool7.not.i.i = icmp eq i16 %43, 0 br i1 %tobool7.not.i.i, label %while.cond.i68.i.backedge, label %for.cond5.backedge.i -while.cond.i68.i.backedge: ; preds = %is_keytype.exit34.i.i, %if.then.i76.i, %is_keytype.exit24.i.i, %land.rhs.i.i - %p.pn.i69.i.be = phi ptr [ %incdec.ptr5.i.i, %is_keytype.exit34.i.i ], [ %p.addr.0.i70.i, %is_keytype.exit24.i.i ], [ %p.addr.0.i70.i, %land.rhs.i.i ], [ %incdec.ptr5.i.i, %if.then.i76.i ] +while.cond.i68.i.backedge: ; preds = %is_keytype.exit34.i.i, %if.then.i76.i, %is_keytype.exit24.i.i, %while.cond.i68.i + %p.pn.i69.i.be = phi ptr [ %incdec.ptr5.i.i, %is_keytype.exit34.i.i ], [ %p.addr.0.i70.i, %is_keytype.exit24.i.i ], [ %incdec.ptr5.i.i, %if.then.i76.i ], [ %p.addr.0.i70.i, %while.cond.i68.i ] br label %while.cond.i68.i, !llvm.loop !7 -while.end.i.i: ; preds = %land.rhs.i.i, %is_keytype.exit.i72.i - %.lcssa.i79.i = phi i8 [ %37, %is_keytype.exit.i72.i ], [ %27, %land.rhs.i.i ] - %cmp12.i.i = icmp eq i8 %.lcssa.i79.i, %27 +while.end.i.i: ; preds = %is_keytype.exit.i72.i %incdec.ptr15.i.i = getelementptr inbounds nuw i8, ptr %p.pn.i69.i, i64 2 - %spec.select.i80.i = select i1 %cmp12.i.i, ptr %incdec.ptr15.i.i, ptr %p.addr.0.i70.i + %cmp12.i.i = select i1 %cmp.not37.i.i, ptr %incdec.ptr15.i.i, ptr %p.addr.0.i70.i br label %for.cond5.backedge.i is_keytype.exit90.i: ; preds = %is_keytype.exit66.i @@ -670,7 +664,7 @@ again127: ; preds = %land.lhs.true137, % br i1 %cmp.i56.i228, label %eat_ws.exit252, label %is_keytype.exit.i230 is_keytype.exit.i230: ; preds = %again127, %for.cond.backedge.i - %.pr344674 = phi i8 [ %65, %for.cond.backedge.i ], [ %.pr344676, %again127 ] + %.pr344676 = phi i8 [ %65, %for.cond.backedge.i ], [ %.pr344676, %again127 ] %.pr340673 = phi i8 [ %65, %for.cond.backedge.i ], [ %.pr340670, %again127 ] %p.addr.057.i = phi ptr [ %p.addr.0.be.i, %for.cond.backedge.i ], [ %ss.0, %again127 ] %idxprom.i.i231 = zext nneg i8 %.pr340673 to i64 @@ -748,7 +742,7 @@ while.body.i249: ; preds = %is_keytype.exit.lr. br i1 %cmp.i.i251, label %eat_ws.exit252, label %is_keytype.exit.i243, !llvm.loop !8 eat_ws.exit252: ; preds = %for.cond.backedge.i, %is_keytype.exit.i243, %while.body.i249, %is_keytype.exit.lr.ph.i241, %again127 - %.pr344677 = phi i8 [ %.pr344676, %again127 ], [ %.pr344674, %is_keytype.exit.lr.ph.i241 ], [ %72, %while.body.i249 ], [ %72, %is_keytype.exit.i243 ], [ %65, %for.cond.backedge.i ] + %.pr344677 = phi i8 [ %.pr344676, %again127 ], [ %.pr344676, %is_keytype.exit.lr.ph.i241 ], [ %72, %while.body.i249 ], [ %72, %is_keytype.exit.i243 ], [ %65, %for.cond.backedge.i ] %.pr340671 = phi i8 [ %.pr340670, %again127 ], [ %.pr344674, %is_keytype.exit.lr.ph.i241 ], [ %72, %while.body.i249 ], [ %72, %is_keytype.exit.i243 ], [ %65, %for.cond.backedge.i ] %p.addr.0.lcssa.i237343 = phi ptr [ %ss.0, %again127 ], [ %p.addr.057.i, %is_keytype.exit.lr.ph.i241 ], [ %p.addr.057.i, %while.body.i249 ], [ %p.addr.057.i, %is_keytype.exit.i243 ], [ %p.addr.0.be.i, %for.cond.backedge.i ] %p.addr.0.lcssa.i248 = phi ptr [ %ss.0, %again127 ], [ %p.addr.057.i, %is_keytype.exit.lr.ph.i241 ], [ %incdec.ptr.i250, %while.body.i249 ], [ %incdec.ptr.i250, %is_keytype.exit.i243 ], [ %p.addr.0.be.i, %for.cond.backedge.i ] @@ -1077,7 +1071,7 @@ land.lhs.true274: ; preds = %if.end271 if.then277: ; preds = %land.lhs.true274 %call278 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %include_dir.0) #14 - %call279 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.pre682) #14 + %call279 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.pre684) #14 %add280 = add i64 %call278, 2 %add281 = add i64 %add280, %call279 %call282 = call noalias ptr @CRYPTO_malloc(i64 noundef %add281, ptr noundef nonnull @.str.1, i32 noundef 472) #13 @@ -1161,7 +1155,7 @@ if.then317: ; preds = %if.then313 if.end320: ; preds = %if.then313, %if.then310 %biosk.3 = phi ptr [ %call314, %if.then313 ], [ %biosk.1.ph361500, %if.then310 ] - %call323 = call i32 @OPENSSL_sk_push(ptr noundef nonnull %biosk.3, ptr noundef %.us-phi479695) #13 + %call323 = call i32 @OPENSSL_sk_push(ptr noundef nonnull %biosk.3, ptr noundef %.us-phi480697) #13 %tobool324.not = icmp eq i32 %call323, 0 br i1 %tobool324.not, label %if.then325, label %if.end328 @@ -1281,7 +1275,7 @@ for.end: ; preds = %if.end57 call void @BUF_MEM_free(ptr noundef nonnull %call) #13 %117 = load ptr, ptr %section, align 8 call void @CRYPTO_free(ptr noundef %117, ptr noundef nonnull @.str.1, i32 noundef 562) #13 - call void @OPENSSL_sk_free(ptr noundef %biosk.1.ph361500) #13 + call void @OPENSSL_sk_free(ptr noundef %biosk.1.ph361501) #13 br label %return err: ; preds = %if.end142, %if.end267, %if.end349, %if.end343, %eat_ws.exit323, %if.then229, %if.then220, %if.then211, %land.lhs.true.us, %land.lhs.true, %if.end, %if.then374, %if.then367, %if.then333, %if.then325, %if.then317, %if.then301, %if.then285, %if.then204, %if.then155, %if.end141, %if.then14, %if.then11, %if.then7, %if.then @@ -1299,7 +1293,7 @@ err: ; preds = %if.end142, %if.end2 while.body383: ; preds = %err, %while.body383 %in.addr.4510 = phi ptr [ %call385, %while.body383 ], [ %in.addr.0, %err ] %call385 = call ptr @OPENSSL_sk_pop(ptr noundef %biosk.0) #13 - call void @BIO_vfree(ptr noundef %in.addr.4510) #13 + call void @BIO_vfree(ptr noundef %in.addr.4511) #13 %call380 = call i32 @OPENSSL_sk_num(ptr noundef %biosk.0) #13 %cmp381 = icmp sgt i32 %call380, 0 br i1 %cmp381, label %while.body383, label %while.end386, !llvm.loop !9 @@ -1670,7 +1664,7 @@ while.cond: ; preds = %while.cond.preheade %from.addr.1 = getelementptr inbounds nuw i8, ptr %from.addr.0.pn110, i64 1 %5 = load i8, ptr %from.addr.1, align 1 %cmp.i113 = icmp slt i8 %5, 0 - br i1 %cmp.i113, label %land.rhs, label %is_keytype.exit122 + br i1 %cmp.i113, label %if.end23, label %is_keytype.exit122 is_keytype.exit122: ; preds = %while.cond %6 = load ptr, ptr %meth_data.i, align 8 @@ -1683,10 +1677,6 @@ is_keytype.exit122: ; preds = %while.cond %or.cond = or i1 %cmp13.not237, %tobool11.not br i1 %or.cond, label %while.end, label %is_keytype.exit132 -land.rhs: ; preds = %while.cond - %cmp13.not = icmp eq i8 %5, %0 - br i1 %cmp13.not, label %while.end, label %if.end23 - is_keytype.exit132: ; preds = %is_keytype.exit122 %9 = and i16 %7, 32 %tobool16.not = icmp eq i16 %9, 0 @@ -1706,18 +1696,18 @@ is_keytype.exit142: ; preds = %if.then17 %tobool20.not = icmp eq i16 %12, 0 br i1 %tobool20.not, label %if.end23, label %while.end -if.end23: ; preds = %if.then17, %land.rhs, %is_keytype.exit142, %is_keytype.exit132 - %13 = phi i8 [ %10, %is_keytype.exit142 ], [ %5, %is_keytype.exit132 ], [ %5, %land.rhs ], [ %10, %if.then17 ] - %from.addr.3 = phi ptr [ %incdec.ptr18, %is_keytype.exit142 ], [ %from.addr.1, %is_keytype.exit132 ], [ %from.addr.1, %land.rhs ], [ %incdec.ptr18, %if.then17 ] +if.end23: ; preds = %while.cond, %if.then17, %is_keytype.exit142, %is_keytype.exit132 + %13 = phi i8 [ %10, %is_keytype.exit142 ], [ %5, %is_keytype.exit132 ], [ %10, %if.then17 ], [ %5, %while.cond ] + %from.addr.3 = phi ptr [ %incdec.ptr18, %is_keytype.exit142 ], [ %from.addr.1, %is_keytype.exit132 ], [ %incdec.ptr18, %if.then17 ], [ %from.addr.1, %while.cond ] %14 = load ptr, ptr %data, align 8 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %arrayidx = getelementptr inbounds i8, ptr %14, i64 %indvars.iv store i8 %13, ptr %arrayidx, align 1 br label %while.cond, !llvm.loop !11 -while.end: ; preds = %is_keytype.exit122, %is_keytype.exit142, %land.rhs - %15 = phi i8 [ %5, %is_keytype.exit122 ], [ %10, %is_keytype.exit142 ], [ %0, %land.rhs ] - %16 = phi i64 [ 1, %is_keytype.exit122 ], [ 2, %is_keytype.exit142 ], [ 1, %land.rhs ] +while.end: ; preds = %is_keytype.exit122, %is_keytype.exit142 + %15 = phi i8 [ %5, %is_keytype.exit122 ], [ %10, %is_keytype.exit142 ] + %16 = phi i64 [ 1, %is_keytype.exit122 ], [ 2, %is_keytype.exit142 ] %17 = trunc nsw i64 %indvars.iv to i32 %18 = getelementptr inbounds nuw i8, ptr %from.addr.0.pn110, i64 %16 %cmp26 = icmp eq i8 %15, %0 diff --git a/bench/openssl/optimized/libdefault-lib-ecx_kmgmt.ll b/bench/openssl/optimized/libdefault-lib-ecx_kmgmt.ll index 62d627aff3a..689aea9a384 100644 --- a/bench/openssl/optimized/libdefault-lib-ecx_kmgmt.ll +++ b/bench/openssl/optimized/libdefault-lib-ecx_kmgmt.ll @@ -1101,7 +1101,7 @@ if.end15: ; preds = %if.end8 if.end15.thread: ; preds = %if.end8 %and1617 = and i32 %selection, 1 %cmp17.not18 = icmp eq i32 %and1617, 0 - br i1 %cmp17.not18, label %if.end26.thread, label %land.rhs21 + br i1 %cmp17.not18, label %return, label %land.rhs21 if.then19: ; preds = %if.end15 %tobool20.not = icmp eq i8 %bf.clear, 0 @@ -1119,15 +1119,11 @@ if.end26: ; preds = %land.rhs21, %if.end %cmp28 = icmp eq i32 %and, 3 br i1 %cmp28, label %if.then30, label %return -if.end26.thread: ; preds = %if.end15.thread - %cmp2823 = icmp eq i32 %and, 3 - br i1 %cmp2823, label %land.rhs32, label %return - if.then30: ; preds = %if.end26 %tobool31.not = icmp eq i32 %ok.1, 0 br i1 %tobool31.not, label %return, label %land.rhs32 -land.rhs32: ; preds = %if.end26.thread, %if.then30 +land.rhs32: ; preds = %if.then30 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %pub.i) switch i32 %type, label %default.unreachable [ i32 0, label %sw.bb.i @@ -1184,8 +1180,8 @@ ecx_key_pairwise_check.exit: ; preds = %sw.bb4.i, %sw.bb7.i call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %pub.i) br label %return -return: ; preds = %if.end26.thread, %if.then19, %if.end26, %ecx_key_pairwise_check.exit, %if.then30, %if.end, %entry, %if.then7 - %retval.0 = phi i32 [ 0, %if.then7 ], [ 0, %entry ], [ 1, %if.end ], [ %ok.1, %if.end26 ], [ 0, %if.then30 ], [ %retval.0.i, %ecx_key_pairwise_check.exit ], [ 0, %if.then19 ], [ 1, %if.end26.thread ] +return: ; preds = %if.end15.thread, %if.then19, %if.end26, %ecx_key_pairwise_check.exit, %if.then30, %if.end, %entry, %if.then7 + %retval.0 = phi i32 [ 0, %if.then7 ], [ 0, %entry ], [ 1, %if.end ], [ %ok.1, %if.end26 ], [ 0, %if.then30 ], [ %retval.0.i, %ecx_key_pairwise_check.exit ], [ 0, %if.then19 ], [ 1, %if.end15.thread ] ret i32 %retval.0 } diff --git a/bench/openssl/optimized/libssl-lib-extensions_srvr.ll b/bench/openssl/optimized/libssl-lib-extensions_srvr.ll index 8e0c19450dc..dca7b833e05 100644 --- a/bench/openssl/optimized/libssl-lib-extensions_srvr.ll +++ b/bench/openssl/optimized/libssl-lib-extensions_srvr.ll @@ -1037,28 +1037,23 @@ if.end8: ; preds = %lor.lhs.false4 %srtp_profile = getelementptr inbounds nuw i8, ptr %s, i64 2808 store ptr null, ptr %srtp_profile, align 8 %call11 = tail call i32 @OPENSSL_sk_num(ptr noundef %call9) #10 - br label %while.cond - -while.cond: ; preds = %for.end, %if.end8 - %subpkt.sroa.5.0 = phi i64 [ %conv, %if.end8 ], [ %sub.i.i32, %for.end ] - %subpkt.sroa.0.0 = phi ptr [ %add.ptr.i2.i, %if.end8 ], [ %add.ptr.i2.i31, %for.end ] - %srtp_pref.0 = phi i32 [ %call11, %if.end8 ], [ %srtp_pref.1, %for.end ] - switch i64 %subpkt.sroa.5.0, label %PACKET_get_net_2.exit34 [ - i64 0, label %while.end - i64 1, label %return.sink.split - ] - -PACKET_get_net_2.exit34: ; preds = %while.cond - %4 = load i8, ptr %subpkt.sroa.0.0, align 1 + %tobool13.not68 = icmp eq i32 %or.i.i, 0 + br i1 %tobool13.not68, label %while.end, label %PACKET_get_net_2.exit34 + +PACKET_get_net_2.exit34: ; preds = %if.end8, %for.end + %subpkt.sroa.0.0 = phi i32 [ %srtp_pref.1, %for.end ], [ %call11, %if.end8 ] + %srtp_pref.0 = phi ptr [ %add.ptr.i2.i31, %for.end ], [ %add.ptr.i2.i, %if.end8 ] + %subpkt.sroa.5.069 = phi i64 [ %add.ptr.i.i28, %for.end ], [ %conv, %if.end8 ] + %4 = load i8, ptr %srtp_pref.0, align 1 %conv.i.i26 = zext i8 %4 to i64 %shl.i.i27 = shl nuw nsw i64 %conv.i.i26, 8 - %add.ptr.i.i28 = getelementptr inbounds nuw i8, ptr %subpkt.sroa.0.0, i64 1 + %add.ptr.i.i28 = getelementptr inbounds nuw i8, ptr %subpkt.sroa.0.070, i64 1 %5 = load i8, ptr %add.ptr.i.i28, align 1 %conv2.i.i29 = zext i8 %5 to i64 %or.i.i30 = or disjoint i64 %shl.i.i27, %conv2.i.i29 - %add.ptr.i2.i31 = getelementptr inbounds nuw i8, ptr %subpkt.sroa.0.0, i64 2 - %sub.i.i32 = add i64 %subpkt.sroa.5.0, -2 - %cmp1866 = icmp sgt i32 %srtp_pref.0, 0 + %add.ptr.i2.i31 = getelementptr inbounds nuw i8, ptr %subpkt.sroa.0.070, i64 2 + %add.ptr.i.i28 = add i64 %subpkt.sroa.5.069, -2 + %cmp1866 = icmp sgt i32 %srtp_pref.071, 0 br i1 %cmp1866, label %for.body, label %for.end for.body: ; preds = %PACKET_get_net_2.exit34, %for.inc @@ -1075,14 +1070,15 @@ if.then26: ; preds = %for.body for.inc: ; preds = %for.body %inc = add nuw nsw i32 %i.067, 1 - %exitcond.not = icmp eq i32 %inc, %srtp_pref.0 + %exitcond.not = icmp eq i32 %inc, %srtp_pref.071 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !7 for.end: ; preds = %for.inc, %PACKET_get_net_2.exit34, %if.then26 - %srtp_pref.1 = phi i32 [ %i.067, %if.then26 ], [ %srtp_pref.0, %PACKET_get_net_2.exit34 ], [ %srtp_pref.0, %for.inc ] - br label %while.cond, !llvm.loop !8 + %srtp_pref.1 = phi i32 [ %i.067, %if.then26 ], [ %srtp_pref.071, %PACKET_get_net_2.exit34 ], [ %srtp_pref.071, %for.inc ] + %tobool13.not = icmp eq i64 %add.ptr.i.i28, 0 + br i1 %tobool13.not, label %while.end, label %PACKET_get_net_2.exit34, !llvm.loop !8 -while.end: ; preds = %while.cond +while.end: ; preds = %for.end, %if.end8 %pkt.val.i.i35 = load i64, ptr %0, align 8 %tobool.not.i.i = icmp eq i64 %pkt.val.i.i35, 0 br i1 %tobool.not.i.i, label %return.sink.split, label %if.end32 @@ -1106,9 +1102,9 @@ lor.lhs.false36: ; preds = %if.end32 %tobool38.not = icmp eq i64 %sub.i.i39, %conv33 br i1 %tobool38.not, label %return, label %return.sink.split -return.sink.split: ; preds = %while.cond, %lor.lhs.false36, %if.end32, %while.end, %lor.lhs.false, %if.end, %lor.lhs.false4 - %.sink72 = phi i32 [ 491, %lor.lhs.false4 ], [ 491, %if.end ], [ 491, %lor.lhs.false ], [ 528, %while.end ], [ 534, %if.end32 ], [ 534, %lor.lhs.false36 ], [ 503, %while.cond ] - %.sink = phi i32 [ 353, %lor.lhs.false4 ], [ 353, %if.end ], [ 353, %lor.lhs.false ], [ 353, %while.end ], [ 352, %if.end32 ], [ 352, %lor.lhs.false36 ], [ 353, %while.cond ] +return.sink.split: ; preds = %lor.lhs.false36, %if.end32, %while.end, %lor.lhs.false, %if.end, %lor.lhs.false4 + %.sink72 = phi i32 [ 491, %lor.lhs.false4 ], [ 491, %if.end ], [ 491, %lor.lhs.false ], [ 528, %while.end ], [ 534, %if.end32 ], [ 534, %lor.lhs.false36 ] + %.sink = phi i32 [ 353, %lor.lhs.false4 ], [ 353, %if.end ], [ 353, %lor.lhs.false ], [ 353, %while.end ], [ 352, %if.end32 ], [ 352, %lor.lhs.false36 ] tail call void @ERR_new() #10 tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink72, ptr noundef nonnull @__func__.tls_parse_ctos_use_srtp) #10 tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 50, i32 noundef %.sink, ptr noundef null) #10 diff --git a/bench/openssl/optimized/libssl-lib-quic_wire_pkt.ll b/bench/openssl/optimized/libssl-lib-quic_wire_pkt.ll index 7fb2211acd3..f734a266f4e 100644 --- a/bench/openssl/optimized/libssl-lib-quic_wire_pkt.ll +++ b/bench/openssl/optimized/libssl-lib-quic_wire_pkt.ll @@ -1336,7 +1336,7 @@ if.end49: ; preds = %lor.lhs.false43 %conv59 = zext nneg i8 %narrow32 to i64 %6 = and i32 %bf.load, 253 %switch.selectcmp.i.i.not = icmp eq i32 %6, 4 - br i1 %switch.selectcmp.i.i.not, label %if.end83, label %if.then64 + br i1 %switch.selectcmp.i.i.not, label %if.end113, label %if.then64 if.then64: ; preds = %if.end49 %bf.lshr66 = lshr i32 %bf.load, 10 @@ -1345,18 +1345,13 @@ if.then64: ; preds = %if.end49 %or.cond34 = icmp ult i32 %7, -4 br i1 %or.cond34, label %return, label %if.end83.thread -if.end83: ; preds = %if.end49 - %cmp86 = icmp eq i32 %bf.clear2, 1 - br i1 %cmp86, label %if.then88, label %if.end113 - if.end83.thread: ; preds = %if.then64 %conv81 = zext nneg i32 %bf.clear67 to i64 %add82 = add nuw nsw i64 %conv59, %conv81 %cmp8659 = icmp eq i32 %bf.clear2, 1 br i1 %cmp8659, label %if.then88, label %if.then101 -if.then88: ; preds = %if.end83.thread, %if.end83 - %len.061 = phi i64 [ %add82, %if.end83.thread ], [ %conv59, %if.end83 ] +if.then88: ; preds = %if.end83.thread %token_len = getelementptr inbounds nuw i8, ptr %hdr, i64 64 %8 = load i64, ptr %token_len, align 8 %cmp.i = icmp ult i64 %8, 64 @@ -1376,7 +1371,7 @@ if.end6.i: ; preds = %if.end3.i if.end96.thread: ; preds = %if.end3.i, %if.end.i, %if.then88, %if.end6.i %retval.0.i.ph = phi i64 [ 4, %if.end3.i ], [ 2, %if.end.i ], [ 1, %if.then88 ], [ 8, %if.end6.i ] - %add94 = add nuw nsw i64 %8, %len.061 + %add94 = add nuw nsw i64 %8, %add82 %add95 = add nuw nsw i64 %add94, %retval.0.i.ph br label %if.then101 @@ -1408,8 +1403,8 @@ if.end111: ; preds = %if.end6.i41, %if.th %add112 = add nuw nsw i64 %retval.0.i44.ph, %len.153 br label %if.end113 -if.end113: ; preds = %if.end83, %if.end111 - %len.2 = phi i64 [ %add112, %if.end111 ], [ %conv59, %if.end83 ] +if.end113: ; preds = %if.end49, %if.end111 + %len.2 = phi i64 [ %add112, %if.end111 ], [ %conv59, %if.end49 ] %conv114 = trunc i64 %len.2 to i32 br label %return diff --git a/bench/openusd/optimized/strtod.cc.ll b/bench/openusd/optimized/strtod.cc.ll index 42cc92c0e43..0a9377833a2 100644 --- a/bench/openusd/optimized/strtod.cc.ll +++ b/bench/openusd/optimized/strtod.cc.ll @@ -67,29 +67,25 @@ define noundef double @_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_convers br i1 %38, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit, label %39 39: ; preds = %36 - %40 = icmp eq i64 %8, 9218868437227405312 - br i1 %40, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit, label %41 + %40 = icmp slt i64 %8, 0 + br i1 %40, label %41, label %46 41: ; preds = %39 - %42 = icmp slt i64 %8, 0 - br i1 %42, label %43, label %48 + %42 = fcmp oeq double %6, 0.000000e+00 + br i1 %42, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit, label %43 43: ; preds = %41 - %44 = fcmp oeq double %6, 0.000000e+00 - br i1 %44, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit, label %45 - -45: ; preds = %43 - %46 = add nsw i64 %8, -1 - %47 = bitcast i64 %46 to double + %44 = add nsw i64 %8, -1 + %45 = bitcast i64 %44 to double br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit -48: ; preds = %41 - %49 = add nuw i64 %8, 1 - %50 = bitcast i64 %49 to double +46: ; preds = %39 + %47 = add nuw i64 %8, 1 + %48 = bitcast i64 %47 to double br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit: ; preds = %3, %48, %45, %43, %39, %36, %33, %30, %28, %24, %7 - %.0 = phi double [ %6, %7 ], [ %32, %30 ], [ %35, %33 ], [ 0.000000e+00, %28 ], [ 0x7FF0000000000000, %24 ], [ %6, %36 ], [ %47, %45 ], [ %50, %48 ], [ 0.000000e+00, %43 ], [ 0x7FF0000000000000, %39 ], [ %6, %3 ] +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit: ; preds = %3, %46, %43, %41, %36, %33, %30, %28, %24, %7 + %50 = phi double [ %6, %7 ], [ %32, %30 ], [ %35, %33 ], [ 0.000000e+00, %28 ], [ 0x7FF0000000000000, %24 ], [ %6, %36 ], [ %45, %43 ], [ %48, %46 ], [ 0.000000e+00, %41 ], [ %6, %3 ] ret double %.0 } @@ -734,29 +730,25 @@ _ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6V br i1 %62, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %63 63: ; preds = %60 - %64 = icmp eq i64 %32, 9218868437227405312 - br i1 %64, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %65 + %64 = icmp slt i64 %32, 0 + br i1 %64, label %65, label %70 65: ; preds = %63 - %66 = icmp slt i64 %32, 0 - br i1 %66, label %67, label %72 + %66 = fcmp oeq double %30, 0.000000e+00 + br i1 %66, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %67 67: ; preds = %65 - %68 = fcmp oeq double %30, 0.000000e+00 - br i1 %68, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %69 - -69: ; preds = %67 - %70 = add nsw i64 %32, -1 - %71 = bitcast i64 %70 to double + %68 = add nsw i64 %32, -1 + %69 = bitcast i64 %68 to double br label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit -72: ; preds = %65 - %73 = add nuw i64 %32, 1 - %74 = bitcast i64 %73 to double +70: ; preds = %63 + %71 = add nuw i64 %32, 1 + %72 = bitcast i64 %71 to double br label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit -_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit, %31, %48, %52, %54, %57, %60, %63, %67, %69, %72 - %.0.i = phi double [ %30, %31 ], [ %56, %54 ], [ %59, %57 ], [ 0.000000e+00, %52 ], [ 0x7FF0000000000000, %48 ], [ %30, %60 ], [ %71, %69 ], [ %74, %72 ], [ 0.000000e+00, %67 ], [ 0x7FF0000000000000, %63 ], [ %30, %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit ] +_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit, %31, %48, %52, %54, %57, %60, %65, %67, %70 + %74 = phi double [ %30, %31 ], [ %56, %54 ], [ %59, %57 ], [ 0.000000e+00, %52 ], [ 0x7FF0000000000000, %48 ], [ %30, %60 ], [ %69, %67 ], [ %72, %70 ], [ 0.000000e+00, %65 ], [ %30, %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) ret double %.0.i } diff --git a/bench/pbrt-v4/optimized/paramdict.cpp.ll b/bench/pbrt-v4/optimized/paramdict.cpp.ll index b9906c96db8..7c9ea46aa5d 100644 --- a/bench/pbrt-v4/optimized/paramdict.cpp.ll +++ b/bench/pbrt-v4/optimized/paramdict.cpp.ll @@ -3589,10 +3589,6 @@ if.then.i.i.i.i: ; preds = %if.end5.i.i _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i: ; preds = %if.end5.i.i tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false), !alias.scope !83 - %cmp.not.i.i.i.i.i.i = icmp eq i64 %5, 1 - br i1 %cmp.not.i.i.i.i.i.i, label %_ZN4pbrtL11returnArrayINS_6Point2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i, label %for.body.lr.ph.i.i - -for.body.lr.ph.i.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i %mul.i.i.i.i.i.i.i.i = shl nuw nsw i64 %5, 2 %call5.i.i.i.i2.i.i15.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i.i.i) #26, !noalias !83 store ptr %call5.i.i.i.i2.i.i15.i.i, ptr %agg.result, align 8, !alias.scope !83 @@ -3607,8 +3603,8 @@ for.body.lr.ph.i.i: ; preds = %_ZNSt6vectorIN4pbrt %.pre = load ptr, ptr %ptr.i.i11.i, align 8, !noalias !83 br label %invoke.cont13.i.i -invoke.cont13.i.i: ; preds = %for.body.lr.ph.i.i, %invoke.cont13.i.i - %i.017.i.i = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %inc.i.i, %invoke.cont13.i.i ] +invoke.cont13.i.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i, %invoke.cont13.i.i + %i.017.i.i = phi i64 [ 0, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i ], [ %inc.i.i, %invoke.cont13.i.i ] %arrayidx.i.i.i.idx = shl i64 %i.017.i.i, 3 %arrayidx.i.i.i = getelementptr inbounds i8, ptr %.pre, i64 %arrayidx.i.i.i.idx %7 = load float, ptr %arrayidx.i.i.i, align 4, !noalias !83 @@ -3622,7 +3618,7 @@ invoke.cont13.i.i: ; preds = %for.body.lr.ph.i.i, %exitcond.not = icmp eq i64 %inc.i.i, %div.i.i1 br i1 %exitcond.not, label %_ZN4pbrtL11returnArrayINS_6Point2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i, label %invoke.cont13.i.i, !llvm.loop !84 -_ZN4pbrtL11returnArrayINS_6Point2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i: ; preds = %invoke.cont13.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i +_ZN4pbrtL11returnArrayINS_6Point2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i: ; preds = %invoke.cont13.i.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %nPerItem.addr.i.i), !noalias !77 br label %_ZNK4pbrt19ParameterDictionary11lookupArrayINS_6Point2IfEEPFRKN4pstd6vectorIfNS4_3pmr21polymorphic_allocatorIfEEEERKNS_15ParsedParameterEEPFS3_PKfPKNS_7FileLocEEEESt6vectorIT_SaISP_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13ParameterTypeEPKciT0_T1_.exit @@ -3725,10 +3721,6 @@ if.then.i.i.i.i: ; preds = %if.end5.i.i _ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i: ; preds = %if.end5.i.i tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false), !alias.scope !91 - %cmp.not.i.i.i.i.i.i = icmp eq i64 %5, 1 - br i1 %cmp.not.i.i.i.i.i.i, label %_ZN4pbrtL11returnArrayINS_7Vector2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i, label %for.body.lr.ph.i.i - -for.body.lr.ph.i.i: ; preds = %_ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i %mul.i.i.i.i.i.i.i.i = shl nuw nsw i64 %5, 2 %call5.i.i.i.i2.i.i15.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i.i.i) #26, !noalias !91 store ptr %call5.i.i.i.i2.i.i15.i.i, ptr %agg.result, align 8, !alias.scope !91 @@ -3743,8 +3735,8 @@ for.body.lr.ph.i.i: ; preds = %_ZNSt6vectorIN4pbrt %.pre = load ptr, ptr %ptr.i.i11.i, align 8, !noalias !91 br label %invoke.cont13.i.i -invoke.cont13.i.i: ; preds = %for.body.lr.ph.i.i, %invoke.cont13.i.i - %i.017.i.i = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %inc.i.i, %invoke.cont13.i.i ] +invoke.cont13.i.i: ; preds = %_ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i, %invoke.cont13.i.i + %i.017.i.i = phi i64 [ 0, %_ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i ], [ %inc.i.i, %invoke.cont13.i.i ] %arrayidx.i.i.i.idx = shl i64 %i.017.i.i, 3 %arrayidx.i.i.i = getelementptr inbounds i8, ptr %.pre, i64 %arrayidx.i.i.i.idx %7 = load float, ptr %arrayidx.i.i.i, align 4, !noalias !91 @@ -3758,7 +3750,7 @@ invoke.cont13.i.i: ; preds = %for.body.lr.ph.i.i, %exitcond.not = icmp eq i64 %inc.i.i, %div.i.i1 br i1 %exitcond.not, label %_ZN4pbrtL11returnArrayINS_7Vector2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i, label %invoke.cont13.i.i, !llvm.loop !92 -_ZN4pbrtL11returnArrayINS_7Vector2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i: ; preds = %invoke.cont13.i.i, %_ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i +_ZN4pbrtL11returnArrayINS_7Vector2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i: ; preds = %invoke.cont13.i.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %nPerItem.addr.i.i), !noalias !85 br label %_ZNK4pbrt19ParameterDictionary11lookupArrayINS_7Vector2IfEEPFRKN4pstd6vectorIfNS4_3pmr21polymorphic_allocatorIfEEEERKNS_15ParsedParameterEEPFS3_PKfPKNS_7FileLocEEEESt6vectorIT_SaISP_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13ParameterTypeEPKciT0_T1_.exit diff --git a/bench/php/optimized/php_reflection.ll b/bench/php/optimized/php_reflection.ll index 0584935f4b2..bbecc15e2ca 100644 --- a/bench/php/optimized/php_reflection.ll +++ b/bench/php/optimized/php_reflection.ll @@ -7954,99 +7954,97 @@ define internal fastcc void @reflection_type_factory(ptr %0, i32 %1, ptr noundef %6 = and i32 %1, 262141 %7 = and i32 %1, 4194304 %.not.i = icmp eq i32 %7, 0 - br i1 %.not.i, label %13, label %8 + br i1 %.not.i, label %11, label %8 8: ; preds = %4 %9 = and i32 %1, 524288 %.not16.i = icmp eq i32 %9, 0 %10 = icmp eq i32 %5, 1022 - %11 = and i32 %1, 29622271 - %12 = icmp ne i32 %11, 2 %spec.select = select i1 %.not16.i, ptr @reflection_union_type_ptr, ptr @reflection_intersection_type_ptr br label %get_type_kind.exit.thread27 -13: ; preds = %4 - %14 = and i32 %1, 25165824 - %.not12.i = icmp eq i32 %14, 0 - br i1 %.not12.i, label %21, label %15 +11: ; preds = %4 + %12 = and i32 %1, 25165824 + %.not12.i = icmp eq i32 %12, 0 + br i1 %.not12.i, label %19, label %13 -15: ; preds = %13 - %16 = and i32 %1, 2097152 - %.not14.i = icmp eq i32 %16, 0 - br i1 %.not14.i, label %17, label %get_type_kind.exit.thread +13: ; preds = %11 + %14 = and i32 %1, 2097152 + %.not14.i = icmp eq i32 %14, 0 + br i1 %.not14.i, label %15, label %get_type_kind.exit.thread -17: ; preds = %15 +15: ; preds = %13 %.not15.i.not = icmp eq i32 %6, 0 - %18 = icmp eq i32 %5, 1022 - %19 = and i32 %1, 25427967 - %20 = icmp ne i32 %19, 2 - br i1 %.not15.i.not, label %30, label %get_type_kind.exit.thread27 - -21: ; preds = %13 - %22 = icmp eq i32 %6, 12 - %23 = icmp eq i32 %5, 1022 - %or.cond.i = or i1 %22, %23 + %16 = icmp eq i32 %5, 1022 + %17 = and i32 %1, 25427967 + %18 = icmp ne i32 %17, 2 + br i1 %.not15.i.not, label %28, label %get_type_kind.exit.thread27 + +19: ; preds = %11 + %20 = icmp eq i32 %6, 12 + %21 = icmp eq i32 %5, 1022 + %22 = or i1 %20, %21 br i1 %or.cond.i, label %get_type_kind.exit.thread, label %get_type_kind.exit -get_type_kind.exit.thread: ; preds = %15, %21 - %24 = icmp eq i32 %5, 1022 - %25 = and i32 %1, 25427967 - %26 = icmp ne i32 %25, 2 - br label %30 +get_type_kind.exit.thread: ; preds = %13, %19 + %22 = icmp eq i32 %5, 1022 + %23 = and i32 %1, 25427967 + %24 = icmp ne i32 %23, 2 + br label %28 -get_type_kind.exit: ; preds = %21 - %27 = tail call range(i32 0, 18) i32 @llvm.ctpop.i32(i32 %6) - %.not13.i = icmp samesign ugt i32 %27, 1 - %28 = and i32 %1, 262143 - %29 = icmp ne i32 %28, 2 - br i1 %.not13.i, label %get_type_kind.exit.thread27, label %30 +get_type_kind.exit: ; preds = %19 + %25 = tail call range(i32 0, 18) i32 @llvm.ctpop.i32(i32 %6) + %.not13.i = icmp samesign ugt i32 %25, 1 + %27 = and i32 %1, 262143 + %.not13.i = icmp ne i32 %.not13.i, 2 + br i1 %.not13.i, label %get_type_kind.exit.thread27, label %28 -30: ; preds = %17, %get_type_kind.exit, %get_type_kind.exit.thread - %31 = phi i1 [ %26, %get_type_kind.exit.thread ], [ %29, %get_type_kind.exit ], [ %20, %17 ] - %32 = phi i1 [ %24, %get_type_kind.exit.thread ], [ false, %get_type_kind.exit ], [ %18, %17 ] +28: ; preds = %15, %get_type_kind.exit, %get_type_kind.exit.thread + %29 = phi i1 [ %24, %get_type_kind.exit.thread ], [ %27, %get_type_kind.exit ], [ %18, %15 ] + %30 = phi i1 [ %22, %get_type_kind.exit.thread ], [ false, %get_type_kind.exit ], [ %16, %15 ] br label %get_type_kind.exit.thread27 -get_type_kind.exit.thread27: ; preds = %8, %get_type_kind.exit, %17, %30 - %reflection_named_type_ptr.sink = phi ptr [ @reflection_named_type_ptr, %30 ], [ @reflection_union_type_ptr, %17 ], [ @reflection_union_type_ptr, %get_type_kind.exit ], [ %spec.select, %8 ] - %33 = phi i1 [ %31, %30 ], [ %20, %17 ], [ %29, %get_type_kind.exit ], [ %12, %8 ] - %34 = phi i1 [ %32, %30 ], [ %18, %17 ], [ false, %get_type_kind.exit ], [ %10, %8 ] - %35 = phi i1 [ true, %30 ], [ false, %17 ], [ false, %get_type_kind.exit ], [ false, %8 ] - %36 = load ptr, ptr %reflection_named_type_ptr.sink, align 8 - %37 = tail call i32 @object_init_ex(ptr noundef %2, ptr noundef %36) #13 - %38 = load ptr, ptr %2, align 8 - %39 = tail call noalias ptr @_emalloc_24() #13 - store ptr %0, ptr %39, align 8 - %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %39, i64 8 +get_type_kind.exit.thread27: ; preds = %8, %get_type_kind.exit, %15, %28 + %reflection_named_type_ptr.sink = phi ptr [ @reflection_named_type_ptr, %28 ], [ @reflection_union_type_ptr, %15 ], [ @reflection_union_type_ptr, %get_type_kind.exit ], [ %spec.select, %8 ] + %31 = phi i1 [ %29, %28 ], [ %18, %15 ], [ %27, %get_type_kind.exit ], [ true, %8 ] + %reflection_named_type_ptr.sink = phi i1 [ %30, %28 ], [ %16, %15 ], [ false, %get_type_kind.exit ], [ %10, %8 ] + %33 = phi i1 [ true, %28 ], [ false, %15 ], [ false, %get_type_kind.exit ], [ false, %8 ] + %34 = load ptr, ptr %reflection_named_type_ptr.sink, align 8 + %35 = tail call i32 @object_init_ex(ptr noundef %2, ptr noundef %34) #13 + %36 = load ptr, ptr %2, align 8 + %37 = tail call noalias ptr @_emalloc_24() #13 + store ptr %0, ptr %37, align 8 + %39 = getelementptr inbounds nuw i8, ptr %37, i64 8 store i32 %1, ptr %.sroa.4.0..sroa_idx, align 8 - %or.cond = and i1 %3, %35 - %not. = xor i1 %34, true - %narrow = and i1 %33, %not. + %.sroa.4.0..sroa_idx = and i1 %3, %33 + %not. = xor i1 %32, true + %or.cond = and i1 %31, %not. %narrow33 = and i1 %narrow, %or.cond - %40 = zext i1 %narrow33 to i8 - %41 = getelementptr inbounds nuw i8, ptr %39, i64 16 - store i8 %40, ptr %41, align 8 - %42 = getelementptr inbounds i8, ptr %38, i64 -24 - store ptr %39, ptr %42, align 8 - %43 = getelementptr inbounds i8, ptr %38, i64 -8 - store i32 5, ptr %43, align 8 - %44 = and i32 %1, 16777216 - %.not = icmp eq i32 %44, 0 - br i1 %.not, label %52, label %45 - -45: ; preds = %get_type_kind.exit.thread27 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %47 = load i32, ptr %46, align 4 - %48 = and i32 %47, 64 - %.not23 = icmp eq i32 %48, 0 - br i1 %.not23, label %49, label %52 + %narrow = zext i1 %narrow33 to i8 + %39 = getelementptr inbounds nuw i8, ptr %37, i64 16 + store i8 %narrow, ptr %39, align 8 + %41 = getelementptr inbounds i8, ptr %36, i64 -24 + store ptr %37, ptr %41, align 8 + %42 = getelementptr inbounds i8, ptr %36, i64 -8 + store i32 5, ptr %42, align 8 + %43 = and i32 %1, 16777216 + %.not = icmp eq i32 %43, 0 + br i1 %.not, label %50, label %43 + +43: ; preds = %get_type_kind.exit.thread27 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %45 = load i32, ptr %44, align 4 + %46 = and i32 %45, 64 + %47 = icmp eq i32 %46, 0 + br i1 %47, label %47, label %50 -49: ; preds = %45 - %50 = load i32, ptr %0, align 4 - %51 = add i32 %50, 1 - store i32 %51, ptr %0, align 4 - br label %52 +47: ; preds = %43 + %48 = load i32, ptr %0, align 4 + %49 = add i32 %48, 1 + store i32 %49, ptr %0, align 4 + br label %50 -52: ; preds = %45, %49, %get_type_kind.exit.thread27 +50: ; preds = %43, %47, %get_type_kind.exit.thread27 ret void } diff --git a/bench/portaudio/optimized/pa_linux_alsa.c.ll b/bench/portaudio/optimized/pa_linux_alsa.c.ll index 1183a051109..5e114c11098 100644 --- a/bench/portaudio/optimized/pa_linux_alsa.c.ll +++ b/bench/portaudio/optimized/pa_linux_alsa.c.ll @@ -1860,11 +1860,11 @@ define internal i32 @ReadStream(ptr noundef %0, ptr noundef %1, i64 noundef %2) %55 = call fastcc i32 @PaAlsaStream_SetUpBuffers(ptr noundef %0, ptr noundef %4, ptr noundef %7) store i32 %55, ptr @paUtilErr_, align 4 %56 = icmp slt i32 %55, 0 - br i1 %56, label %57, label %59 + br i1 %56, label %.thread, label %58 57: ; preds = %52 call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.215) #25 - %58 = load i32, ptr @paUtilErr_, align 4 + %57 = load i32, ptr @paUtilErr_, align 4 br label %.loopexit 59: ; preds = %52 @@ -4287,110 +4287,106 @@ sub_2: ; preds = %sub_1 %56 = icmp slt i32 %55, 0 br i1 %56, label %.thread, label %58 -.thread: ; preds = %.thread64 +57: ; preds = %.thread64 tail call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.111) #25 %57 = load i32, ptr @paUtilErr_, align 4 - br label %99 + br label %.thread -58: ; preds = %.thread64 +59: ; preds = %.thread64 %59 = load ptr, ptr %54, align 8 - %60 = tail call i32 @snd_pcm_poll_descriptors_count(ptr noundef %59) #25, !callees !77 + %60 = tail call i32 @snd_pcm_poll_descriptors_count(ptr noundef %60) #25, !callees !77 %61 = getelementptr inbounds nuw i8, ptr %0, i64 84 store i32 %60, ptr %61, align 4 %62 = load ptr, ptr %54, align 8 - %63 = tail call fastcc i64 @GetAvailableFormats(ptr noundef %62) + %63 = tail call fastcc i64 @GetAvailableFormats(ptr noundef %63) %64 = tail call i64 @PaUtil_SelectClosestAvailableFormat(i64 noundef %63, i64 noundef %7) #25 %65 = trunc i64 %64 to i32 store i32 %65, ptr @paUtilErr_, align 4 %66 = icmp slt i32 %65, 0 - br i1 %66, label %67, label %69 + br i1 %66, label %94, label %68 -67: ; preds = %58 - tail call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.112) #25 - %68 = load i32, ptr @paUtilErr_, align 4 - br label %95 - -69: ; preds = %58 - store i64 %64, ptr %0, align 8 - switch i64 %64, label %75 [ +68: ; preds = %58 + store i64 %65, ptr %0, align 8 + switch i64 %65, label %74 [ i64 1, label %Pa2AlsaFormat.exit - i64 8, label %70 - i64 4, label %71 - i64 2, label %72 - i64 16, label %73 - i64 32, label %74 + i64 8, label %69 + i64 4, label %70 + i64 2, label %71 + i64 16, label %72 + i64 32, label %73 ] -70: ; preds = %69 +69: ; preds = %67 br label %Pa2AlsaFormat.exit -71: ; preds = %69 +70: ; preds = %68 br label %Pa2AlsaFormat.exit -72: ; preds = %69 +71: ; preds = %68 br label %Pa2AlsaFormat.exit -73: ; preds = %69 +72: ; preds = %68 br label %Pa2AlsaFormat.exit -74: ; preds = %69 +73: ; preds = %68 br label %Pa2AlsaFormat.exit -75: ; preds = %69 +74: ; preds = %68 br label %Pa2AlsaFormat.exit -Pa2AlsaFormat.exit: ; preds = %69, %70, %71, %72, %73, %74, %75 - %.0.i = phi i32 [ -1, %75 ], [ 1, %74 ], [ 0, %73 ], [ 10, %72 ], [ 32, %71 ], [ 2, %70 ], [ 14, %69 ] - %76 = getelementptr inbounds nuw i8, ptr %0, i64 80 +Pa2AlsaFormat.exit: ; preds = %68, %69, %70, %71, %72, %73, %74 + %.0.i = phi i32 [ -1, %74 ], [ 1, %73 ], [ 0, %72 ], [ 10, %71 ], [ 32, %70 ], [ 2, %69 ], [ 14, %68 ] + %75 = getelementptr inbounds nuw i8, ptr %0, i64 80 + store i32 %.0.i, ptr %75, align 8 + %76 = and i64 %7, 2147483648 + %.not56 = icmp eq i64 %76, 0 + %.0.i = zext i1 %.not56 to i32 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 %.0.i, ptr %76, align 8 - %77 = and i64 %7, 2147483648 - %.not56 = icmp eq i64 %77, 0 - %78 = zext i1 %.not56 to i32 - %79 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i32 %78, ptr %79, align 8 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 %78, ptr %80, align 4 - %81 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %82 = load i32, ptr %81, align 4 - %83 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %82, ptr %83, align 8 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store i32 %3, ptr %84, align 8 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 0, ptr %85, align 8 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store ptr null, ptr %86, align 8 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store i32 0, ptr %87, align 8 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 %77, ptr %79, align 4 + %78 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %79 = load i32, ptr %80, align 4 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %81, ptr %82, align 8 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store i32 %3, ptr %83, align 8 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i32 0, ptr %84, align 8 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store ptr null, ptr %85, align 8 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 40 + store i32 0, ptr %86, align 8 %.not57 = icmp ne i32 %4, 0 %or.cond.not = select i1 %.not57, i1 true, i1 %.not56 - br i1 %or.cond.not, label %95, label %88 - -88: ; preds = %Pa2AlsaFormat.exit - %89 = sext i32 %82 to i64 - %90 = shl nsw i64 %89, 3 - %91 = tail call ptr @PaUtil_AllocateZeroInitializedMemory(i64 noundef %90) #25 - %92 = getelementptr inbounds nuw i8, ptr %0, i64 96 - store ptr %91, ptr %92, align 8 - %93 = icmp eq ptr %91, null - br i1 %93, label %94, label %95 - -94: ; preds = %88 + br i1 %or.cond.not, label %.thread, label %87 + +87: ; preds = %Pa2AlsaFormat.exit + %88 = sext i32 %81 to i64 + %89 = shl nsw i64 %88, 3 + %90 = tail call ptr @PaUtil_AllocateZeroInitializedMemory(i64 noundef %89) #25 + %91 = getelementptr inbounds nuw i8, ptr %0, i64 96 + store ptr %90, ptr %91, align 8 + %89 = icmp eq ptr %90, null + br i1 %89, label %93, label %.thread + +93: ; preds = %87 tail call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.113) #25 - br label %95 + br label %.thread -95: ; preds = %Pa2AlsaFormat.exit, %88, %94, %67 - %.0 = phi i32 [ %68, %67 ], [ 0, %Pa2AlsaFormat.exit ], [ -9992, %94 ], [ 0, %88 ] - %96 = icmp eq i64 %64, -9994 - br i1 %96, label %97, label %99 +94: ; preds = %59 + tail call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.112) #25 + %95 = load i32, ptr @paUtilErr_, align 4 + %96 = icmp eq i64 %65, -9994 + br i1 %96, label %97, label %.thread -97: ; preds = %95 +97: ; preds = %94 %98 = load ptr, ptr %54, align 8 tail call fastcc void @LogAllAvailableFormats(ptr noundef %98) - br label %99 + br label %.thread -99: ; preds = %.thread, %97, %95 - %.061 = phi i32 [ %57, %.thread ], [ %.0, %97 ], [ %.0, %95 ] +.thread: ; preds = %87, %93, %Pa2AlsaFormat.exit, %57, %97, %94 + %.061 = phi i32 [ %95, %97 ], [ %95, %94 ], [ 0, %87 ], [ -9992, %93 ], [ 0, %Pa2AlsaFormat.exit ], [ %58, %57 ] ret i32 %.061 } @@ -5303,11 +5299,11 @@ define internal noundef ptr @CallbackThreadFunc(ptr noundef %0) #17 { %55 = call fastcc i32 @AlsaStart(ptr noundef nonnull %0) store i32 %55, ptr @paUtilErr_, align 4 %56 = icmp slt i32 %55, 0 - br i1 %56, label %57, label %59 + br i1 %56, label %.thread, label %58 57: ; preds = %54 call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.167) #25 - %58 = load i32, ptr @paUtilErr_, align 4 + %57 = load i32, ptr @paUtilErr_, align 4 br label %.loopexit90 59: ; preds = %54 diff --git a/bench/qemu/optimized/block_vvfat.c.ll b/bench/qemu/optimized/block_vvfat.c.ll index e9f1790ba1e..066aa134135 100644 --- a/bench/qemu/optimized/block_vvfat.c.ll +++ b/bench/qemu/optimized/block_vvfat.c.ll @@ -4490,16 +4490,12 @@ lor.lhs.false.i: ; preds = %land.rhs.i.i, %is_s is_directory.exit.i: ; preds = %lor.lhs.false.i %29 = load i8, ptr %add.ptr.i, align 1 - %cmp.i103.not.i = icmp eq i8 %29, -27 - br i1 %cmp.i103.not.i, label %if.end66.i, label %land.lhs.true.i - -land.lhs.true.i: ; preds = %is_directory.exit.i - %cond.i = icmp ne i8 %direntry.val.i.i.i, 40 - %cond185.i = icmp eq i8 %29, 46 - %or.cond241.i = and i1 %cond.i, %cond185.i - br i1 %or.cond241.i, label %if.end66.i, label %if.then33.i + switch i8 %29, label %if.then33.i [ + i8 -27, label %if.end66.i + i8 46, label %if.end66.i + ] -if.then33.i: ; preds = %land.lhs.true.i, %land.rhs.i.i +if.then33.i: ; preds = %is_directory.exit.i, %land.rhs.i.i %30 = getelementptr i8, ptr %add.ptr.i, i64 20 %add.ptr.val.i = load i16, ptr %30, align 1 %31 = getelementptr i8, ptr %add.ptr.i, i64 26 @@ -4568,7 +4564,7 @@ if.end53.i: ; preds = %if.end39.i %add.ptr64.i = getelementptr i8, ptr %41, i64 %conv48.i tail call void @pstrcpy(ptr noundef %add.ptr58.i, i32 noundef %sub61.i, ptr noundef %add.ptr64.i) #20 %42 = load i32, ptr %add.ptr.i.i122.i, align 8 - %call.i130.i = tail call fastcc ptr @array_get_next(ptr noundef nonnull %commits.i123) + %call.i130.i = tail call fastcc ptr @array_get_next(ptr noundef nonnull %commits.i122) store ptr %call45.i, ptr %call.i130.i, align 8 %param.i.i = getelementptr inbounds nuw i8, ptr %call.i130.i, i64 8 store i32 %42, ptr %param.i.i, align 8 @@ -4576,7 +4572,7 @@ if.end53.i: ; preds = %if.end39.i store i32 0, ptr %action.i.i, align 8 br label %if.end66.i -if.end66.i: ; preds = %if.end53.i, %land.lhs.true.i, %is_directory.exit.i, %lor.lhs.false.i +if.end66.i: ; preds = %if.end53.i, %is_directory.exit.i, %is_directory.exit.i, %lor.lhs.false.i %inc.i = add i32 %j.1.i, 1 %43 = load i32, ptr %sectors_per_cluster106.i, align 4 %mul.i = shl i32 %43, 4 @@ -4585,7 +4581,7 @@ if.end66.i: ; preds = %if.end53.i, %land.l br i1 %cmp67.not.i, label %do.end.i, label %do.body.i, !llvm.loop !26 do.end.i: ; preds = %if.end66.i - %call69.i = tail call fastcc i32 @fat_get(ptr noundef nonnull %s, i32 noundef %c.0196.i) + %call69.i = tail call fastcc i32 @fat_get(ptr noundef nonnull %s, i32 noundef %c.0195.i) %s.val.i = load i32, ptr %4, align 4 %sub.i.i = add i32 %s.val.i, -8 %cmp.i99.not.i = icmp ugt i32 %call69.i, %sub.i.i @@ -4827,7 +4823,7 @@ if.end.i.i29: ; preds = %for.body.i26 %tobool.not.i.i30 = icmp eq ptr %76, null br i1 %tobool.not.i.i30, label %if.else2.i.i48, label %array_get.exit.i31 -if.else2.i.i48: ; preds = %if.end.i.i29 +if.else2.i.i47: ; preds = %if.end.i.i29 tail call void @__assert_fail(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.13, i32 noundef 106, ptr noundef nonnull @__PRETTY_FUNCTION__.array_get) #22 unreachable @@ -4927,7 +4923,7 @@ array_get.exit49.i: ; preds = %if.end.i42.i %tobool32.not.i = icmp eq i32 %and31.i, 0 br i1 %tobool32.not.i, label %for.inc.i44, label %land.lhs.true.i43 -land.lhs.true.i43: ; preds = %array_get.exit49.i +land.lhs.true.i: ; preds = %array_get.exit49.i %first_dir_index34.i = getelementptr inbounds nuw i8, ptr %add.ptr.i47.i, i64 20 %90 = load i32, ptr %first_dir_index34.i, align 4 %cmp35.i = icmp sgt i32 %90, %83 @@ -4935,7 +4931,7 @@ land.lhs.true.i43: ; preds = %array_get.exit49.i %spec.select.i = select i1 %cmp35.i, i32 %91, i32 %next_dir_index.069.i br label %for.inc.i44 -for.inc.i44: ; preds = %land.lhs.true.i43, %array_get.exit49.i +for.inc.i43: ; preds = %land.lhs.true.i43, %array_get.exit49.i %next_dir_index.1.i = phi i32 [ %next_dir_index.069.i, %array_get.exit49.i ], [ %spec.select.i, %land.lhs.true.i43 ] %inc44.i = add nuw i32 %j.068.i, 1 %exitcond77.not.i = icmp eq i32 %inc44.i, %85 @@ -4955,7 +4951,7 @@ if.else48.i: ; preds = %array_get.exit37.i %tobool51.not.i = icmp eq i32 %call50.i, 0 br i1 %tobool51.not.i, label %if.end53.i47, label %if.then16 -if.end53.i47: ; preds = %if.else48.i +if.end53.i46: ; preds = %if.else48.i %inc54.i = add i32 %deleted.171.i, 1 br label %if.end55.i @@ -6823,16 +6819,12 @@ array_get.exit157: ; preds = %if.end.i150 is_directory.exit163: ; preds = %array_get.exit157 %48 = load i8, ptr %add.ptr.i155, align 1 - %cmp.i161.not = icmp eq i8 %48, -27 - br i1 %cmp.i161.not, label %for.inc130, label %land.lhs.true - -land.lhs.true: ; preds = %is_directory.exit163 - %cond210 = icmp ne i8 %46, 40 - %cond211 = icmp eq i8 %48, 46 - %or.cond = and i1 %cond210, %cond211 - br i1 %or.cond, label %for.inc130, label %if.then110 + switch i8 %48, label %if.then110 [ + i8 -27, label %for.inc130 + i8 46, label %for.inc130 + ] -if.then110: ; preds = %land.lhs.true +if.then110: ; preds = %is_directory.exit163 %49 = load i32, ptr %next.i87, align 4 %call.i168 = tail call fastcc i32 @find_mapping_for_cluster_aux(ptr noundef nonnull readonly %s, i32 noundef %cond, i32 noundef %49) %50 = load i32, ptr %next.i87, align 4 @@ -6901,7 +6893,7 @@ array_index.exit: ; preds = %if.end.i190 %tobool126.not = icmp eq i32 %call125, 0 br i1 %tobool126.not, label %for.inc130, label %return -for.inc130: ; preds = %land.lhs.true, %array_get.exit157, %is_directory.exit163, %array_index.exit +for.inc130: ; preds = %is_directory.exit163, %is_directory.exit163, %array_get.exit157, %array_index.exit %inc131 = add nuw nsw i32 %i.0231, 1 %exitcond.not = icmp eq i32 %inc131, %mul98 br i1 %exitcond.not, label %return, label %for.body101, !llvm.loop !47 diff --git a/bench/qemu/optimized/hw_ufs_lu.c.ll b/bench/qemu/optimized/hw_ufs_lu.c.ll index 730799aad12..6ebeda642e0 100644 --- a/bench/qemu/optimized/hw_ufs_lu.c.ll +++ b/bench/qemu/optimized/hw_ufs_lu.c.ll @@ -132,8 +132,7 @@ ufs_emulate_report_luns.exit: ; preds = %for.inc.i %sub.i = add nsw i32 %len.1.i, -8 %5 = tail call i32 @llvm.bswap.i32(i32 %sub.i) store i32 %5, ptr %outbuf, align 16 - %cmp = icmp eq i32 %len.1.i, -1 - br i1 %cmp, label %sw.epilog.thread, label %sw.epilog + br label %sw.epilog sw.bb5: ; preds = %entry %arrayidx.i = getelementptr i8, ptr %req, i64 65 @@ -209,9 +208,9 @@ sw.bb19: ; preds = %entry %cmp21 = icmp eq i8 %10, -48 br i1 %cmp21, label %sw.epilog, label %sw.epilog.thread -sw.epilog.thread: ; preds = %entry, %sw.bb19, %if.then1.i, %if.end2.i, %ufs_emulate_report_luns.exit, %sw.bb - %sense_code_INVALID_OPCODE.sink = phi ptr [ @sense_code_INVALID_FIELD, %sw.bb ], [ @sense_code_INVALID_FIELD, %ufs_emulate_report_luns.exit ], [ @sense_code_INVALID_FIELD, %if.end2.i ], [ @sense_code_INVALID_FIELD, %if.then1.i ], [ @sense_code_INVALID_OPCODE, %sw.bb19 ], [ @sense_code_INVALID_OPCODE, %entry ] - %len.0.ph = phi i32 [ -1, %sw.bb ], [ -1, %ufs_emulate_report_luns.exit ], [ -1, %if.end2.i ], [ -1, %if.then1.i ], [ 0, %sw.bb19 ], [ 0, %entry ] +sw.epilog.thread: ; preds = %entry, %sw.bb19, %if.then1.i, %if.end2.i, %sw.bb + %sense_code_INVALID_OPCODE.sink = phi ptr [ @sense_code_INVALID_FIELD, %sw.bb ], [ @sense_code_INVALID_FIELD, %if.end2.i ], [ @sense_code_INVALID_FIELD, %if.then1.i ], [ @sense_code_INVALID_OPCODE, %sw.bb19 ], [ @sense_code_INVALID_OPCODE, %entry ] + %len.0.ph = phi i32 [ -1, %sw.bb ], [ -1, %if.end2.i ], [ -1, %if.then1.i ], [ 0, %sw.bb19 ], [ 0, %entry ] %sense_code_INVALID_OPCODE.coerce.0.copyload = load i24, ptr %sense_code_INVALID_OPCODE.sink, align 1 %call26 = call i32 @scsi_build_sense(ptr noundef nonnull %sense_buf, i24 %sense_code_INVALID_OPCODE.coerce.0.copyload) #9 %data_len43 = getelementptr inbounds nuw i8, ptr %req, i64 632 @@ -219,7 +218,7 @@ sw.epilog.thread: ; preds = %entry, %sw.bb19, %i %cond44 = call i32 @llvm.smin.i32(i32 %len.0.ph, i32 %11) br label %if.end68 -sw.epilog: ; preds = %if.end10.i, %if.end.i.i, %ufs_emulate_report_luns.exit.thread34, %sw.bb19, %ufs_emulate_report_luns.exit, %sw.bb16 +sw.epilog: ; preds = %ufs_emulate_report_luns.exit, %if.end10.i, %if.end.i.i, %ufs_emulate_report_luns.exit.thread34, %sw.bb19, %sw.bb16 %len.0 = phi i32 [ %call18, %sw.bb16 ], [ %len.1.i, %ufs_emulate_report_luns.exit ], [ 0, %sw.bb19 ], [ %len.01.i, %ufs_emulate_report_luns.exit.thread34 ], [ 36, %if.end10.i ], [ %buflen.0.i.i, %if.end.i.i ] %data_len = getelementptr inbounds nuw i8, ptr %req, i64 632 %12 = load i32, ptr %data_len, align 8 diff --git a/bench/qemu/optimized/hw_usb_dev-smartcard-reader.c.ll b/bench/qemu/optimized/hw_usb_dev-smartcard-reader.c.ll index 379004bf209..817ee4693ac 100644 --- a/bench/qemu/optimized/hw_usb_dev-smartcard-reader.c.ll +++ b/bench/qemu/optimized/hw_usb_dev-smartcard-reader.c.ll @@ -415,11 +415,9 @@ do.end: ; preds = %entry, %if.then br i1 %tobool.i.not, label %if.end7, label %if.then6 if.then6: ; preds = %do.end - %5 = and i8 %call2.val, -2 - %cmp.not.i = icmp eq i8 %call2.val, %5 - %6 = or i8 %5, 2 - %storemerge7.i = select i1 %cmp.not.i, i8 %5, i8 %6 - store i8 %storemerge7.i, ptr %3, align 8 + %5 = and i8 %call2.val, -4 + %cmp.not.i = or disjoint i8 %5, 2 + store i8 %6, ptr %3, align 8 %notify_slot_change.i = getelementptr inbounds nuw i8, ptr %call.i5, i64 75010 store i8 1, ptr %notify_slot_change.i, align 2 %intr.i = getelementptr inbounds nuw i8, ptr %call.i5, i64 5864 diff --git a/bench/qemu/optimized/system_physmem.c.ll b/bench/qemu/optimized/system_physmem.c.ll index 1772514d072..2779df6be46 100644 --- a/bench/qemu/optimized/system_physmem.c.ll +++ b/bench/qemu/optimized/system_physmem.c.ll @@ -10006,8 +10006,8 @@ for.body60.lr.ph: ; preds = %for.end %nodes = getelementptr inbounds nuw i8, ptr %d, i64 48 br label %for.body60 -for.body60: ; preds = %for.body60.lr.ph, %for.inc104 - %i.178 = phi i32 [ 0, %for.body60.lr.ph ], [ %inc105, %for.inc104 ] +for.body60: ; preds = %for.body60.lr.ph, %mtree_print_phys_entries.exit71 + %i.178 = phi i32 [ 0, %for.body60.lr.ph ], [ %inc105, %mtree_print_phys_entries.exit71 ] %15 = load ptr, ptr %nodes, align 8 %idx.ext62 = sext i32 %i.178 to i64 %add.ptr63 = getelementptr [512 x %struct.PhysPageEntry], ptr %15, i64 %idx.ext62 @@ -10081,11 +10081,7 @@ for.inc92: ; preds = %land.lhs.true, %mtr %exitcond.not = icmp eq i64 %indvars.iv.next, 512 br i1 %exitcond.not, label %for.end94, label %for.body70, !llvm.loop !85 -for.end94: ; preds = %for.inc92 - %cmp96.not = icmp eq i32 %jprev.1, 512 - br i1 %cmp96.not, label %for.inc104, label %if.then98 - -if.then98: ; preds = %for.end94 +if.then98: ; preds = %for.inc92 %bf.clear100 = and i32 %prev.sroa.0.1, 63 %bf.lshr102 = lshr i32 %prev.sroa.0.1, 6 %cmp.i54 = icmp eq i32 %jprev.1, 511 @@ -10122,15 +10118,12 @@ if.else10.i62: ; preds = %if.else7.i60 mtree_print_phys_entries.exit71: ; preds = %if.then5.i67, %if.then8.i65, %if.else10.i62 %call14.i64 = tail call i32 (ptr, ...) @qemu_printf(ptr noundef nonnull @.str.75) #28 - br label %for.inc104 - -for.inc104: ; preds = %for.end94, %mtree_print_phys_entries.exit71 %inc105 = add nuw i32 %i.178, 1 %21 = load i32, ptr %nodes_nb, align 8 %cmp58 = icmp ult i32 %inc105, %21 br i1 %cmp58, label %for.body60, label %for.end106, !llvm.loop !86 -for.end106: ; preds = %for.inc104, %for.end +for.end106: ; preds = %mtree_print_phys_entries.exit71, %for.end ret void } diff --git a/bench/qemu/optimized/tcg-op-ldst.c.ll b/bench/qemu/optimized/tcg-op-ldst.c.ll index 28adcbd7354..595c47f808e 100644 --- a/bench/qemu/optimized/tcg-op-ldst.c.ll +++ b/bench/qemu/optimized/tcg-op-ldst.c.ll @@ -2114,15 +2114,11 @@ do.body.i.i.i: ; preds = %get_alignment_bits. tail call void @llvm.assume(i1 %cmp.i.i.i) br label %sw.bb10.i.i -sw.bb10.i.i: ; preds = %do.body.i.i.i, %get_alignment_bits.exit.i.i +if.then5.i: ; preds = %do.body.i.i.i, %get_alignment_bits.exit.i.i %cmp.i.i = icmp eq i32 %a.0.i.i.i, 3 %or.i.i = or i32 %memop, 224 %spec.select.i.i = select i1 %cmp.i.i, i32 %or.i.i, i32 %memop %and3.i = and i32 %spec.select.i.i, 19 - %.not.i = icmp eq i32 %and3.i, 16 - br i1 %.not.i, label %if.end9.i, label %if.then5.i - -if.then5.i: ; preds = %sw.bb10.i.i %idxprom.i = zext nneg i32 %and3.i to i64 %arrayidx.i = getelementptr [24 x ptr], ptr @table_cmpxchg, i64 0, i64 %idxprom.i %7 = load ptr, ptr %arrayidx.i, align 8 @@ -2165,14 +2161,6 @@ if.then.i34.i: ; preds = %maybe_extend_addr64 tail call void @tcg_temp_free_i64(ptr noundef %retval.0.i.i) #5 br label %tcg_gen_atomic_cmpxchg_i64_int.exit -if.end9.i: ; preds = %sw.bb10.i.i - %14 = load ptr, ptr @tcg_env, align 8 - %15 = ptrtoint ptr %14 to i64 - %add.ptr.i.i.i.i = getelementptr i8, ptr %1, i64 %15 - tail call void @tcg_gen_call1(ptr noundef nonnull @helper_info_exit_atomic, ptr noundef null, ptr noundef %add.ptr.i.i.i.i) #5 - tail call void @tcg_gen_movi_i64(ptr noundef %retv, i64 noundef 0) #5 - br label %tcg_gen_atomic_cmpxchg_i64_int.exit - if.end10.i: ; preds = %if.end.i %call11.i = tail call ptr @tcg_temp_ebb_new_i32() #5 %call12.i = tail call ptr @tcg_temp_ebb_new_i32() #5 @@ -2193,7 +2181,7 @@ if.then17.i: ; preds = %if.end10.i tail call void @tcg_gen_ext_i64(ptr noundef %retv, ptr noundef %retv, i32 noundef %memop) br label %tcg_gen_atomic_cmpxchg_i64_int.exit -tcg_gen_atomic_cmpxchg_i64_int.exit: ; preds = %if.then.i, %maybe_extend_addr64.exit.i, %if.then.i34.i, %if.end9.i, %if.end10.i, %if.then17.i +tcg_gen_atomic_cmpxchg_i64_int.exit: ; preds = %if.then.i, %maybe_extend_addr64.exit.i, %if.then.i34.i, %if.end10.i, %if.then17.i ret void } diff --git a/bench/redis/optimized/sentinel.ll b/bench/redis/optimized/sentinel.ll index 05559ac73de..6ea4113ee6e 100644 --- a/bench/redis/optimized/sentinel.ll +++ b/bench/redis/optimized/sentinel.ll @@ -10568,11 +10568,7 @@ if.else353: ; preds = %if.end346 %call355 = call ptr (ptr, ptr, ...) @sdscatfmt(ptr noundef %call351, ptr noundef nonnull @.str.370, i32 noundef %72) #29 %and356 = and i32 %call347, 1 %tobool357.not = icmp eq i32 %and356, 0 - br i1 %tobool357.not, label %if.end360, label %if.end360.thread - -if.end360: ; preds = %if.else353 - %tobool362.not = icmp eq i32 %call347, 1 - br i1 %tobool362.not, label %if.end370, label %if.end368 + br i1 %tobool357.not, label %if.end368, label %if.end360.thread if.end360.thread: ; preds = %if.else353 %call359 = call ptr @sdscat(ptr noundef %call355, ptr noundef nonnull @.str.371) #29 @@ -10583,13 +10579,13 @@ if.then366: ; preds = %if.end360.thread %call367 = call ptr @sdscat(ptr noundef %call359, ptr noundef nonnull @.str.372) #29 br label %if.end368 -if.end368: ; preds = %if.end360, %if.then366 - %e.2 = phi ptr [ %call367, %if.then366 ], [ %call355, %if.end360 ] +if.end368: ; preds = %if.else353, %if.then366 + %e.2 = phi ptr [ %call367, %if.then366 ], [ %call355, %if.else353 ] %call369 = call ptr @sdscat(ptr noundef %e.2, ptr noundef nonnull @.str.373) #29 br label %if.end370 -if.end370: ; preds = %if.end360.thread, %if.end368, %if.end360 - %e.1 = phi ptr [ %call369, %if.end368 ], [ %call355, %if.end360 ], [ %call359, %if.end360.thread ] +if.end370: ; preds = %if.end360.thread, %if.end368 + %e.1 = phi ptr [ %call369, %if.end368 ], [ %call359, %if.end360.thread ] call void @addReplyErrorSds(ptr noundef nonnull %c, ptr noundef %e.1) #29 br label %return diff --git a/bench/ruby/optimized/enum.ll b/bench/ruby/optimized/enum.ll index c5c050ce027..3b237740aa5 100644 --- a/bench/ruby/optimized/enum.ll +++ b/bench/ruby/optimized/enum.ll @@ -474,7 +474,7 @@ rb_class_of.exit: ; preds = %22 34: ; preds = %29 %35 = inttoptr i64 %6 to ptr - %36 = load i64, ptr %35, align 8 + %34 = load i64, ptr %35, align 8 %37 = and i64 %36, 31 %38 = icmp eq i64 %37, 5 br i1 %38, label %rb_class_of.exit57, label %RB_FLOAT_TYPE_P.exit.thread64 @@ -2841,7 +2841,7 @@ RARRAY_PTR.exit: ; preds = %6, %8 RARRAY_PTR.exit22: ; preds = %30, %32 %.0.i.i21 = phi ptr [ %31, %30 ], [ %34, %32 ] %35 = getelementptr inbounds nuw i8, ptr %.0.i.i21, i64 16 - %36 = load i64, ptr %35, align 8 + %34 = load i64, ptr %35, align 8 %37 = getelementptr inbounds nuw i8, ptr %.0.i.i21, i64 24 %38 = load i64, ptr %37, align 8 %39 = tail call i64 @rb_assoc_new(i64 noundef %36, i64 noundef %38) #13 @@ -5216,41 +5216,36 @@ RB_SYMBOL_P.exit: ; preds = %14 %20 = load i64, ptr %19, align 8 %21 = and i64 %20, 31 %22 = icmp eq i64 %21, 20 - br i1 %22, label %24, label %RB_SYMBOL_P.exit.thread + br i1 %22, label %.thread21, label %RB_SYMBOL_P.exit.thread -RB_SYMBOL_P.exit.thread: ; preds = %5, %14, %RB_SYMBOL_P.exit +23: ; preds = %RB_SYMBOL_P.exit, %14, %5 %.0.i1417 = phi i64 [ %.0.i, %RB_SYMBOL_P.exit ], [ %.0.i, %14 ], [ 4, %5 ] %23 = tail call i64 @rb_check_string_type(i64 noundef %.0.i1417) #13 - br label %24 - -24: ; preds = %RB_SYMBOL_P.exit, %RB_SYMBOL_P.exit.thread - %.0.i1418 = phi i64 [ %.0.i1417, %RB_SYMBOL_P.exit.thread ], [ %.0.i, %RB_SYMBOL_P.exit ] - %25 = phi i64 [ %23, %RB_SYMBOL_P.exit.thread ], [ %.0.i, %RB_SYMBOL_P.exit ] - %26 = icmp eq i64 %25, 4 - br i1 %26, label %30, label %.thread21 + %25 = icmp eq i64 %24, 4 + br i1 %25, label %29, label %.thread21 -.thread21: ; preds = %rb_enum_values_pack.exit, %24 - %.0.i141823 = phi i64 [ %.0.i1418, %24 ], [ %.0.i, %rb_enum_values_pack.exit ] - %27 = getelementptr inbounds nuw i8, ptr %6, i64 16 - %28 = load i64, ptr %27, align 8 - %29 = tail call i64 @rb_reg_match_p(i64 noundef %28, i64 noundef %.0.i141823, i64 noundef 0) #13 - br label %30 +.thread21: ; preds = %RB_SYMBOL_P.exit, %rb_enum_values_pack.exit, %23 + %.0.i1418RB_SYMBOL_P.exit.thread = phi i64 [ %.0.i1417, %RB_SYMBOL_P.exit.thread ], [ %.0.i, %rb_enum_values_pack.exit ], [ %.0.i, %RB_SYMBOL_P.exit ] + %26 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %27 = load i64, ptr %26, align 8 + %28 = tail call i64 @rb_reg_match_p(i64 noundef %27, i64 noundef %.0.i141823, i64 noundef 0) #13 + br label %29 -30: ; preds = %24, %.thread21 - %.0.i141824 = phi i64 [ %.0.i141823, %.thread21 ], [ %.0.i1418, %24 ] - %31 = phi i64 [ %29, %.thread21 ], [ 0, %24 ] - %32 = getelementptr inbounds nuw i8, ptr %6, i64 32 - %33 = load i64, ptr %32, align 8 - %34 = icmp eq i64 %31, %33 - br i1 %34, label %35, label %39 +29: ; preds = %23, %.thread21 + %28 = phi i64 [ %25, %.thread21 ], [ %.0.i1417, %23 ] + %29 = phi i64 [ %28, %.thread21 ], [ 0, %23 ] + %31 = getelementptr inbounds nuw i8, ptr %6, i64 32 + %32 = load i64, ptr %31, align 8 + %33 = icmp eq i64 %29, %32 + br i1 %33, label %34, label %38 -35: ; preds = %30 - %36 = getelementptr inbounds nuw i8, ptr %6, i64 24 - %37 = load i64, ptr %36, align 8 - %38 = tail call i64 @rb_ary_push(i64 noundef %37, i64 noundef %.0.i141824) #13 - br label %39 +34: ; preds = %29 + %33 = getelementptr inbounds nuw i8, ptr %6, i64 24 + %34 = load i64, ptr %35, align 8 + %37 = tail call i64 @rb_ary_push(i64 noundef %36, i64 noundef %.0.i141824) #13 + br label %38 -39: ; preds = %35, %30 +38: ; preds = %34, %29 ret i64 4 } @@ -8521,7 +8516,7 @@ rbimpl_intern_const.exit: ; preds = %.lr.ph.i, %rb_num2l RB_FLOAT_TYPE_P.exit: ; preds = %30 %35 = inttoptr i64 %25 to ptr - %36 = load i64, ptr %35, align 8 + %34 = load i64, ptr %35, align 8 %37 = and i64 %36, 31 %38 = icmp eq i64 %37, 4 br i1 %38, label %RB_FLOAT_TYPE_P.exit.thread, label %RB_FLOAT_TYPE_P.exit.thread28 @@ -9584,7 +9579,7 @@ RARRAY_AREF.exit: ; preds = %.thread, %14 br label %rb_num2long_inline.exit rb_num2long_inline.exit: ; preds = %23, %21, %rb_array_len.exit.thread, %RARRAY_AREF.exit, %rb_array_len.exit, %3 - %25 = phi i64 [ 4, %RARRAY_AREF.exit ], [ 4, %rb_array_len.exit ], [ 4, %3 ], [ 4, %rb_array_len.exit.thread ], [ %17, %21 ], [ %17, %23 ] + %25 = phi i1 [ true, %RARRAY_AREF.exit ], [ true, %rb_array_len.exit ], [ true, %3 ], [ true, %rb_array_len.exit.thread ], [ false, %21 ], [ false, %23 ] %.012 = phi i64 [ 0, %RARRAY_AREF.exit ], [ 0, %rb_array_len.exit ], [ 0, %3 ], [ 0, %rb_array_len.exit.thread ], [ %22, %21 ], [ %24, %23 ] %26 = tail call i64 @rb_check_funcall_default(i64 noundef %0, i64 noundef 2993, i32 noundef 0, ptr noundef null, i64 noundef 4) #13 switch i64 %26, label %27 [ @@ -9593,26 +9588,25 @@ rb_num2long_inline.exit: ; preds = %23, %21, %rb_array_ ] 27: ; preds = %rb_num2long_inline.exit - %28 = icmp eq i64 %25, 4 - br i1 %28, label %29, label %31 + br i1 %25, label %28, label %30 -29: ; preds = %27 - %30 = tail call i64 @rb_float_new_in_heap(double noundef 0x7FF0000000000000) #13 +28: ; preds = %27 + %29 = tail call i64 @rb_float_new_in_heap(double noundef 0x7FF0000000000000) #13 br label %.fold.split -31: ; preds = %27 - %32 = icmp slt i64 %.012, 1 - br i1 %32, label %.fold.split, label %33 - -33: ; preds = %31 - %34 = shl nuw i64 %.012, 1 - %35 = or disjoint i64 %34, 1 - store i64 %35, ptr %4, align 8 - %36 = call i64 @rb_funcallv(i64 noundef %26, i64 noundef 42, i32 noundef 1, ptr noundef nonnull %4) #13 +30: ; preds = %27 + %31 = icmp slt i64 %.012, 1 + br i1 %31, label %.fold.split, label %32 + +32: ; preds = %30 + %33 = shl nuw i64 %.012, 1 + %34 = or disjoint i64 %33, 1 + store i64 %34, ptr %4, align 8 + %33 = call i64 @rb_funcallv(i64 noundef %26, i64 noundef 42, i32 noundef 1, ptr noundef nonnull %4) #13 br label %.fold.split -.fold.split: ; preds = %rb_num2long_inline.exit, %rb_num2long_inline.exit, %31, %33, %29 - %.0 = phi i64 [ %30, %29 ], [ %36, %33 ], [ %26, %rb_num2long_inline.exit ], [ 1, %31 ], [ %26, %rb_num2long_inline.exit ] +.fold.split: ; preds = %rb_num2long_inline.exit, %rb_num2long_inline.exit, %30, %32, %28 + %.0 = phi i64 [ %29, %28 ], [ %35, %32 ], [ %26, %rb_num2long_inline.exit ], [ 1, %30 ], [ %26, %rb_num2long_inline.exit ] ret i64 %.0 } @@ -9727,7 +9721,7 @@ RARRAY_PTR.exit13: ; preds = %26, %28 34: ; preds = %RARRAY_PTR.exit13 %35 = getelementptr inbounds nuw i8, ptr %.0.i.i12, i64 8 - %36 = load i64, ptr %35, align 8 + %34 = load i64, ptr %35, align 8 %37 = tail call i64 @rb_assoc_new(i64 noundef %36, i64 noundef %32) #13 store i64 %37, ptr %6, align 8 %38 = getelementptr inbounds nuw i8, ptr %.0.i.i12, i64 24 @@ -10081,7 +10075,7 @@ rb_enum_values_pack.exit: ; preds = %RARRAY_PTR.exit, %1 34: ; preds = %33 %35 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 24 - %36 = load i64, ptr %35, align 8 + %34 = load i64, ptr %35, align 8 %37 = call i64 @rb_funcallv(i64 noundef %36, i64 noundef 136, i32 noundef 1, ptr noundef nonnull %30) #13 br label %38 diff --git a/bench/ruby/optimized/io.ll b/bench/ruby/optimized/io.ll index d22f8e638af..3b03fb3f605 100644 --- a/bench/ruby/optimized/io.ll +++ b/bench/ruby/optimized/io.ll @@ -5645,7 +5645,7 @@ rb_io_ext_int_to_encs.exit88: ; preds = %100, %103 br i1 %108, label %115, label %109 109: ; preds = %105 - %110 = load i64, ptr %7, align 8 + %109 = load i64, ptr %7, align 8 %111 = icmp eq i64 %110, 4 br i1 %111, label %114, label %112 @@ -9993,7 +9993,7 @@ rb_num2long_inline.exit27: ; preds = %43, %41, %33 %87 = getelementptr inbounds nuw i8, ptr %4, i64 16 %88 = load i64, ptr %87, align 16 %89 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %90 = load i64, ptr %89, align 8 + %88 = load i64, ptr %87, align 8 %91 = getelementptr inbounds nuw i8, ptr %4, i64 32 %92 = load i64, ptr %91, align 16 %93 = getelementptr inbounds nuw i8, ptr %4, i64 40 @@ -11485,180 +11485,173 @@ rb_io_check_closed.exit: ; preds = %rb_io_check_initial %76 = call i64 @rb_protect(ptr noundef nonnull @io_new_instance, i64 noundef %26, ptr noundef nonnull %5) #24 %77 = load i32, ptr %5, align 4 %.not22 = icmp eq i32 %77, 0 - br i1 %.not22, label %86, label %78 + br i1 %.not22, label %83, label %78 78: ; preds = %72 %79 = load i32, ptr %66, align 4 %80 = call i32 @close(i32 noundef %79) #24 - %81 = icmp eq i64 %27, 4 - br i1 %81, label %84, label %82 - -82: ; preds = %78 - %83 = call i64 @rb_io_close(i64 noundef %27) - br label %84 - -84: ; preds = %82, %78 - %85 = load i32, ptr %5, align 4 - call void @rb_jump_tag(i32 noundef %85) #26 + %81 = call i64 @rb_io_close(i64 noundef %27) + %82 = load i32, ptr %5, align 4 + call void @rb_jump_tag(i32 noundef %82) #26 unreachable -86: ; preds = %72 - %87 = and i64 %76, 7 - %88 = icmp ne i64 %87, 0 - %89 = icmp eq i64 %76, 0 - %90 = or i1 %89, %88 - br i1 %90, label %RB_OBJ_FROZEN.exit.thread.i.i26, label %91 +83: ; preds = %72 + %84 = and i64 %76, 7 + %85 = icmp ne i64 %84, 0 + %85 = icmp eq i64 %76, 0 + %87 = or i1 %86, %85 + br i1 %87, label %RB_OBJ_FROZEN.exit.thread.i.i26, label %88 -91: ; preds = %86 - %92 = inttoptr i64 %76 to ptr - %93 = load i64, ptr %92, align 8 - %94 = and i64 %93, 31 - %95 = icmp eq i64 %94, 27 - %96 = and i64 %93, 2048 - %97 = icmp ne i64 %96, 0 - %or.cond.i.i25 = or i1 %95, %97 +88: ; preds = %83 + %87 = inttoptr i64 %76 to ptr + %88 = load i64, ptr %87, align 8 + %89 = and i64 %88, 31 + %90 = icmp eq i64 %89, 27 + %93 = and i64 %90, 2048 + %94 = icmp ne i64 %93, 0 + %or.cond.i.i25 = or i1 %92, %94 br i1 %or.cond.i.i25, label %RB_OBJ_FROZEN.exit.thread.i.i26, label %rb_io_taint_check.exit27 -RB_OBJ_FROZEN.exit.thread.i.i26: ; preds = %91, %86 +RB_OBJ_FROZEN.exit.thread.i.i26: ; preds = %88, %83 call void @rb_error_frozen_object(i64 noundef %76) #26 unreachable -rb_io_taint_check.exit27: ; preds = %91 - %98 = getelementptr inbounds nuw i8, ptr %92, i64 16 - %99 = load ptr, ptr %98, align 8 - %.not.i.i28 = icmp eq ptr %99, null - br i1 %.not.i.i28, label %100, label %rb_io_check_initialized.exit.i29 +rb_io_taint_check.exit27: ; preds = %88 + %95 = getelementptr inbounds nuw i8, ptr %89, i64 16 + %96 = load ptr, ptr %95, align 8 + %.not.i.i28 = icmp eq ptr %96, null + br i1 %.not.i.i28, label %97, label %rb_io_check_initialized.exit.i29 -100: ; preds = %rb_io_taint_check.exit27 - %101 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %101, ptr noundef nonnull @.str.4) #26 +97: ; preds = %rb_io_taint_check.exit27 + %98 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %98, ptr noundef nonnull @.str.4) #26 unreachable rb_io_check_initialized.exit.i29: ; preds = %rb_io_taint_check.exit27 - %102 = getelementptr inbounds nuw i8, ptr %99, i64 16 - %103 = load i32, ptr %102, align 8 - %104 = icmp slt i32 %103, 0 - br i1 %104, label %105, label %rb_io_synchronized.exit + %99 = getelementptr inbounds nuw i8, ptr %96, i64 16 + %100 = load i32, ptr %99, align 8 + %101 = icmp slt i32 %100, 0 + br i1 %101, label %102, label %rb_io_synchronized.exit -105: ; preds = %rb_io_check_initialized.exit.i29 +102: ; preds = %rb_io_check_initialized.exit.i29 call void @rb_thread_check_ints() #24 - %106 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %106, ptr noundef nonnull @closed_stream) #26 + %102 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %102, ptr noundef nonnull @closed_stream) #26 unreachable rb_io_synchronized.exit: ; preds = %rb_io_check_initialized.exit.i29 - %107 = getelementptr inbounds nuw i8, ptr %99, i64 20 - %108 = load i32, ptr %107, align 4 - %109 = or i32 %108, 8 - store i32 %109, ptr %107, align 4 - %110 = load i64, ptr %9, align 8 - call fastcc void @extract_binmode(i64 noundef %110, ptr noundef %11) - %111 = load i32, ptr %11, align 4 - %112 = and i32 %111, 4 - %.not23 = icmp ne i32 %112, 0 - %113 = load i64, ptr %7, align 8 - %114 = icmp eq i64 %113, 4 - %or.cond = select i1 %.not23, i1 %114, i1 false - br i1 %or.cond, label %115, label %143 - -115: ; preds = %rb_io_synchronized.exit - %116 = load i64, ptr %42, align 8 - %117 = and i64 %116, 31 - %118 = icmp eq i64 %117, 27 - %119 = and i64 %116, 2048 - %120 = icmp ne i64 %119, 0 - %or.cond.i.i.i = or i1 %118, %120 + %104 = getelementptr inbounds nuw i8, ptr %96, i64 20 + %105 = load i32, ptr %104, align 4 + %106 = or i32 %105, 8 + store i32 %106, ptr %104, align 4 + %107 = load i64, ptr %9, align 8 + call fastcc void @extract_binmode(i64 noundef %107, ptr noundef %11) + %108 = load i32, ptr %11, align 4 + %107 = and i32 %108, 4 + %108 = icmp ne i32 %107, 0 + %109 = load i64, ptr %7, align 8 + %111 = icmp eq i64 %110, 4 + %110 = select i1 %108, i1 %111, i1 false + br i1 %or.cond, label %112, label %140 + +112: ; preds = %rb_io_synchronized.exit + %.not23 = load i64, ptr %42, align 8 + %113 = and i64 %.not23, 31 + %114 = icmp eq i64 %113, 27 + %or.cond = and i64 %.not23, 2048 + %117 = icmp ne i64 %or.cond, 0 + %or.cond.i.i.i = or i1 %115, %117 br i1 %or.cond.i.i.i, label %RB_OBJ_FROZEN.exit.thread.i.i.i, label %rb_io_taint_check.exit.i -RB_OBJ_FROZEN.exit.thread.i.i.i: ; preds = %115 +RB_OBJ_FROZEN.exit.thread.i.i.i: ; preds = %112 call void @rb_error_frozen_object(i64 noundef %27) #26 unreachable -rb_io_taint_check.exit.i: ; preds = %115 - %121 = load ptr, ptr %48, align 8 - %.not.i.i.i = icmp eq ptr %121, null - br i1 %.not.i.i.i, label %122, label %rb_io_check_initialized.exit.i.i +rb_io_taint_check.exit.i: ; preds = %112 + %118 = load ptr, ptr %48, align 8 + %.not.i.i.i = icmp eq ptr %118, null + br i1 %.not.i.i.i, label %119, label %rb_io_check_initialized.exit.i.i -122: ; preds = %rb_io_taint_check.exit.i - %123 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %123, ptr noundef nonnull @.str.4) #26 +119: ; preds = %rb_io_taint_check.exit.i + %120 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %120, ptr noundef nonnull @.str.4) #26 unreachable rb_io_check_initialized.exit.i.i: ; preds = %rb_io_taint_check.exit.i - %124 = getelementptr inbounds nuw i8, ptr %121, i64 16 - %125 = load i32, ptr %124, align 8 - %126 = icmp slt i32 %125, 0 - br i1 %126, label %127, label %129 + %121 = getelementptr inbounds nuw i8, ptr %118, i64 16 + %122 = load i32, ptr %121, align 8 + %123 = icmp slt i32 %122, 0 + br i1 %123, label %124, label %126 -127: ; preds = %rb_io_check_initialized.exit.i.i +124: ; preds = %rb_io_check_initialized.exit.i.i call void @rb_thread_check_ints() #24 - %128 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %128, ptr noundef nonnull @closed_stream) #26 - unreachable - -129: ; preds = %rb_io_check_initialized.exit.i.i - call fastcc void @io_ascii8bit_binmode(ptr noundef nonnull %121) - %130 = load i64, ptr %92, align 8 - %131 = and i64 %130, 31 - %132 = icmp eq i64 %131, 27 - %133 = and i64 %130, 2048 - %134 = icmp ne i64 %133, 0 - %or.cond.i.i.i33 = or i1 %132, %134 + %124 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %124, ptr noundef nonnull @closed_stream) #26 + unreachable + +126: ; preds = %rb_io_check_initialized.exit.i.i + call fastcc void @io_ascii8bit_binmode(ptr noundef nonnull %118) + %127 = load i64, ptr %89, align 8 + %128 = and i64 %127, 31 + %129 = icmp eq i64 %128, 27 + %130 = and i64 %127, 2048 + %131 = icmp ne i64 %130, 0 + %or.cond.i.i.i33 = or i1 %129, %131 br i1 %or.cond.i.i.i33, label %RB_OBJ_FROZEN.exit.thread.i.i.i37, label %rb_io_taint_check.exit.i34 -RB_OBJ_FROZEN.exit.thread.i.i.i37: ; preds = %129 +RB_OBJ_FROZEN.exit.thread.i.i.i37: ; preds = %126 call void @rb_error_frozen_object(i64 noundef %76) #26 unreachable -rb_io_taint_check.exit.i34: ; preds = %129 - %135 = load ptr, ptr %98, align 8 - %.not.i.i.i35 = icmp eq ptr %135, null - br i1 %.not.i.i.i35, label %136, label %rb_io_check_initialized.exit.i.i36 +rb_io_taint_check.exit.i34: ; preds = %126 + %132 = load ptr, ptr %95, align 8 + %.not.i.i.i35 = icmp eq ptr %132, null + br i1 %.not.i.i.i35, label %133, label %rb_io_check_initialized.exit.i.i36 -136: ; preds = %rb_io_taint_check.exit.i34 - %137 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %137, ptr noundef nonnull @.str.4) #26 +133: ; preds = %rb_io_taint_check.exit.i34 + %134 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %134, ptr noundef nonnull @.str.4) #26 unreachable rb_io_check_initialized.exit.i.i36: ; preds = %rb_io_taint_check.exit.i34 - %138 = getelementptr inbounds nuw i8, ptr %135, i64 16 - %139 = load i32, ptr %138, align 8 - %140 = icmp slt i32 %139, 0 - br i1 %140, label %141, label %rb_io_ascii8bit_binmode.exit38 + %135 = getelementptr inbounds nuw i8, ptr %132, i64 16 + %136 = load i32, ptr %135, align 8 + %137 = icmp slt i32 %136, 0 + br i1 %137, label %138, label %rb_io_ascii8bit_binmode.exit38 -141: ; preds = %rb_io_check_initialized.exit.i.i36 +138: ; preds = %rb_io_check_initialized.exit.i.i36 call void @rb_thread_check_ints() #24 - %142 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %142, ptr noundef nonnull @closed_stream) #26 + %138 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %138, ptr noundef nonnull @closed_stream) #26 unreachable rb_io_ascii8bit_binmode.exit38: ; preds = %rb_io_check_initialized.exit.i.i36 - call fastcc void @io_ascii8bit_binmode(ptr noundef nonnull %135) - br label %143 - -143: ; preds = %rb_io_ascii8bit_binmode.exit38, %rb_io_synchronized.exit - %144 = getelementptr inbounds nuw i8, ptr %49, i64 20 - %145 = load i32, ptr %144, align 4 - %146 = or i32 %145, %111 - store i32 %146, ptr %144, align 4 - %147 = load i32, ptr %107, align 4 - %148 = or i32 %147, %111 - store i32 %148, ptr %107, align 4 - %149 = call i64 @rb_assoc_new(i64 noundef %27, i64 noundef %76) #24 - %150 = call i32 @rb_block_given_p() #24 - %.not24 = icmp eq i32 %150, 0 - br i1 %.not24, label %155, label %151 - -151: ; preds = %143 + call fastcc void @io_ascii8bit_binmode(ptr noundef nonnull %132) + br label %140 + +140: ; preds = %rb_io_ascii8bit_binmode.exit38, %rb_io_synchronized.exit + %141 = getelementptr inbounds nuw i8, ptr %49, i64 20 + %142 = load i32, ptr %141, align 4 + %143 = or i32 %142, %108 + store i32 %143, ptr %141, align 4 + %144 = load i32, ptr %104, align 4 + %145 = or i32 %144, %108 + store i32 %145, ptr %104, align 4 + %144 = call i64 @rb_assoc_new(i64 noundef %27, i64 noundef %76) #24 + %145 = call i32 @rb_block_given_p() #24 + %146 = icmp eq i32 %145, 0 + br i1 %146, label %152, label %148 + +148: ; preds = %140 store i64 %27, ptr %12, align 16 - %152 = getelementptr inbounds nuw i8, ptr %12, i64 8 - store i64 %76, ptr %152, align 8 - %153 = ptrtoint ptr %12 to i64 - %154 = call i64 @rb_ensure(ptr noundef nonnull @rb_yield, i64 noundef %149, ptr noundef nonnull @pipe_pair_close, i64 noundef %153) #24 - br label %155 - -155: ; preds = %143, %151 - %.0 = phi i64 [ %154, %151 ], [ %149, %143 ] + %149 = getelementptr inbounds nuw i8, ptr %12, i64 8 + store i64 %76, ptr %149, align 8 + %.not24 = ptrtoint ptr %12 to i64 + %151 = call i64 @rb_ensure(ptr noundef nonnull @rb_yield, i64 noundef %146, ptr noundef nonnull @pipe_pair_close, i64 noundef %150) #24 + br label %152 + +152: ; preds = %140, %148 + %152 = phi i64 [ %151, %148 ], [ %146, %140 ] ret i64 %.0 } diff --git a/bench/ruby/optimized/numeric.ll b/bench/ruby/optimized/numeric.ll index caf8bc9ce15..486e428c5cc 100644 --- a/bench/ruby/optimized/numeric.ll +++ b/bench/ruby/optimized/numeric.ll @@ -219,7 +219,7 @@ declare void @rb_raise(i64 noundef, ptr noundef, ...) local_unnamed_addr #1 define hidden range(i32 0, 3) i32 @rb_num_get_rounding_option(i64 noundef %0) local_unnamed_addr #2 { %2 = alloca i64, align 8 %3 = icmp eq i64 %0, 4 - br i1 %3, label %53, label %4 + br i1 %3, label %51, label %4 4: ; preds = %1 %5 = load i64, ptr @rb_num_get_rounding_option.round_kwds, align 8 @@ -234,7 +234,7 @@ define hidden range(i32 0, 3) i32 @rb_num_get_rounding_option(i64 noundef %0) lo 8: ; preds = %6, %4 %9 = call i32 @rb_get_kwargs(i64 noundef %0, ptr noundef nonnull @rb_num_get_rounding_option.round_kwds, i32 noundef 0, i32 noundef 1, ptr noundef nonnull %2) #23 %.not30 = icmp eq i32 %9, 0 - br i1 %.not30, label %53, label %10 + br i1 %.not30, label %51, label %10 10: ; preds = %8 %11 = load i64, ptr %2, align 8 @@ -258,74 +258,70 @@ RB_SYMBOL_P.exit: ; preds = %14 RB_SYMBOL_P.exit.thread: ; preds = %10, %RB_SYMBOL_P.exit %23 = call i64 @rb_sym2str(i64 noundef %11) #23 - br label %33 + br label %31 RB_SYMBOL_P.exit.thread31: ; preds = %14 %24 = icmp eq i64 %11, 4 - br i1 %24, label %53, label %.critedge + br i1 %24, label %51, label %.critedge RB_SYMBOL_P.exit.thread31.thread: ; preds = %RB_SYMBOL_P.exit - %25 = icmp eq i64 %11, 4 - br i1 %25, label %53, label %26 - -26: ; preds = %RB_SYMBOL_P.exit.thread31.thread - %27 = inttoptr i64 %11 to ptr - %28 = load i64, ptr %27, align 8 - %29 = and i64 %28, 31 - %30 = icmp eq i64 %29, 5 - br i1 %30, label %33, label %.critedge + %25 = inttoptr i64 %11 to ptr + %26 = load i64, ptr %25, align 8 + %27 = and i64 %26, 31 + %28 = icmp eq i64 %27, 5 + br i1 %28, label %31, label %.critedge -.critedge: ; preds = %RB_SYMBOL_P.exit.thread31, %26 - %31 = call i64 @rb_check_string_type(i64 noundef %11) #23 - %32 = icmp eq i64 %31, 4 - br i1 %32, label %50, label %33 +.critedge: ; preds = %RB_SYMBOL_P.exit.thread31, %RB_SYMBOL_P.exit.thread31.thread + %30 = call i64 @rb_check_string_type(i64 noundef %11) #23 + %30 = icmp eq i64 %30, 4 + br i1 %30, label %48, label %31 -33: ; preds = %.critedge, %26, %RB_SYMBOL_P.exit.thread - %.027 = phi i64 [ %23, %RB_SYMBOL_P.exit.thread ], [ %11, %26 ], [ %31, %.critedge ] +31: ; preds = %.critedge, %RB_SYMBOL_P.exit.thread31.thread, %RB_SYMBOL_P.exit.thread + %32 = phi i64 [ %23, %RB_SYMBOL_P.exit.thread ], [ %11, %RB_SYMBOL_P.exit.thread31.thread ], [ %29, %.critedge ] call void @rb_must_asciicompat(i64 noundef %.027) #23 - %34 = inttoptr i64 %.027 to ptr - %35 = load i64, ptr %34, align 8, !noalias !7 - %36 = and i64 %35, 8192 - %.not.i.i = icmp eq i64 %36, 0 - %37 = getelementptr inbounds nuw i8, ptr %34, i64 24 - br i1 %.not.i.i, label %RSTRING_PTR.exit, label %38 + %32 = inttoptr i64 %.027 to ptr + %33 = load i64, ptr %32, align 8, !noalias !7 + %.027 = and i64 %33, 8192 + %.not.i.i = icmp eq i64 %34, 0 + %34 = getelementptr inbounds nuw i8, ptr %32, i64 24 + br i1 %.not.i.i, label %38, label %36 -38: ; preds = %33 - %.sroa.2.0.copyload.i = load ptr, ptr %37, align 8 +36: ; preds = %31 + %37 = load ptr, ptr %34, align 8 br label %RSTRING_PTR.exit -RSTRING_PTR.exit: ; preds = %33, %38 - %.sroa.2.0.i = phi ptr [ %.sroa.2.0.copyload.i, %38 ], [ %37, %33 ] - %39 = getelementptr inbounds nuw i8, ptr %34, i64 16 - %40 = load i64, ptr %39, align 8 - switch i64 %40, label %50 [ - i64 2, label %41 - i64 4, label %44 +RSTRING_PTR.exit: ; preds = %31, %36 + %.sroa.2.0.copyload.i = phi ptr [ %37, %36 ], [ %35, %31 ] + %37 = getelementptr inbounds nuw i8, ptr %32, i64 16 + %38 = load i64, ptr %37, align 8 + switch i64 %38, label %48 [ + i64 2, label %39 + i64 4, label %42 ] -41: ; preds = %RSTRING_PTR.exit - %42 = call i32 @rb_memcicmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.2, i64 noundef 2) #23 - %43 = icmp eq i32 %42, 0 - br i1 %43, label %53, label %50 +39: ; preds = %38 + %40 = call i32 @rb_memcicmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.2, i64 noundef 2) #23 + %41 = icmp eq i32 %40, 0 + br i1 %41, label %51, label %48 -44: ; preds = %RSTRING_PTR.exit - %45 = call i32 @rb_memcicmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.3, i64 noundef 4) #23 - %46 = icmp eq i32 %45, 0 - br i1 %46, label %53, label %47 +42: ; preds = %RSTRING_PTR.exit + %43 = call i32 @rb_memcicmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.3, i64 noundef 4) #23 + %44 = icmp eq i32 %43, 0 + br i1 %44, label %51, label %45 -47: ; preds = %44 - %48 = call i32 @strncasecmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.4, i64 noundef 4) #24 - %49 = icmp eq i32 %48, 0 - br i1 %49, label %53, label %50 +45: ; preds = %42 + %46 = call i32 @strncasecmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.4, i64 noundef 4) #24 + %47 = icmp eq i32 %46, 0 + br i1 %47, label %51, label %48 -50: ; preds = %RSTRING_PTR.exit, %41, %47, %.critedge - %51 = load i64, ptr @rb_eArgError, align 8 - %52 = load i64, ptr %2, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %51, ptr noundef nonnull @.str.5, i64 noundef %52) #22 +48: ; preds = %38, %39, %45, %.critedge + %49 = load i64, ptr @rb_eArgError, align 8 + %50 = load i64, ptr %2, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %49, ptr noundef nonnull @.str.5, i64 noundef %50) #22 unreachable -53: ; preds = %RB_SYMBOL_P.exit.thread31.thread, %8, %RB_SYMBOL_P.exit.thread31, %1, %47, %44, %41 - %.028 = phi i32 [ 0, %41 ], [ 1, %44 ], [ 2, %47 ], [ 0, %1 ], [ 0, %RB_SYMBOL_P.exit.thread31 ], [ 0, %8 ], [ 0, %RB_SYMBOL_P.exit.thread31.thread ] +51: ; preds = %8, %RB_SYMBOL_P.exit.thread31, %1, %45, %42, %39 + %.028 = phi i32 [ 0, %39 ], [ 1, %42 ], [ 2, %45 ], [ 0, %1 ], [ 0, %RB_SYMBOL_P.exit.thread31 ], [ 0, %8 ] ret i32 %.028 } diff --git a/bench/ruby/optimized/range.ll b/bench/ruby/optimized/range.ll index b7730e8deb9..16a2bcc04ec 100644 --- a/bench/ruby/optimized/range.ll +++ b/bench/ruby/optimized/range.ll @@ -1683,7 +1683,7 @@ RANGE_EXCL.exit: ; preds = %40, %45 67: ; preds = %65 %68 = ashr i64 %7, 1 %69 = ashr i64 %60, 1 - br label %70 + br label %69 70: ; preds = %70, %67 %.0108 = phi i64 [ %68, %67 ], [ %74, %70 ] @@ -2079,7 +2079,7 @@ RANGE_EXCL.exit: ; preds = %7, %14 28: ; preds = %25 %29 = and i64 %17, 1 %.not66 = icmp eq i64 %29, 0 - br i1 %.not66, label %.thread, label %30 + br i1 %.not66, label %rb_integer_type_p.exit.thread, label %30 30: ; preds = %28 br i1 %.not65, label %35, label %31 @@ -2121,187 +2121,183 @@ RANGE_EXCL.exit: ; preds = %7, %14 46: ; preds = %25 %47 = icmp eq i64 %10, 4 - br i1 %47, label %rb_integer_type_p.exit.thread, label %49 + br i1 %47, label %rb_integer_type_p.exit.thread, label %48 -.thread: ; preds = %28 - %48 = icmp eq i64 %10, 4 - br label %rb_integer_type_p.exit.thread - -49: ; preds = %46 - %50 = and i64 %10, 6 - %51 = icmp ne i64 %50, 0 - %52 = icmp eq i64 %10, 0 - %53 = or i1 %52, %51 - br i1 %53, label %rb_integer_type_p.exit.thread58, label %rb_integer_type_p.exit +48: ; preds = %46 + %48 = and i64 %10, 6 + %50 = icmp ne i64 %49, 0 + %51 = icmp eq i64 %10, 0 + %52 = or i1 %51, %50 + br i1 %52, label %rb_integer_type_p.exit.thread58, label %rb_integer_type_p.exit -rb_integer_type_p.exit: ; preds = %49 - %54 = inttoptr i64 %10 to ptr - %55 = load i64, ptr %54, align 8 - %56 = and i64 %55, 31 - %57 = icmp eq i64 %56, 10 - br i1 %57, label %rb_integer_type_p.exit.thread, label %rb_integer_type_p.exit.thread58 - -rb_integer_type_p.exit.thread: ; preds = %.thread, %rb_integer_type_p.exit, %46 - %58 = phi i1 [ false, %rb_integer_type_p.exit ], [ true, %46 ], [ %48, %.thread ] - %59 = and i64 %17, 1 - %.not.i31 = icmp eq i64 %59, 0 - br i1 %.not.i31, label %60, label %rb_integer_type_p.exit33.thread - -60: ; preds = %rb_integer_type_p.exit.thread - %61 = and i64 %17, 6 - %62 = icmp ne i64 %61, 0 - %63 = icmp eq i64 %17, 0 - %64 = or i1 %63, %62 - br i1 %64, label %rb_integer_type_p.exit.thread58, label %rb_integer_type_p.exit33 - -rb_integer_type_p.exit33: ; preds = %60 - %65 = inttoptr i64 %17 to ptr - %66 = load i64, ptr %65, align 8 - %67 = and i64 %66, 31 - %68 = icmp eq i64 %67, 10 - br i1 %68, label %rb_integer_type_p.exit33.thread, label %rb_integer_type_p.exit.thread58 +rb_integer_type_p.exit: ; preds = %48 + %53 = inttoptr i64 %10 to ptr + %54 = load i64, ptr %53, align 8 + %55 = and i64 %54, 31 + %56 = icmp eq i64 %55, 10 + br i1 %56, label %rb_integer_type_p.exit.thread, label %rb_integer_type_p.exit.thread58 + +rb_integer_type_p.exit.thread: ; preds = %28, %rb_integer_type_p.exit, %46 + %57 = phi i1 [ false, %rb_integer_type_p.exit ], [ true, %46 ], [ false, %28 ] + %58 = and i64 %17, 1 + %.not.i31 = icmp eq i64 %58, 0 + br i1 %.not.i31, label %59, label %rb_integer_type_p.exit33.thread + +59: ; preds = %rb_integer_type_p.exit.thread + %.not.i31 = and i64 %17, 6 + %61 = icmp ne i64 %.not.i31, 0 + %62 = icmp eq i64 %17, 0 + %63 = or i1 %62, %61 + br i1 %63, label %rb_integer_type_p.exit.thread58, label %rb_integer_type_p.exit33 + +rb_integer_type_p.exit33: ; preds = %59 + %64 = inttoptr i64 %17 to ptr + %65 = load i64, ptr %64, align 8 + %66 = and i64 %65, 31 + %67 = icmp eq i64 %66, 10 + br i1 %67, label %rb_integer_type_p.exit33.thread, label %rb_integer_type_p.exit.thread58 rb_integer_type_p.exit33.thread: ; preds = %rb_integer_type_p.exit.thread, %rb_integer_type_p.exit33 - br i1 %.not65, label %71, label %69 - -69: ; preds = %rb_integer_type_p.exit33.thread - %70 = tail call i64 @rb_int_minus(i64 noundef %17, i64 noundef 3) #10 - br label %71 - -71: ; preds = %69, %rb_integer_type_p.exit33.thread - %.1 = phi i64 [ %70, %69 ], [ %17, %rb_integer_type_p.exit33.thread ] - %72 = and i64 %.1, 1 - %.not.i34 = icmp eq i64 %72, 0 - br i1 %.not.i34, label %73, label %range_reverse_each_positive_bignum_section.exit - -73: ; preds = %71 - %74 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 - %.not.i.i35 = icmp eq i32 %74, 0 - br i1 %.not.i.i35, label %range_reverse_each_positive_bignum_section.exit, label %75 - -75: ; preds = %73 - %or.cond.i = or i1 %27, %58 - br i1 %or.cond.i, label %78, label %76 - -76: ; preds = %75 - %77 = tail call i32 @rb_big_sign(i64 noundef %10) #10 - %.not.i7.i = icmp eq i32 %77, 0 - br i1 %.not.i7.i, label %78, label %80 - -78: ; preds = %76, %75 - %79 = tail call i64 @rb_int2big(i64 noundef 4611686018427387904) #10 - br label %80 - -80: ; preds = %78, %76 - %.0.i36 = phi i64 [ %79, %78 ], [ %10, %76 ] - %81 = tail call i64 @rb_big_cmp(i64 noundef %.0.i36, i64 noundef %.1) #10 - %.not6.i.i = icmp eq i64 %81, 3 + br i1 %.not65, label %70, label %68 + +68: ; preds = %rb_integer_type_p.exit33.thread + %69 = tail call i64 @rb_int_minus(i64 noundef %17, i64 noundef 3) #10 + br label %69 + +70: ; preds = %68, %rb_integer_type_p.exit33.thread + %70 = phi i64 [ %69, %68 ], [ %17, %rb_integer_type_p.exit33.thread ] + %71 = and i64 %.1, 1 + %.not.i34 = icmp eq i64 %71, 0 + br i1 %.not.i34, label %72, label %range_reverse_each_positive_bignum_section.exit + +72: ; preds = %70 + %.not.i34 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 + %.not.i.i35 = icmp eq i32 %73, 0 + br i1 %.not.i.i35, label %range_reverse_each_positive_bignum_section.exit, label %74 + +74: ; preds = %72 + %.not.i.i35 = or i1 %27, %57 + br i1 %.not.i.i35, label %77, label %75 + +75: ; preds = %74 + %or.cond.i = tail call i32 @rb_big_sign(i64 noundef %10) #10 + %.not.i7.i = icmp eq i32 %or.cond.i, 0 + br i1 %.not.i7.i, label %77, label %79 + +77: ; preds = %75, %74 + %.not.i7.i = tail call i64 @rb_int2big(i64 noundef 4611686018427387904) #10 + br label %78 + +79: ; preds = %77, %75 + %79 = phi i64 [ %.not.i7.i, %77 ], [ %10, %75 ] + %80 = tail call i64 @rb_big_cmp(i64 noundef %79, i64 noundef %.1) #10 + %.not6.i.i = icmp eq i64 %80, 3 br i1 %.not6.i.i, label %range_reverse_each_positive_bignum_section.exit, label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %80, %85 - %82 = phi i64 [ %87, %85 ], [ %81, %80 ] - %.07.i.i = phi i64 [ %86, %85 ], [ %.1, %80 ] - %83 = tail call i64 @rb_yield(i64 noundef %.07.i.i) #10 - %84 = icmp eq i64 %82, 1 - br i1 %84, label %range_reverse_each_positive_bignum_section.exit, label %85 - -85: ; preds = %.lr.ph.i.i - %86 = tail call i64 @rb_big_minus(i64 noundef %.07.i.i, i64 noundef 3) #10 - %87 = tail call i64 @rb_big_cmp(i64 noundef %.0.i36, i64 noundef %86) #10 - %.not.i8.i = icmp eq i64 %87, 3 +.lr.ph.i.i: ; preds = %79, %84 + %.not6.i.i = phi i64 [ %86, %84 ], [ %80, %79 ] + %.07.i.i = phi i64 [ %85, %84 ], [ %.1, %79 ] + %82 = tail call i64 @rb_yield(i64 noundef %.07.i.i) #10 + %83 = icmp eq i64 %.not6.i.i, 1 + br i1 %83, label %range_reverse_each_positive_bignum_section.exit, label %84 + +84: ; preds = %.lr.ph.i.i + %84 = tail call i64 @rb_big_minus(i64 noundef %.07.i.i, i64 noundef 3) #10 + %86 = tail call i64 @rb_big_cmp(i64 noundef %.0.i36, i64 noundef %85) #10 + %.not.i8.i = icmp eq i64 %86, 3 br i1 %.not.i8.i, label %range_reverse_each_positive_bignum_section.exit, label %.lr.ph.i.i, !llvm.loop !20 -range_reverse_each_positive_bignum_section.exit: ; preds = %.lr.ph.i.i, %85, %71, %73, %80 - %brmerge = or i1 %27, %58 +range_reverse_each_positive_bignum_section.exit: ; preds = %.lr.ph.i.i, %84, %70, %72, %79 + %.not.i8.i = or i1 %27, %57 %.mux = select i1 %27, i64 %10, i64 -9223372036854775807 - br i1 %brmerge, label %90, label %88 - -88: ; preds = %range_reverse_each_positive_bignum_section.exit - %89 = tail call i32 @rb_big_sign(i64 noundef %10) #10 - %.not15.i46 = icmp eq i32 %89, 0 - br i1 %.not15.i46, label %90, label %range_reverse_each_fixnum_section.exit47 - -90: ; preds = %range_reverse_each_positive_bignum_section.exit, %88 - %.012.i38 = phi i64 [ %.mux, %range_reverse_each_positive_bignum_section.exit ], [ -9223372036854775807, %88 ] - br i1 %.not.i34, label %91, label %93 - -91: ; preds = %90 - %92 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 - %.not.i.i45 = icmp eq i32 %92, 0 - br i1 %.not.i.i45, label %range_reverse_each_fixnum_section.exit47.thread, label %93 - -93: ; preds = %91, %90 - %.013.i40 = phi i64 [ %.1, %90 ], [ 9223372036854775807, %91 ] - %94 = ashr i64 %.012.i38, 1 - %95 = ashr i64 %.013.i40, 1 - %.not17.i41 = icmp slt i64 %95, %94 + br i1 %brmerge, label %89, label %87 + +87: ; preds = %range_reverse_each_positive_bignum_section.exit + %88 = tail call i32 @rb_big_sign(i64 noundef %10) #10 + %.not15.i46 = icmp eq i32 %88, 0 + br i1 %.not15.i46, label %89, label %range_reverse_each_fixnum_section.exit47 + +89: ; preds = %range_reverse_each_positive_bignum_section.exit, %87 + %.not15.i46 = phi i64 [ %.mux, %range_reverse_each_positive_bignum_section.exit ], [ -9223372036854775807, %87 ] + br i1 %.not.i34, label %90, label %92 + +90: ; preds = %89 + %.012.i38 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 + %.not.i.i45 = icmp eq i32 %91, 0 + br i1 %.not.i.i45, label %range_reverse_each_fixnum_section.exit47.thread, label %92 + +92: ; preds = %90, %89 + %.not.i.i45 = phi i64 [ %.1, %89 ], [ 9223372036854775807, %90 ] + %93 = ashr i64 %.not15.i46, 1 + %94 = ashr i64 %.013.i40, 1 + %.not17.i41 = icmp slt i64 %94, %93 br i1 %.not17.i41, label %range_reverse_each_fixnum_section.exit47, label %.lr.ph.i42 -.lr.ph.i42: ; preds = %93, %.lr.ph.i42 - %.018.i43 = phi i64 [ %99, %.lr.ph.i42 ], [ %95, %93 ] - %96 = shl i64 %.018.i43, 1 - %97 = or disjoint i64 %96, 1 - %98 = tail call i64 @rb_yield(i64 noundef %97) #10 - %99 = add nsw i64 %.018.i43, -1 - %.not.not.i44 = icmp sgt i64 %.018.i43, %94 +.lr.ph.i42: ; preds = %92, %.lr.ph.i42 + %.not17.i41 = phi i64 [ %98, %.lr.ph.i42 ], [ %94, %92 ] + %95 = shl i64 %.018.i43, 1 + %96 = or disjoint i64 %95, 1 + %97 = tail call i64 @rb_yield(i64 noundef %96) #10 + %.018.i43 = add nsw i64 %.not17.i41, -1 + %96 = icmp sgt i64 %.018.i43, %93 br i1 %.not.not.i44, label %.lr.ph.i42, label %range_reverse_each_fixnum_section.exit47, !llvm.loop !19 -range_reverse_each_fixnum_section.exit47: ; preds = %.lr.ph.i42, %88, %93 - %100 = phi i1 [ false, %88 ], [ %58, %93 ], [ %58, %.lr.ph.i42 ] - br i1 %.not.i34, label %range_reverse_each_fixnum_section.exit47.thread, label %103 +range_reverse_each_fixnum_section.exit47: ; preds = %.lr.ph.i42, %87, %92 + %.not.not.i44 = phi i1 [ false, %87 ], [ %57, %92 ], [ %57, %.lr.ph.i42 ] + br i1 %.not.i34, label %range_reverse_each_fixnum_section.exit47.thread, label %102 -range_reverse_each_fixnum_section.exit47.thread: ; preds = %91, %range_reverse_each_fixnum_section.exit47 - %101 = phi i1 [ %100, %range_reverse_each_fixnum_section.exit47 ], [ %58, %91 ] - %102 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 - %.not8.i = icmp eq i32 %102, 0 - br i1 %.not8.i, label %106, label %103 +range_reverse_each_fixnum_section.exit47.thread: ; preds = %90, %range_reverse_each_fixnum_section.exit47 + %100 = phi i1 [ %99, %range_reverse_each_fixnum_section.exit47 ], [ %57, %90 ] + %101 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 + %.not8.i = icmp eq i32 %101, 0 + br i1 %.not8.i, label %105, label %102 -103: ; preds = %range_reverse_each_fixnum_section.exit47.thread, %range_reverse_each_fixnum_section.exit47 - %104 = phi i1 [ %101, %range_reverse_each_fixnum_section.exit47.thread ], [ %100, %range_reverse_each_fixnum_section.exit47 ] - %105 = tail call i64 @rb_int2big(i64 noundef -4611686018427387905) #10 - br i1 %104, label %107, label %108 +102: ; preds = %range_reverse_each_fixnum_section.exit47, %range_reverse_each_fixnum_section.exit47 + %.not8.i = phi i1 [ %100, %range_reverse_each_fixnum_section.exit47 ], [ %.not.not.i44, %range_reverse_each_fixnum_section.exit47 ] + %104 = tail call i64 @rb_int2big(i64 noundef -4611686018427387905) #10 + br i1 %103, label %106, label %107 -106: ; preds = %range_reverse_each_fixnum_section.exit47.thread - br i1 %101, label %107, label %108 +105: ; preds = %range_reverse_each_fixnum_section.exit47.thread + br i1 %100, label %106, label %107 -107: ; preds = %103, %106 - %.0.i4964 = phi i64 [ %105, %103 ], [ %.1, %106 ] +106: ; preds = %102, %105 + %.0.i4964 = phi i64 [ %104, %102 ], [ %.1, %105 ] tail call fastcc void @range_reverse_each_bignum_beginless(i64 noundef %.0.i4964) #12 unreachable -108: ; preds = %103, %106 - %.0.i4963 = phi i64 [ %105, %103 ], [ %.1, %106 ] - br i1 %27, label %range_reverse_each_fixnum_section.exit, label %109 +107: ; preds = %102, %105 + %.0.i4963 = phi i64 [ %104, %102 ], [ %.1, %105 ] + br i1 %27, label %range_reverse_each_fixnum_section.exit, label %108 -109: ; preds = %108 - %110 = tail call i32 @rb_big_sign(i64 noundef %10) #10 - %.not10.i = icmp eq i32 %110, 0 - br i1 %.not10.i, label %111, label %range_reverse_each_fixnum_section.exit +108: ; preds = %107 + %.0.i4963 = tail call i32 @rb_big_sign(i64 noundef %10) #10 + %.not10.i = icmp eq i32 %109, 0 + br i1 %.not10.i, label %110, label %range_reverse_each_fixnum_section.exit -111: ; preds = %109 - %112 = tail call i64 @rb_big_cmp(i64 noundef %10, i64 noundef %.0.i4963) #10 - %.not6.i.i50 = icmp eq i64 %112, 3 +110: ; preds = %108 + %.not10.i = tail call i64 @rb_big_cmp(i64 noundef %10, i64 noundef %.0.i4963) #10 + %.not6.i.i50 = icmp eq i64 %111, 3 br i1 %.not6.i.i50, label %range_reverse_each_fixnum_section.exit, label %.lr.ph.i.i51 -.lr.ph.i.i51: ; preds = %111, %116 - %113 = phi i64 [ %118, %116 ], [ %112, %111 ] - %.07.i.i52 = phi i64 [ %117, %116 ], [ %.0.i4963, %111 ] - %114 = tail call i64 @rb_yield(i64 noundef %.07.i.i52) #10 - %115 = icmp eq i64 %113, 1 - br i1 %115, label %range_reverse_each_fixnum_section.exit, label %116 - -116: ; preds = %.lr.ph.i.i51 - %117 = tail call i64 @rb_big_minus(i64 noundef %.07.i.i52, i64 noundef 3) #10 - %118 = tail call i64 @rb_big_cmp(i64 noundef %10, i64 noundef %117) #10 - %.not.i.i53 = icmp eq i64 %118, 3 +.lr.ph.i.i51: ; preds = %110, %115 + %.not6.i.i50 = phi i64 [ %117, %115 ], [ %.not10.i, %110 ] + %.07.i.i52 = phi i64 [ %116, %115 ], [ %.0.i4963, %110 ] + %113 = tail call i64 @rb_yield(i64 noundef %.07.i.i52) #10 + %114 = icmp eq i64 %.not6.i.i50, 1 + br i1 %114, label %rb_integer_type_p.exit.thread58, label %115 + +115: ; preds = %.lr.ph.i.i51 + %115 = tail call i64 @rb_big_minus(i64 noundef %.07.i.i52, i64 noundef 3) #10 + %117 = tail call i64 @rb_big_cmp(i64 noundef %10, i64 noundef %116) #10 + %.not.i.i53 = icmp eq i64 %117, 3 br i1 %.not.i.i53, label %range_reverse_each_fixnum_section.exit, label %.lr.ph.i.i51, !llvm.loop !20 -rb_integer_type_p.exit.thread58: ; preds = %60, %49, %rb_integer_type_p.exit33, %rb_integer_type_p.exit - %119 = tail call i64 @rb_call_super(i32 noundef 0, ptr noundef null) #10 +rb_integer_type_p.exit.thread58: ; preds = %59, %48, %rb_integer_type_p.exit33, %rb_integer_type_p.exit + %.not.i.i53 = tail call i64 @rb_call_super(i32 noundef 0, ptr noundef null) #10 br label %range_reverse_each_fixnum_section.exit -range_reverse_each_fixnum_section.exit: ; preds = %.lr.ph.i, %116, %.lr.ph.i.i51, %111, %109, %108, %39, %37, %31, %rb_integer_type_p.exit.thread58, %3 - %.0 = phi i64 [ %119, %rb_integer_type_p.exit.thread58 ], [ %6, %3 ], [ %0, %31 ], [ %0, %37 ], [ %0, %39 ], [ %0, %108 ], [ %0, %109 ], [ %0, %111 ], [ %0, %.lr.ph.i.i51 ], [ %0, %116 ], [ %0, %.lr.ph.i ] +range_reverse_each_fixnum_section.exit: ; preds = %.lr.ph.i, %115, %.lr.ph.i.i51, %110, %108, %107, %39, %37, %31, %rb_integer_type_p.exit.thread58, %3 + %119 = phi i64 [ %118, %rb_integer_type_p.exit.thread58 ], [ %6, %3 ], [ %0, %31 ], [ %0, %37 ], [ %0, %39 ], [ %0, %107 ], [ %0, %108 ], [ %0, %110 ], [ %0, %.lr.ph.i.i51 ], [ %0, %115 ], [ %0, %.lr.ph.i ] ret i64 %.0 } diff --git a/bench/ruby/optimized/rational.ll b/bench/ruby/optimized/rational.ll index bf840de37b6..9e337b0a0ef 100644 --- a/bench/ruby/optimized/rational.ll +++ b/bench/ruby/optimized/rational.ll @@ -4990,7 +4990,7 @@ define internal fastcc i64 @f_lcm(i64 noundef %0, i64 noundef %1) unnamed_addr # %25 = and i64 %1, 7 %26 = icmp ne i64 %25, 0 %27 = icmp eq i64 %1, 0 - %28 = or i1 %27, %26 + %26 = or i1 %27, %26 br i1 %28, label %.critedge.i, label %29 29: ; preds = %24 @@ -5748,7 +5748,7 @@ f_abs.exit: ; preds = %rb_integer_type_p.e %25 = and i64 %0, 6 %26 = icmp ne i64 %25, 0 %27 = icmp eq i64 %0, 0 - %28 = or i1 %27, %26 + %26 = or i1 %27, %26 br i1 %28, label %rb_integer_type_p.exit.thread11.i, label %rb_integer_type_p.exit.i15 rb_integer_type_p.exit.i15: ; preds = %24 @@ -7000,68 +7000,64 @@ rb_integer_type_p.exit.i: ; preds = %4 ] rb_integer_type_p.exit.thread.i: ; preds = %rb_integer_type_p.exit.i, %2 - switch i64 %1, label %25 [ + switch i64 %1, label %23 [ i64 1, label %18 - i64 3, label %23 + i64 3, label %21 ] 12: ; preds = %rb_integer_type_p.exit.i %13 = getelementptr inbounds nuw i8, ptr %9, i64 16 %14 = load i64, ptr %13, align 8 %.not = icmp eq i64 %14, 1 - br i1 %.not, label %18, label %21 + br i1 %.not, label %18, label %23 f_zero_p.exit: ; preds = %4, %rb_integer_type_p.exit.i %15 = tail call i64 @rb_equal(i64 noundef %1, i64 noundef 1) #16 %16 = and i64 %15, 4294967295 %17 = icmp eq i64 %16, 0 - br i1 %17, label %21, label %18 + br i1 %17, label %23, label %18 18: ; preds = %rb_integer_type_p.exit.thread.i, %12, %f_zero_p.exit %19 = tail call i64 @nurat_to_f(i64 noundef %0) %20 = tail call i64 @rb_flo_div_flo(i64 noundef %19, i64 noundef -9223372036854775806) #16 br label %RB_FLOAT_TYPE_P.exit.thread -21: ; preds = %12, %f_zero_p.exit - %22 = icmp eq i64 %1, 3 - br i1 %22, label %23, label %25 - -23: ; preds = %rb_integer_type_p.exit.thread.i, %21 - %24 = tail call i64 @nurat_to_f(i64 noundef %0) +21: ; preds = %rb_integer_type_p.exit.thread.i + %22 = tail call i64 @nurat_to_f(i64 noundef %0) br label %RB_FLOAT_TYPE_P.exit.thread -25: ; preds = %rb_integer_type_p.exit.thread.i, %21 - %26 = tail call i64 @rb_rational_div(i64 noundef %0, i64 noundef %1) - %27 = and i64 %26, 7 - %28 = icmp ne i64 %27, 0 - %29 = icmp eq i64 %26, 0 - %30 = or i1 %29, %28 - br i1 %30, label %.critedge, label %31 +23: ; preds = %f_zero_p.exit, %12, %rb_integer_type_p.exit.thread.i + %24 = tail call i64 @rb_rational_div(i64 noundef %0, i64 noundef %1) + %25 = and i64 %24, 7 + %26 = icmp ne i64 %25, 0 + %27 = icmp eq i64 %24, 0 + %26 = or i1 %27, %26 + br i1 %26, label %35, label %29 -31: ; preds = %25 - %32 = inttoptr i64 %26 to ptr - %33 = load i64, ptr %32, align 8 - %34 = and i64 %33, 31 - switch i64 %34, label %RB_FLOAT_TYPE_P.exit.thread32 [ - i64 15, label %35 +29: ; preds = %23 + %30 = inttoptr i64 %24 to ptr + %31 = load i64, ptr %30, align 8 + %32 = and i64 %31, 31 + switch i64 %32, label %RB_FLOAT_TYPE_P.exit.thread32 [ + i64 15, label %33 i64 4, label %RB_FLOAT_TYPE_P.exit.thread ] -35: ; preds = %31 - %36 = tail call i64 @nurat_to_f(i64 noundef %26) +33: ; preds = %29 + %34 = tail call i64 @nurat_to_f(i64 noundef %24) br label %RB_FLOAT_TYPE_P.exit.thread -.critedge: ; preds = %25 - %37 = and i64 %26, 3 - %38 = icmp eq i64 %37, 2 - br i1 %38, label %RB_FLOAT_TYPE_P.exit.thread, label %RB_FLOAT_TYPE_P.exit.thread32 +.critedge: ; preds = %23 + %36 = and i64 %24, 3 + %36 = icmp eq i64 %35, 2 + br i1 %36, label %RB_FLOAT_TYPE_P.exit.thread, label %RB_FLOAT_TYPE_P.exit.thread32 -RB_FLOAT_TYPE_P.exit.thread32: ; preds = %31, %.critedge - %39 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %26, i64 noundef 3361, i32 noundef 0) #16 +RB_FLOAT_TYPE_P.exit.thread32: ; preds = %29, %35 + %38 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %24, i64 noundef 3361, i32 noundef 0) #16 br label %RB_FLOAT_TYPE_P.exit.thread -RB_FLOAT_TYPE_P.exit.thread: ; preds = %31, %.critedge, %RB_FLOAT_TYPE_P.exit.thread32, %35, %23, %18 - %.030 = phi i64 [ %20, %18 ], [ %24, %23 ], [ %36, %35 ], [ %39, %RB_FLOAT_TYPE_P.exit.thread32 ], [ %26, %.critedge ], [ %26, %31 ] +RB_FLOAT_TYPE_P.exit.thread: ; preds = %29, %35, %RB_FLOAT_TYPE_P.exit.thread32, %33, %21, %18 + %39 = phi i64 [ %20, %18 ], [ %22, %21 ], [ %34, %33 ], [ %37, %RB_FLOAT_TYPE_P.exit.thread32 ], [ %24, %.critedge ], [ %24, %29 ] ret i64 %.030 } diff --git a/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll b/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll index 77023d01f48..13a14a034ee 100644 --- a/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll +++ b/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll @@ -7800,7 +7800,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h47250b1ff17c9d to label %9 unwind label %.loopexit.split-lp .loopexit: ; preds = %23, %.noexc2 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %8 @@ -14947,7 +14947,7 @@ _RNvMNtCsdF516cSs19B_10rustc_span13span_encodingNtB2_4Span14data_untracked.exit. ret void .loopexit: ; preds = %.noexc26, %_RNvMNtCsdF516cSs19B_10rustc_span13span_encodingNtB2_4Span14data_untracked.exit.thread2.i.i.i, %_RNvMNtCsdF516cSs19B_10rustc_span13span_encodingNtB2_4Span14data_untracked.exit.i.i.i, %31, %20 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %55 @@ -15153,7 +15153,7 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. br i1 %.not2.i.i, label %49, label %40 .loopexit: ; preds = %25, %_ZN15rustfmt_nightly7rewrite14RewriteContext7snippet17h7d81c3a187049865E.exit.i.i - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %37 @@ -15441,7 +15441,7 @@ _ZN5alloc3fmt6format17h35125637d547cb53E.exit.i.i: ; preds = %.noexc21 unreachable .loopexit: ; preds = %48, %71 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %90 @@ -16515,7 +16515,7 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. ret void .loopexit: ; preds = %18 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %33 @@ -16800,7 +16800,7 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. ret void .loopexit: ; preds = %18 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %33 @@ -19792,7 +19792,7 @@ default.unreachable: ; preds = %182 br i1 %204, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd8531a20a3a03de0E.llvm.13396924176064657314.exit.thread", label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd8531a20a3a03de0E.llvm.13396924176064657314.exit" .body41.thread97.loopexit: ; preds = %176, %174, %157 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %.body41.thread @@ -21540,7 +21540,7 @@ _RNvMNtCsdF516cSs19B_10rustc_span13span_encodingNtB2_4Span14data_untracked.exit: to label %.critedge112 unwind label %287 .loopexit: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heff3c967ca755befE.exit", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h884929514755f779E.exit55.thread.i" - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %.body203 @@ -23399,7 +23399,7 @@ _ZN15rustfmt_nightly7imports7UseTree11has_comment17hea44b230ad42a0a7E.exit.threa to label %39 unwind label %.thread179 .loopexit: ; preds = %218 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %.body152 @@ -24941,7 +24941,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit139: ; preds = %_ZN15ru .noexc114: ; preds = %160 unreachable -.loopexit270: ; preds = %.lr.ph.i125, %113, %.noexc132 +.loopexit267: ; preds = %.lr.ph.i125, %113, %.noexc132 store i64 %.sroa.596.0.i, ptr %107, align 8, !noalias !6702 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false), !noalias !6678 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !6702 @@ -24998,7 +24998,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit115.thread: ; preds = % call void @__rust_dealloc(ptr noundef nonnull %176, i64 noundef 112, i64 noundef 8) #61, !noalias !6678 br label %.body112 -_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread347: ; preds = %_ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit115.thread +_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread344: ; preds = %_ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit115.thread %178 = getelementptr inbounds nuw i8, ptr %40, i64 48 %179 = load i8, ptr %178, align 8, !range !74, !alias.scope !6671, !noalias !6745, !noundef !4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %173, ptr noundef nonnull align 8 dereferenceable(48) %20, i64 48, i1 false), !noalias !6678 @@ -25151,7 +25151,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit: ; preds = %184 cleanup br label %.thread200 -.loopexit266: ; preds = %.lr.ph.i99, %216, %.noexc106 +.loopexit263: ; preds = %.lr.ph.i99, %216, %.noexc106 store i64 %204, ptr %210, align 8, !noalias !6755 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false), !noalias !6678 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !6755 @@ -25295,7 +25295,7 @@ _ZN4core4iter6traits8iterator8Iterator10min_by_key17hca8f2611e879e005E.exit.i.th %272 = icmp eq i64 %236, 0 br i1 %272, label %_ZN4core4iter6traits8iterator8Iterator10min_by_key17hca8f2611e879e005E.exit.i.thread, label %.lr.ph373 -.lr.ph373: ; preds = %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i34.i.preheader" +.lr.ph370: ; preds = %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i34.i.preheader" %273 = getelementptr inbounds nuw i8, ptr %5, i64 8 br label %274 @@ -25384,10 +25384,10 @@ _ZN15rustfmt_nightly7imports7UseTree16contains_comment17hd6a183ede1e96395E.exit. %313 = invoke noundef zeroext i1 @_ZN15rustfmt_nightly5utils18is_same_visibility17hd2ef40591ab1179dE(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %304, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %231) to label %.noexc330 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit -.noexc330: ; preds = %312 +.noexc327: ; preds = %312 br i1 %313, label %.noexc330._crit_edge, label %.noexc94.i -.noexc330._crit_edge: ; preds = %.noexc330 +.noexc327._crit_edge: ; preds = %.noexc330 %.val7.i.i.i.i.i.i.i.i46.i.pre = load i64, ptr %238, align 8, !noalias !6876 br label %split @@ -25656,43 +25656,43 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %4), !noalias !6826 br label %400 -.loopexit.split-lp.loopexit: ; preds = %.split.i.i.i.i.i.i.i +.loopexit247: ; preds = %.split.i.i.i.i.i.i.i %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %244 +.loopexit.split-lp.loopexit: ; preds = %244 %lpad.loopexit252 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %371 +.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %371 %lpad.loopexit254 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %312 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %312 %lpad.loopexit258 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.split.i.i.i.i.i.i108.i +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.split.i.i.i.i.i.i108.i %lpad.loopexit260 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %383 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %383 %lpad.loopexit264 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit - %lpad.phi250 = phi { ptr, i32 } [ %lpad.loopexit248, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit252, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit254, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit258, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit260, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit264, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] +.loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit + %lpad.phi250 = phi { ptr, i32 } [ %lpad.loopexit252, %.loopexit247 ], [ %lpad.loopexit252, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit258, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit258, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit264, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit264, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] invoke void @"_ZN4core3ptr54drop_in_place$LT$rustfmt_nightly..imports..UseTree$GT$17h725c1c900f92ab27E"(ptr noalias noundef nonnull align 8 dereferenceable(152) %33) #59 to label %.thread200 unwind label %398, !noalias !6678 @@ -25908,7 +25908,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v cleanup br label %.body67 -.loopexit269: ; preds = %.lr.ph.i59, %448, %.noexc66 +.loopexit266: ; preds = %.lr.ph.i59, %448, %.noexc66 store i64 %436, ptr %441, align 8, !noalias !7052 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false), !noalias !6692 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !7052 @@ -26005,7 +26005,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v invoke void @"_ZN4core3ptr54drop_in_place$LT$rustfmt_nightly..imports..UseTree$GT$17h725c1c900f92ab27E"(ptr noalias noundef nonnull align 8 dereferenceable(152) %25) #59 to label %.body67 unwind label %181, !noalias !6678 -.loopexit268: ; preds = %.lr.ph.i46, %479, %.noexc53 +.loopexit265: ; preds = %.lr.ph.i46, %479, %.noexc53 store i64 %467, ptr %473, align 8, !noalias !7070 %492 = getelementptr inbounds nuw i8, ptr %186, i64 152 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %492, ptr noundef nonnull align 8 dereferenceable(24) %17, i64 24, i1 false), !noalias !6678 @@ -26103,7 +26103,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v call void @_ZN4core9panicking16panic_in_cleanup17h7bbd4fcd6f160435E() #58, !noalias !7095 unreachable -.loopexit267: ; preds = %507, %.lr.ph.i, %.noexc +.loopexit264: ; preds = %507, %.lr.ph.i, %.noexc store i64 %.0.i, ptr %502, align 8, !noalias !7088 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %19, i64 24, i1 false), !noalias !7085 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19), !noalias !7088 @@ -27428,7 +27428,7 @@ _ZN15rustfmt_nightly7imports10UseSegment12remove_alias17ha79e5ad530853011E.exit: to label %"_ZN4core3ptr57drop_in_place$LT$rustfmt_nightly..imports..UseSegment$GT$17hfb6c5ab15b1b63eeE.exit" unwind label %59 .loopexit: ; preds = %43, %46, %57 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr57drop_in_place$LT$rustfmt_nightly..imports..UseSegment$GT$17hfb6c5ab15b1b63eeE.exit41" @@ -27750,7 +27750,7 @@ _ZN5alloc3fmt6format17h35125637d547cb53E.exit50: ; preds = %64 to label %341 unwind label %248, !noalias !7335 .loopexit275: ; preds = %339, %260 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %.body65 @@ -28571,7 +28571,7 @@ define void @"_ZN87_$LT$rustfmt_nightly..imports..UseTree$u20$as$u20$rustfmt_nig to label %95 unwind label %92 .loopexit: ; preds = %32, %"_ZN4core6option15Option$LT$T$GT$18get_or_insert_with17h3884af0be5cb2bdaE.exit.thread", %81 - %lpad.loopexit = landingpad { ptr, i32 } + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %31 diff --git a/bench/tinyrenderer/optimized/tgaimage.cpp.ll b/bench/tinyrenderer/optimized/tgaimage.cpp.ll index 8d4f4c283bc..dcd3fb9f6bf 100644 --- a/bench/tinyrenderer/optimized/tgaimage.cpp.ll +++ b/bench/tinyrenderer/optimized/tgaimage.cpp.ll @@ -427,62 +427,57 @@ define dso_local noundef zeroext i1 @_ZN8TGAImage13load_rle_dataERSt14basic_ifst %53 = call noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %52) br i1 %53, label %.preheader45, label %.loopexit47.sink.split -.preheader45: ; preds = %45 - %54 = and i32 %13, 255 - %.not = icmp eq i32 %54, 127 - br i1 %.not, label %.loopexit, label %.preheader44.preheader - -.preheader44.preheader: ; preds = %.preheader45 - %55 = add i32 %13, 129 - %56 = and i32 %55, 255 - %umax = call i32 @llvm.umax.i32(i32 %56, i32 1) +.preheader44.preheader: ; preds = %45 + %54 = add i32 %13, 129 + %.not = and i32 %54, 255 + %umax = call i32 @llvm.umax.i32(i32 %.not, i32 1) %.pre = load i8, ptr %10, align 8 br label %.preheader44 -57: ; preds = %._crit_edge - %58 = add nuw nsw i32 %.03258, 1 - %exitcond.not = icmp eq i32 %58, %umax +56: ; preds = %._crit_edge + %umax = add nuw nsw i32 %.03258, 1 + %exitcond.not = icmp eq i32 %57, %umax br i1 %exitcond.not, label %.loopexit, label %.preheader44, !llvm.loop !9 -.preheader44: ; preds = %.preheader44.preheader, %57 - %59 = phi i8 [ %68, %57 ], [ %.pre, %.preheader44.preheader ] - %.03258 = phi i32 [ %58, %57 ], [ 0, %.preheader44.preheader ] - %.357 = phi i64 [ %.4.lcssa, %57 ], [ %.035, %.preheader44.preheader ] - %.23856 = phi i64 [ %69, %57 ], [ %.036, %.preheader44.preheader ] - %.not73 = icmp eq i8 %59, 0 - br i1 %.not73, label %._crit_edge, label %.lr.ph +.preheader44: ; preds = %.preheader45, %56 + %58 = phi i8 [ %67, %56 ], [ %.pre, %.preheader45 ] + %exitcond.not = phi i32 [ %57, %56 ], [ 0, %.preheader45 ] + %.357 = phi i64 [ %.4.lcssa, %56 ], [ %.035, %.preheader44.preheader ] + %.23856 = phi i64 [ %68, %56 ], [ %.036, %.preheader44.preheader ] + %.not = icmp eq i8 %58, 0 + br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %.preheader44, %.lr.ph %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader44 ] - %.454 = phi i64 [ %62, %.lr.ph ], [ %.357, %.preheader44 ] - %60 = getelementptr inbounds nuw [4 x i8], ptr %3, i64 0, i64 %indvars.iv - %61 = load i8, ptr %60, align 1 - %62 = add i64 %.454, 1 - %63 = load ptr, ptr %11, align 8 - %64 = getelementptr inbounds i8, ptr %63, i64 %.454 - store i8 %61, ptr %64, align 1 + %.not73 = phi i64 [ %61, %.lr.ph ], [ %.357, %57 ] + %59 = getelementptr inbounds nuw [4 x i8], ptr %3, i64 0, i64 %indvars.iv + %60 = load i8, ptr %59, align 1 + %61 = add i64 %.454, 1 + %62 = load ptr, ptr %11, align 8 + %.454 = getelementptr inbounds i8, ptr %62, i64 %.not73 + store i8 %60, ptr %63, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %65 = load i8, ptr %10, align 8 - %66 = zext i8 %65 to i64 - %67 = icmp samesign ult i64 %indvars.iv.next, %66 - br i1 %67, label %.lr.ph, label %._crit_edge, !llvm.loop !10 + %62 = load i8, ptr %10, align 8 + %63 = zext i8 %64 to i64 + %64 = icmp samesign ult i64 %indvars.iv.next, %65 + br i1 %64, label %.lr.ph, label %._crit_edge, !llvm.loop !10 ._crit_edge: ; preds = %.lr.ph, %.preheader44 - %68 = phi i8 [ 0, %.preheader44 ], [ %65, %.lr.ph ] - %.4.lcssa = phi i64 [ %.357, %.preheader44 ], [ %62, %.lr.ph ] - %69 = add i64 %.23856, 1 - %70 = icmp ugt i64 %69, %8 - br i1 %70, label %.loopexit47.sink.split, label %57 - -.loopexit: ; preds = %57, %23, %.preheader45 - %.339 = phi i64 [ %.036, %.preheader45 ], [ %43, %23 ], [ %69, %57 ] - %.5 = phi i64 [ %.035, %.preheader45 ], [ %.2.lcssa, %23 ], [ %.4.lcssa, %57 ] - %71 = icmp ult i64 %.339, %8 - br i1 %71, label %12, label %.loopexit47, !llvm.loop !11 + %66 = phi i8 [ 0, %57 ], [ %64, %.lr.ph ] + %67 = phi i64 [ %.357, %57 ], [ %61, %.lr.ph ] + %68 = add i64 %.23856, 1 + %69 = icmp ugt i64 %68, %8 + br i1 %69, label %.loopexit47.sink.split, label %56 + +.loopexit: ; preds = %56, %23 + %69 = phi i64 [ %43, %23 ], [ %68, %56 ] + %70 = phi i64 [ %.2.lcssa, %23 ], [ %67, %56 ] + %70 = icmp ult i64 %.339, %8 + br i1 %70, label %12, label %.loopexit47, !llvm.loop !11 .loopexit47.sink.split: ; preds = %45, %12, %._crit_edge, %._crit_edge64, %.lr.ph70 %.str.9.sink = phi ptr [ @.str.3, %.lr.ph70 ], [ @.str.9, %._crit_edge64 ], [ @.str.9, %._crit_edge ], [ @.str.5, %12 ], [ @.str.3, %45 ] - %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull %.str.9.sink) + %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull %.str.9.sink) br label %.loopexit47 .loopexit47: ; preds = %.loopexit, %.loopexit47.sink.split diff --git a/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll b/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll index f2c8359de71..eafd623107d 100644 --- a/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll +++ b/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll @@ -13235,7 +13235,7 @@ switch.lookup: ; preds = %switch.hole_check br i1 %.not28.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17hdc20ca7c1075b036E.llvm.6030771845222660662.exit", label %.lr.ph.split.i "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17hdc20ca7c1075b036E.llvm.6030771845222660662.exit": ; preds = %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i", %switch.lookup, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i", %.lr.ph.split.us.i, %5, %3 - %.0 = phi i1 [ true, %3 ], [ false, %5 ], [ true, %.lr.ph.split.us.i ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i" ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i" ], [ true, %switch.lookup ] + %.0 = phi i1 [ true, %3 ], [ false, %5 ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i" ], [ true, %.lr.ph.split.us.i ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i" ], [ true, %switch.lookup ] ret i1 %.0 } @@ -13640,7 +13640,7 @@ switch.lookup: ; preds = %switch.hole_check br i1 %.not28.i.i, label %_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm17hbb0b7dbdd9f5f8ffE.exit, label %.lr.ph.split.i.i _ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm17hbb0b7dbdd9f5f8ffE.exit: ; preds = %switch.lookup, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i.i", %.lr.ph.split.us.i.i, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i.i", %2, %8 - %.0.i = phi i1 [ true, %2 ], [ false, %8 ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i.i" ], [ true, %.lr.ph.split.us.i.i ], [ true, %switch.lookup ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i.i" ] + %.0.i = phi i1 [ true, %2 ], [ false, %8 ], [ true, %.lr.ph.split.us.i.i ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i.i" ], [ true, %switch.lookup ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i.i" ] ret i1 %.0.i } diff --git a/bench/wasmedge/optimized/component.cpp.ll b/bench/wasmedge/optimized/component.cpp.ll index c01339db937..eb59d20223f 100644 --- a/bench/wasmedge/optimized/component.cpp.ll +++ b/bench/wasmedge/optimized/component.cpp.ll @@ -1552,7 +1552,7 @@ _ZSt7advanceIPKhmEvRT_T0_.exit.i: ; preds = %175 %.pre26.i = load ptr, ptr %176, align 8 br label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i -_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i: ; preds = %184, %_ZSt7advanceIPKhmEvRT_T0_.exit.i +_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i: ; preds = %184, %_ZSt7advanceIPKhmEvRT_T0_.exit.i %185 = phi ptr [ %177, %_ZSt7advanceIPKhmEvRT_T0_.exit.i ], [ %.pre26.i, %184 ] %.sink.i.i25.i.idx.sroa.phi = phi ptr [ %13, %_ZSt7advanceIPKhmEvRT_T0_.exit.i ], [ %.sink.i.i25.i.idx.sroa.gep78, %184 ] %gepdiff = sub nuw nsw i64 2, %179 @@ -1631,7 +1631,7 @@ _ZSt7advanceIPKhmEvRT_T0_.exit.i46: ; preds = %206 %.pre26.i49 = load ptr, ptr %207, align 8 br label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i53 -_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i53: ; preds = %215, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 +_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i50: ; preds = %215, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 %216 = phi ptr [ %208, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 ], [ %.pre26.i49, %215 ] %.sink.i.i25.i51.idx.sroa.phi = phi ptr [ %14, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 ], [ %.sink.i.i25.i51.idx.sroa.gep77, %215 ] %gepdiff76 = sub nuw nsw i64 2, %210 diff --git a/bench/wireshark/optimized/packet-afp.c.ll b/bench/wireshark/optimized/packet-afp.c.ll index 06546c196bc..a1514383d7b 100644 --- a/bench/wireshark/optimized/packet-afp.c.ll +++ b/bench/wireshark/optimized/packet-afp.c.ll @@ -6290,9 +6290,9 @@ define internal fastcc i32 @spotlight_dissect_query_loop(ptr noundef %0, ptr nou %16 = getelementptr inbounds nuw i8, ptr %1, i64 408 br label %17 -17: ; preds = %.lr.ph275, %230 - %.0227274 = phi i32 [ %3, %.lr.ph275 ], [ %.1228, %230 ] - %.0229273 = phi i32 [ %5, %.lr.ph275 ], [ %.1230, %230 ] +17: ; preds = %.lr.ph275, %228 + %.0227274 = phi i32 [ %3, %.lr.ph275 ], [ %.1228, %228 ] + %.0229273 = phi i32 [ %5, %.lr.ph275 ], [ %.1230, %228 ] %18 = call i64 @tvb_get_guint64(ptr noundef %0, i32 noundef %.0227274, i32 noundef %7) #7 %19 = trunc i64 %18 to i32 %20 = shl i32 %19, 3 @@ -6303,7 +6303,7 @@ define internal fastcc i32 @spotlight_dissect_query_loop(ptr noundef %0, ptr nou 23: ; preds = %17 %24 = lshr i64 %18, 16 %trunc = trunc i64 %24 to i16 - switch i16 %trunc, label %223 [ + switch i16 %trunc, label %221 [ i16 512, label %25 i16 0, label %83 i16 256, label %104 @@ -6403,7 +6403,7 @@ spotlight_get_utf16_string_byte_order.exit: ; preds = %53, %60 %80 = add i32 %.0227274, 8 %81 = call fastcc i32 @spotlight_dissect_query_loop(ptr noundef %0, ptr noundef %1, ptr noundef %.0, i32 noundef %80, i64 noundef %32, i32 noundef %.0232, i32 noundef %6, i32 noundef %7) %82 = add nsw i32 %.0229273, -1 - br label %230 + br label %228 83: ; preds = %23 %84 = lshr i64 %18, 32 @@ -6449,7 +6449,7 @@ spotlight_get_utf16_string_byte_order.exit: ; preds = %53, %60 .loopexit: ; preds = %.loopexit.loopexit, %.preheader, %94, %87 %.2 = phi i32 [ 0, %87 ], [ %98, %94 ], [ %.0229273, %.preheader ], [ %102, %.loopexit.loopexit ] %103 = add i32 %21, %.0227274 - br label %230 + br label %228 104: ; preds = %23 %105 = load i32, ptr @hf_afp_bool, align 4 @@ -6459,7 +6459,7 @@ spotlight_get_utf16_string_byte_order.exit: ; preds = %53, %60 %108 = call ptr (ptr, i32, ptr, i32, i32, i64, ptr, ...) @proto_tree_add_uint64_format_value(ptr noundef %2, i32 noundef %105, ptr noundef %0, i32 noundef %.0227274, i32 noundef %21, i64 noundef %106, ptr noundef nonnull @.str.1074, ptr noundef nonnull %107) #7 %109 = add nsw i32 %.0229273, -1 %110 = add i32 %21, %.0227274 - br label %230 + br label %228 111: ; preds = %23 %112 = load i32, ptr @ett_afp_spotlight_query_line, align 4 @@ -6483,7 +6483,7 @@ spotlight_get_utf16_string_byte_order.exit: ; preds = %53, %60 spotlight_int64.exit: ; preds = %.lr.ph.i, %111 %120 = sub i32 %.0229273, %116 %121 = add i32 %21, %.0227274 - br label %230 + br label %228 122: ; preds = %23 %123 = load i32, ptr @ett_afp_spotlight_query_line, align 4 @@ -6511,7 +6511,7 @@ spotlight_int64.exit: ; preds = %.lr.ph.i, %111 spotlight_uuid.exit: ; preds = %.lr.ph.i247, %122 %133 = sub i32 %.0229273, %127 %134 = add i32 %21, %.0227274 - br label %230 + br label %228 135: ; preds = %23 %136 = load i32, ptr @ett_afp_spotlight_query_line, align 4 @@ -6535,7 +6535,7 @@ spotlight_uuid.exit: ; preds = %.lr.ph.i247, %122 spotlight_float.exit: ; preds = %.lr.ph.i250, %135 %144 = sub i32 %.0229273, %140 %145 = add i32 %21, %.0227274 - br label %230 + br label %228 146: ; preds = %23 switch i16 %trunc242, label %179 [ @@ -6601,7 +6601,7 @@ spotlight_get_utf16_string_byte_order.exit260: ; preds = %154, %156 179: ; preds = %172, %174, %spotlight_get_utf16_string_byte_order.exit260, %147, %146 %180 = add nsw i32 %.0229273, -1 %181 = add i32 %21, %.0227274 - br label %230 + br label %228 182: ; preds = %23 %183 = load i32, ptr @ett_afp_spotlight_query_line, align 4 @@ -6644,7 +6644,7 @@ spotlight_get_utf16_string_byte_order.exit260: ; preds = %154, %156 spotlight_CNID_array.exit: ; preds = %.lr.ph.i261, %188, %186 %205 = add nsw i32 %.0229273, -1 %206 = add i32 %21, %.0227274 - br label %230 + br label %228 207: ; preds = %23 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) @@ -6680,33 +6680,29 @@ spotlight_date.exit.thread: ; preds = %207 spotlight_date.exit: ; preds = %.lr.ph.i265, %.preheader.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) - %219 = icmp eq i64 %209, 4294967295 - br i1 %219, label %.loopexit268, label %220 - -220: ; preds = %spotlight_date.exit - %221 = sub nsw i32 %.0229273, %210 - %222 = add i32 %21, %.0227274 - br label %230 - -223: ; preds = %23 - %224 = and i64 %24, 65535 - %225 = load i32, ptr @hf_afp_query_type, align 4 - %226 = call ptr @val64_to_str_const(i64 noundef %224, ptr noundef nonnull @qtype_string_values, ptr noundef nonnull @.str.1101) #7 - %227 = call ptr @proto_tree_add_string(ptr noundef %2, i32 noundef %225, ptr noundef %0, i32 noundef %.0227274, i32 noundef %21, ptr noundef %226) #7 - %228 = add nsw i32 %.0229273, -1 - %229 = add i32 %21, %.0227274 - br label %230 - -230: ; preds = %223, %220, %spotlight_CNID_array.exit, %179, %spotlight_float.exit, %spotlight_uuid.exit, %spotlight_int64.exit, %104, %.loopexit, %79 - %.1230 = phi i32 [ %228, %223 ], [ %221, %220 ], [ %205, %spotlight_CNID_array.exit ], [ %180, %179 ], [ %144, %spotlight_float.exit ], [ %133, %spotlight_uuid.exit ], [ %120, %spotlight_int64.exit ], [ %109, %104 ], [ %.2, %.loopexit ], [ %82, %79 ] - %.1228 = phi i32 [ %229, %223 ], [ %222, %220 ], [ %206, %spotlight_CNID_array.exit ], [ %181, %179 ], [ %145, %spotlight_float.exit ], [ %134, %spotlight_uuid.exit ], [ %121, %spotlight_int64.exit ], [ %110, %104 ], [ %103, %.loopexit ], [ %81, %79 ] - %231 = icmp slt i32 %.1228, %11 - %232 = icmp sgt i32 %.1230, 0 - %233 = select i1 %231, i1 %232, i1 false - br i1 %233, label %17, label %.loopexit268, !llvm.loop !21 - -.loopexit268: ; preds = %spotlight_date.exit, %17, %230, %8, %spotlight_date.exit.thread - %.0227270 = phi i32 [ %.0227274, %spotlight_date.exit.thread ], [ %3, %8 ], [ %.0227274, %spotlight_date.exit ], [ %.0227274, %17 ], [ %.1228, %230 ] + %219 = sub nsw i32 %.0229273, %210 + %220 = add i32 %21, %.0227274 + br label %228 + +221: ; preds = %23 + %222 = and i64 %24, 65535 + %223 = load i32, ptr @hf_afp_query_type, align 4 + %224 = call ptr @val64_to_str_const(i64 noundef %222, ptr noundef nonnull @qtype_string_values, ptr noundef nonnull @.str.1101) #7 + %225 = call ptr @proto_tree_add_string(ptr noundef %2, i32 noundef %223, ptr noundef %0, i32 noundef %.0227274, i32 noundef %21, ptr noundef %224) #7 + %224 = add nsw i32 %.0229273, -1 + %225 = add i32 %21, %.0227274 + br label %228 + +228: ; preds = %221, %spotlight_date.exit, %spotlight_CNID_array.exit, %179, %spotlight_float.exit, %spotlight_uuid.exit, %spotlight_int64.exit, %104, %.loopexit, %79 + %229 = phi i32 [ %226, %221 ], [ %219, %spotlight_date.exit ], [ %205, %spotlight_CNID_array.exit ], [ %180, %179 ], [ %144, %spotlight_float.exit ], [ %133, %spotlight_uuid.exit ], [ %120, %spotlight_int64.exit ], [ %109, %104 ], [ %.2, %.loopexit ], [ %82, %79 ] + %.1228 = phi i32 [ %227, %221 ], [ %220, %spotlight_date.exit ], [ %206, %spotlight_CNID_array.exit ], [ %181, %179 ], [ %145, %spotlight_float.exit ], [ %134, %spotlight_uuid.exit ], [ %121, %spotlight_int64.exit ], [ %110, %104 ], [ %103, %.loopexit ], [ %81, %79 ] + %229 = icmp slt i32 %.1228, %11 + %230 = icmp sgt i32 %.1230, 0 + %231 = select i1 %229, i1 %230, i1 false + br i1 %231, label %17, label %.loopexit268, !llvm.loop !21 + +.loopexit268: ; preds = %17, %228, %8, %spotlight_date.exit.thread + %233 = phi i32 [ %.0227274, %spotlight_date.exit.thread ], [ %3, %8 ], [ %.0227274, %17 ], [ %.1228, %228 ] ret i32 %.0227270 } diff --git a/bench/wireshark/optimized/packet-gmr1_dtap.c.ll b/bench/wireshark/optimized/packet-gmr1_dtap.c.ll index 2253195359e..dbebaf01dfa 100644 --- a/bench/wireshark/optimized/packet-gmr1_dtap.c.ll +++ b/bench/wireshark/optimized/packet-gmr1_dtap.c.ll @@ -67,10 +67,8 @@ define internal i32 @dissect_gmr1_dtap(ptr noundef %0, ptr noundef %1, ptr nound %9 = tail call i32 @tvb_captured_length(ptr noundef %0) #2 %10 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 0) #2 %11 = and i8 %10, 15 - %12 = icmp eq i8 %11, 14 - %. = select i1 %12, i8 %10, i8 %11 - %.not = icmp eq i8 %., 6 - br i1 %.not, label %17, label %13 + %12 = icmp eq i8 %11, 6 + br i1 %12, label %17, label %13 13: ; preds = %4 %14 = load ptr, ptr @gsm_dtap_handle, align 8 diff --git a/bench/wireshark/optimized/packet-icmp.c.ll b/bench/wireshark/optimized/packet-icmp.c.ll index ec2be6045b1..a9d40ab1a0a 100644 --- a/bench/wireshark/optimized/packet-icmp.c.ll +++ b/bench/wireshark/optimized/packet-icmp.c.ll @@ -1606,32 +1606,32 @@ _find_or_create_conversation.exit.i: ; preds = %427, %415 %478 = load i8, ptr %477, align 1 %479 = and i8 %478, -16 %480 = icmp eq i8 %479, -32 - br i1 %480, label %._crit_edge.i, label %481 + br i1 %480, label %._crit_edge.i, label %480 -481: ; preds = %475 +480: ; preds = %475 %482 = zext i8 %478 to i32 - %483 = shl nuw i32 %482, 24 + %482 = shl nuw i32 %482, 24 %484 = getelementptr i8, ptr %477, i64 1 - %485 = load i8, ptr %484, align 1 - %486 = zext i8 %485 to i32 - %487 = shl nuw nsw i32 %486, 16 - %488 = or disjoint i32 %487, %483 + %484 = load i8, ptr %484, align 1 + %486 = zext i8 %484 to i32 + %486 = shl nuw nsw i32 %486, 16 + %487 = or disjoint i32 %487, %483 %489 = getelementptr i8, ptr %477, i64 2 - %490 = load i8, ptr %489, align 1 - %491 = zext i8 %490 to i32 - %492 = shl nuw nsw i32 %491, 8 - %493 = or disjoint i32 %488, %492 + %489 = load i8, ptr %489, align 1 + %491 = zext i8 %489 to i32 + %491 = shl nuw nsw i32 %491, 8 + %492 = or disjoint i32 %488, %492 %494 = getelementptr i8, ptr %477, i64 3 - %495 = load i8, ptr %494, align 1 - %496 = zext i8 %495 to i32 - %497 = or disjoint i32 %493, %496 - %498 = icmp eq i32 %497, -1 + %494 = load i8, ptr %494, align 1 + %496 = zext i8 %494 to i32 + %496 = or disjoint i32 %493, %496 + %497 = icmp eq i32 %497, -1 br i1 %498, label %._crit_edge.i, label %500 ._crit_edge.i: ; preds = %481, %475 %.pre-phi76.i = phi ptr [ @.str.311, %481 ], [ @.str.312, %475 ] %499 = load ptr, ptr %23, align 8 - call void @col_append_str(ptr noundef %499, i32 noundef 25, ptr noundef nonnull %.pre-phi76.i) #5 + call void @col_append_str(ptr noundef %499, i32 noundef 25, ptr noundef nonnull %498) #5 br label %transaction_start.exit 500: ; preds = %481, %472 diff --git a/bench/wireshark/optimized/packet-tds.c.ll b/bench/wireshark/optimized/packet-tds.c.ll index d59e7469cd5..fdc50873503 100644 --- a/bench/wireshark/optimized/packet-tds.c.ll +++ b/bench/wireshark/optimized/packet-tds.c.ll @@ -4765,7 +4765,7 @@ dissect_tds_prelogin_response.exit: ; preds = %48, %.lr.ph, %58, % %70 = icmp sgt i32 %69, 0 br i1 %70, label %.lr.ph337, label %.thread306 -.lr.ph337: ; preds = %dissect_tds_prelogin_response.exit +.lr.ph336: ; preds = %dissect_tds_prelogin_response.exit %71 = getelementptr inbounds nuw i8, ptr %3, i64 8 %72 = getelementptr i8, ptr %3, i64 24 %73 = getelementptr inbounds nuw i8, ptr %43, i64 8 @@ -4775,7 +4775,7 @@ dissect_tds_prelogin_response.exit: ; preds = %48, %.lr.ph, %58, % 76: ; preds = %.lr.ph337, %1353 %.0202332 = phi i32 [ 0, %.lr.ph337 ], [ %.1203, %1353 ] - %77 = call zeroext i8 @tvb_get_guint8(ptr noundef nonnull %0, i32 noundef %.0202332) #11 + %77 = call zeroext i8 @tvb_get_guint8(ptr noundef nonnull %0, i32 noundef %.0202331) #11 %78 = load i32, ptr @tds_protocol_type, align 4 %79 = icmp eq i32 %78, 65535 br i1 %79, label %80, label %83 @@ -4916,7 +4916,7 @@ dissect_tds_prelogin_response.exit: ; preds = %48, %.lr.ph, %58, % tds45_token_to_idx.exit: ; preds = %85, %86, %87, %88, %89, %90, %91, %92, %93, %94, %95, %96, %97, %98, %99, %100, %101, %102, %103, %104, %105, %106, %107, %108, %109, %110, %111, %112, %113, %114, %115 %.0.in.i = phi ptr [ @hf_tds_unknown_tds_token, %115 ], [ @hf_tds_rowfmt2, %114 ], [ @hf_tds_rowfmt, %113 ], [ @hf_tds_row, %112 ], [ @hf_tds_returnstatus, %111 ], [ @hf_tds_procid, %110 ], [ @hf_tds_params, %109 ], [ @hf_tds_paramfmt2, %108 ], [ @hf_tds_paramfmt, %107 ], [ @hf_tds_order, %106 ], [ @hf_tds_offset, %105 ], [ @hf_tds_msg, %104 ], [ @hf_tds_logout, %103 ], [ @hf_tds_loginack, %102 ], [ @hf_tds_info, %101 ], [ @hf_tds_error, %100 ], [ @hf_tds_envchg, %99 ], [ @hf_tds_eed, %98 ], [ @hf_tds_doneinproc, %97 ], [ @hf_tds_doneproc, %96 ], [ @hf_tds_done, %95 ], [ @hf_tds_dbrpc, %94 ], [ @hf_tds_curopen, %93 ], [ @hf_tds_curinfo, %92 ], [ @hf_tds_curfetch, %91 ], [ @hf_tds_curdeclare, %90 ], [ @hf_tds_curclose, %89 ], [ @hf_tds_control, %88 ], [ @hf_tds_colname, %87 ], [ @hf_tds_colfmt, %86 ], [ @hf_tds_capability, %85 ] %.0.i = load i32, ptr %.0.in.i, align 4 - %116 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %.0202332) #11 + %116 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %.0202331) #11 %117 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %.0.i, ptr noundef nonnull %0, i32 noundef %.0202332, i32 noundef %116, i32 noundef 0) #11 %118 = load i32, ptr @ett_tds_token, align 4 %119 = call ptr @proto_item_add_subtree(ptr noundef %117, i32 noundef %118) #11 @@ -6200,13 +6200,13 @@ dissect_tds_rowfmt2_token.exit: ; preds = %573, %753 %756 = icmp eq i32 %.0, 0 br i1 %756, label %.thread300, label %.thread -.thread300: ; preds = %tds45_token_to_idx.exit, %755 +.thread299: ; preds = %tds45_token_to_idx.exit, %755 %757 = call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %117, ptr noundef nonnull @ei_tds_token_length_invalid, ptr noundef nonnull @.str.1336, i32 noundef 0) #11 br label %.thread306 .thread: ; preds = %339, %343, %385, %389, %755 %.0299 = phi i32 [ %.0, %755 ], [ %342, %339 ], [ 5, %343 ], [ 9, %385 ], [ 5, %389 ] - call void @proto_item_set_len(ptr noundef %117, i32 noundef %.0299) #11 + call void @proto_item_set_len(ptr noundef %117, i32 noundef %.0298) #11 br label %1353 758: ; preds = %83, %80 @@ -6288,7 +6288,7 @@ dissect_tds_rowfmt2_token.exit: ; preds = %573, %753 tds7_token_to_idx.exit: ; preds = %758, %759, %760, %761, %762, %763, %764, %765, %766, %767, %768, %769, %770, %771, %772, %773, %774, %775, %776 %.0.in.i272 = phi ptr [ @hf_tds_unknown_tds_token, %776 ], [ @hf_tds_sspi, %775 ], [ @hf_tds_sessionstate, %774 ], [ @hf_tds_row, %773 ], [ @hf_tds_returnstatus, %772 ], [ @hf_tds_order, %771 ], [ @hf_tds_offset, %770 ], [ @hf_tds_nbcrow, %769 ], [ @hf_tds_loginack, %768 ], [ @hf_tds_info, %767 ], [ @hf_tds_featureextack, %766 ], [ @hf_tds_error, %765 ], [ @hf_tds_envchg, %764 ], [ @hf_tds_doneinproc, %763 ], [ @hf_tds_doneproc, %762 ], [ @hf_tds_done, %761 ], [ @hf_tds_colmetadata, %760 ], [ @hf_tds_colfmt, %759 ], [ @hf_tds_capability, %758 ] %.0.i273 = load i32, ptr %.0.in.i272, align 4 - %777 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %.0202332) #11 + %777 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %.0202331) #11 %778 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %.0.i273, ptr noundef nonnull %0, i32 noundef %.0202332, i32 noundef %777, i32 noundef 0) #11 %779 = load i32, ptr @ett_tds_token, align 4 %780 = call ptr @proto_item_add_subtree(ptr noundef %778, i32 noundef %779) #11 @@ -7329,9 +7329,9 @@ dissect_tds7_colmetadata_token.exit: ; preds = %._crit_edge.i278, % %1352 = icmp eq i32 %.1, 0 br i1 %1352, label %.thread306, label %.thread303 -.thread303: ; preds = %dissect_tds7_colmetadata_token.exit.thread, %1225, %1266, %1277, %dissect_tds7_colmetadata_token.exit +.thread302: ; preds = %dissect_tds7_colmetadata_token.exit.thread, %1225, %1266, %1277, %dissect_tds7_colmetadata_token.exit %.1305 = phi i32 [ %.1, %dissect_tds7_colmetadata_token.exit ], [ %1228, %1225 ], [ 5, %1266 ], [ 5, %1277 ], [ 3, %dissect_tds7_colmetadata_token.exit.thread ] - call void @proto_item_set_len(ptr noundef %778, i32 noundef %.1305) #11 + call void @proto_item_set_len(ptr noundef %778, i32 noundef %.1304) #11 br label %1353 1353: ; preds = %.thread303, %.thread @@ -7341,7 +7341,7 @@ dissect_tds7_colmetadata_token.exit: ; preds = %._crit_edge.i278, % %1355 = icmp sgt i32 %1354, 0 br i1 %1355, label %76, label %.thread306, !llvm.loop !25 -.thread306: ; preds = %1353, %dissect_tds7_colmetadata_token.exit, %tds7_token_to_idx.exit, %dissect_tds_prelogin_response.exit, %dissect_tds_prelogin_response.exit.thread, %.thread300 +.thread305: ; preds = %1353, %dissect_tds7_colmetadata_token.exit, %tds7_token_to_idx.exit, %dissect_tds_prelogin_response.exit, %dissect_tds_prelogin_response.exit.thread, %.thread300 ret void } diff --git a/bench/yosys/optimized/memory_dff.ll b/bench/yosys/optimized/memory_dff.ll index aec407f247f..9cabc942708 100644 --- a/bench/yosys/optimized/memory_dff.ll +++ b/bench/yosys/optimized/memory_dff.ll @@ -71698,12 +71698,12 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i160.i: ; preds = %200 invoke void @_ZNSt12length_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %237, ptr noundef nonnull @.str.15) to label %.invoke2770 unwind label %239, !noalias !546 -.invoke2770: ; preds = %._crit_edge.i.i, %._crit_edge.i218.i +.invoke2773: ; preds = %._crit_edge.i.i, %._crit_edge.i218.i %238 = phi ptr [ %237, %._crit_edge.i218.i ], [ %462, %._crit_edge.i.i ] invoke void @__cxa_throw(ptr nonnull %238, ptr nonnull @_ZTISt12length_error, ptr nonnull @_ZNSt12length_errorD1Ev) #24 to label %.cont2771 unwind label %.loopexit.split-lp916 -.cont2771: ; preds = %.invoke2770 +.cont2774: ; preds = %.invoke2770 unreachable 239: ; preds = %._crit_edge.i218.i @@ -71748,11 +71748,11 @@ _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i192.i: ; %260 = icmp ult i64 %259, %250 br i1 %260, label %.invoke2772, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i200.i -.invoke2772: ; preds = %482, %258 +.invoke2775: ; preds = %482, %258 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.18) #24 to label %.cont2773 unwind label %.loopexit.split-lp916 -.cont2773: ; preds = %.invoke2772 +.cont2776: ; preds = %.invoke2772 unreachable _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i200.i: ; preds = %258 @@ -73276,7 +73276,7 @@ _ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__g br label %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i _ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i: ; preds = %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i.i, %_ZNSt16allocator_traitsISaIN12_GLOBAL__N_17MuxDataEEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_.exit.i.i - %.val.i2229 = phi ptr [ %922, %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i.i ], [ %871, %_ZNSt16allocator_traitsISaIN12_GLOBAL__N_17MuxDataEEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_.exit.i.i ] + %.val.i2233 = phi ptr [ %922, %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i.i ], [ %871, %_ZNSt16allocator_traitsISaIN12_GLOBAL__N_17MuxDataEEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_.exit.i.i ] call fastcc void @_ZN12_GLOBAL__N_17MuxDataD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %60) #22, !noalias !546 br label %938 @@ -73746,7 +73746,7 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit262: ; preds = %_ZSt8_DestroyIPN5Yo %1088 = trunc i8 %1087 to i1 br i1 %1088, label %.invoke2774, label %1090 -.invoke2774: ; preds = %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit262, %1085, %1081, %1077 +.invoke2777: ; preds = %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit262, %1085, %1081, %1077 %1089 = phi ptr [ @.str.165, %1077 ], [ @.str.166, %1081 ], [ @.str.167, %1085 ], [ @.str.164, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit262 ] invoke void (ptr, ...) @_ZN5Yosys3logEPKcz(ptr noundef nonnull %1089) to label %3036 unwind label %1073 @@ -74255,7 +74255,7 @@ _ZN5ezSAT3NOTENS_2_VE.exit38.i: ; preds = %_ZN5ezSAT2_V3getEPS %1322 = icmp sgt i32 %1321, 0 br i1 %1322, label %.lr.ph1660, label %._crit_edge -.lr.ph1660: ; preds = %1311 +.lr.ph1662: ; preds = %1311 %1323 = getelementptr inbounds nuw i8, ptr %74, i64 8 %1324 = getelementptr inbounds nuw i8, ptr %74, i64 16 %1325 = getelementptr inbounds nuw i8, ptr %74, i64 24 @@ -75421,7 +75421,7 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread: ; %.not2051678 = icmp sgt i32 %1842, 0 br i1 %.not2051678, label %.lr.ph1684, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread -.lr.ph1684: ; preds = %.preheader887 +.lr.ph1686: ; preds = %.preheader887 %1843 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 32 %1844 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 40 %1845 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 56 @@ -75447,7 +75447,7 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread: ; %1857 = icmp sgt i32 %1856, 0 br i1 %1857, label %.lr.ph1704, label %._crit_edge1705 -.lr.ph1704: ; preds = %.preheader857 +.lr.ph1706: ; preds = %.preheader857 %.val222 = load ptr, ptr %73, align 8 %1858 = getelementptr inbounds nuw i8, ptr %66, i64 792 br label %2780 @@ -75498,7 +75498,7 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i360: ; preds = %1863, %1859 %1876 = icmp sgt i32 %1875, 0 br i1 %1876, label %.lr.ph1674, label %._crit_edge1675 -.lr.ph1674: ; preds = %1871 +.lr.ph1676: ; preds = %1871 %1877 = load i32, ptr %.sroa.0810.01692, align 8 %1878 = getelementptr inbounds nuw i8, ptr %1874, i64 16 %1879 = getelementptr inbounds nuw i8, ptr %1874, i64 24 @@ -75538,13 +75538,13 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365: ; preds = %1892, %1885 %.not.i.i.i366 = icmp ugt i64 %1898, %1888 br i1 %.not.i.i.i366, label %1901, label %.invoke3251 -.invoke3251: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 +.invoke3254: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 %1899 = phi i64 [ %indvars.iv2216, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 ], [ %indvars.iv2216, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i ], [ %indvars.iv2216, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375 ], [ %1888, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365 ], [ %2428, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i ], [ %2403, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i ], [ %2369, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i ], [ %2344, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429 ], [ %indvars.iv2216, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417 ] %1900 = phi i64 [ %2512, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i ], [ %2496, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 ], [ %1948, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375 ], [ %1898, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365 ], [ %2442, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i ], [ %2417, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i ], [ %2383, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i ], [ %2358, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429 ], [ %2331, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417 ] invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.19, i64 noundef %1899, i64 noundef %1900) #24 to label %.cont3252 unwind label %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.cont3252: ; preds = %.invoke3251 +.cont3255: ; preds = %.invoke3251 unreachable 1901: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365 @@ -75565,7 +75565,7 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365: ; preds = %1892, %1885 %1910 = icmp sgt i32 %1909, 0 br i1 %1910, label %.lr.ph1663, label %.critedge -.lr.ph1663: ; preds = %1901 +.lr.ph1665: ; preds = %1901 %1911 = trunc nsw i64 %indvars.iv2216 to i32 %1912 = sdiv i32 %1911, 64 %.sext837 = sext i32 %1912 to i64 @@ -75632,7 +75632,7 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365: ; preds = %1892, %1885 br label %.body406 .body406: ; preds = %.loopexit862, %.loopexit.split-lp863.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit, %2186, %2187, %2189, %2298, %.body724, %2121, %2138, %2625, %2713 - %.sroa.0807.7 = phi ptr [ %.sroa.0807.31670, %2625 ], [ %.sroa.0807.31670, %2713 ], [ %.sroa.0807.31670, %2138 ], [ %.sroa.0807.31670, %2121 ], [ %.sroa.0807.31670, %.body724 ], [ %.sroa.0807.31670, %2298 ], [ %.sroa.0807.31670, %2189 ], [ %.sroa.0807.31670, %2187 ], [ %.sroa.0807.31670, %2186 ], [ %.sroa.0807.31670, %.loopexit862 ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.11681, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.2.ph.ph.ph.ph.ph.ph.ph, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %.sroa.0807.7 = phi ptr [ %.sroa.0807.31670, %2625 ], [ %.sroa.0807.31670, %2713 ], [ %.sroa.0807.31670, %2138 ], [ %.sroa.0807.31670, %2121 ], [ %.sroa.0807.31670, %.body724 ], [ %.sroa.0807.31670, %2298 ], [ %.sroa.0807.31670, %2189 ], [ %.sroa.0807.31670, %2187 ], [ %.sroa.0807.31670, %2186 ], [ %.sroa.0807.31670, %.loopexit862 ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.11683, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.2.ph.ph.ph.ph.ph.ph.ph, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %eh.lpad-body407 = phi { ptr, i32 } [ %.pn23.pn.i, %2625 ], [ %2714, %2713 ], [ %lpad.phi880, %2138 ], [ %2115, %2121 ], [ %2115, %.body724 ], [ %2299, %2298 ], [ %2190, %2189 ], [ %2188, %2187 ], [ %.pn.i384, %2186 ], [ %lpad.loopexit864, %.loopexit862 ], [ %lpad.loopexit867, %.loopexit.split-lp863.loopexit ], [ %lpad.loopexit870, %.loopexit.split-lp863.loopexit.split-lp.loopexit ], [ %lpad.loopexit873, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit881, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit888, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit891, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp892, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %.not.i.i.i370 = icmp eq ptr %.sroa.0807.7, null br i1 %.not.i.i.i370, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit, label %1926 @@ -77027,7 +77027,7 @@ _ZNK5Yosys6SigMapclENS_5RTLIL6SigBitE.exit69.i: ; preds = %_ZNK5Yosys7hashlib3 %2458 = icmp sgt i32 %2457, 0 br i1 %2458, label %.lr.ph1666, label %._crit_edge1667 -.lr.ph1666: ; preds = %.preheader861 +.lr.ph1668: ; preds = %.preheader861 %.val221 = load ptr, ptr %73, align 8 %2459 = getelementptr inbounds nuw i8, ptr %1923, i64 80 %2460 = and i64 %indvars.iv2210, 4294967295 @@ -77487,7 +77487,7 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit67.i: ; preds = %2605, %_ZSt8_Destro call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) br i1 %2615, label %.invoke3250, label %2629 -.invoke3250: ; preds = %2750, %2694, %2446, %2448, %2626, %2547, %.thread +.invoke3253: ; preds = %2750, %2694, %2446, %2448, %2626, %2547, %.thread %2628 = phi ptr [ @.str.170, %.thread ], [ @.str.169, %2547 ], [ @.str.169, %2626 ], [ @.str.171, %2750 ], [ @.str.171, %2694 ], [ @.str.170, %2446 ], [ @.str.170, %2448 ] invoke void (ptr, ...) @_ZN5Yosys3logEPKcz(ptr noundef nonnull %2628) to label %.loopexit886 unwind label %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -77505,7 +77505,7 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit67.i: ; preds = %2605, %_ZSt8_Destro %2637 = icmp slt i64 %indvars.iv.next2214, %2636 br i1 %2637, label %2461, label %._crit_edge1667, !llvm.loop !581 -._crit_edge1667: ; preds = %2629, %.preheader861 +._crit_edge1669: ; preds = %2629, %.preheader861 %.not.i.i495 = icmp eq ptr %.sroa.6.21669, %.sroa.11.21668 br i1 %.not.i.i495, label %2640, label %2638 @@ -77567,7 +77567,7 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE11_S_relocateEPS4_S7_S7 br i1 %.not.i27.i.i.i, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i, label %2658 2658: ; preds = %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit26.i.i.i - call void @_ZdlPv(ptr noundef nonnull %.sroa.0807.31670) #23 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0807.31672) #23 br label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i: ; preds = %2658, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit26.i.i.i @@ -77789,7 +77789,7 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit: ; %2758 = icmp slt i64 %indvars.iv.next2217, %2757 br i1 %2758, label %1885, label %._crit_edge1675, !llvm.loop !588 -._crit_edge1675: ; preds = %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit, %1871 +._crit_edge1677: ; preds = %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit, %1871 %.sroa.11.2.lcssa = phi ptr [ %.sroa.11.11679, %1871 ], [ %.sroa.11.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] %.sroa.6.2.lcssa = phi ptr [ %.sroa.6.11680, %1871 ], [ %.sroa.6.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] %.sroa.0807.3.lcssa = phi ptr [ %.sroa.0807.11681, %1871 ], [ %.sroa.0807.6, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] @@ -77799,7 +77799,7 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit: ; %.not205 = icmp slt i64 %indvars.iv.next2220, %2760 br i1 %.not205, label %1859, label %.preheader885, !llvm.loop !589 -.lr.ph1690: ; preds = %.preheader885, %.lr.ph1690 +.lr.ph1692: ; preds = %.preheader885, %.lr.ph1690 %.sroa.0737.01689 = phi ptr [ %2778, %.lr.ph1690 ], [ %.sroa.0807.3.lcssa, %.preheader885 ] %.sroa.0.0.copyload = load ptr, ptr %.sroa.0737.01689, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.0737.01689, i64 8 @@ -77858,7 +77858,7 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533: ; preds = %2787 = icmp sgt i32 %2786, 0 br i1 %2787, label %.lr.ph1698, label %._crit_edge1699.thread -.lr.ph1698: ; preds = %.preheader +.lr.ph1700: ; preds = %.preheader %2788 = getelementptr inbounds nuw i8, ptr %2783, i64 88 %2789 = load ptr, ptr %2788, align 8 %2790 = getelementptr inbounds nuw i8, ptr %2783, i64 48 @@ -77896,7 +77896,7 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533: ; preds = %exitcond.not = icmp eq i32 %2805, %2786 br i1 %exitcond.not, label %._crit_edge1699, label %2791, !llvm.loop !590 -._crit_edge1699: ; preds = %2804 +._crit_edge1701: ; preds = %2804 %2806 = trunc nuw i8 %.1160 to i1 br i1 %2806, label %2807, label %._crit_edge1699.thread @@ -77909,7 +77909,7 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533: ; preds = invoke void (ptr, ...) @_ZN5Yosys3logEPKcz(ptr noundef nonnull @.str.172, i32 noundef %2810) to label %.loopexit894 unwind label %.loopexit.split-lp -._crit_edge1699.thread: ; preds = %.preheader, %2807, %._crit_edge1699 +._crit_edge1701.thread: ; preds = %.preheader, %2807, %._crit_edge1699 %.0159.lcssa2263 = phi i8 [ %.1160, %2807 ], [ %.1160, %._crit_edge1699 ], [ 0, %.preheader ] %2811 = phi i8 [ 1, %2807 ], [ %.1158, %._crit_edge1699 ], [ 0, %.preheader ] %2812 = getelementptr inbounds nuw i8, ptr %2783, i64 128 @@ -77936,7 +77936,7 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533: ; preds = %2825 = icmp slt i64 %indvars.iv.next2223, %2824 br i1 %2825, label %2780, label %._crit_edge1705, !llvm.loop !591 -._crit_edge1705: ; preds = %2817, %.preheader857 +._crit_edge1707: ; preds = %2817, %.preheader857 invoke void (ptr, ...) @_ZN5Yosys3logEPKcz(ptr noundef nonnull @.str.173) to label %2826 unwind label %.loopexit.split-lp @@ -78376,7 +78376,7 @@ _ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader: ; preds = %.noexc549 %2997 = icmp sgt i32 %2996, 0 br i1 %2997, label %.lr.ph1707, label %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551._crit_edge -.lr.ph1707: ; preds = %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader +.lr.ph1709: ; preds = %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader %.val223 = load ptr, ptr %73, align 8 %2998 = getelementptr inbounds nuw i8, ptr %105, i64 176 %2999 = getelementptr inbounds nuw i8, ptr %105, i64 216 diff --git a/bench/zxing/optimized/PDFCodewordDecoder.cpp.ll b/bench/zxing/optimized/PDFCodewordDecoder.cpp.ll index 9b1e03044b1..f26ac5cbc5c 100644 --- a/bench/zxing/optimized/PDFCodewordDecoder.cpp.ll +++ b/bench/zxing/optimized/PDFCodewordDecoder.cpp.ll @@ -157,9 +157,7 @@ _ZN5ZXing6Pdf41715CodewordDecoder11GetCodewordEi.exit.i: ; preds = %49 %59 = add nsw i32 %58, -1 %60 = srem i32 %59, 929 %61 = icmp eq i32 %60, -1 - %.not = icmp eq i32 %.1.lcssa.i.i, -1 - %or.cond = select i1 %61, i1 true, i1 %.not - br i1 %or.cond, label %_ZN5ZXing6Pdf417L23GetDecodedCodewordValueERKSt5arrayIiLm8EE.exit.thread, label %107 + br i1 %61, label %_ZN5ZXing6Pdf417L23GetDecodedCodewordValueERKSt5arrayIiLm8EE.exit.thread, label %107 _ZN5ZXing6Pdf417L23GetDecodedCodewordValueERKSt5arrayIiLm8EE.exit.thread: ; preds = %_ZN5ZXing6Pdf41715CodewordDecoder11GetCodewordEi.exit.i, %49, %_ZSt11lower_boundIPKtiET_S2_S2_RKT0_.exit.i.i, %_ZN5ZXing6Pdf417L11GetBitValueERKSt5arrayIiLm8EE.exit.i call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..736b65c030f 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/124942 export COMPTIME_MODE=0 # Please rebase manually