diff --git a/bench/abseil-cpp/optimized/cord_test.ll b/bench/abseil-cpp/optimized/cord_test.ll index dd1f1f51ee8..eddd26055d8 100644 --- a/bench/abseil-cpp/optimized/cord_test.ll +++ b/bench/abseil-cpp/optimized/cord_test.ll @@ -123274,6 +123274,7 @@ _ZN4absl4Cord12CharIteratorppEv.exit: ; preds = %_ZN4absl4Cord13Chun _ZNK4absl4Cord11chunk_beginEv.exit: ; preds = %_ZN4absl13cord_internal18CordRepBtreeReader4InitEPNS0_12CordRepBtreeE.exit.i.i.i, %_ZN4absl13cord_internal8EdgeDataEPKNS0_7CordRepE.exit.i.i.i1182, %3328 %.sink3487 = phi i64 [ %3330, %3328 ], [ %3313, %_ZN4absl13cord_internal8EdgeDataEPKNS0_7CordRepE.exit.i.i.i1182 ], [ %3294, %_ZN4absl13cord_internal18CordRepBtreeReader4InitEPNS0_12CordRepBtreeE.exit.i.i.i ] %spec.select.i.i.i.sink = phi ptr [ %spec.select.i.i.i, %3328 ], [ %.sroa.3.0.i.i.i.i1184, %_ZN4absl13cord_internal8EdgeDataEPKNS0_7CordRepE.exit.i.i.i1182 ], [ %.sroa.3.0.i.i.i.i.i1192, %_ZN4absl13cord_internal18CordRepBtreeReader4InitEPNS0_12CordRepBtreeE.exit.i.i.i ] + %.sroa.2.0.copyload.i1215 = phi ptr [ %362, %3328 ], [ %.sroa.3.0.i.i.i.i1184, %_ZN4absl13cord_internal8EdgeDataEPKNS0_7CordRepE.exit.i.i.i1182 ], [ %.sroa.3.0.i.i.i.i.i1192, %_ZN4absl13cord_internal18CordRepBtreeReader4InitEPNS0_12CordRepBtreeE.exit.i.i.i ] store i64 %.sink3487, ptr %226, align 8, !tbaa !23, !alias.scope !1721 store ptr %spec.select.i.i.i.sink, ptr %.sroa.4.0..sroa_idx.i.i.i1185, align 8, !tbaa !150, !alias.scope !1721 %3489 = icmp ult i64 %.sink3487, 5 @@ -123286,7 +123287,7 @@ _ZN4absl10StartsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit1221.thre br label %3492 _ZN4absl10StartsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit1221: ; preds = %_ZNK4absl4Cord11chunk_beginEv.exit - %bcmp.i.i1219 = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %spec.select.i.i.i.sink, ptr noundef nonnull dereferenceable(5) @.str.57, i64 5) + %bcmp.i.i1219 = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %.sroa.2.0.copyload.i1215, ptr noundef nonnull dereferenceable(5) @.str.57, i64 5) %3490 = icmp eq i32 %bcmp.i.i1219, 0 %3491 = zext i1 %3490 to i8 store i8 %3491, ptr %225, align 8, !tbaa !73 diff --git a/bench/arrow/optimized/array_dict.ll b/bench/arrow/optimized/array_dict.ll index 943a97bef58..e5c6878976d 100644 --- a/bench/arrow/optimized/array_dict.ll +++ b/bench/arrow/optimized/array_dict.ll @@ -91985,7 +91985,7 @@ define linkonce_odr void @_ZN5arrow8internal16DictionaryTraitsINS_10StringTypeEv br i1 %68, label %.lr.ph.i, label %.loopexit93, !llvm.loop !3925 .loopexit93: ; preds = %.noexc46, %.noexc - %.0.lcssa.i = phi ptr [ %41, %.noexc ], [ %66, %.noexc46 ] + %.0.lcssa.i = phi ptr [ %40, %.noexc ], [ %66, %.noexc46 ] %69 = getelementptr inbounds nuw i8, ptr %3, i64 336 %70 = load i64, ptr %69, align 8, !tbaa !993 %71 = trunc i64 %70 to i32 @@ -97469,7 +97469,7 @@ define linkonce_odr void @_ZN5arrow8internal16DictionaryTraitsINS_10BinaryTypeEv br i1 %68, label %.lr.ph.i, label %.loopexit93, !llvm.loop !3925 .loopexit93: ; preds = %.noexc46, %.noexc - %.0.lcssa.i = phi ptr [ %41, %.noexc ], [ %66, %.noexc46 ] + %.0.lcssa.i = phi ptr [ %40, %.noexc ], [ %66, %.noexc46 ] %69 = getelementptr inbounds nuw i8, ptr %3, i64 336 %70 = load i64, ptr %69, align 8, !tbaa !993 %71 = trunc i64 %70 to i32 @@ -105400,7 +105400,7 @@ define linkonce_odr void @_ZN5arrow8internal16DictionaryTraitsINS_15LargeStringT br i1 %68, label %.lr.ph.i, label %.loopexit93, !llvm.loop !4456 .loopexit93: ; preds = %.noexc46, %.noexc - %.0.lcssa.i = phi ptr [ %41, %.noexc ], [ %66, %.noexc46 ] + %.0.lcssa.i = phi ptr [ %40, %.noexc ], [ %66, %.noexc46 ] %69 = getelementptr inbounds nuw i8, ptr %3, i64 336 %70 = load i64, ptr %69, align 8, !tbaa !993 %71 = sub nsw i64 %70, %53 @@ -108290,7 +108290,7 @@ define linkonce_odr void @_ZN5arrow8internal16DictionaryTraitsINS_15LargeBinaryT br i1 %68, label %.lr.ph.i, label %.loopexit93, !llvm.loop !4456 .loopexit93: ; preds = %.noexc46, %.noexc - %.0.lcssa.i = phi ptr [ %41, %.noexc ], [ %66, %.noexc46 ] + %.0.lcssa.i = phi ptr [ %40, %.noexc ], [ %66, %.noexc46 ] %69 = getelementptr inbounds nuw i8, ptr %3, i64 336 %70 = load i64, ptr %69, align 8, !tbaa !993 %71 = sub nsw i64 %70, %53 diff --git a/bench/arrow/optimized/vector_hash.ll b/bench/arrow/optimized/vector_hash.ll index aafa95e000e..024c68bb03c 100644 --- a/bench/arrow/optimized/vector_hash.ll +++ b/bench/arrow/optimized/vector_hash.ll @@ -42679,7 +42679,7 @@ define linkonce_odr void @_ZN5arrow8internal16DictionaryTraitsINS_10BinaryTypeEv br i1 %68, label %.lr.ph.i, label %.loopexit95, !llvm.loop !1764 .loopexit95: ; preds = %.noexc48, %.noexc - %.0.lcssa.i = phi ptr [ %41, %.noexc ], [ %66, %.noexc48 ] + %.0.lcssa.i = phi ptr [ %40, %.noexc ], [ %66, %.noexc48 ] %69 = getelementptr inbounds nuw i8, ptr %3, i64 336 %70 = load i64, ptr %69, align 8, !tbaa !1205 %71 = trunc i64 %70 to i32 @@ -47922,7 +47922,7 @@ define linkonce_odr void @_ZN5arrow8internal16DictionaryTraitsINS_15LargeBinaryT br i1 %68, label %.lr.ph.i, label %.loopexit103, !llvm.loop !2145 .loopexit103: ; preds = %.noexc48, %.noexc - %.0.lcssa.i = phi ptr [ %41, %.noexc ], [ %66, %.noexc48 ] + %.0.lcssa.i = phi ptr [ %40, %.noexc ], [ %66, %.noexc48 ] %69 = getelementptr inbounds nuw i8, ptr %3, i64 336 %70 = load i64, ptr %69, align 8, !tbaa !1205 %71 = sub nsw i64 %70, %53 diff --git a/bench/boost/optimized/graphml.ll b/bench/boost/optimized/graphml.ll index 2b90ac85abf..3d398ac64ae 100644 --- a/bench/boost/optimized/graphml.ll +++ b/bench/boost/optimized/graphml.ll @@ -26972,7 +26972,7 @@ _ZNSt15__new_allocatorIN5boost11multi_index6detail14copy_map_entryINS2_20sequenc 37: ; preds = %_ZNK5boost11multi_index6detail8copy_mapINS1_20sequenced_index_nodeINS1_18ordered_index_nodeINS1_19null_augment_policyENS1_15index_node_baseISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13property_tree11basic_ptreeISD_SD_St4lessISD_EEEESaISK_EEEEEEESL_E4findEPSO_.exit.i, %._crit_edge %.015.i = phi ptr [ %34, %._crit_edge ], [ %.0.i.i, %_ZNK5boost11multi_index6detail8copy_mapINS1_20sequenced_index_nodeINS1_18ordered_index_nodeINS1_19null_augment_policyENS1_15index_node_baseISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13property_tree11basic_ptreeISD_SD_St4lessISD_EEEESaISK_EEEEEEESL_E4findEPSO_.exit.i ] - %.0.i = phi ptr [ %35, %._crit_edge ], [ %42, %_ZNK5boost11multi_index6detail8copy_mapINS1_20sequenced_index_nodeINS1_18ordered_index_nodeINS1_19null_augment_policyENS1_15index_node_baseISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13property_tree11basic_ptreeISD_SD_St4lessISD_EEEESaISK_EEEEEEESL_E4findEPSO_.exit.i ] + %.0.i = phi ptr [ %35, %._crit_edge ], [ %41, %_ZNK5boost11multi_index6detail8copy_mapINS1_20sequenced_index_nodeINS1_18ordered_index_nodeINS1_19null_augment_policyENS1_15index_node_baseISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13property_tree11basic_ptreeISD_SD_St4lessISD_EEEESaISK_EEEEEEESL_E4findEPSO_.exit.i ] %38 = getelementptr inbounds nuw i8, ptr %.0.i, i64 104 %39 = load ptr, ptr %38, align 8, !tbaa !3 %40 = icmp eq ptr %39, null diff --git a/bench/cpython/optimized/_ctypes.ll b/bench/cpython/optimized/_ctypes.ll index b4922be8fa8..710e4cfa0d9 100644 --- a/bench/cpython/optimized/_ctypes.ll +++ b/bench/cpython/optimized/_ctypes.ll @@ -2066,13 +2066,10 @@ PyObject_TypeCheck.exit112.thread: ; preds = %PyObject_TypeCheck. 93: ; preds = %PyObject_TypeCheck.exit112.thread %94 = load ptr, ptr %90, align 8, !tbaa !28 %95 = tail call ptr @PyObject_GetTypeData(ptr noundef %.val101, ptr noundef %94) #17 - %96 = load i32, ptr %95, align 8, !tbaa !29 - %.not8.i.i114 = icmp eq i32 %96, 0 - %spec.select = select i1 %.not8.i.i114, ptr null, ptr %95 br label %PyStgInfo_FromObject.exit PyStgInfo_FromObject.exit: ; preds = %93, %PyObject_TypeCheck.exit112.thread - %.05 = phi ptr [ null, %PyObject_TypeCheck.exit112.thread ], [ %spec.select, %93 ] + %.05 = phi ptr [ null, %PyObject_TypeCheck.exit112.thread ], [ %95, %93 ] %97 = load ptr, ptr %90, align 8, !tbaa !28 %98 = tail call i32 @PyObject_IsInstance(ptr noundef nonnull %1, ptr noundef %97) #17 %.not.i.i116 = icmp ne i32 %98, 0 @@ -4578,13 +4575,10 @@ PyCData_item_type.exit: ; preds = %PyObject_TypeCheck. 29: ; preds = %26 %30 = load ptr, ptr %8, align 8, !tbaa !28 %31 = tail call ptr @PyObject_GetTypeData(ptr noundef nonnull %.tr10.i, ptr noundef %30) #17 - %32 = load i32, ptr %31, align 8, !tbaa !29 - %.not8.i.i33 = icmp eq i32 %32, 0 - %spec.select38 = select i1 %.not8.i.i33, ptr null, ptr %31 br label %PyStgInfo_FromType.exit PyStgInfo_FromType.exit: ; preds = %29, %26 - %.0 = phi ptr [ null, %26 ], [ %spec.select38, %29 ] + %.0 = phi ptr [ null, %26 ], [ %31, %29 ] %33 = getelementptr inbounds nuw i8, ptr %0, i64 16 %34 = load ptr, ptr %33, align 16, !tbaa !42 store ptr %34, ptr %1, align 8, !tbaa !109 @@ -10302,13 +10296,10 @@ PyStgInfo_FromType.exit.thread: ; preds = %13, %4, %PyStgInfo_ 22: ; preds = %PyStgInfo_FromType.exit.thread %23 = load ptr, ptr %10, align 8, !tbaa !28 %24 = tail call ptr @PyObject_GetTypeData(ptr noundef nonnull %1, ptr noundef %23) #17 - %25 = load i32, ptr %24, align 8, !tbaa !29 - %.not8.i.i83 = icmp eq i32 %25, 0 - %spec.select = select i1 %.not8.i.i83, ptr null, ptr %24 br label %PyStgInfo_FromType.exit85 PyStgInfo_FromType.exit85: ; preds = %22, %PyStgInfo_FromType.exit.thread - %.088 = phi ptr [ null, %PyStgInfo_FromType.exit.thread ], [ %spec.select, %22 ] + %.088 = phi ptr [ null, %PyStgInfo_FromType.exit.thread ], [ %24, %22 ] %26 = tail call ptr @PyType_GetDict(ptr noundef nonnull %1) #17 %27 = tail call ptr @PyDict_GetItemWithError(ptr noundef %26, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 46056)) #17 %.not58 = icmp eq ptr %26, null @@ -10463,33 +10454,33 @@ Py_DECREF.exit.us: ; preds = %64, %61, %Py_DECREF %84 = load ptr, ptr %83, align 8, !tbaa !27 %85 = tail call i32 @PyDict_Contains(ptr noundef nonnull %3, ptr noundef nonnull %76) #17 %.not62 = icmp eq i32 %85, 0 - br i1 %.not62, label %102, label %86 - -86: ; preds = %82 - %87 = icmp sgt i32 %85, 0 - br i1 %87, label %88, label %91 - -88: ; preds = %86 - %89 = load ptr, ptr @PyExc_TypeError, align 8, !tbaa !27 - %90 = tail call ptr (ptr, ptr, ...) @PyErr_Format(ptr noundef %89, ptr noundef nonnull @.str.162, ptr noundef nonnull %76) #17 - br label %91 + br i1 %.not62, label %102, label %85 -91: ; preds = %88, %86 - %92 = load i32, ptr %74, align 8, !tbaa !23 - %.not.i70 = icmp sgt i32 %92, -1 - br i1 %.not.i70, label %93, label %Py_DECREF.exit71 - -93: ; preds = %91 - %94 = add nsw i32 %92, -1 - store i32 %94, ptr %74, align 8, !tbaa !23 - %95 = icmp eq i32 %94, 0 - br i1 %95, label %96, label %Py_DECREF.exit71 +93: ; preds = %81 + %86 = icmp sgt i32 %84, 0 + br i1 %86, label %96, label %90 96: ; preds = %93 - tail call void @_Py_Dealloc(ptr noundef nonnull %74) #17 + %88 = load ptr, ptr @PyExc_TypeError, align 8, !tbaa !27 + %89 = tail call ptr (ptr, ptr, ...) @PyErr_Format(ptr noundef %88, ptr noundef nonnull @.str.162, ptr noundef nonnull %75) #17 + br label %90 + +90: ; preds = %87, %85 + %91 = load i32, ptr %73, align 8, !tbaa !23 + %.not.i70 = icmp sgt i32 %91, -1 + br i1 %.not.i70, label %92, label %Py_DECREF.exit71 + +92: ; preds = %90 + %93 = add nsw i32 %91, -1 + store i32 %93, ptr %73, align 8, !tbaa !23 + %94 = icmp eq i32 %93, 0 + br i1 %94, label %95, label %Py_DECREF.exit71 + +95: ; preds = %92 + tail call void @_Py_Dealloc(ptr noundef nonnull %73) #17 br label %Py_DECREF.exit71 -Py_DECREF.exit71: ; preds = %91, %93, %96 +Py_DECREF.exit71: ; preds = %90, %92, %95 %97 = load i32, ptr %76, align 8, !tbaa !23 %.not.i68 = icmp sgt i32 %97, -1 br i1 %.not.i68, label %98, label %.critedge65 diff --git a/bench/duckdb/optimized/regexp.ll b/bench/duckdb/optimized/regexp.ll index cb15fa72066..f60f5292213 100644 --- a/bench/duckdb/optimized/regexp.ll +++ b/bench/duckdb/optimized/regexp.ll @@ -1554,14 +1554,12 @@ _ZN10duckdb_re28PODArrayIPNS_6RegexpEED2Ev.exit88: ; preds = %60 89: ; preds = %75 %90 = trunc i32 %.060 to i16 store i16 %90, ptr %81, align 2, !tbaa !13 - %91 = icmp ult i16 %90, 2 - %92 = getelementptr inbounds nuw i8, ptr %74, i64 8 - %.0.i80 = select i1 %91, ptr %92, ptr null - %93 = icmp eq i32 %.060, 1 - br i1 %93, label %.lr.ph.preheader, label %.loopexit + %91 = getelementptr inbounds nuw i8, ptr %74, i64 8 + %92 = icmp eq i32 %.060, 1 + br i1 %92, label %.lr.ph.preheader, label %.loopexit .lr.ph.preheader: ; preds = %.thread131, %89 - %.0.i80133 = phi ptr [ %86, %.thread131 ], [ %.0.i80, %89 ] + %.0.i80133 = phi ptr [ %86, %.thread131 ], [ %91, %89 ] %wide.trip.count = zext nneg i32 %.060 to i64 br label %.lr.ph diff --git a/bench/gromacs/optimized/localtopology.ll b/bench/gromacs/optimized/localtopology.ll index 8c0de7cf4bc..ebb74ccf0c2 100644 --- a/bench/gromacs/optimized/localtopology.ll +++ b/bench/gromacs/optimized/localtopology.ll @@ -3111,10 +3111,6 @@ _ZNK11gmx_ga2la_t11usingDirectEv.exit.i: ; preds = %77, %75 %81 = sext i32 %68 to i64 %82 = load ptr, ptr %2, align 8, !tbaa !315 %83 = getelementptr inbounds nuw %"struct.gmx_ga2la_t::Entry", ptr %82, i64 %81 - %84 = getelementptr inbounds nuw i8, ptr %83, i64 4 - %85 = load i32, ptr %84, align 4, !tbaa !318 - %86 = icmp eq i32 %85, -1 - %spec.select.i59 = select i1 %86, ptr null, ptr %83 br label %_ZNK11gmx_ga2la_t4findEi.exit 87: ; preds = %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i @@ -3145,7 +3141,7 @@ _ZNK11gmx_ga2la_t11usingDirectEv.exit.i: ; preds = %77, %75 br i1 %104, label %._crit_edge, label %.lr.ph _ZNK11gmx_ga2la_t4findEi.exit: ; preds = %80, %._crit_edge - %.0.i = phi ptr [ %96, %._crit_edge ], [ %spec.select.i59, %80 ] + %.0.i = phi ptr [ %96, %._crit_edge ], [ %83, %80 ] %105 = load i32, ptr %.0.i, align 4, !tbaa !334 store i32 %105, ptr %29, align 8, !tbaa !11 br label %.loopexit @@ -3155,37 +3151,33 @@ _ZNK11gmx_ga2la_t4findEi.exit: ; preds = %80, %._crit_edge %107 = getelementptr inbounds nuw i32, ptr %36, i64 %indvars.iv %108 = load i32, ptr %107, align 4, !tbaa !11 %.reass = add i32 %108, %invariant.op - br label %109 - -109: ; preds = %115, %106 - %.not.i.i.i.i60 = phi i1 [ true, %106 ], [ false, %115 ] - %.0813.i.i.i.i61 = phi i64 [ 0, %106 ], [ 1, %115 ] - %.0912.i.i.i.i62 = phi i64 [ 2, %106 ], [ %.1.i.i.i.i63, %115 ] - %110 = getelementptr inbounds nuw [2 x i8], ptr @__const._ZSt24__find_uniq_type_in_packISt6vectorIN11gmx_ga2la_t5EntryESaIS2_EEJS4_N3gmx9HashedMapIS2_EEEEmv.__found, i64 0, i64 %.0813.i.i.i.i61 - %111 = load i8, ptr %110, align 1, !tbaa !139, !range !132, !noundef !133 - %112 = trunc nuw i8 %111 to i1 - br i1 %112, label %113, label %115 - -113: ; preds = %109 - %114 = icmp samesign ult i64 %.0912.i.i.i.i62, 2 - br i1 %114, label %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i64, label %115 - -115: ; preds = %113, %109 - %.1.i.i.i.i63 = phi i64 [ %.0912.i.i.i.i62, %109 ], [ %.0813.i.i.i.i61, %113 ] - br i1 %.not.i.i.i.i60, label %109, label %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i64, !llvm.loop !314 - -_ZNK11gmx_ga2la_t11usingDirectEv.exit.i64: ; preds = %115, %113 - %spec.select.i.i.i.i65 = phi i64 [ 2, %113 ], [ %.1.i.i.i.i63, %115 ] - %116 = icmp eq i64 %spec.select.i.i.i.i65, %53 - br i1 %116, label %117, label %123 - -117: ; preds = %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i64 - %118 = sext i32 %.reass to i64 - %119 = getelementptr inbounds nuw %"struct.gmx_ga2la_t::Entry", ptr %55, i64 %118 - %120 = getelementptr inbounds nuw i8, ptr %119, i64 4 - %121 = load i32, ptr %120, align 4, !tbaa !318 - %122 = icmp eq i32 %121, -1 - %spec.select.i68 = select i1 %122, ptr null, ptr %119 + br label %106 + +117: ; preds = %112, %106 + %.not.i.i.i.i60 = phi i1 [ true, %103 ], [ false, %112 ] + %.0813.i.i.i.i61 = phi i64 [ 0, %103 ], [ 1, %112 ] + %.0912.i.i.i.i62 = phi i64 [ 2, %103 ], [ %.1.i.i.i.i63, %112 ] + %107 = getelementptr inbounds nuw [2 x i8], ptr @__const._ZSt24__find_uniq_type_in_packISt6vectorIN11gmx_ga2la_t5EntryESaIS2_EEJS4_N3gmx9HashedMapIS2_EEEEmv.__found, i64 0, i64 %.0813.i.i.i.i61 + %108 = load i8, ptr %107, align 1, !tbaa !139, !range !132, !noundef !133 + %109 = trunc nuw i8 %108 to i1 + br i1 %109, label %110, label %112 + +110: ; preds = %106 + %111 = icmp samesign ult i64 %.0912.i.i.i.i62, 2 + br i1 %111, label %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i64, label %112 + +112: ; preds = %110, %106 + %.1.i.i.i.i63 = phi i64 [ %.0912.i.i.i.i62, %106 ], [ %.0813.i.i.i.i61, %110 ] + br i1 %.not.i.i.i.i60, label %106, label %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i64, !llvm.loop !314 + +_ZNK11gmx_ga2la_t11usingDirectEv.exit.i64: ; preds = %112, %110 + %spec.select.i.i.i.i65 = phi i64 [ 2, %110 ], [ %.1.i.i.i.i63, %112 ] + %113 = icmp eq i64 %spec.select.i.i.i.i65, %53 + br i1 %113, label %114, label %117 + +114: ; preds = %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i64 + %115 = sext i32 %.reass to i64 + %116 = getelementptr inbounds nuw %"struct.gmx_ga2la_t::Entry", ptr %55, i64 %115 br label %_ZNK11gmx_ga2la_t4findEi.exit69 123: ; preds = %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i64 @@ -3213,8 +3205,8 @@ _ZNK11gmx_ga2la_t11usingDirectEv.exit.i64: ; preds = %115, %113 %138 = icmp eq i32 %137, %.reass br i1 %138, label %._crit_edge9, label %.lr.ph8 -_ZNK11gmx_ga2la_t4findEi.exit69: ; preds = %117, %._crit_edge9 - %.0.i67 = phi ptr [ %130, %._crit_edge9 ], [ %spec.select.i68, %117 ] +_ZNK11gmx_ga2la_t4findEi.exit69: ; preds = %114, %._crit_edge9 + %.0.i67 = phi ptr [ %130, %._crit_edge9 ], [ %116, %114 ] %139 = load i32, ptr %.0.i67, align 4, !tbaa !334 %140 = getelementptr inbounds nuw [7 x i32], ptr %7, i64 0, i64 %indvars.iv store i32 %139, ptr %140, align 4, !tbaa !11 diff --git a/bench/gromacs/optimized/wholemoleculetransform.ll b/bench/gromacs/optimized/wholemoleculetransform.ll index fbf2c4a013c..4d39e58ed97 100644 --- a/bench/gromacs/optimized/wholemoleculetransform.ll +++ b/bench/gromacs/optimized/wholemoleculetransform.ll @@ -1177,18 +1177,14 @@ _ZNK11gmx_ga2la_t11usingDirectEv.exit.i.i.i: ; preds = %101, %99 103: ; preds = %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i.i.i %104 = sext i32 %94 to i64 %105 = getelementptr inbounds nuw %"struct.gmx_ga2la_t::Entry", ptr %92, i64 %104 - %106 = getelementptr inbounds nuw i8, ptr %105, i64 4 - %107 = load i32, ptr %106, align 4, !tbaa !132 - %108 = icmp eq i32 %107, -1 - %spec.select.i.i.i = select i1 %108, ptr null, ptr %105 br label %"_ZZN3gmx22WholeMoleculeTransform15updateAtomOrderENS_8ArrayRefIKiEERK11gmx_ga2la_tENK3$_0clEi.exit.i" 109: ; preds = %_ZNK11gmx_ga2la_t11usingDirectEv.exit.i.i.i - %110 = load i32, ptr %54, align 8, !tbaa !134 + %110 = load i32, ptr %54, align 8, !tbaa !132 %111 = and i32 %110, %94 %112 = sext i32 %111 to i64 %113 = getelementptr inbounds nuw %"struct.gmx::HashedMap::hashEntry", ptr %92, i64 %112 - %114 = load i32, ptr %113, align 4, !tbaa !141 + %114 = load i32, ptr %113, align 4, !tbaa !139 %115 = icmp eq i32 %114, %94 br i1 %115, label %._crit_edge.i.i, label %.lr.ph.i.i @@ -1200,23 +1196,23 @@ _ZNK11gmx_ga2la_t11usingDirectEv.exit.i.i.i: ; preds = %101, %99 .lr.ph.i.i: ; preds = %109, %.lr.ph.i.i %118 = phi i64 [ %122, %.lr.ph.i.i ], [ %112, %109 ] %119 = getelementptr inbounds nuw %"struct.gmx::HashedMap::hashEntry", ptr %92, i64 %118, i32 2 - %120 = load i32, ptr %119, align 4, !tbaa !143 + %120 = load i32, ptr %119, align 4, !tbaa !142 %121 = icmp sgt i32 %120, -1 tail call void @llvm.assume(i1 %121) %122 = zext nneg i32 %120 to i64 %123 = getelementptr inbounds nuw %"struct.gmx::HashedMap::hashEntry", ptr %92, i64 %122 - %124 = load i32, ptr %123, align 4, !tbaa !141 + %124 = load i32, ptr %123, align 4, !tbaa !139 %125 = icmp eq i32 %124, %94 br i1 %125, label %._crit_edge.i.i, label %.lr.ph.i.i "_ZZN3gmx22WholeMoleculeTransform15updateAtomOrderENS_8ArrayRefIKiEERK11gmx_ga2la_tENK3$_0clEi.exit.i": ; preds = %._crit_edge.i.i, %103 - %.0.i.i.i = phi ptr [ %117, %._crit_edge.i.i ], [ %spec.select.i.i.i, %103 ] - %126 = load i32, ptr %.0.i.i.i, align 4, !tbaa !144 + %.0.i.i.i = phi ptr [ %117, %._crit_edge.i.i ], [ %105, %103 ] + %126 = load i32, ptr %.0.i.i.i, align 4, !tbaa !143 store i32 %126, ptr %.sroa.04.09.i, align 4, !tbaa !126 %127 = getelementptr inbounds nuw i8, ptr %.sroa.06.010.i, i64 4 %128 = getelementptr inbounds nuw i8, ptr %.sroa.04.09.i, i64 4 %.not.i = icmp eq ptr %127, %80 - br i1 %.not.i, label %"_ZSt9transformIN3gmx12ArrayRefIterIKiEENS1_IiEEZNS0_22WholeMoleculeTransform15updateAtomOrderENS0_8ArrayRefIS2_EERK11gmx_ga2la_tE3$_0ET0_T_SD_SC_T1_.exit", label %93, !llvm.loop !145 + br i1 %.not.i, label %"_ZSt9transformIN3gmx12ArrayRefIterIKiEENS1_IiEEZNS0_22WholeMoleculeTransform15updateAtomOrderENS0_8ArrayRefIS2_EERK11gmx_ga2la_tE3$_0ET0_T_SD_SC_T1_.exit", label %93, !llvm.loop !144 129: ; preds = %65 tail call void @_ZN3gmx11ListOfListsIiE18pushBackListOfSizeEi(ptr noundef nonnull align 8 dereferenceable(48) %31, i32 noundef 0) @@ -1636,17 +1632,16 @@ attributes #14 = { noreturn } !129 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb0EJSt6vectorIN11gmx_ga2la_t5EntryESaIS4_EEN3gmx9HashedMapIS4_EEEEE", !7, i64 0, !7, i64 40} !130 = !{!18, !18, i64 0} !131 = distinct !{!131, !112} -!132 = !{!133, !10, i64 4} -!133 = !{!"_ZTSN11gmx_ga2la_t5EntryE", !10, i64 0, !10, i64 4} -!134 = !{!135, !10, i64 24} -!135 = !{!"_ZTSN3gmx9HashedMapIN11gmx_ga2la_t5EntryEEE", !136, i64 0, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36} -!136 = !{!"_ZTSSt6vectorIN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryESaIS5_EE", !137, i64 0} -!137 = !{!"_ZTSSt12_Vector_baseIN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryESaIS5_EE", !138, i64 0} -!138 = !{!"_ZTSNSt12_Vector_baseIN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryESaIS5_EE12_Vector_implE", !139, i64 0} -!139 = !{!"_ZTSNSt12_Vector_baseIN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryESaIS5_EE17_Vector_impl_dataE", !140, i64 0, !140, i64 8, !140, i64 16} -!140 = !{!"p1 _ZTSN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryE", !17, i64 0} -!141 = !{!142, !10, i64 0} -!142 = !{!"_ZTSN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryE", !10, i64 0, !133, i64 4, !10, i64 12} -!143 = !{!142, !10, i64 12} -!144 = !{!133, !10, i64 0} -!145 = distinct !{!145, !112} +!132 = !{!133, !10, i64 24} +!133 = !{!"_ZTSN3gmx9HashedMapIN11gmx_ga2la_t5EntryEEE", !134, i64 0, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36} +!134 = !{!"_ZTSSt6vectorIN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryESaIS5_EE", !135, i64 0} +!135 = !{!"_ZTSSt12_Vector_baseIN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryESaIS5_EE", !136, i64 0} +!136 = !{!"_ZTSNSt12_Vector_baseIN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryESaIS5_EE12_Vector_implE", !137, i64 0} +!137 = !{!"_ZTSNSt12_Vector_baseIN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryESaIS5_EE17_Vector_impl_dataE", !138, i64 0, !138, i64 8, !138, i64 16} +!138 = !{!"p1 _ZTSN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryE", !17, i64 0} +!139 = !{!140, !10, i64 0} +!140 = !{!"_ZTSN3gmx9HashedMapIN11gmx_ga2la_t5EntryEE9hashEntryE", !10, i64 0, !141, i64 4, !10, i64 12} +!141 = !{!"_ZTSN11gmx_ga2la_t5EntryE", !10, i64 0, !10, i64 4} +!142 = !{!140, !10, i64 12} +!143 = !{!141, !10, i64 0} +!144 = distinct !{!144, !112} diff --git a/bench/grpc/optimized/ring_hash.ll b/bench/grpc/optimized/ring_hash.ll index 7af9c87aafb..d3aa8ff23c9 100644 --- a/bench/grpc/optimized/ring_hash.ll +++ b/bench/grpc/optimized/ring_hash.ll @@ -9204,8 +9204,7 @@ _ZN4absl12lts_2024072223inlined_vector_internal13MallocAdapterISaIcELb0EE8Alloca _ZN4absl12lts_2024072223inlined_vector_internal21AllocationTransactionISaIcEE8AllocateEm.exit: ; preds = %3 %.sink1.i = lshr i64 %4, 1 - %15 = icmp ugt i64 %2, %.sink1.i - %16 = getelementptr inbounds nuw i8, ptr %.sink2.i, i64 %.sink1.i + %15 = getelementptr inbounds nuw i8, ptr %.sink2.i, i64 %.sink1.i %.sroa.742.0 = tail call i64 @llvm.usub.sat.i64(i64 %2, i64 %.sink1.i) %.sroa.744.0 = tail call i64 @llvm.umin.i64(i64 %2, i64 %.sink1.i) %.not.i21 = icmp eq i64 %.sroa.744.0, 0 @@ -9224,7 +9223,8 @@ _ZN4absl12lts_2024072223inlined_vector_internal21AllocationTransactionISaIcEE8Al _ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit: ; preds = %.lr.ph.i, %_ZN4absl12lts_2024072223inlined_vector_internal21AllocationTransactionISaIcEE8AllocateEm.exit %.sroa.062.1 = phi ptr [ %1, %_ZN4absl12lts_2024072223inlined_vector_internal21AllocationTransactionISaIcEE8AllocateEm.exit ], [ %19, %.lr.ph.i ] - br i1 %15, label %.lr.ph.preheader.i23, label %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit._ZN4absl12lts_2024072223inlined_vector_internal21AllocationTransactionISaIcEED2Ev.exit_crit_edge + %.not.i22.not = icmp ugt i64 %2, %.sink1.i + br i1 %.not.i22.not, label %.lr.ph.preheader.i23, label %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit._ZN4absl12lts_2024072223inlined_vector_internal21AllocationTransactionISaIcEED2Ev.exit_crit_edge _ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit._ZN4absl12lts_2024072223inlined_vector_internal21AllocationTransactionISaIcEED2Ev.exit_crit_edge: ; preds = %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit %.pre90 = load i64, ptr %0, align 8, !tbaa !17 @@ -9233,7 +9233,7 @@ _ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20Itera .lr.ph.preheader.i23: ; preds = %_ZN4absl12lts_2024072223inlined_vector_internal13MallocAdapterISaIcELb0EE8AllocateERS3_m.exit.i, %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit %.sroa.062.187 = phi ptr [ %.sroa.062.1, %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit ], [ %1, %_ZN4absl12lts_2024072223inlined_vector_internal13MallocAdapterISaIcELb0EE8AllocateERS3_m.exit.i ] %.sroa.742.07186 = phi i64 [ %.sroa.742.0, %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit ], [ %2, %_ZN4absl12lts_2024072223inlined_vector_internal13MallocAdapterISaIcELb0EE8AllocateERS3_m.exit.i ] - %.sroa.041.07285 = phi ptr [ %16, %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit ], [ %14, %_ZN4absl12lts_2024072223inlined_vector_internal13MallocAdapterISaIcELb0EE8AllocateERS3_m.exit.i ] + %.sroa.041.07285 = phi ptr [ %15, %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit ], [ %14, %_ZN4absl12lts_2024072223inlined_vector_internal13MallocAdapterISaIcELb0EE8AllocateERS3_m.exit.i ] %.sroa.10.07383 = phi i64 [ 0, %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit ], [ %.sroa.speculated.i, %_ZN4absl12lts_2024072223inlined_vector_internal13MallocAdapterISaIcELb0EE8AllocateERS3_m.exit.i ] %.sroa.045.07481 = phi ptr [ null, %_ZN4absl12lts_2024072223inlined_vector_internal14AssignElementsISaIcENS1_20IteratorValueAdapterIS3_N9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcES3_EEEEEEEEvNSt16allocator_traitsIT_E7pointerERT0_NSI_9size_typeE.exit ], [ %14, %_ZN4absl12lts_2024072223inlined_vector_internal13MallocAdapterISaIcELb0EE8AllocateERS3_m.exit.i ] br label %.lr.ph.i25 diff --git a/bench/hermes/optimized/Callable.ll b/bench/hermes/optimized/Callable.ll index 8730dc66e3b..d6890ca9a49 100644 --- a/bench/hermes/optimized/Callable.ll +++ b/bench/hermes/optimized/Callable.ll @@ -2856,14 +2856,13 @@ entry: br label %while.cond while.cond: ; preds = %while.cond, %entry - %self.0 = phi ptr [ %0, %entry ], [ %cond.i.i.i.i.i, %while.cond ] + %self.0 = phi ptr [ %0, %entry ], [ %2, %while.cond ] %target_.i = getelementptr inbounds nuw i8, ptr %self.0, i64 24 %agg.tmp.sroa.0.0.copyload.i.i.i = load i32, ptr %target_.i, align 4 %cmp.i.not.i.i.i.i.i = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i, 0 %conv.i.i.i.i.i.i = zext i32 %agg.tmp.sroa.0.0.copyload.i.i.i to i64 %add.i.i.i.i.i.i = add i64 %conv.i.i.i.i.i.i, %1 %2 = inttoptr i64 %add.i.i.i.i.i.i to ptr - %cond.i.i.i.i.i = select i1 %cmp.i.not.i.i.i.i.i, ptr null, ptr %2 %bf.load.i.i.i.i.i.i.i.i.i.i = load i32, ptr %2, align 4 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i = and i32 %bf.load.i.i.i.i.i.i.i.i.i.i, -16777216 %cmp.i.i.i.i.i.i.i.i = icmp ne i32 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i, 1140850688 @@ -2871,8 +2870,8 @@ while.cond: ; preds = %while.cond, %entry br i1 %tobool.not, label %while.end, label %while.cond, !llvm.loop !17 while.end: ; preds = %while.cond - %3 = ptrtoint ptr %cond.i.i.i.i.i to i64 - %or.i.i.i.i.i = or i64 %3, -281474976710656 + %3 = or i64 %add.i.i.i.i.i.i, -281474976710656 + %or.i.i.i.i.i = select i1 %cmp.i.not.i.i.i.i.i, i64 -281474976710656, i64 %3 %topGCScope_.i.i.i.i = getelementptr inbounds nuw i8, ptr %runtime, i64 8 %4 = load ptr, ptr %topGCScope_.i.i.i.i, align 8 %next_.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 192 diff --git a/bench/hermes/optimized/HermesBuiltin.ll b/bench/hermes/optimized/HermesBuiltin.ll index beb42962d7a..ecb04e0ad70 100644 --- a/bench/hermes/optimized/HermesBuiltin.ll +++ b/bench/hermes/optimized/HermesBuiltin.ll @@ -3846,24 +3846,10 @@ entry: %1 = load ptr, ptr %args, align 8, !noalias !63 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %1, i64 -8 %retval.sroa.0.0.copyload.i = load i64, ptr %incdec.ptr.i.i.i, align 8 - %cmp.i.i = icmp ugt i64 %retval.sroa.0.0.copyload.i, -844424930131969 - br i1 %cmp.i.i, label %cond.true.i1, label %_ZN6hermes2vm10dyn_vmcastINS0_8JSRegExpEEEPT_NS0_11HermesValueE.exit - -cond.true.i1: ; preds = %entry - %and.i.i = and i64 %retval.sroa.0.0.copyload.i, 281474976710655 - %2 = inttoptr i64 %and.i.i to ptr - %bf.load.i.i.i.i.i.i.i.i.i.i.i = load i32, ptr %2, align 4 - %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.i = and i32 %bf.load.i.i.i.i.i.i.i.i.i.i.i, -16777216 - %cmp.i.i.i.i.i.i.i.i.i = icmp eq i32 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.i, 1040187392 - %spec.select.i.i.i = select i1 %cmp.i.i.i.i.i.i.i.i.i, ptr %2, ptr null - br label %_ZN6hermes2vm10dyn_vmcastINS0_8JSRegExpEEEPT_NS0_11HermesValueE.exit - -_ZN6hermes2vm10dyn_vmcastINS0_8JSRegExpEEEPT_NS0_11HermesValueE.exit: ; preds = %entry, %cond.true.i1 - %cond.i = phi ptr [ %spec.select.i.i.i, %cond.true.i1 ], [ null, %entry ] %cmp.i3 = icmp ugt i32 %0, 1 br i1 %cmp.i3, label %_ZNK6hermes2vm10NativeArgs6getArgEj.exit8, label %_ZN6hermes2vm10dyn_vmcastINS0_8JSObjectEEEPT_NS0_11HermesValueE.exit -_ZNK6hermes2vm10NativeArgs6getArgEj.exit8: ; preds = %_ZN6hermes2vm10dyn_vmcastINS0_8JSRegExpEEEPT_NS0_11HermesValueE.exit +_ZNK6hermes2vm10NativeArgs6getArgEj.exit8: ; preds = %entry %3 = load ptr, ptr %args, align 8, !noalias !66 %incdec.ptr.i.i.i6 = getelementptr inbounds i8, ptr %3, i64 -16 %retval.sroa.0.0.copyload.i7 = load i64, ptr %incdec.ptr.i.i.i6, align 8 @@ -3879,9 +3865,11 @@ cond.true.i11: ; preds = %_ZNK6hermes2vm10Nat %spec.select.i.i.i14 = select i1 %6, ptr %4, ptr null br label %_ZN6hermes2vm10dyn_vmcastINS0_8JSObjectEEEPT_NS0_11HermesValueE.exit -_ZN6hermes2vm10dyn_vmcastINS0_8JSObjectEEEPT_NS0_11HermesValueE.exit: ; preds = %_ZN6hermes2vm10dyn_vmcastINS0_8JSRegExpEEEPT_NS0_11HermesValueE.exit, %_ZNK6hermes2vm10NativeArgs6getArgEj.exit8, %cond.true.i11 - %cond.i10 = phi ptr [ %spec.select.i.i.i14, %cond.true.i11 ], [ null, %_ZNK6hermes2vm10NativeArgs6getArgEj.exit8 ], [ null, %_ZN6hermes2vm10dyn_vmcastINS0_8JSRegExpEEEPT_NS0_11HermesValueE.exit ] - tail call void @_ZN6hermes2vm8JSRegExp20setGroupNameMappingsERNS0_7RuntimeEPNS0_8JSObjectE(ptr noundef nonnull align 8 dereferenceable(48) %cond.i, ptr noundef nonnull align 8 dereferenceable(9832) %runtime, ptr noundef %cond.i10) #12 +_ZN6hermes2vm10dyn_vmcastINS0_8JSObjectEEEPT_NS0_11HermesValueE.exit: ; preds = %entry, %_ZNK6hermes2vm10NativeArgs6getArgEj.exit8, %cond.true.i11 + %cond.i10 = phi ptr [ %spec.select.i.i.i14, %cond.true.i11 ], [ null, %_ZNK6hermes2vm10NativeArgs6getArgEj.exit8 ], [ null, %entry ] + %and.i.i = and i64 %retval.sroa.0.0.copyload.i, 281474976710655 + %6 = inttoptr i64 %and.i.i to ptr + tail call void @_ZN6hermes2vm8JSRegExp20setGroupNameMappingsERNS0_7RuntimeEPNS0_8JSObjectE(ptr noundef nonnull align 8 dereferenceable(48) %6, ptr noundef nonnull align 8 dereferenceable(9832) %runtime, ptr noundef %cond.i10) #12 ret { i32, i64 } { i32 1, i64 -1688849860263936 } } diff --git a/bench/hermes/optimized/HermesInternal.ll b/bench/hermes/optimized/HermesInternal.ll index 0b8d190ee05..95217c0b895 100644 --- a/bench/hermes/optimized/HermesInternal.ll +++ b/bench/hermes/optimized/HermesInternal.ll @@ -1379,21 +1379,19 @@ while.body.lr.ph.i: ; preds = %_ZN6hermes2vm13Muta br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.lr.ph.i - %callable.012.i = phi ptr [ %17, %while.body.lr.ph.i ], [ %cond.i.i.i.i.i.i, %while.body.i ] + %callable.012.i = phi ptr [ %17, %while.body.lr.ph.i ], [ %19, %while.body.i ] %target_.i.i = getelementptr inbounds nuw i8, ptr %callable.012.i, i64 24 %agg.tmp.sroa.0.0.copyload.i.i.i.i = load i32, ptr %target_.i.i, align 4 - %cmp.i.not.i.i.i.i.i.i = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i.i, 0 %conv.i.i.i.i.i.i.i = zext i32 %agg.tmp.sroa.0.0.copyload.i.i.i.i to i64 %add.i.i.i.i.i.i.i = add i64 %conv.i.i.i.i.i.i.i, %18 %19 = inttoptr i64 %add.i.i.i.i.i.i.i to ptr - %cond.i.i.i.i.i.i = select i1 %cmp.i.not.i.i.i.i.i.i, ptr null, ptr %19 %bf.load.i.i.i.i.i.i.i.i.i.i.i = load i32, ptr %19, align 4 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.i = and i32 %bf.load.i.i.i.i.i.i.i.i.i.i.i, -16777216 %cmp.i.i.i.i.i.i.i.i.not.i = icmp eq i32 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.i, 1140850688 br i1 %cmp.i.i.i.i.i.i.i.i.not.i, label %while.body.i, label %while.end.i, !llvm.loop !24 while.end.i: ; preds = %while.body.i, %_ZN6hermes2vm13MutableHandleINS0_11HermesValueEEC2ERNS0_15HandleRootOwnerES2_.exit - %callable.0.lcssa.i = phi ptr [ %17, %_ZN6hermes2vm13MutableHandleINS0_11HermesValueEEC2ERNS0_15HandleRootOwnerES2_.exit ], [ %cond.i.i.i.i.i.i, %while.body.i ] + %callable.0.lcssa.i = phi ptr [ %17, %_ZN6hermes2vm13MutableHandleINS0_11HermesValueEEC2ERNS0_15HandleRootOwnerES2_.exit ], [ %19, %while.body.i ] %bf.load.i.i.i.i.i.i.i.i.i.i.lcssa.i = phi i32 [ %bf.load.i.i.i.i.i.i.i.i.i.i9.i, %_ZN6hermes2vm13MutableHandleINS0_11HermesValueEEC2ERNS0_15HandleRootOwnerES2_.exit ], [ %bf.load.i.i.i.i.i.i.i.i.i.i.i, %while.body.i ] %20 = add i32 %bf.load.i.i.i.i.i.i.i.i.i.i.lcssa.i, -1291845632 %21 = icmp ult i32 %20, -67108864 diff --git a/bench/hermes/optimized/Interpreter.ll b/bench/hermes/optimized/Interpreter.ll index c2eb92f295d..6e3057b7a92 100644 --- a/bench/hermes/optimized/Interpreter.ll +++ b/bench/hermes/optimized/Interpreter.ll @@ -3866,21 +3866,24 @@ for.body.preheader: ; preds = %case_GetEnvironment br label %for.body for.body: ; preds = %for.body.preheader, %for.body - %curEnv.05246 = phi ptr [ %cond.i.i.i.i.i2752, %for.body ], [ %cond.i.i.i.i.i, %for.body.preheader ] + %curEnv.05246 = phi ptr [ %233, %for.body ], [ %231, %for.body.preheader ] %level.05245 = phi i32 [ %dec, %for.body ], [ %conv873, %for.body.preheader ] %parentEnvironment_.i = getelementptr inbounds nuw i8, ptr %curEnv.05246, i64 4 %agg.tmp.sroa.0.0.copyload.i.i.i2748 = load i32, ptr %parentEnvironment_.i, align 4 - %cmp.i.not.i.i.i.i.i2749 = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i2748, 0 %conv.i.i.i.i.i.i2750 = zext i32 %agg.tmp.sroa.0.0.copyload.i.i.i2748 to i64 %add.i.i.i.i.i.i2751 = add i64 %conv.i.i.i.i.i.i2750, %6 %233 = inttoptr i64 %add.i.i.i.i.i.i2751 to ptr - %cond.i.i.i.i.i2752 = select i1 %cmp.i.not.i.i.i.i.i2749, ptr null, ptr %233 %dec = add nsw i32 %level.05245, -1 %tobool875.not = icmp eq i32 %dec, 0 - br i1 %tobool875.not, label %for.end, label %for.body, !llvm.loop !54 + br i1 %tobool875.not, label %for.end.loopexit, label %for.body, !llvm.loop !54 + +for.end.loopexit: ; preds = %for.body + %cmp.i.not.i.i.i.i.i2749 = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i2748, 0 + %cond.i.i.i.i.i2752 = select i1 %cmp.i.not.i.i.i.i.i2749, ptr null, ptr %233 + br label %for.end -for.end: ; preds = %for.body, %case_GetEnvironment - %curEnv.0.lcssa = phi ptr [ %cond.i.i.i.i.i, %case_GetEnvironment ], [ %cond.i.i.i.i.i2752, %for.body ] +for.end: ; preds = %for.end.loopexit, %case_GetEnvironment + %curEnv.0.lcssa = phi ptr [ %cond.i.i.i.i.i, %case_GetEnvironment ], [ %cond.i.i.i.i.i2752, %for.end.loopexit ] %234 = ptrtoint ptr %curEnv.0.lcssa to i64 %or.i.i.i2753 = or i64 %234, -281474976710656 %op1880 = getelementptr inbounds nuw i8, ptr %.sink.sink.in, i64 1 diff --git a/bench/hermes/optimized/Operations.ll b/bench/hermes/optimized/Operations.ll index 4dcd81ed3ba..f43575be95c 100644 --- a/bench/hermes/optimized/Operations.ll +++ b/bench/hermes/optimized/Operations.ll @@ -7337,23 +7337,26 @@ while.body.lr.ph.i: ; preds = %while.cond.preheade br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.lr.ph.i - %callable.addr.043.i = phi ptr [ %0, %while.body.lr.ph.i ], [ %cond.i.i.i.i.i.i, %while.body.i ] + %callable.addr.043.i = phi ptr [ %0, %while.body.lr.ph.i ], [ %4, %while.body.i ] %target_.i.i = getelementptr inbounds nuw i8, ptr %callable.addr.043.i, i64 24 %agg.tmp.sroa.0.0.copyload.i.i.i.i = load i32, ptr %target_.i.i, align 4 - %cmp.i.not.i.i.i.i.i.i = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i.i, 0 %conv.i.i.i.i.i.i.i = zext i32 %agg.tmp.sroa.0.0.copyload.i.i.i.i to i64 %add.i.i.i.i.i.i.i = add i64 %conv.i.i.i.i.i.i.i, %3 %4 = inttoptr i64 %add.i.i.i.i.i.i.i to ptr - %cond.i.i.i.i.i.i = select i1 %cmp.i.not.i.i.i.i.i.i, ptr null, ptr %4 %bf.load.i.i.i.i.i.i.i.i.i.i.i1 = load i32, ptr %4, align 4 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.i = and i32 %bf.load.i.i.i.i.i.i.i.i.i.i.i1, -16777216 %cmp.i.i.i.i.i.i.i.i.not.i = icmp eq i32 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.i, 1140850688 br i1 %cmp.i.i.i.i.i.i.i.i.not.i, label %while.body.i, label %while.end.i, !llvm.loop !58 -while.end.i: ; preds = %while.body.i, %while.cond.preheader.i - %callable.addr.0.lcssa.i = phi ptr [ %0, %while.cond.preheader.i ], [ %cond.i.i.i.i.i.i, %while.body.i ] - %bf.load.i.i.i.i.i.i.i.i.i.i.lcssa.i = phi i32 [ %bf.load.i.i.i.i.i.i.i.i.i.i.i, %while.cond.preheader.i ], [ %bf.load.i.i.i.i.i.i.i.i.i.i.i1, %while.body.i ] - %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.lcssa.i = phi i32 [ %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i41.i, %while.cond.preheader.i ], [ %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.i, %while.body.i ] +while.end.i: ; preds = %while.body.i + %cmp.i.not.i.i.i.i.i.i = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i.i, 0 + %cond.i.i.i.i.i.i = select i1 %cmp.i.not.i.i.i.i.i.i, ptr null, ptr %4 + br label %while.end.i + +while.end.i: ; preds = %while.end.loopexit.i, %while.cond.preheader.i + %callable.addr.0.lcssa.i = phi ptr [ %0, %while.cond.preheader.i ], [ %cond.i.i.i.i.i.i, %while.end.loopexit.i ] + %bf.load.i.i.i.i.i.i.i.i.i.i.lcssa.i = phi i32 [ %bf.load.i.i.i.i.i.i.i.i.i.i.i, %while.cond.preheader.i ], [ %bf.load.i.i.i.i.i.i.i.i.i.i.i1, %while.end.loopexit.i ] + %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.lcssa.i = phi i32 [ %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i41.i, %while.cond.preheader.i ], [ %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.i, %while.end.loopexit.i ] %5 = add i32 %bf.load.i.i.i.i.i.i.i.i.i.i.lcssa.i, -1291845632 %6 = icmp ult i32 %5, -67108864 br i1 %6, label %if.end14.i, label %if.end9.i @@ -7419,23 +7422,26 @@ while.body.lr.ph: ; preds = %while.cond.preheade br label %while.body while.body: ; preds = %while.body.lr.ph, %while.body - %callable.addr.043 = phi ptr [ %callable, %while.body.lr.ph ], [ %cond.i.i.i.i.i, %while.body ] + %callable.addr.043 = phi ptr [ %callable, %while.body.lr.ph ], [ %1, %while.body ] %target_.i = getelementptr inbounds nuw i8, ptr %callable.addr.043, i64 24 %agg.tmp.sroa.0.0.copyload.i.i.i = load i32, ptr %target_.i, align 4 - %cmp.i.not.i.i.i.i.i = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i, 0 %conv.i.i.i.i.i.i = zext i32 %agg.tmp.sroa.0.0.copyload.i.i.i to i64 %add.i.i.i.i.i.i = add i64 %conv.i.i.i.i.i.i, %0 %1 = inttoptr i64 %add.i.i.i.i.i.i to ptr - %cond.i.i.i.i.i = select i1 %cmp.i.not.i.i.i.i.i, ptr null, ptr %1 %bf.load.i.i.i.i.i.i.i.i.i.i = load i32, ptr %1, align 4 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i = and i32 %bf.load.i.i.i.i.i.i.i.i.i.i, -16777216 %cmp.i.i.i.i.i.i.i.i.not = icmp eq i32 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i, 1140850688 br i1 %cmp.i.i.i.i.i.i.i.i.not, label %while.body, label %while.end, !llvm.loop !58 -while.end: ; preds = %while.body, %while.cond.preheader - %callable.addr.0.lcssa = phi ptr [ %callable, %while.cond.preheader ], [ %cond.i.i.i.i.i, %while.body ] - %bf.load.i.i.i.i.i.i.i.i.i.i.lcssa = phi i32 [ %bf.load.i.i.i.i.i.i.i.i.i.i40, %while.cond.preheader ], [ %bf.load.i.i.i.i.i.i.i.i.i.i, %while.body ] - %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.lcssa = phi i32 [ %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i41, %while.cond.preheader ], [ %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i, %while.body ] +while.end: ; preds = %while.body + %cmp.i.not.i.i.i.i.i = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i, 0 + %cond.i.i.i.i.i = select i1 %cmp.i.not.i.i.i.i.i, ptr null, ptr %1 + br label %while.end + +while.end: ; preds = %while.end.loopexit, %while.cond.preheader + %callable.addr.0.lcssa = phi ptr [ %callable, %while.cond.preheader ], [ %cond.i.i.i.i.i, %while.end.loopexit ] + %bf.load.i.i.i.i.i.i.i.i.i.i.lcssa = phi i32 [ %bf.load.i.i.i.i.i.i.i.i.i.i40, %while.cond.preheader ], [ %bf.load.i.i.i.i.i.i.i.i.i.i, %while.end.loopexit ] + %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i.lcssa = phi i32 [ %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i41, %while.cond.preheader ], [ %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i, %while.end.loopexit ] %2 = add i32 %bf.load.i.i.i.i.i.i.i.i.i.i.lcssa, -1291845632 %3 = icmp ult i32 %2, -67108864 br i1 %3, label %if.end14, label %if.end9 @@ -7513,21 +7519,20 @@ while.body.lr.ph: ; preds = %if.end br label %while.body while.body: ; preds = %while.body.lr.ph, %while.body - %ctor.092 = phi ptr [ %0, %while.body.lr.ph ], [ %cond.i.i.i.i.i, %while.body ] + %ctor.092 = phi ptr [ %0, %while.body.lr.ph ], [ %4, %while.body ] %target_.i = getelementptr inbounds nuw i8, ptr %ctor.092, i64 24 %agg.tmp.sroa.0.0.copyload.i.i.i = load i32, ptr %target_.i, align 4 - %cmp.i.not.i.i.i.i.i = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i, 0 %conv.i.i.i.i.i.i = zext i32 %agg.tmp.sroa.0.0.copyload.i.i.i to i64 %add.i.i.i.i.i.i = add i64 %conv.i.i.i.i.i.i, %3 %4 = inttoptr i64 %add.i.i.i.i.i.i to ptr - %cond.i.i.i.i.i = select i1 %cmp.i.not.i.i.i.i.i, ptr null, ptr %4 %bf.load.i.i.i.i.i.i.i.i.i.i = load i32, ptr %4, align 4 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i = and i32 %bf.load.i.i.i.i.i.i.i.i.i.i, -16777216 %cmp.i.i.i.i.i.i.i.i.not = icmp eq i32 %bf.lshr.i.i.mask.i.i.i.i.i.i.i.i, 1140850688 br i1 %cmp.i.i.i.i.i.i.i.i.not, label %while.body, label %while.end.loopexit, !llvm.loop !59 while.end.loopexit: ; preds = %while.body - %5 = ptrtoint ptr %cond.i.i.i.i.i to i64 + %cmp.i.not.i.i.i.i.i = icmp eq i32 %agg.tmp.sroa.0.0.copyload.i.i.i, 0 + %5 = select i1 %cmp.i.not.i.i.i.i.i, i64 0, i64 %add.i.i.i.i.i.i br label %while.end while.end: ; preds = %while.end.loopexit, %if.end diff --git a/bench/hermes/optimized/Passes.ll b/bench/hermes/optimized/Passes.ll index eecddb96917..f7331ae6a2c 100644 --- a/bench/hermes/optimized/Passes.ll +++ b/bench/hermes/optimized/Passes.ll @@ -2750,14 +2750,11 @@ if.then37: ; preds = %_ZN4llvh12DenseMapB if.then41: ; preds = %if.then37 %call42 = call noundef ptr @_ZNK6hermes11Instruction10getOperandEj(ptr noundef nonnull align 8 dereferenceable(132) %9, i32 noundef 0) #13 - %11 = load i8, ptr %call42, align 8 - %cmp.i.i.i.i.i.i.i.i33 = icmp eq i8 %11, 27 %sub.ptr.i.i.i34 = getelementptr inbounds i8, ptr %call42, i64 -16 - %spec.select.i35 = select i1 %cmp.i.i.i.i.i.i.i.i33, ptr %sub.ptr.i.i.i34, ptr null br label %if.end44 if.end44: ; preds = %if.then41, %if.then37 - %prevLoad.0 = phi ptr [ %9, %if.then37 ], [ %spec.select.i35, %if.then41 ] + %prevLoad.0 = phi ptr [ %9, %if.then37 ], [ %sub.ptr.i.i.i34, %if.then41 ] %call45 = call noundef zeroext i1 @_ZNK6hermes11Instruction13isIdenticalToEPKS0_(ptr noundef nonnull align 8 dereferenceable(132) %prevLoad.0, ptr noundef nonnull %loadI.0) #13 br i1 %call45, label %if.then46, label %if.end44.if.end53_crit_edge diff --git a/bench/hermes/optimized/SemanticValidator.ll b/bench/hermes/optimized/SemanticValidator.ll index 038cc557398..42ec9a56faa 100644 --- a/bench/hermes/optimized/SemanticValidator.ll +++ b/bench/hermes/optimized/SemanticValidator.ll @@ -5472,9 +5472,7 @@ entry: if.end24: ; preds = %entry %cmp.i.i.i.i.i.i.i23 = icmp eq i32 %0, 26 - %tobool2634 = icmp ne ptr %node, null tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i23) - tail call void @llvm.assume(i1 %tobool2634) br label %return return: ; preds = %entry, %if.end24 diff --git a/bench/llvm/optimized/AArch64ISelLowering.ll b/bench/llvm/optimized/AArch64ISelLowering.ll index 355c4424280..bee07bc7716 100644 --- a/bench/llvm/optimized/AArch64ISelLowering.ll +++ b/bench/llvm/optimized/AArch64ISelLowering.ll @@ -66017,25 +66017,20 @@ _ZNK4llvm19MachineRegisterInfo9def_beginENS_8RegisterE.exit.i40: ; preds = %60, br i1 %.not.i.i3.i42, label %_ZNK4llvm19MachineRegisterInfo9getOneDefENS_8RegisterE.exit48, label %68 68: ; preds = %_ZNK4llvm19MachineRegisterInfo9def_beginENS_8RegisterE.exit.i40 - %69 = load i32, ptr %67, align 8 - %70 = and i32 %69, 16777216 - %.not.i.i.i4.i43 = icmp eq i32 %70, 0 - %spec.select.i44 = select i1 %.not.i.i.i4.i43, ptr %.sroa.0.0.i.i41, ptr null %.pre = load i32, ptr %.sroa.0.0.i.i41, align 8 br label %_ZNK4llvm19MachineRegisterInfo9getOneDefENS_8RegisterE.exit48 _ZNK4llvm19MachineRegisterInfo9getOneDefENS_8RegisterE.exit48: ; preds = %_ZNK4llvm19MachineRegisterInfo9def_beginENS_8RegisterE.exit.i40, %68 %71 = phi i32 [ %65, %_ZNK4llvm19MachineRegisterInfo9def_beginENS_8RegisterE.exit.i40 ], [ %.pre, %68 ] - %.0.i45 = phi ptr [ %.sroa.0.0.i.i41, %_ZNK4llvm19MachineRegisterInfo9def_beginENS_8RegisterE.exit.i40 ], [ %spec.select.i44, %68 ] - %72 = and i32 %71, 255 - %73 = icmp eq i32 %72, 0 + %70 = and i32 %69, 255 + %71 = icmp eq i32 %70, 0 %.not3371 = icmp eq i32 %.sroa.049.055, %48 %.not33 = select i1 %49, i1 true, i1 %.not3371 - %or.cond53 = select i1 %73, i1 %.not33, i1 false + %or.cond53 = select i1 %71, i1 %.not33, i1 false br i1 %or.cond53, label %74, label %.critedge 74: ; preds = %_ZNK4llvm19MachineRegisterInfo9getOneDefENS_8RegisterE.exit48 - %75 = getelementptr inbounds nuw i8, ptr %.0.i45, i64 4 + %75 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i41, i64 4 %76 = load i32, ptr %75, align 4, !tbaa !254 %77 = and i32 %76, 2147483647 %78 = zext nneg i32 %77 to i64 diff --git a/bench/llvm/optimized/ASTConsumers.ll b/bench/llvm/optimized/ASTConsumers.ll index 98e5656afc1..6cdc43770c2 100644 --- a/bench/llvm/optimized/ASTConsumers.ll +++ b/bench/llvm/optimized/ASTConsumers.ll @@ -20430,10 +20430,10 @@ _ZNK5clang10MemberExpr23hasExplicitTemplateArgsEv.exit.i24: ; preds = %55 %.lobit.i.i.i.i.i.i.i = and i32 %62, 1 %63 = zext nneg i32 %.lobit.i.i.i.i.i.i.i to i64 %64 = getelementptr inbounds nuw %"class.clang::DeclAccessPair", ptr %61, i64 %63 - %65 = load i32, ptr %64, align 8, !tbaa !834 - %.not.i22 = icmp eq i32 %65, 0 - %66 = getelementptr inbounds nuw i8, ptr %64, i64 16 - br i1 %.not.i22, label %._crit_edge, label %_ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit + %65 = getelementptr inbounds nuw i8, ptr %64, i64 16 + %66 = load i32, ptr %64, align 8, !tbaa !834 + %.not.i27 = icmp eq i32 %66, 0 + br i1 %.not.i27, label %._crit_edge, label %_ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit _ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang10MemberExpr23hasExplicitTemplateArgsEv.exit.i24 %67 = getelementptr inbounds nuw i8, ptr %64, i64 12 @@ -20452,7 +20452,7 @@ _ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang10Member .lr.ph: ; preds = %.lr.ph.preheader, %69 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %69 ] - %70 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %66, i64 %indvars.iv + %70 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %65, i64 %indvars.iv %71 = tail call fastcc noundef zeroext i1 @_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_110ASTPrinterEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(32) %70) br i1 %71, label %69, label %_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_110ASTPrinterEE34TraverseTemplateArgumentLocsHelperEPKNS_19TemplateArgumentLocEj.exit @@ -22785,10 +22785,10 @@ _ZNK5clang11DeclRefExpr23hasExplicitTemplateArgsEv.exit.i24: ; preds = %55 %.lobit.i.i.i.i.i.i.i = and i32 %62, 1 %63 = zext nneg i32 %.lobit.i.i.i.i.i.i.i to i64 %64 = getelementptr inbounds nuw ptr, ptr %61, i64 %63 - %65 = load i32, ptr %64, align 8, !tbaa !834 - %.not.i22 = icmp eq i32 %65, 0 - %66 = getelementptr inbounds nuw i8, ptr %64, i64 16 - br i1 %.not.i22, label %._crit_edge, label %_ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit + %65 = getelementptr inbounds nuw i8, ptr %64, i64 16 + %66 = load i32, ptr %64, align 8, !tbaa !834 + %.not.i27 = icmp eq i32 %66, 0 + br i1 %.not.i27, label %._crit_edge, label %_ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit _ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang11DeclRefExpr23hasExplicitTemplateArgsEv.exit.i24 %67 = getelementptr inbounds nuw i8, ptr %64, i64 12 @@ -22807,7 +22807,7 @@ _ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang11DeclR .lr.ph: ; preds = %.lr.ph.preheader, %69 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %69 ] - %70 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %66, i64 %indvars.iv + %70 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %65, i64 %indvars.iv %71 = tail call fastcc noundef zeroext i1 @_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_110ASTPrinterEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(32) %70) br i1 %71, label %69, label %_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_110ASTPrinterEE34TraverseTemplateArgumentLocsHelperEPKNS_19TemplateArgumentLocEj.exit @@ -65777,10 +65777,10 @@ _ZNK5clang10MemberExpr23hasExplicitTemplateArgsEv.exit.i24: ; preds = %55 %.lobit.i.i.i.i.i.i.i = and i32 %62, 1 %63 = zext nneg i32 %.lobit.i.i.i.i.i.i.i to i64 %64 = getelementptr inbounds nuw %"class.clang::DeclAccessPair", ptr %61, i64 %63 - %65 = load i32, ptr %64, align 8, !tbaa !834 - %.not.i22 = icmp eq i32 %65, 0 - %66 = getelementptr inbounds nuw i8, ptr %64, i64 16 - br i1 %.not.i22, label %._crit_edge, label %_ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit + %65 = getelementptr inbounds nuw i8, ptr %64, i64 16 + %66 = load i32, ptr %64, align 8, !tbaa !834 + %.not.i27 = icmp eq i32 %66, 0 + br i1 %.not.i27, label %._crit_edge, label %_ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit _ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang10MemberExpr23hasExplicitTemplateArgsEv.exit.i24 %67 = getelementptr inbounds nuw i8, ptr %64, i64 12 @@ -65799,7 +65799,7 @@ _ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang10Member .lr.ph: ; preds = %.lr.ph.preheader, %69 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %69 ] - %70 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %66, i64 %indvars.iv + %70 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %65, i64 %indvars.iv %71 = tail call fastcc noundef zeroext i1 @_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117ASTDeclNodeListerEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(32) %70) br i1 %71, label %69, label %_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117ASTDeclNodeListerEE34TraverseTemplateArgumentLocsHelperEPKNS_19TemplateArgumentLocEj.exit @@ -68132,10 +68132,10 @@ _ZNK5clang11DeclRefExpr23hasExplicitTemplateArgsEv.exit.i24: ; preds = %55 %.lobit.i.i.i.i.i.i.i = and i32 %62, 1 %63 = zext nneg i32 %.lobit.i.i.i.i.i.i.i to i64 %64 = getelementptr inbounds nuw ptr, ptr %61, i64 %63 - %65 = load i32, ptr %64, align 8, !tbaa !834 - %.not.i22 = icmp eq i32 %65, 0 - %66 = getelementptr inbounds nuw i8, ptr %64, i64 16 - br i1 %.not.i22, label %._crit_edge, label %_ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit + %65 = getelementptr inbounds nuw i8, ptr %64, i64 16 + %66 = load i32, ptr %64, align 8, !tbaa !834 + %.not.i27 = icmp eq i32 %66, 0 + br i1 %.not.i27, label %._crit_edge, label %_ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit _ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang11DeclRefExpr23hasExplicitTemplateArgsEv.exit.i24 %67 = getelementptr inbounds nuw i8, ptr %64, i64 12 @@ -68154,7 +68154,7 @@ _ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang11DeclR .lr.ph: ; preds = %.lr.ph.preheader, %69 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %69 ] - %70 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %66, i64 %indvars.iv + %70 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %65, i64 %indvars.iv %71 = tail call fastcc noundef zeroext i1 @_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117ASTDeclNodeListerEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(32) %70) br i1 %71, label %69, label %_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117ASTDeclNodeListerEE34TraverseTemplateArgumentLocsHelperEPKNS_19TemplateArgumentLocEj.exit diff --git a/bench/llvm/optimized/ASTImporterLookupTable.ll b/bench/llvm/optimized/ASTImporterLookupTable.ll index 8194fd7d768..39b0afa5eeb 100644 --- a/bench/llvm/optimized/ASTImporterLookupTable.ll +++ b/bench/llvm/optimized/ASTImporterLookupTable.ll @@ -21394,10 +21394,10 @@ _ZNK5clang10MemberExpr23hasExplicitTemplateArgsEv.exit.i24: ; preds = %21 %.lobit.i.i.i.i.i.i.i = and i32 %28, 1 %29 = zext nneg i32 %.lobit.i.i.i.i.i.i.i to i64 %30 = getelementptr inbounds nuw %"class.clang::DeclAccessPair", ptr %27, i64 %29 - %31 = load i32, ptr %30, align 8, !tbaa !217 - %.not.i22 = icmp eq i32 %31, 0 - %32 = getelementptr inbounds nuw i8, ptr %30, i64 16 - br i1 %.not.i22, label %._crit_edge, label %_ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit + %31 = getelementptr inbounds nuw i8, ptr %30, i64 16 + %32 = load i32, ptr %30, align 8, !tbaa !217 + %.not.i27 = icmp eq i32 %32, 0 + br i1 %.not.i27, label %._crit_edge, label %_ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit _ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang10MemberExpr23hasExplicitTemplateArgsEv.exit.i24 %33 = getelementptr inbounds nuw i8, ptr %30, i64 12 @@ -21416,7 +21416,7 @@ _ZNK5clang10MemberExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang10Member .lr.ph: ; preds = %.lr.ph.preheader, %35 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %35 ] - %36 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %32, i64 %indvars.iv + %36 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %31, i64 %indvars.iv %37 = tail call fastcc noundef zeroext i1 @_ZN5clang19RecursiveASTVisitorINS_12_GLOBAL__N_17BuilderEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(32) %36) br i1 %37, label %35, label %_ZN5clang19RecursiveASTVisitorINS_12_GLOBAL__N_17BuilderEE34TraverseTemplateArgumentLocsHelperEPKNS_19TemplateArgumentLocEj.exit @@ -23471,10 +23471,10 @@ _ZNK5clang11DeclRefExpr23hasExplicitTemplateArgsEv.exit.i24: ; preds = %21 %.lobit.i.i.i.i.i.i.i = and i32 %28, 1 %29 = zext nneg i32 %.lobit.i.i.i.i.i.i.i to i64 %30 = getelementptr inbounds nuw ptr, ptr %27, i64 %29 - %31 = load i32, ptr %30, align 8, !tbaa !217 - %.not.i22 = icmp eq i32 %31, 0 - %32 = getelementptr inbounds nuw i8, ptr %30, i64 16 - br i1 %.not.i22, label %._crit_edge, label %_ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit + %31 = getelementptr inbounds nuw i8, ptr %30, i64 16 + %32 = load i32, ptr %30, align 8, !tbaa !217 + %.not.i27 = icmp eq i32 %32, 0 + br i1 %.not.i27, label %._crit_edge, label %_ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit _ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang11DeclRefExpr23hasExplicitTemplateArgsEv.exit.i24 %33 = getelementptr inbounds nuw i8, ptr %30, i64 12 @@ -23493,7 +23493,7 @@ _ZNK5clang11DeclRefExpr18getNumTemplateArgsEv.exit: ; preds = %_ZNK5clang11DeclR .lr.ph: ; preds = %.lr.ph.preheader, %35 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %35 ] - %36 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %32, i64 %indvars.iv + %36 = getelementptr inbounds nuw %"class.clang::TemplateArgumentLoc", ptr %31, i64 %indvars.iv %37 = tail call fastcc noundef zeroext i1 @_ZN5clang19RecursiveASTVisitorINS_12_GLOBAL__N_17BuilderEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(32) %36) br i1 %37, label %35, label %_ZN5clang19RecursiveASTVisitorINS_12_GLOBAL__N_17BuilderEE34TraverseTemplateArgumentLocsHelperEPKNS_19TemplateArgumentLocEj.exit diff --git a/bench/llvm/optimized/ASTStructuralEquivalence.ll b/bench/llvm/optimized/ASTStructuralEquivalence.ll index 3578c572b5c..982a24dff27 100644 --- a/bench/llvm/optimized/ASTStructuralEquivalence.ll +++ b/bench/llvm/optimized/ASTStructuralEquivalence.ll @@ -16847,14 +16847,11 @@ _ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i38: ; preds = %40 %.04.i.i.v.v.i.i.i39 = select i1 %42, i64 64, i64 80 %.04.i.i.v.i.i.i40 = getelementptr inbounds nuw i8, ptr %1, i64 %.04.i.i.v.v.i.i.i39 %.04.i.i.i.i.i41 = getelementptr inbounds nuw %"class.clang::DeclAccessPair", ptr %.04.i.i.v.i.i.i40, i64 %45 - %46 = load i32, ptr %.04.i.i.i.i.i41, align 8, !tbaa !318 - %.not.i42 = icmp eq i32 %46, 0 - %47 = getelementptr inbounds nuw i8, ptr %.04.i.i.i.i.i41, i64 16 - %spec.select = select i1 %.not.i42, ptr null, ptr %47 + %46 = getelementptr inbounds nuw i8, ptr %.04.i.i.i.i.i41, i64 16 br label %_ZNK5clang12OverloadExpr15getTemplateArgsEv.exit _ZNK5clang12OverloadExpr15getTemplateArgsEv.exit: ; preds = %_ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i38, %40 - %.0.i43 = phi ptr [ null, %40 ], [ %spec.select, %_ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i38 ] + %.0.i43 = phi ptr [ null, %40 ], [ %46, %_ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i38 ] br i1 %.not.i.i.i28, label %_ZNK5clang12OverloadExpr15getTemplateArgsEv.exit52, label %_ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i45 _ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i45: ; preds = %_ZNK5clang12OverloadExpr15getTemplateArgsEv.exit @@ -16866,14 +16863,11 @@ _ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i45: ; preds = %_ZNK5cl %.04.i.i.v.v.i.i.i46 = select i1 %49, i64 64, i64 80 %.04.i.i.v.i.i.i47 = getelementptr inbounds nuw i8, ptr %2, i64 %.04.i.i.v.v.i.i.i46 %.04.i.i.i.i.i48 = getelementptr inbounds nuw %"class.clang::DeclAccessPair", ptr %.04.i.i.v.i.i.i47, i64 %52 - %53 = load i32, ptr %.04.i.i.i.i.i48, align 8, !tbaa !318 - %.not.i49 = icmp eq i32 %53, 0 - %54 = getelementptr inbounds nuw i8, ptr %.04.i.i.i.i.i48, i64 16 - %spec.select62 = select i1 %.not.i49, ptr null, ptr %54 + %52 = getelementptr inbounds nuw i8, ptr %.04.i.i.i.i.i48, i64 16 br label %_ZNK5clang12OverloadExpr15getTemplateArgsEv.exit52 _ZNK5clang12OverloadExpr15getTemplateArgsEv.exit52: ; preds = %_ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i45, %_ZNK5clang12OverloadExpr15getTemplateArgsEv.exit - %.0.i51 = phi ptr [ null, %_ZNK5clang12OverloadExpr15getTemplateArgsEv.exit ], [ %spec.select62, %_ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i45 ] + %.0.i51 = phi ptr [ null, %_ZNK5clang12OverloadExpr15getTemplateArgsEv.exit ], [ %52, %_ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i45 ] br i1 %.not.i.i.i, label %.critedge, label %_ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i54 _ZNK5clang12OverloadExpr23hasExplicitTemplateArgsEv.exit.i54: ; preds = %_ZNK5clang12OverloadExpr15getTemplateArgsEv.exit52 diff --git a/bench/llvm/optimized/CFG.ll b/bench/llvm/optimized/CFG.ll index bdf713be95b..87446198e75 100644 --- a/bench/llvm/optimized/CFG.ll +++ b/bench/llvm/optimized/CFG.ll @@ -26194,14 +26194,13 @@ _ZL31tryTransformToIntOrEnumConstantPKN5clang4ExprE.exit29.i: ; preds = %_ZL28Is br i1 %or.cond15.i, label %701, label %.critedge31 701: ; preds = %_ZL31tryTransformToIntOrEnumConstantPKN5clang4ExprE.exit29.i - %702 = select i1 %699, ptr %691, ptr null br i1 %700, label %.thread, label %.thread97 .thread: ; preds = %_ZL28IsIntegerLiteralConstantExprPKN5clang4ExprE.exit.thread.i18._ZL31tryTransformToIntOrEnumConstantPKN5clang4ExprE.exit29_crit_edge.i, %701 br label %.thread97 .thread97: ; preds = %_ZL28IsIntegerLiteralConstantExprPKN5clang4ExprE.exit.i24._ZL31tryTransformToIntOrEnumConstantPKN5clang4ExprE.exit29_crit_edge.i, %701, %.thread - %703 = phi ptr [ %.08.i.i, %.thread ], [ %702, %701 ], [ %670, %_ZL28IsIntegerLiteralConstantExprPKN5clang4ExprE.exit.i24._ZL31tryTransformToIntOrEnumConstantPKN5clang4ExprE.exit29_crit_edge.i ] + %703 = phi ptr [ %.08.i.i, %.thread ], [ %691, %701 ], [ %670, %_ZL28IsIntegerLiteralConstantExprPKN5clang4ExprE.exit.i24._ZL31tryTransformToIntOrEnumConstantPKN5clang4ExprE.exit29_crit_edge.i ] call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %4) #26 store i8 0, ptr %4, align 8, !tbaa !1018 %704 = getelementptr inbounds nuw i8, ptr %4, i64 1 @@ -26255,7 +26254,7 @@ _ZNK4llvm6APSInteqEl.exit.i: ; preds = %720, %717, %710 %728 = load ptr, ptr %726, align 8, !tbaa !285 %729 = getelementptr inbounds nuw i8, ptr %728, i64 40 %730 = load ptr, ptr %729, align 8 - call void %730(ptr noundef nonnull align 8 dereferenceable(8) %726, ptr noundef nonnull %1) #26 + call void %729(ptr noundef nonnull align 8 dereferenceable(8) %726, ptr noundef nonnull %1) #26 br label %731 731: ; preds = %727, %722, %_ZNK4llvm6APSInteqEl.exit.i, %.thread97 diff --git a/bench/llvm/optimized/CGCleanup.ll b/bench/llvm/optimized/CGCleanup.ll index 18b46f1b90d..f9e24bd293c 100644 --- a/bench/llvm/optimized/CGCleanup.ll +++ b/bench/llvm/optimized/CGCleanup.ll @@ -2047,9 +2047,6 @@ _ZN4llvm19SmallPtrSetImplBase10insert_impEPKv.exit.i: ; preds = %._crit_edge.i.i call void @llvm.assume(i1 %53) %54 = getelementptr inbounds i8, ptr %52, i64 -24 %55 = load i8, ptr %54, align 8, !tbaa !6 - %56 = add i8 %55, -30 - %57 = icmp ult i8 %56, 11 - %spec.select.i.i.i = select i1 %57, ptr %54, ptr null %.not.i = icmp eq i8 %55, 31 br i1 %.not.i, label %58, label %_ZL25TransitionToCleanupSwitchRN5clang7CodeGen15CodeGenFunctionEPN4llvm10BasicBlockE.exit @@ -2108,7 +2105,7 @@ _ZL20createLoadInstBeforeN5clang7CodeGen7AddressERKN4llvm5TwineENS2_21ilist_iter br label %_ZL25TransitionToCleanupSwitchRN5clang7CodeGen15CodeGenFunctionEPN4llvm10BasicBlockE.exit _ZL25TransitionToCleanupSwitchRN5clang7CodeGen15CodeGenFunctionEPN4llvm10BasicBlockE.exit: ; preds = %50, %_ZL20createLoadInstBeforeN5clang7CodeGen7AddressERKN4llvm5TwineENS2_21ilist_iterator_w_bitsINS2_12ilist_detail12node_optionsINS2_11InstructionELb0ELb0EvLb1ENS2_10BasicBlockEEELb0ELb0EEERNS0_15CodeGenFunctionE.exit.i - %.0.i = phi ptr [ %75, %_ZL20createLoadInstBeforeN5clang7CodeGen7AddressERKN4llvm5TwineENS2_21ilist_iterator_w_bitsINS2_12ilist_detail12node_optionsINS2_11InstructionELb0ELb0EvLb1ENS2_10BasicBlockEEELb0ELb0EEERNS0_15CodeGenFunctionE.exit.i ], [ %spec.select.i.i.i, %50 ] + %.0.i = phi ptr [ %75, %_ZL20createLoadInstBeforeN5clang7CodeGen7AddressERKN4llvm5TwineENS2_21ilist_iterator_w_bitsINS2_12ilist_detail12node_optionsINS2_11InstructionELb0ELb0EvLb1ENS2_10BasicBlockEEELb0ELb0EEERNS0_15CodeGenFunctionE.exit.i ], [ %54, %50 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) %77 = getelementptr inbounds nuw i8, ptr %29, i64 16 %78 = load i32, ptr %77, align 8, !tbaa !713 diff --git a/bench/llvm/optimized/CallGraphSCCPass.ll b/bench/llvm/optimized/CallGraphSCCPass.ll index 55f4bc698ae..8b565d05957 100644 --- a/bench/llvm/optimized/CallGraphSCCPass.ll +++ b/bench/llvm/optimized/CallGraphSCCPass.ll @@ -559,10 +559,8 @@ define dso_local void @_ZN4llvm16CallGraphSCCPass17assignPassManagerERNS_7PMStac br i1 %27, label %31, label %35 31: ; preds = %.critedge - %32 = icmp eq ptr %30, null - %33 = getelementptr inbounds i8, ptr %30, i64 -32 - %34 = select i1 %32, ptr null, ptr %33 - br label %70 + %32 = getelementptr inbounds i8, ptr %30, i64 -32 + br label %68 35: ; preds = %.critedge %36 = tail call noalias noundef nonnull dereferenceable(416) ptr @_Znwm(i64 noundef 416) #23 @@ -630,7 +628,7 @@ _ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit: ; br label %70 70: ; preds = %_ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit, %31 - %.0 = phi ptr [ %34, %31 ], [ %36, %_ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit ] + %.0 = phi ptr [ %32, %31 ], [ %36, %_ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit ] %71 = getelementptr inbounds nuw i8, ptr %.0, i64 32 tail call void @_ZN4llvm13PMDataManager3addEPNS_4PassEb(ptr noundef nonnull align 8 dereferenceable(380) %71, ptr noundef nonnull %0, i1 noundef zeroext true) #22 ret void diff --git a/bench/llvm/optimized/CanonicalizeFreezeInLoops.ll b/bench/llvm/optimized/CanonicalizeFreezeInLoops.ll index 1abb0c8cb60..8fd4e3f69b8 100644 --- a/bench/llvm/optimized/CanonicalizeFreezeInLoops.ll +++ b/bench/llvm/optimized/CanonicalizeFreezeInLoops.ll @@ -693,57 +693,43 @@ define internal fastcc void @_ZN12_GLOBAL__N_129CanonicalizeFreezeInLoopsImpl29I store ptr @.str, ptr %20, align 8, !tbaa !133, !alias.scope !129 %21 = getelementptr inbounds nuw i8, ptr %5, i64 48 %22 = load ptr, ptr %21, align 8, !tbaa !134 - %23 = icmp eq ptr %21, %22 - br i1 %23, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit, label %24 - -24: ; preds = %12 - %25 = getelementptr inbounds i8, ptr %22, i64 -24 - %26 = load i8, ptr %25, align 8, !tbaa !72 - %27 = add i8 %26, -30 - %28 = icmp ult i8 %27, 11 - %spec.select.i.i = select i1 %28, ptr %25, ptr null - br label %_ZN4llvm10BasicBlock13getTerminatorEv.exit - -_ZN4llvm10BasicBlock13getTerminatorEv.exit: ; preds = %12, %24 - %.0.i.i = phi ptr [ null, %12 ], [ %spec.select.i.i, %24 ] - %29 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 24 - call void @_ZN4llvm10FreezeInstC1EPNS_5ValueERKNS_5TwineENS_14InsertPositionE(ptr noundef nonnull align 8 dereferenceable(72) %13, ptr noundef nonnull %8, ptr noundef nonnull align 8 dereferenceable(34) %3, ptr nonnull %29, i64 0) #14 - %30 = load ptr, ptr %1, align 8, !tbaa !77 - %.not.i = icmp eq ptr %30, null - br i1 %.not.i, label %38, label %31 - -31: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit - %32 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %33 = load ptr, ptr %32, align 8, !tbaa !90 - %34 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %35 = load ptr, ptr %34, align 8, !tbaa !135 - store ptr %33, ptr %35, align 8, !tbaa !101 - %.not.i.i = icmp eq ptr %33, null - br i1 %.not.i.i, label %38, label %36 + call void @_ZN4llvm10FreezeInstC1EPNS_5ValueERKNS_5TwineENS_14InsertPositionE(ptr noundef nonnull align 8 dereferenceable(72) %12, ptr noundef nonnull %8, ptr noundef nonnull align 8 dereferenceable(34) %3, ptr nonnull %22, i64 0) #14 + %22 = load ptr, ptr %1, align 8, !tbaa !77 + %.not.i = icmp eq ptr %22, null + br i1 %.not.i, label %31, label %23 + +23:; preds = %12 + %24 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %25 = load ptr, ptr %24, align 8, !tbaa !90 + %26 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %27 = load ptr, ptr %26, align 8, !tbaa !135 + store ptr %25, ptr %27, align 8, !tbaa !101 + %.not.i.i = icmp eq ptr %25, null + br i1 %.not.i.i, label %30, label %28 + +28:; preds = %23 + %29 = getelementptr inbounds nuw i8, ptr %25, i64 16 + store ptr %27, ptr %29, align 8, !tbaa !135 + br label %31 + +31: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit, %23, %28 + store ptr %12, ptr %1, align 8, !tbaa !77 + %31 = getelementptr inbounds nuw i8, ptr %12, i64 16 + %32 = load ptr, ptr %31, align 8, !tbaa !101 + %33 = getelementptr inbounds nuw i8, ptr %1, i64 8 + store ptr %32, ptr %33, align 8, !tbaa !90 + %.not.i.i = icmp eq ptr %32, null + br i1 %.not.i.i, label %_ZN4llvm3Use3setEPNS_5ValueE.exit, label %36 36: ; preds = %31 - %37 = getelementptr inbounds nuw i8, ptr %33, i64 16 - store ptr %35, ptr %37, align 8, !tbaa !135 - br label %38 - -38: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit, %31, %36 - store ptr %13, ptr %1, align 8, !tbaa !77 - %39 = getelementptr inbounds nuw i8, ptr %13, i64 16 - %40 = load ptr, ptr %39, align 8, !tbaa !101 - %41 = getelementptr inbounds nuw i8, ptr %1, i64 8 - store ptr %40, ptr %41, align 8, !tbaa !90 - %.not.i.i.i = icmp eq ptr %40, null - br i1 %.not.i.i.i, label %_ZN4llvm3Use3setEPNS_5ValueE.exit, label %42 - -42: ; preds = %38 - %43 = getelementptr inbounds nuw i8, ptr %40, i64 16 - store ptr %41, ptr %43, align 8, !tbaa !135 + %37 = getelementptr inbounds nuw i8, ptr %32, i64 16 + store ptr %33, ptr %37, align 8, !tbaa !135 br label %_ZN4llvm3Use3setEPNS_5ValueE.exit -_ZN4llvm3Use3setEPNS_5ValueE.exit: ; preds = %38, %42 +_ZN4llvm3Use3setEPNS_5ValueE.exit: ; preds = %30, %34 %44 = getelementptr inbounds nuw i8, ptr %1, i64 16 - store ptr %39, ptr %44, align 8, !tbaa !135 - store ptr %1, ptr %39, align 8, !tbaa !101 + store ptr %31, ptr %44, align 8, !tbaa !135 + store ptr %1, ptr %31, align 8, !tbaa !101 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #14 %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 %46 = load ptr, ptr %45, align 8, !tbaa !48 diff --git a/bench/llvm/optimized/DemoteRegToStack.ll b/bench/llvm/optimized/DemoteRegToStack.ll index acf802c8711..0182c89c05c 100644 --- a/bench/llvm/optimized/DemoteRegToStack.ll +++ b/bench/llvm/optimized/DemoteRegToStack.ll @@ -916,21 +916,7 @@ define dso_local noundef ptr @_ZN4llvm16DemotePHIToStackEPNS_7PHINodeESt8optiona %70 = load ptr, ptr %69, align 8, !tbaa !123 %71 = getelementptr inbounds nuw i8, ptr %70, i64 48 %72 = load ptr, ptr %71, align 8, !tbaa !134 - %73 = icmp eq ptr %71, %72 - br i1 %73, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit, label %74 - -74: ; preds = %61 - %75 = getelementptr inbounds i8, ptr %72, i64 -24 - %76 = load i8, ptr %75, align 8, !tbaa !86 - %77 = add i8 %76, -30 - %78 = icmp ult i8 %77, 11 - %spec.select.i.i89 = select i1 %78, ptr %75, ptr null - br label %_ZN4llvm10BasicBlock13getTerminatorEv.exit - -_ZN4llvm10BasicBlock13getTerminatorEv.exit: ; preds = %61, %74 - %.0.i.i = phi ptr [ null, %61 ], [ %spec.select.i.i89, %74 ] - %79 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 24 - call void @_ZN4llvm9StoreInstC1EPNS_5ValueES2_NS_14InsertPositionE(ptr noundef nonnull align 8 dereferenceable(73) %62, ptr noundef %65, ptr noundef nonnull %.084, ptr nonnull %79, i64 0) #8 + call void @_ZN4llvm9StoreInstC1EPNS_5ValueES2_NS_14InsertPositionE(ptr noundef nonnull align 8 dereferenceable(73) %61, ptr noundef %64, ptr noundef nonnull %.084, ptr nonnull %72, i64 0) #8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %61, !llvm.loop !156 diff --git a/bench/llvm/optimized/FunctionComparator.ll b/bench/llvm/optimized/FunctionComparator.ll index 0a7671b9699..6e25fa77d88 100644 --- a/bench/llvm/optimized/FunctionComparator.ll +++ b/bench/llvm/optimized/FunctionComparator.ll @@ -3777,7 +3777,7 @@ _ZN4llvm18FunctionComparator12beginCompareEv.exit: ; preds = %_ZN4llvm12DenseMap store ptr %58, ptr %50, align 8, !tbaa !218, !noalias !215 br label %.lr.ph98 -.loopexit: ; preds = %.critedge106, %_ZNK4llvm10BasicBlock13getTerminatorEv.exit48 +.loopexit: ; preds = %.critedge106, %_ZNK4llvm10BasicBlock13getTerminatorEv.exit %66 = load i32, ptr %45, align 8, !tbaa !83 %.not.i = icmp eq i32 %66, 0 br i1 %.not.i, label %.thread, label %.lr.ph98, !llvm.loop !219 @@ -3826,25 +3826,13 @@ _ZNK4llvm10BasicBlock13getTerminatorEv.exit: ; preds = %84, %88 %.0.i = phi ptr [ null, %84 ], [ %spec.select.i45, %88 ] %93 = getelementptr inbounds nuw i8, ptr %79, i64 48 %94 = load ptr, ptr %93, align 8, !tbaa !220 - %95 = icmp eq ptr %93, %94 - br i1 %95, label %_ZNK4llvm10BasicBlock13getTerminatorEv.exit48, label %96 - -96: ; preds = %_ZNK4llvm10BasicBlock13getTerminatorEv.exit - %97 = getelementptr inbounds i8, ptr %94, i64 -24 - %98 = load i8, ptr %97, align 8, !tbaa !47 - %99 = add i8 %98, -30 - %100 = icmp ult i8 %99, 11 - %spec.select.i46 = select i1 %100, ptr %97, ptr null - br label %_ZNK4llvm10BasicBlock13getTerminatorEv.exit48 - -_ZNK4llvm10BasicBlock13getTerminatorEv.exit48: ; preds = %_ZNK4llvm10BasicBlock13getTerminatorEv.exit, %96 - %.0.i47 = phi ptr [ null, %_ZNK4llvm10BasicBlock13getTerminatorEv.exit ], [ %spec.select.i46, %96 ] - %101 = call noundef i32 @_ZNK4llvm11Instruction16getNumSuccessorsEv(ptr noundef nonnull align 8 dereferenceable(72) %.0.i) #17 - %.not3794 = icmp eq i32 %101, 0 + %95 = getelementptr inbounds i8, ptr %94, i64 -24 + %96 = call noundef i32 @_ZNK4llvm11Instruction16getNumSuccessorsEv(ptr noundef nonnull align 8 dereferenceable(72) %.0.i) #17 + %.not3794 = icmp eq i32 %96, 0 br i1 %.not3794, label %.loopexit, label %.lr.ph -.lr.ph: ; preds = %_ZNK4llvm10BasicBlock13getTerminatorEv.exit48, %.critedge106 - %.02995 = phi i32 [ %145, %.critedge106 ], [ 0, %_ZNK4llvm10BasicBlock13getTerminatorEv.exit48 ] +.lr.ph: ; preds = %_ZNK4llvm10BasicBlock13getTerminatorEv.exit, %.critedge106 + %.02995 = phi i32 [ %145, %.critedge106 ], [ 0, %_ZNK4llvm10BasicBlock13getTerminatorEv.exit ] %102 = call noundef ptr @_ZNK4llvm11Instruction12getSuccessorEj(ptr noundef nonnull align 8 dereferenceable(72) %.0.i, i32 noundef %.02995) #17 %103 = load i8, ptr %54, align 4, !tbaa !213, !range !56, !noalias !221, !noundef !57 %104 = trunc nuw i8 %103 to i1 @@ -3910,7 +3898,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPKNS_10BasicBlockELb1EE9push_backES3_.exit81: %130 = load i32, ptr %45, align 8, !tbaa !83 %131 = add i32 %130, 1 store i32 %131, ptr %45, align 8, !tbaa !83 - %132 = call noundef ptr @_ZNK4llvm11Instruction12getSuccessorEj(ptr noundef nonnull align 8 dereferenceable(72) %.0.i47, i32 noundef %.02995) #17 + %132 = call noundef ptr @_ZNK4llvm11Instruction12getSuccessorEj(ptr noundef nonnull align 8 dereferenceable(72) %95, i32 noundef %.02995) #17 %133 = load i32, ptr %48, align 8, !tbaa !83 %134 = load i32, ptr %49, align 4, !tbaa !90 %.not.i.i.not.i82 = icmp ult i32 %133, %134 @@ -3937,7 +3925,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPKNS_10BasicBlockELb1EE9push_backES3_.exit84: .critedge106: ; preds = %.lr.ph.i.i68, %_ZN4llvm19SmallPtrSetImplBase10insert_impEPKv.exit.i49, %_ZN4llvm23SmallVectorTemplateBaseIPKNS_10BasicBlockELb1EE9push_backES3_.exit84 %145 = add nuw i32 %.02995, 1 - %.not37 = icmp eq i32 %145, %101 + %.not37 = icmp eq i32 %145, %96 br i1 %.not37, label %.loopexit, label %.lr.ph, !llvm.loop !226 .thread: ; preds = %.loopexit, %82, %.lr.ph98 diff --git a/bench/llvm/optimized/GVN.ll b/bench/llvm/optimized/GVN.ll index d3adbf1c062..9bf3f291ea8 100644 --- a/bench/llvm/optimized/GVN.ll +++ b/bench/llvm/optimized/GVN.ll @@ -10727,7 +10727,7 @@ _ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i: ; preds = %237 br label %_ZN4llvm8succ_endEPNS_10BasicBlockE.exit.i _ZN4llvm8succ_endEPNS_10BasicBlockE.exit.i: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i, %237, %.thread58.i - %.0.i.i.i65.i = phi ptr [ %238, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i ], [ null, %237 ], [ null, %.thread58.i ] + %.0.i.i.i65.i = phi ptr [ %238, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i ], [ %238, %237 ], [ null, %.thread58.i ] %.sink.i.i.i = phi i32 [ %242, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i ], [ 0, %237 ], [ 0, %.thread58.i ] %243 = sext i32 %.sink.i.i.i to i64 %244 = load i32, ptr %123, align 4, !tbaa !27 @@ -10850,7 +10850,7 @@ _ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i.i: ; preds = %295 br label %_ZN4llvm8succ_endEPNS_10BasicBlockE.exit.i.i _ZN4llvm8succ_endEPNS_10BasicBlockE.exit.i.i: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i.i, %295, %291 - %.0.i.i.i6.i.i = phi ptr [ %296, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i.i ], [ null, %295 ], [ null, %291 ] + %.0.i.i.i6.i.i = phi ptr [ %296, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i.i ], [ %296, %295 ], [ null, %291 ] %.sink.i.i.i.i = phi i32 [ %300, %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i.i.i ], [ 0, %295 ], [ 0, %291 ] %301 = sext i32 %.sink.i.i.i.i to i64 %302 = zext i32 %261 to i64 @@ -18469,21 +18469,7 @@ _ZNK4llvm7GVNPass10ValueTable6existsEPNS_5ValueE.exit: ; preds = %_ZNK4llvm4User ._crit_edge: ; preds = %_ZNK4llvm7GVNPass10ValueTable6existsEPNS_5ValueE.exit, %5 %135 = getelementptr inbounds nuw i8, ptr %2, i64 48 %136 = load ptr, ptr %135, align 8, !tbaa !489 - %137 = icmp eq ptr %135, %136 - br i1 %137, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit, label %138 - -138: ; preds = %._crit_edge - %139 = getelementptr inbounds i8, ptr %136, i64 -24 - %140 = load i8, ptr %139, align 8, !tbaa !84 - %141 = add i8 %140, -30 - %142 = icmp ult i8 %141, 11 - %spec.select.i.i = select i1 %142, ptr %139, ptr null - br label %_ZN4llvm10BasicBlock13getTerminatorEv.exit - -_ZN4llvm10BasicBlock13getTerminatorEv.exit: ; preds = %._crit_edge, %138 - %.0.i.i = phi ptr [ null, %._crit_edge ], [ %spec.select.i.i, %138 ] - %143 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 24 - tail call void @_ZN4llvm11Instruction12insertBeforeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %1, ptr nonnull %143, i64 0) #27 + tail call void @_ZN4llvm11Instruction12insertBeforeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %1, ptr nonnull %136, i64 0) #27 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #27 %144 = tail call { ptr, i64 } @_ZNK4llvm5Value7getNameEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #27 %145 = extractvalue { ptr, i64 } %144, 0 diff --git a/bench/llvm/optimized/GVNHoist.ll b/bench/llvm/optimized/GVNHoist.ll index 70738a38d44..ab61f32b8bc 100644 --- a/bench/llvm/optimized/GVNHoist.ll +++ b/bench/llvm/optimized/GVNHoist.ll @@ -5822,21 +5822,7 @@ define dso_local void @_ZNK4llvm8GVNHoist17makeGepsAvailableEPNS_11InstructionEP ._crit_edge: ; preds = %51, %5 %13 = getelementptr inbounds nuw i8, ptr %2, i64 48 %14 = load ptr, ptr %13, align 8, !tbaa !257 - %15 = icmp eq ptr %13, %14 - br i1 %15, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit, label %16 - -16: ; preds = %._crit_edge - %17 = getelementptr inbounds i8, ptr %14, i64 -24 - %18 = load i8, ptr %17, align 8, !tbaa !220 - %19 = add i8 %18, -30 - %20 = icmp ult i8 %19, 11 - %spec.select.i.i = select i1 %20, ptr %17, ptr null - br label %_ZN4llvm10BasicBlock13getTerminatorEv.exit - -_ZN4llvm10BasicBlock13getTerminatorEv.exit: ; preds = %._crit_edge, %16 - %.0.i.i = phi ptr [ null, %._crit_edge ], [ %spec.select.i.i, %16 ] - %21 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 24 - tail call void @_ZN4llvm11Instruction12insertBeforeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr nonnull %21, i64 0) #23 + tail call void @_ZN4llvm11Instruction12insertBeforeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr nonnull %14, i64 0) #23 tail call void @_ZN4llvm11Instruction27dropUnknownNonDebugMetadataENS_8ArrayRefIjEE(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr null, i64 0) #23 %22 = load ptr, ptr %3, align 8, !tbaa !25 %23 = getelementptr inbounds nuw i8, ptr %3, i64 8 diff --git a/bench/llvm/optimized/HLSLExternalSemaSource.ll b/bench/llvm/optimized/HLSLExternalSemaSource.ll index daab668881e..4ff35045e5e 100644 --- a/bench/llvm/optimized/HLSLExternalSemaSource.ll +++ b/bench/llvm/optimized/HLSLExternalSemaSource.ll @@ -5842,30 +5842,13 @@ _ZN4llvm15SmallVectorImplIN5clang8QualTypeEE12emplace_backIJRS2_EEES5_DpOT_.exit _ZNK5clang14DeclaratorDecl17getTypeSourceInfoEv.exit: ; preds = %42, %62 %65 = phi ptr [ %64, %62 ], [ %61, %42 ] - %.sroa.0.0.copyload.i = load i64, ptr %65, align 8, !tbaa !1123 - %66 = and i64 %.sroa.0.0.copyload.i, 15 - %.not.i.i = icmp eq i64 %66, 0 - br i1 %.not.i.i, label %_ZN5clang25InheritingConcreteTypeLocINS_15FunctionTypeLocENS_20FunctionProtoTypeLocENS_17FunctionProtoTypeEE6isKindERKNS_7TypeLocE.exit.i, label %_ZNK5clang7TypeLoc5getAsINS_20FunctionProtoTypeLocEEET_v.exit - -_ZN5clang25InheritingConcreteTypeLocINS_15FunctionTypeLocENS_20FunctionProtoTypeLocENS_17FunctionProtoTypeEE6isKindERKNS_7TypeLocE.exit.i: ; preds = %_ZNK5clang14DeclaratorDecl17getTypeSourceInfoEv.exit - %67 = inttoptr i64 %.sroa.0.0.copyload.i to ptr - %68 = getelementptr inbounds nuw i8, ptr %65, i64 8 - %69 = load ptr, ptr %67, align 8, !tbaa !1158 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 16 - %71 = load i8, ptr %70, align 16 - %72 = icmp eq i8 %71, 26 - %spec.select57 = select i1 %72, ptr %68, ptr null - br label %_ZNK5clang7TypeLoc5getAsINS_20FunctionProtoTypeLocEEET_v.exit - -_ZNK5clang7TypeLoc5getAsINS_20FunctionProtoTypeLocEEET_v.exit: ; preds = %_ZN5clang25InheritingConcreteTypeLocINS_15FunctionTypeLocENS_20FunctionProtoTypeLocENS_17FunctionProtoTypeEE6isKindERKNS_7TypeLocE.exit.i, %_ZNK5clang14DeclaratorDecl17getTypeSourceInfoEv.exit - %.sroa.5.0.i = phi ptr [ null, %_ZNK5clang14DeclaratorDecl17getTypeSourceInfoEv.exit ], [ %spec.select57, %_ZN5clang25InheritingConcreteTypeLocINS_15FunctionTypeLocENS_20FunctionProtoTypeLocENS_17FunctionProtoTypeEE6isKindERKNS_7TypeLocE.exit.i ] - %73 = load i32, ptr %14, align 8, !tbaa !1047 - %.not3560 = icmp eq i32 %73, 0 + %.sroa.0.0.copyload.i = load i32, ptr %14, align 8, !tbaa !1047 + %.not3560 = icmp eq i32 %.sroa.0.0.copyload.i, 0 br i1 %.not3560, label %._crit_edge63, label %.lr.ph62 -.lr.ph62: ; preds = %_ZNK5clang7TypeLoc5getAsINS_20FunctionProtoTypeLocEEET_v.exit - %74 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.i, i64 16 - %75 = zext i32 %73 to i64 +.lr.ph62: ; preds = %_ZNK5clang14DeclaratorDecl17getTypeSourceInfoEv.exit + %74 = getelementptr inbounds nuw i8, ptr %65, i64 24 + %75 = zext i32 %66 to i64 br label %87 ._crit_edge63.loopexit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPN5clang11ParmVarDeclELb1EE9push_backES3_.exit @@ -5874,10 +5857,10 @@ _ZNK5clang7TypeLoc5getAsINS_20FunctionProtoTypeLocEEET_v.exit: ; preds = %_ZN5cl %76 = zext i32 %117 to i64 br label %._crit_edge63 -._crit_edge63: ; preds = %._crit_edge63.loopexit, %_ZNK5clang7TypeLoc5getAsINS_20FunctionProtoTypeLocEEET_v.exit - %77 = phi i64 [ %76, %._crit_edge63.loopexit ], [ 0, %_ZNK5clang7TypeLoc5getAsINS_20FunctionProtoTypeLocEEET_v.exit ] - %78 = phi ptr [ %.pre66, %._crit_edge63.loopexit ], [ %55, %_ZNK5clang7TypeLoc5getAsINS_20FunctionProtoTypeLocEEET_v.exit ] - %79 = phi ptr [ %.pre65, %._crit_edge63.loopexit ], [ %53, %_ZNK5clang7TypeLoc5getAsINS_20FunctionProtoTypeLocEEET_v.exit ] +._crit_edge63: ; preds = %._crit_edge63.loopexit, %_ZNK5clang14DeclaratorDecl17getTypeSourceInfoEv.exit + %77 = phi i64 [ %76, %._crit_edge63.loopexit ], [ 0, %_ZNK5clang14DeclaratorDecl17getTypeSourceInfoEv.exit ] + %78 = phi ptr [ %.pre66, %._crit_edge63.loopexit ], [ %55, %_ZNK5clang14DeclaratorDecl17getTypeSourceInfoEv.exit ] + %79 = phi ptr [ %.pre65, %._crit_edge63.loopexit ], [ %53, %_ZNK5clang14DeclaratorDecl17getTypeSourceInfoEv.exit ] %80 = call noundef nonnull align 8 dereferenceable(23216) ptr @_ZNK5clang4Decl13getASTContextEv(ptr noundef nonnull align 8 dereferenceable(168) %79) #17 call void @_ZN5clang12FunctionDecl9setParamsERNS_10ASTContextEN4llvm8ArrayRefIPNS_11ParmVarDeclEEE(ptr noundef nonnull align 8 dereferenceable(168) %79, ptr noundef nonnull align 8 dereferenceable(23216) %80, ptr %78, i64 %77) #15 %81 = load ptr, ptr %4, align 8, !tbaa !1046 diff --git a/bench/llvm/optimized/IROutliner.ll b/bench/llvm/optimized/IROutliner.ll index 26422d7456f..81c0f0d8528 100644 --- a/bench/llvm/optimized/IROutliner.ll +++ b/bench/llvm/optimized/IROutliner.ll @@ -9710,19 +9710,7 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInf %198 = tail call { ptr, i64 } @_ZN4llvm11Instruction15eraseFromParentEv(ptr noundef nonnull align 8 dereferenceable(72) %197) #27 %199 = getelementptr inbounds nuw i8, ptr %191, i64 48 %200 = load ptr, ptr %199, align 8, !tbaa !148 - %201 = icmp eq ptr %199, %200 - br i1 %201, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit116, label %202 - -202: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit110 - %203 = getelementptr inbounds i8, ptr %200, i64 -24 - %204 = load i8, ptr %203, align 8, !tbaa !131 - %205 = add i8 %204, -30 - %206 = icmp ult i8 %205, 11 - %spec.select.i.i114 = select i1 %206, ptr %203, ptr null - br label %_ZN4llvm10BasicBlock13getTerminatorEv.exit116 - -_ZN4llvm10BasicBlock13getTerminatorEv.exit116: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit110, %202 - %.0.i.i115 = phi ptr [ null, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit110 ], [ %spec.select.i.i114, %202 ] + %201 = getelementptr inbounds i8, ptr %200, i64 -24 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) %207 = getelementptr inbounds nuw i8, ptr %193, i64 56 %208 = load ptr, ptr %207, align 8, !tbaa !165 @@ -9730,14 +9718,14 @@ _ZN4llvm10BasicBlock13getTerminatorEv.exit116: ; preds = %_ZN4llvm12DenseMapB store i16 0, ptr %.sroa.2.0..sroa_idx.i.i, align 8 tail call void @_ZN4llvm10BasicBlock6spliceENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ES0_EELb0ELb0EEEPS0_S6_S6_(ptr noundef nonnull align 8 dereferenceable(80) %191, ptr nonnull %199, i64 0, ptr noundef nonnull align 8 dereferenceable(80) %193, ptr %208, i64 1, ptr noundef nonnull byval(%"class.llvm::ilist_iterator_w_bits") align 8 %5) #27 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) - tail call void @_ZN4llvm11Instruction10moveBeforeERNS_10BasicBlockENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ES1_EELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %.0.i.i115, ptr noundef nonnull align 8 dereferenceable(80) %191, ptr nonnull %199, i64 0) #27 + tail call void @_ZN4llvm11Instruction10moveBeforeERNS_10BasicBlockENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ES1_EELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %201, ptr noundef nonnull align 8 dereferenceable(80) %191, ptr nonnull %199, i64 0) #27 %209 = tail call ptr @_ZN4llvm10BasicBlock15eraseFromParentEv(ptr noundef nonnull align 8 dereferenceable(80) %193) #27 %210 = getelementptr inbounds nuw i8, ptr %.sroa.0127.0164, i64 16 %.not5.i3.i119 = icmp eq ptr %210, %157 br i1 %.not5.i3.i119, label %_ZN4llvm16DenseMapIteratorIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS2_vEENS_6detail12DenseMapPairIS2_S4_EELb0EEppEv.exit124, label %.lr.ph.i4.i120 -.lr.ph.i4.i120: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit116, %.critedge2.i6.i122 - %.sroa.0127.1 = phi ptr [ %212, %.critedge2.i6.i122 ], [ %210, %_ZN4llvm10BasicBlock13getTerminatorEv.exit116 ] +.lr.ph.i4.i120: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit110, %.critedge2.i6.i122 + %.sroa.0127.1 = phi ptr [ %212, %.critedge2.i6.i122 ], [ %210, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit110 ] %211 = load ptr, ptr %.sroa.0127.1, align 8, !tbaa !82 %magicptr.i5.i121 = ptrtoint ptr %211 to i64 switch i64 %magicptr.i5.i121, label %_ZN4llvm16DenseMapIteratorIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS2_vEENS_6detail12DenseMapPairIS2_S4_EELb0EEppEv.exit124 [ @@ -9750,8 +9738,8 @@ _ZN4llvm10BasicBlock13getTerminatorEv.exit116: ; preds = %_ZN4llvm12DenseMapB %.not.i7.i123 = icmp eq ptr %212, %157 br i1 %.not.i7.i123, label %_ZN4llvm16DenseMapIteratorIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS2_vEENS_6detail12DenseMapPairIS2_S4_EELb0EEppEv.exit124, label %.lr.ph.i4.i120, !llvm.loop !580 -_ZN4llvm16DenseMapIteratorIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS2_vEENS_6detail12DenseMapPairIS2_S4_EELb0EEppEv.exit124: ; preds = %.lr.ph.i4.i120, %.critedge2.i6.i122, %_ZN4llvm10BasicBlock13getTerminatorEv.exit116 - %.sroa.0127.2 = phi ptr [ %210, %_ZN4llvm10BasicBlock13getTerminatorEv.exit116 ], [ %212, %.critedge2.i6.i122 ], [ %.sroa.0127.1, %.lr.ph.i4.i120 ] +_ZN4llvm16DenseMapIteratorIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS2_vEENS_6detail12DenseMapPairIS2_S4_EELb0EEppEv.exit124: ; preds = %.lr.ph.i4.i120, %.critedge2.i6.i122, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit110 + %.sroa.0127.2 = phi ptr [ %210, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5ValueEPNS_10BasicBlockENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit110 ], [ %212, %.critedge2.i6.i122 ], [ %.sroa.0127.1, %.lr.ph.i4.i120 ] %.not = icmp eq ptr %.sroa.0127.2, %157 br i1 %.not, label %._crit_edge, label %163 diff --git a/bench/llvm/optimized/LazyMachineBlockFrequencyInfo.ll b/bench/llvm/optimized/LazyMachineBlockFrequencyInfo.ll index ba6f671ed3b..ce4c7a6b8cf 100644 --- a/bench/llvm/optimized/LazyMachineBlockFrequencyInfo.ll +++ b/bench/llvm/optimized/LazyMachineBlockFrequencyInfo.ll @@ -307,7 +307,6 @@ _ZNK4llvm4Pass22getAnalysisIfAvailableINS_31MachineDominatorTreeWrapperPassEEEPT 39: ; preds = %_ZNK4llvm4Pass22getAnalysisIfAvailableINS_31MachineDominatorTreeWrapperPassEEEPT_v.exit.thread %.not21 = icmp eq ptr %38, null %40 = getelementptr inbounds nuw i8, ptr %38, i64 56 - %spec.select44 = select i1 %.not21, ptr null, ptr %40 br i1 %.not21, label %_ZNSt10unique_ptrIN4llvm20MachineDominatorTreeESt14default_deleteIS1_EED2Ev.exit, label %58 _ZNSt10unique_ptrIN4llvm20MachineDominatorTreeESt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZNK4llvm4Pass22getAnalysisIfAvailableINS_31MachineDominatorTreeWrapperPassEEEPT_v.exit.thread.thread, %39 @@ -342,7 +341,7 @@ _ZNSt10unique_ptrIN4llvm20MachineDominatorTreeESt14default_deleteIS1_EED2Ev.exit br label %58 58: ; preds = %_ZNSt10unique_ptrIN4llvm20MachineDominatorTreeESt14default_deleteIS1_EED2Ev.exit, %39 - %.0 = phi ptr [ %spec.select44, %39 ], [ %57, %_ZNSt10unique_ptrIN4llvm20MachineDominatorTreeESt14default_deleteIS1_EED2Ev.exit ] + %.0 = phi ptr [ %40, %39 ], [ %57, %_ZNSt10unique_ptrIN4llvm20MachineDominatorTreeESt14default_deleteIS1_EED2Ev.exit ] %59 = tail call noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #16, !noalias !217 %60 = getelementptr inbounds nuw i8, ptr %59, i64 64 %61 = getelementptr inbounds nuw i8, ptr %59, i64 80 diff --git a/bench/llvm/optimized/LoopPass.ll b/bench/llvm/optimized/LoopPass.ll index c746edee131..5643b9ddd1d 100644 --- a/bench/llvm/optimized/LoopPass.ll +++ b/bench/llvm/optimized/LoopPass.ll @@ -1325,30 +1325,28 @@ define dso_local void @_ZN4llvm8LoopPass17assignPassManagerERNS_7PMStackENS_15Pa %28 = load ptr, ptr %4, align 8, !tbaa !142 %29 = getelementptr inbounds i8, ptr %28, i64 -8 %30 = load ptr, ptr %29, align 8, !tbaa !154 - br i1 %27, label %31, label %35 + br i1 %27, label %31, label %33 31: ; preds = %.critedge - %32 = icmp eq ptr %30, null - %33 = getelementptr inbounds i8, ptr %30, i64 -32 - %34 = select i1 %32, ptr null, ptr %33 - br label %70 - -35: ; preds = %.critedge - %36 = tail call noalias noundef nonnull dereferenceable(520) ptr @_Znwm(i64 noundef 520) #20 - tail call void @_ZN4llvm13LPPassManagerC1Ev(ptr noundef nonnull align 8 dereferenceable(513) %36) #21 - %37 = getelementptr inbounds nuw i8, ptr %36, i64 32 - %38 = load ptr, ptr %4, align 8, !tbaa !142, !noalias !348 - %39 = load ptr, ptr %1, align 8, !tbaa !142, !noalias !353 - %.not6.i = icmp eq ptr %38, %39 + %32 = getelementptr inbounds i8, ptr %30, i64 -32 + br label %68 + +33:; preds = %.critedge + %34 = tail call noalias noundef nonnull dereferenceable(520) ptr @_Znwm(i64 noundef 520) #20 + tail call void @_ZN4llvm13LPPassManagerC1Ev(ptr noundef nonnull align 8 dereferenceable(513) %34) #21 + %35 = getelementptr inbounds nuw i8, ptr %34, i64 32 + %36 = load ptr, ptr %4, align 8, !tbaa !142, !noalias !348 + %37 = load ptr, ptr %1, align 8, !tbaa !142, !noalias !353 + %.not6.i = icmp eq ptr %36, %37 br i1 %.not6.i, label %_ZN4llvm13PMDataManager25populateInheritedAnalysisERNS_7PMStackE.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %35 - %40 = getelementptr inbounds nuw i8, ptr %36, i64 192 +.lr.ph.i: ; preds = %33 + %40 = getelementptr inbounds nuw i8, ptr %34, i64 192 br label %41 41: ; preds = %41, %.lr.ph.i %.08.i = phi i32 [ 0, %.lr.ph.i ], [ %45, %41 ] - %.sroa.05.07.i = phi ptr [ %38, %.lr.ph.i ], [ %42, %41 ] + %.sroa.05.07.i = phi ptr [ %36, %.lr.ph.i ], [ %42, %41 ] %42 = getelementptr inbounds i8, ptr %.sroa.05.07.i, i64 -8 %43 = load ptr, ptr %42, align 8, !tbaa !154 %44 = getelementptr inbounds nuw i8, ptr %43, i64 208 @@ -1356,10 +1354,10 @@ define dso_local void @_ZN4llvm8LoopPass17assignPassManagerERNS_7PMStackENS_15Pa %46 = zext i32 %.08.i to i64 %47 = getelementptr inbounds nuw [6 x ptr], ptr %40, i64 0, i64 %46 store ptr %44, ptr %47, align 8, !tbaa !28 - %.not.i = icmp eq ptr %42, %39 + %.not.i = icmp eq ptr %42, %37 br i1 %.not.i, label %_ZN4llvm13PMDataManager25populateInheritedAnalysisERNS_7PMStackE.exit, label %41 -_ZN4llvm13PMDataManager25populateInheritedAnalysisERNS_7PMStackE.exit: ; preds = %41, %35 +_ZN4llvm13PMDataManager25populateInheritedAnalysisERNS_7PMStackE.exit: ; preds = %41, %33 %48 = getelementptr inbounds nuw i8, ptr %30, i64 8 %49 = load ptr, ptr %48, align 8, !tbaa !12 %50 = getelementptr inbounds nuw i8, ptr %49, i64 112 @@ -1383,21 +1381,21 @@ _ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit: ; %60 = load ptr, ptr %50, align 8, !tbaa !24 %61 = zext i32 %59 to i64 %62 = getelementptr inbounds nuw ptr, ptr %60, i64 %61 - %63 = ptrtoint ptr %37 to i64 + %63 = ptrtoint ptr %35 to i64 store i64 %63, ptr %62, align 1 %64 = load i32, ptr %51, align 8, !tbaa !25 %65 = add i32 %64, 1 store i32 %65, ptr %51, align 8, !tbaa !25 - %66 = load ptr, ptr %36, align 8, !tbaa !30 + %66 = load ptr, ptr %34, align 8, !tbaa !30 %67 = getelementptr inbounds nuw i8, ptr %66, i64 144 %68 = load ptr, ptr %67, align 8 - %69 = tail call noundef ptr %68(ptr noundef nonnull align 8 dereferenceable(513) %36) #21 + %69 = tail call noundef ptr %66(ptr noundef nonnull align 8 dereferenceable(513) %34) #21 tail call void @_ZN4llvm17PMTopLevelManager12schedulePassEPNS_4PassE(ptr noundef nonnull align 8 dereferenceable(680) %49, ptr noundef %69) #21 - tail call void @_ZN4llvm7PMStack4pushEPNS_13PMDataManagerE(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %37) #21 + tail call void @_ZN4llvm7PMStack4pushEPNS_13PMDataManagerE(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %35) #21 br label %70 70: ; preds = %_ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit, %31 - %.0 = phi ptr [ %34, %31 ], [ %36, %_ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit ] + %.0 = phi ptr [ %32, %31 ], [ %34, %_ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit ] %71 = getelementptr inbounds nuw i8, ptr %.0, i64 32 tail call void @_ZN4llvm13PMDataManager3addEPNS_4PassEb(ptr noundef nonnull align 8 dereferenceable(380) %71, ptr noundef nonnull %0, i1 noundef zeroext true) #21 ret void diff --git a/bench/llvm/optimized/LoopPredication.ll b/bench/llvm/optimized/LoopPredication.ll index 851a842e4b1..f1fa3ba4a29 100644 --- a/bench/llvm/optimized/LoopPredication.ll +++ b/bench/llvm/optimized/LoopPredication.ll @@ -4857,8 +4857,8 @@ _ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit: %49 = load ptr, ptr %45, align 8, !tbaa !146 %50 = getelementptr inbounds nuw i8, ptr %49, i64 48 %51 = load ptr, ptr %50, align 8, !tbaa !150 - %52 = icmp eq ptr %50, %51 - br i1 %52, label %.lr.ph.i36, label %65 + %52 = getelementptr inbounds i8, ptr %51, i64 -24 + br label %.lr.ph.i36 53: ; preds = %.lr.ph.i %54 = load ptr, ptr %45, align 8, !tbaa !146 @@ -4880,67 +4880,51 @@ _ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit: %64 = call noundef zeroext i1 @_ZNK4llvm12SCEVExpander16isSafeToExpandAtEPKNS_4SCEVEPKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(792) %1, ptr noundef nonnull %4, ptr noundef %.0.i.i.i) #17 br i1 %64, label %._crit_edge.i, label %.lr.ph.i36 -65: ; preds = %._crit_edge.i - %66 = getelementptr inbounds i8, ptr %51, i64 -24 - %67 = load i8, ptr %66, align 8, !tbaa !153 - %68 = add i8 %67, -30 - %69 = icmp ult i8 %68, 11 - %spec.select.i.i17.i = select i1 %69, ptr %66, ptr null - br label %.lr.ph.i36 - -.lr.ph.i36: ; preds = %63, %.lr.ph.i, %65, %._crit_edge.i - %.3.i = phi ptr [ null, %._crit_edge.i ], [ %spec.select.i.i17.i, %65 ], [ %2, %.lr.ph.i ], [ %2, %63 ] - %70 = getelementptr inbounds nuw i8, ptr %.3.i, i64 24 - %71 = call noundef ptr @_ZN4llvm12SCEVExpander13expandCodeForEPKNS_4SCEVEPNS_4TypeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(792) %1, ptr noundef nonnull %4, ptr noundef %11, ptr nonnull %70, i64 0) #17 - %72 = load ptr, ptr %12, align 8, !tbaa !133 - %73 = load ptr, ptr %14, align 8, !tbaa !136 - %74 = call noundef zeroext i1 @_ZN4llvm15ScalarEvolution15isLoopInvariantEPKNS_4SCEVEPKNS_4LoopE(ptr noundef nonnull align 8 dereferenceable(1344) %72, ptr noundef %5, ptr noundef %73) #17 - br i1 %74, label %79, label %.lr.ph.i45 +65: ; preds = %63, %.lr.ph.i, %._crit_edge.i + %.3.i = phi ptr [ %52, %._crit_edge.i ], [ %2, %.lr.ph.i ], [ %2, %63 ] + %65 = getelementptr inbounds nuw i8, ptr %.3.i, i64 24 + %66 = call noundef ptr @_ZN4llvm12SCEVExpander13expandCodeForEPKNS_4SCEVEPNS_4TypeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(792) %1, ptr noundef nonnull %4, ptr noundef %11, ptr nonnull %65, i64 0) #17 + %67 = load ptr, ptr %12, align 8, !tbaa !133 + %68 = load ptr, ptr %14, align 8, !tbaa !136 + %69 = call noundef zeroext i1 @_ZN4llvm15ScalarEvolution15isLoopInvariantEPKNS_4SCEVEPKNS_4LoopE(ptr noundef nonnull align 8 dereferenceable(1344) %67, ptr noundef %5, ptr noundef %68) #17 + br i1 %69, label %74, label %.lr.ph.i45 + +._crit_edge.i42:; preds = %84 + %70 = load ptr, ptr %45, align 8, !tbaa !146 + %71 = getelementptr inbounds nuw i8, ptr %70, i64 48 + %72 = load ptr, ptr %71, align 8, !tbaa !150 + %73 = getelementptr inbounds i8, ptr %72, i64 -24 + br label %.lr.ph.i45 -._crit_edge.i42: ; preds = %89 +._crit_edge.i42: ; preds = %65 %75 = load ptr, ptr %45, align 8, !tbaa !146 %76 = getelementptr inbounds nuw i8, ptr %75, i64 48 %77 = load ptr, ptr %76, align 8, !tbaa !150 %78 = icmp eq ptr %76, %77 - br i1 %78, label %.lr.ph.i45, label %91 - -79: ; preds = %.lr.ph.i36 - %80 = load ptr, ptr %45, align 8, !tbaa !146 - %81 = getelementptr inbounds nuw i8, ptr %80, i64 48 - %82 = load ptr, ptr %81, align 8, !tbaa !150 - %83 = icmp eq ptr %81, %82 - br i1 %83, label %89, label %84 - -84: ; preds = %79 - %85 = getelementptr inbounds i8, ptr %82, i64 -24 - %86 = load i8, ptr %85, align 8, !tbaa !153 - %87 = add i8 %86, -30 - %88 = icmp ult i8 %87, 11 - %spec.select.i.i.i39 = select i1 %88, ptr %85, ptr null - br label %89 - -89: ; preds = %84, %79 - %.0.i.i.i40 = phi ptr [ null, %79 ], [ %spec.select.i.i.i39, %84 ] - %90 = call noundef zeroext i1 @_ZNK4llvm12SCEVExpander16isSafeToExpandAtEPKNS_4SCEVEPKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(792) %1, ptr noundef %5, ptr noundef %.0.i.i.i40) #17 - br i1 %90, label %._crit_edge.i42, label %.lr.ph.i45 - -91: ; preds = %._crit_edge.i42 - %92 = getelementptr inbounds i8, ptr %77, i64 -24 - %93 = load i8, ptr %92, align 8, !tbaa !153 - %94 = add i8 %93, -30 - %95 = icmp ult i8 %94, 11 - %spec.select.i.i17.i43 = select i1 %95, ptr %92, ptr null - br label %.lr.ph.i45 - -.lr.ph.i45: ; preds = %89, %.lr.ph.i36, %91, %._crit_edge.i42 - %.3.i38 = phi ptr [ null, %._crit_edge.i42 ], [ %spec.select.i.i17.i43, %91 ], [ %2, %.lr.ph.i36 ], [ %2, %89 ] - %96 = getelementptr inbounds nuw i8, ptr %.3.i38, i64 24 - %97 = call noundef ptr @_ZN4llvm12SCEVExpander13expandCodeForEPKNS_4SCEVEPNS_4TypeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(792) %1, ptr noundef %5, ptr noundef %11, ptr nonnull %96, i64 0) #17 + br i1 %78, label %84, label %79 + +79: ; preds = %74 + %80 = getelementptr inbounds i8, ptr %77, i64 -24 + %81 = load i8, ptr %80, align 8, !tbaa !153 + %82 = add i8 %81, -30 + %83 = icmp ult i8 %82, 11 + %spec.select.i.i.i39 = select i1 %83, ptr %80, ptr null + br label %84 + +84: ; preds = %79, %._crit_edge.i42 + %.0.i.i.i40 = phi ptr [ null, %._crit_edge.i42 ], [ %spec.select.i.i.i39, %79 ] + %85 = call noundef zeroext i1 @_ZNK4llvm12SCEVExpander16isSafeToExpandAtEPKNS_4SCEVEPKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(792) %1, ptr noundef %5, ptr noundef %.0.i.i.i40) #17 + br i1 %85, label %._crit_edge.i42, label %.lr.ph.i45 + +.lr.ph.i45:; preds = %84, %65, %._crit_edge.i42 + %.3.i38 = phi ptr [ %73, %._crit_edge.i42 ], [ %2, %.lr.ph.i36 ], [ %2, %84 ] + %86 = getelementptr inbounds nuw i8, ptr %.3.i38, i64 24 + %87 = call noundef ptr @_ZN4llvm12SCEVExpander13expandCodeForEPKNS_4SCEVEPNS_4TypeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(792) %1, ptr noundef %5, ptr noundef %11, ptr nonnull %86, i64 0) #17 call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %8) #17 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #17 - store ptr %71, ptr %9, align 8, !tbaa !331 + store ptr %66, ptr %9, align 8, !tbaa !331 %98 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store ptr %97, ptr %98, align 8, !tbaa !331 + store ptr %87, ptr %98, align 8, !tbaa !331 br label %100 99: ; preds = %100 @@ -4978,7 +4962,7 @@ _ZN12_GLOBAL__N_115LoopPredication12findInsertPtEPN4llvm11InstructionENS1_8Array call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #17 %113 = getelementptr inbounds nuw i8, ptr %10, i64 32 store i16 257, ptr %113, align 8 - %114 = call noundef ptr @_ZN4llvm13IRBuilderBase10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(128) %8, i32 noundef %3, ptr noundef %71, ptr noundef %97, ptr noundef nonnull align 8 dereferenceable(34) %10) + %114 = call noundef ptr @_ZN4llvm13IRBuilderBase10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(128) %8, i32 noundef %3, ptr noundef %66, ptr noundef %87, ptr noundef nonnull align 8 dereferenceable(34) %10) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #17 %115 = getelementptr inbounds nuw i8, ptr %8, i64 136 call void @_ZN4llvm24IRBuilderDefaultInserterD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #17 diff --git a/bench/llvm/optimized/LoopVectorizationLegality.ll b/bench/llvm/optimized/LoopVectorizationLegality.ll index e045dcd13ef..b99e2860be5 100644 --- a/bench/llvm/optimized/LoopVectorizationLegality.ll +++ b/bench/llvm/optimized/LoopVectorizationLegality.ll @@ -1517,9 +1517,8 @@ _ZNK4llvm6MDNode10getOperandEj.exit: ; preds = %.thread, %42 %47 = load ptr, ptr %.sroa.0.0.i.i38, align 8, !tbaa !99 %48 = load i8, ptr %47, align 4, !tbaa !102 %49 = icmp eq i8 %48, 0 - %spec.select.i.i.i39 = select i1 %49, ptr %47, ptr null - %50 = getelementptr inbounds i8, ptr %28, i64 -24 - %51 = getelementptr inbounds i8, ptr %28, i64 -32 + %49 = getelementptr inbounds i8, ptr %28, i64 -24 + %50 = getelementptr inbounds i8, ptr %28, i64 -32 br label %52 52: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPNS_8MetadataELb1EE9push_backES2_.exit, %_ZNK4llvm6MDNode10getOperandEj.exit @@ -1537,13 +1536,13 @@ _ZNK4llvm6MDNode14getNumOperandsEv.exit42: ; preds = %52 br i1 %58, label %63, label %.loopexit _ZNK4llvm6MDNode14getNumOperandsEv.exit42.thread: ; preds = %52 - %59 = load i32, ptr %50, align 8, !tbaa !26 + %59 = load i32, ptr %49, align 8, !tbaa !26 %60 = zext i32 %59 to i64 %61 = icmp samesign ult i64 %indvars.iv, %60 br i1 %61, label %.thread51, label %.loopexit .thread51: ; preds = %_ZNK4llvm6MDNode14getNumOperandsEv.exit42.thread - %62 = load ptr, ptr %51, align 8, !tbaa !25 + %62 = load ptr, ptr %50, align 8, !tbaa !25 br label %_ZNK4llvm6MDNode10getOperandEj.exit45 63: ; preds = %_ZNK4llvm6MDNode14getNumOperandsEv.exit42 @@ -1587,25 +1586,24 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_8MetadataELb1EE9push_backES2_.exit: ; pred br i1 %82, label %.loopexit.thread66, label %.thread52 .loopexit: ; preds = %_ZNK4llvm6MDNode14getNumOperandsEv.exit42.thread, %_ZNK4llvm6MDNode14getNumOperandsEv.exit42 - %.not33 = icmp eq ptr %spec.select.i.i.i39, null - br i1 %.not33, label %.thread52, label %.loopexit.thread66 - -.loopexit.thread66: ; preds = %81, %.loopexit - %.02669 = phi ptr [ %spec.select.i.i.i39, %.loopexit ], [ %28, %81 ] - %83 = call { ptr, i64 } @_ZNK4llvm8MDString9getStringEv(ptr noundef nonnull align 8 dereferenceable(16) %.02669) #20 - %84 = load i32, ptr %25, align 8, !tbaa !26 - %85 = icmp eq i32 %84, 1 - br i1 %85, label %86, label %.thread52 - -86: ; preds = %.loopexit.thread66 - %87 = extractvalue { ptr, i64 } %83, 1 - %88 = extractvalue { ptr, i64 } %83, 0 - %89 = load ptr, ptr %2, align 8, !tbaa !25 - %90 = load ptr, ptr %89, align 8, !tbaa !106 - call void @_ZN4llvm18LoopVectorizeHints7setHintENS_9StringRefEPNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr %88, i64 %87, ptr noundef %90) + br i1 %49, label %.loopexit.thread66, label %.thread52 + +.loopexit.thread66: ; preds = %80, %.loopexit + %.02669 = phi ptr [ %47, %.loopexit ], [ %28, %80 ] + %82 = call { ptr, i64 } @_ZNK4llvm8MDString9getStringEv(ptr noundef nonnull align 8 dereferenceable(16) %.02669) #20 + %83 = load i32, ptr %25, align 8, !tbaa !26 + %84 = icmp eq i32 %83, 1 + br i1 %84, label %85, label %.thread52 + +85: ; preds = %.loopexit.thread66 + %86 = extractvalue { ptr, i64 } %82, 1 + %87 = extractvalue { ptr, i64 } %82, 0 + %88 = load ptr, ptr %2, align 8, !tbaa !25 + %89 = load ptr, ptr %88, align 8, !tbaa !106 + call void @_ZN4llvm18LoopVectorizeHints7setHintENS_9StringRefEPNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr %87, i64 %86, ptr noundef %89) br label %.thread52 -.thread52: ; preds = %81, %_ZNK4llvm6MDNode14getNumOperandsEv.exit.thread, %_ZNK4llvm6MDNode14getNumOperandsEv.exit, %.loopexit.thread66, %86, %.loopexit +.thread52: ; preds = %81, %_ZNK4llvm6MDNode14getNumOperandsEv.exit.thread, %_ZNK4llvm6MDNode14getNumOperandsEv.exit, %.loopexit.thread66, %85, %.loopexit %91 = load ptr, ptr %2, align 8, !tbaa !25 %92 = icmp eq ptr %91, %24 br i1 %92, label %_ZN4llvm11SmallVectorIPNS_8MetadataELj4EED2Ev.exit, label %93 diff --git a/bench/llvm/optimized/MachineScheduler.ll b/bench/llvm/optimized/MachineScheduler.ll index 2b597b636ea..c8ed6a52b5b 100644 --- a/bench/llvm/optimized/MachineScheduler.ll +++ b/bench/llvm/optimized/MachineScheduler.ll @@ -8514,43 +8514,25 @@ _ZNK4llvm13LiveIntervals19getInstructionIndexERKNS_12MachineInstrE.exit: ; preds tail call void @llvm.assume(i1 %.not.i78) %257 = getelementptr inbounds nuw i8, ptr %240, i64 16 %258 = load ptr, ptr %257, align 8, !tbaa !512, !noalias !563 - %259 = getelementptr inbounds nuw i8, ptr %240, i64 8 - %260 = load i64, ptr %259, align 8, !tbaa !284, !noalias !563 - %261 = xor i64 %260, %.sroa.010.0.copyload.i.i - %262 = icmp ult i64 %261, 8 - %263 = getelementptr inbounds nuw i8, ptr %240, i64 24 - %264 = icmp eq ptr %263, %244 - %or.cond = select i1 %262, i1 %264, i1 false - br i1 %or.cond, label %_ZNK4llvm9LiveRange5QueryENS_9SlotIndexE.exit, label %._crit_edge.i - -._crit_edge.i: ; preds = %_ZNK4llvm13LiveIntervals19getInstructionIndexERKNS_12MachineInstrE.exit - %265 = getelementptr inbounds nuw i8, ptr %258, i64 8 - %.0.copyload.i.i.i.i.i = load i64, ptr %265, align 8, !noalias !563 - %266 = icmp eq i64 %.0.copyload.i.i.i.i.i, %239 - %spec.select.i = select i1 %266, ptr null, ptr %258 - br label %_ZNK4llvm9LiveRange5QueryENS_9SlotIndexE.exit - -_ZNK4llvm9LiveRange5QueryENS_9SlotIndexE.exit: ; preds = %_ZNK4llvm13LiveIntervals19getInstructionIndexERKNS_12MachineInstrE.exit, %._crit_edge.i - %.sroa.0.4 = phi ptr [ %spec.select.i, %._crit_edge.i ], [ %258, %_ZNK4llvm13LiveIntervals19getInstructionIndexERKNS_12MachineInstrE.exit ] - %267 = getelementptr inbounds nuw i8, ptr %.sroa.0.4, i64 8 - %.0.copyload.i.i.i.i.i.i = load i64, ptr %267, align 8 - %268 = and i64 %.0.copyload.i.i.i.i.i.i, 6 - %269 = icmp eq i64 %268, 0 - br i1 %269, label %270, label %295 - -270: ; preds = %_ZNK4llvm9LiveRange5QueryENS_9SlotIndexE.exit - %271 = getelementptr inbounds nuw i8, ptr %183, i64 254 - %272 = load i8, ptr %271, align 2 - %273 = trunc i8 %272 to i1 - br i1 %273, label %_ZNK4llvm5SUnit8getDepthEv.exit81, label %274 - -274: ; preds = %270 + %259 = getelementptr inbounds nuw i8, ptr %258, i64 8 + %260 = load i64, ptr %259, align 8 + %260 = and i64 %.0.copyload.i.i.i.i.i.i, 6 + %262 = icmp eq i64 %260, 0 + br i1 %261, label %262, label %287 + +262:; preds = %_ZNK4llvm13LiveIntervals19getInstructionIndexERKNS_12MachineInstrE.exit + %263 = getelementptr inbounds nuw i8, ptr %183, i64 254 + %264 = load i8, ptr %263, align 2 + %265 = trunc i8 %264 to i1 + br i1 %265, label %_ZNK4llvm5SUnit8getDepthEv.exit81, label %266 + +266:; preds = %262 tail call void @_ZN4llvm5SUnit12ComputeDepthEv(ptr noundef nonnull align 8 dereferenceable(255) %183) #31 - %.pre127.pre = load i8, ptr %271, align 2 + %.pre127.pre = load i8, ptr %263, align 2 br label %_ZNK4llvm5SUnit8getDepthEv.exit81 -_ZNK4llvm5SUnit8getDepthEv.exit81: ; preds = %270, %274 - %.pre127 = phi i8 [ %272, %270 ], [ %.pre127.pre, %274 ] +_ZNK4llvm5SUnit8getDepthEv.exit81: ; preds = %262, %266 + %.pre127 = phi i8 [ %264, %262 ], [ %.pre127.pre, %266 ] %275 = getelementptr inbounds nuw i8, ptr %183, i64 240 %276 = load i32, ptr %275, align 8, !tbaa !561 %277 = icmp ugt i32 %153, %276 @@ -8563,7 +8545,7 @@ _ZNK4llvm5SUnit8getDepthEv.exit81: ; preds = %270, %274 280: ; preds = %278 tail call void @_ZN4llvm5SUnit12ComputeDepthEv(ptr noundef nonnull align 8 dereferenceable(255) %183) #31 %.pre125 = load i32, ptr %275, align 8, !tbaa !561 - %.pre126.pre = load i8, ptr %271, align 2 + %.pre126.pre = load i8, ptr %263, align 2 br label %_ZNK4llvm5SUnit8getDepthEv.exit82 _ZNK4llvm5SUnit8getDepthEv.exit82: ; preds = %278, %280 @@ -8596,8 +8578,8 @@ _ZNK4llvm5SUnit9getHeightEv.exit84: ; preds = %283, %286 %spec.select67 = select i1 %292, i32 %294, i32 %.4111 br label %295 -295: ; preds = %_ZNK4llvm5SUnit9getHeightEv.exit84, %_ZNK4llvm9LiveRange5QueryENS_9SlotIndexE.exit, %.lr.ph - %.5 = phi i32 [ %.4111, %.lr.ph ], [ %spec.select67, %_ZNK4llvm5SUnit9getHeightEv.exit84 ], [ %.4111, %_ZNK4llvm9LiveRange5QueryENS_9SlotIndexE.exit ] +295: ; preds = %_ZNK4llvm5SUnit9getHeightEv.exit84, %_ZNK4llvm13LiveIntervals19getInstructionIndexERKNS_12MachineInstrE.exit, %.lr.ph + %.5 = phi i32 [ %.4111, %.lr.ph ], [ %spec.select67, %_ZNK4llvm5SUnit9getHeightEv.exit84 ], [ %.4111, %_ZNK4llvm13LiveIntervals19getInstructionIndexERKNS_12MachineInstrE.exit ] %296 = load ptr, ptr %17, align 8, !tbaa !25 %297 = getelementptr inbounds nuw %"struct.llvm::SparseMultiSet::SMSNode", ptr %296, i64 %181, i32 2 %298 = load i32, ptr %297, align 4, !tbaa !390 diff --git a/bench/llvm/optimized/RegionPass.ll b/bench/llvm/optimized/RegionPass.ll index f1e53c93472..efc236a6855 100644 --- a/bench/llvm/optimized/RegionPass.ll +++ b/bench/llvm/optimized/RegionPass.ll @@ -860,30 +860,28 @@ define dso_local void @_ZN4llvm10RegionPass17assignPassManagerERNS_7PMStackENS_1 %28 = load ptr, ptr %4, align 8, !tbaa !69 %29 = getelementptr inbounds i8, ptr %28, i64 -8 %30 = load ptr, ptr %29, align 8, !tbaa !81 - br i1 %27, label %31, label %35 + br i1 %27, label %31, label %33 31: ; preds = %.critedge - %32 = icmp eq ptr %30, null - %33 = getelementptr inbounds i8, ptr %30, i64 -32 - %34 = select i1 %32, ptr null, ptr %33 - br label %66 - -35: ; preds = %.critedge - %36 = tail call noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #20 - tail call void @_ZN4llvm13RGPassManagerC1Ev(ptr noundef nonnull align 8 dereferenceable(512) %36) #21 - %37 = getelementptr inbounds nuw i8, ptr %36, i64 32 - %38 = load ptr, ptr %4, align 8, !tbaa !69, !noalias !135 - %39 = load ptr, ptr %1, align 8, !tbaa !69, !noalias !140 - %.not6.i = icmp eq ptr %38, %39 + %32 = getelementptr inbounds i8, ptr %30, i64 -32 + br label %64 + +33:; preds = %.critedge + %34 = tail call noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #20 + tail call void @_ZN4llvm13RGPassManagerC1Ev(ptr noundef nonnull align 8 dereferenceable(512) %34) #21 + %35 = getelementptr inbounds nuw i8, ptr %34, i64 32 + %36 = load ptr, ptr %4, align 8, !tbaa !69, !noalias !135 + %37 = load ptr, ptr %1, align 8, !tbaa !69, !noalias !140 + %.not6.i = icmp eq ptr %36, %37 br i1 %.not6.i, label %_ZN4llvm13PMDataManager25populateInheritedAnalysisERNS_7PMStackE.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %35 - %40 = getelementptr inbounds nuw i8, ptr %36, i64 192 +.lr.ph.i: ; preds = %33 + %40 = getelementptr inbounds nuw i8, ptr %34, i64 192 br label %41 41: ; preds = %41, %.lr.ph.i %.08.i = phi i32 [ 0, %.lr.ph.i ], [ %45, %41 ] - %.sroa.05.07.i = phi ptr [ %38, %.lr.ph.i ], [ %42, %41 ] + %.sroa.05.07.i = phi ptr [ %36, %.lr.ph.i ], [ %42, %41 ] %42 = getelementptr inbounds i8, ptr %.sroa.05.07.i, i64 -8 %43 = load ptr, ptr %42, align 8, !tbaa !81 %44 = getelementptr inbounds nuw i8, ptr %43, i64 208 @@ -891,10 +889,10 @@ define dso_local void @_ZN4llvm10RegionPass17assignPassManagerERNS_7PMStackENS_1 %46 = zext i32 %.08.i to i64 %47 = getelementptr inbounds nuw [6 x ptr], ptr %40, i64 0, i64 %46 store ptr %44, ptr %47, align 8, !tbaa !28 - %.not.i = icmp eq ptr %42, %39 + %.not.i = icmp eq ptr %42, %37 br i1 %.not.i, label %_ZN4llvm13PMDataManager25populateInheritedAnalysisERNS_7PMStackE.exit, label %41 -_ZN4llvm13PMDataManager25populateInheritedAnalysisERNS_7PMStackE.exit: ; preds = %41, %35 +_ZN4llvm13PMDataManager25populateInheritedAnalysisERNS_7PMStackE.exit: ; preds = %41, %33 %48 = getelementptr inbounds nuw i8, ptr %30, i64 8 %49 = load ptr, ptr %48, align 8, !tbaa !12 %50 = getelementptr inbounds nuw i8, ptr %49, i64 112 @@ -918,17 +916,17 @@ _ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit: ; %60 = load ptr, ptr %50, align 8, !tbaa !24 %61 = zext i32 %59 to i64 %62 = getelementptr inbounds nuw ptr, ptr %60, i64 %61 - %63 = ptrtoint ptr %37 to i64 + %63 = ptrtoint ptr %35 to i64 store i64 %63, ptr %62, align 1 %64 = load i32, ptr %51, align 8, !tbaa !25 %65 = add i32 %64, 1 store i32 %65, ptr %51, align 8, !tbaa !25 - tail call void @_ZN4llvm17PMTopLevelManager12schedulePassEPNS_4PassE(ptr noundef nonnull align 8 dereferenceable(680) %49, ptr noundef nonnull %36) #21 - tail call void @_ZN4llvm7PMStack4pushEPNS_13PMDataManagerE(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %37) #21 + tail call void @_ZN4llvm17PMTopLevelManager12schedulePassEPNS_4PassE(ptr noundef nonnull align 8 dereferenceable(680) %49, ptr noundef nonnull %34) #21 + tail call void @_ZN4llvm7PMStack4pushEPNS_13PMDataManagerE(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %35) #21 br label %66 66: ; preds = %_ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit, %31 - %.0 = phi ptr [ %34, %31 ], [ %36, %_ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit ] + %.0 = phi ptr [ %32, %31 ], [ %34, %_ZN4llvm17PMTopLevelManager22addIndirectPassManagerEPNS_13PMDataManagerE.exit ] %67 = getelementptr inbounds nuw i8, ptr %.0, i64 32 tail call void @_ZN4llvm13PMDataManager3addEPNS_4PassEb(ptr noundef nonnull align 8 dereferenceable(380) %67, ptr noundef nonnull %0, i1 noundef zeroext true) #21 ret void diff --git a/bench/llvm/optimized/SelectOptimize.ll b/bench/llvm/optimized/SelectOptimize.ll index b32dd9b359d..4525c643d79 100644 --- a/bench/llvm/optimized/SelectOptimize.ll +++ b/bench/llvm/optimized/SelectOptimize.ll @@ -15442,7 +15442,7 @@ declare void @_ZN4llvm5Value8takeNameEPS0_(ptr noundef nonnull align 8 dereferen declare void @_ZN4llvm5Value18replaceAllUsesWithEPS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #8 ; Function Attrs: mustprogress nounwind uwtable -define internal fastcc noundef ptr @_ZL19getTrueOrFalseValueRN12_GLOBAL__N_118SelectOptimizeImpl10SelectLikeEbRN4llvm13SmallDenseMapIPNS3_11InstructionESt4pairIPNS3_5ValueES9_ELj2ENS3_12DenseMapInfoIS6_vEENS3_6detail12DenseMapPairIS6_SA_EEEEPNS3_10BasicBlockE(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %0, i1 noundef zeroext %1, ptr noundef nonnull readonly align 8 dereferenceable(56) %2, ptr noundef readonly %3) unnamed_addr #1 { +define internal fastcc noundef ptr @_ZL19getTrueOrFalseValueRN12_GLOBAL__N_118SelectOptimizeImpl10SelectLikeEbRN4llvm13SmallDenseMapIPNS3_11InstructionESt4pairIPNS3_5ValueES9_ELj2ENS3_12DenseMapInfoIS6_vEENS3_6detail12DenseMapPairIS6_SA_EEEEPNS3_10BasicBlockE(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %0, i1 noundef zeroext %1, ptr noundef nonnull readonly align 8 dereferenceable(56) %2, ptr noundef readonly captures(none) %3) unnamed_addr #1 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = load i8, ptr %5, align 8, !tbaa !260, !range !54, !noundef !55 %7 = trunc nuw i8 %6 to i1 @@ -15903,25 +15903,11 @@ _ZN4llvm5Value6addUseERNS_3UseE.exit.i.i.i88: ; preds = %240, %236 _ZN4llvm4User10setOperandEjPNS_5ValueE.exit89: ; preds = %_ZN4llvm12DenseMapBaseINS_13SmallDenseMapIPNS_11InstructionESt4pairIPNS_5ValueES6_ELj2ENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S7_EEEES3_S7_S9_SC_E4findEPKS2_.exit77, %_ZN4llvm3Use14removeFromListEv.exit.i.i.i85, %_ZN4llvm5Value6addUseERNS_3UseE.exit.i.i.i88, %_ZNK4llvm4User10getOperandEj.exit62 %243 = getelementptr inbounds nuw i8, ptr %3, i64 48 %244 = load ptr, ptr %243, align 8, !tbaa !341 - %245 = icmp eq ptr %243, %244 - br i1 %245, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit, label %246 - -246: ; preds = %_ZN4llvm4User10setOperandEjPNS_5ValueE.exit89 - %247 = getelementptr inbounds i8, ptr %244, i64 -24 - %248 = load i8, ptr %247, align 8, !tbaa !184 - %249 = add i8 %248, -30 - %250 = icmp ult i8 %249, 11 - %spec.select.i.i90 = select i1 %250, ptr %247, ptr null - br label %_ZN4llvm10BasicBlock13getTerminatorEv.exit - -_ZN4llvm10BasicBlock13getTerminatorEv.exit: ; preds = %_ZN4llvm4User10setOperandEjPNS_5ValueE.exit89, %246 - %.0.i.i = phi ptr [ null, %_ZN4llvm4User10setOperandEjPNS_5ValueE.exit89 ], [ %spec.select.i.i90, %246 ] - %251 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 24 - tail call void @_ZN4llvm11Instruction12insertBeforeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %85, ptr nonnull %251, i64 0) #21 + tail call void @_ZN4llvm11Instruction12insertBeforeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %85, ptr nonnull %244, i64 0) #21 br label %.thread -.thread: ; preds = %_ZN4llvm12DenseMapBaseINS_13SmallDenseMapIPNS_11InstructionESt4pairIPNS_5ValueES6_ELj2ENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S7_EEEES3_S7_S9_SC_E4findEPKS2_.exit, %44, %81, %_ZN4llvm10BasicBlock13getTerminatorEv.exit - %.3 = phi ptr [ %85, %_ZN4llvm10BasicBlock13getTerminatorEv.exit ], [ %82, %81 ], [ %43, %44 ], [ %43, %_ZN4llvm12DenseMapBaseINS_13SmallDenseMapIPNS_11InstructionESt4pairIPNS_5ValueES6_ELj2ENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S7_EEEES3_S7_S9_SC_E4findEPKS2_.exit ] +.thread: ; preds = %_ZN4llvm12DenseMapBaseINS_13SmallDenseMapIPNS_11InstructionESt4pairIPNS_5ValueES6_ELj2ENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S7_EEEES3_S7_S9_SC_E4findEPKS2_.exit, %44, %81, %_ZN4llvm4User10setOperandEjPNS_5ValueE.exit89 + %.3 = phi ptr [ %85, %_ZN4llvm4User10setOperandEjPNS_5ValueE.exit89 ], [ %82, %81 ], [ %43, %44 ], [ %43, %_ZN4llvm12DenseMapBaseINS_13SmallDenseMapIPNS_11InstructionESt4pairIPNS_5ValueES6_ELj2ENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S7_EEEES3_S7_S9_SC_E4findEPKS2_.exit ] ret ptr %.3 } diff --git a/bench/llvm/optimized/SemaLookup.ll b/bench/llvm/optimized/SemaLookup.ll index ef5879747c8..7bdfcc49aa4 100644 --- a/bench/llvm/optimized/SemaLookup.ll +++ b/bench/llvm/optimized/SemaLookup.ll @@ -15573,14 +15573,12 @@ _ZN4llvm15SmallPtrSetImplIPN5clang11DeclContextEE6insertES3_.exit.i29: ; preds = 71: ; preds = %_ZN4llvm15SmallPtrSetImplIPN5clang11DeclContextEE6insertES3_.exit.i29.thread, %_ZN4llvm15SmallPtrSetImplIPN5clang11DeclContextEE6insertES3_.exit.i29 %72 = tail call noundef ptr @_ZN5clang18UsingDirectiveDecl21getNominatedNamespaceEv(ptr noundef nonnull align 8 dereferenceable(88) %47) #27 - %73 = icmp eq ptr %72, null - %74 = getelementptr inbounds nuw i8, ptr %72, i64 48 - %spec.select.i7.i = select i1 %73, ptr null, ptr %74 - %75 = tail call noundef zeroext i1 @_ZNK5clang11DeclContext8EnclosesEPKS0_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef %4) #27 - br i1 %75, label %._crit_edge.i.i, label %.lr.ph.i.i + %73 = getelementptr inbounds nuw i8, ptr %72, i64 48 + %74 = tail call noundef zeroext i1 @_ZNK5clang11DeclContext8EnclosesEPKS0_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef %4) #27 + br i1 %74, label %._crit_edge.i.i, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %71, %_ZN5clang11DeclContext9getParentEv.exit.i.i - %.09.i.i = phi ptr [ %.0.i.i.i.i, %_ZN5clang11DeclContext9getParentEv.exit.i.i ], [ %spec.select.i7.i, %71 ] + %.09.i.i = phi ptr [ %.0.i.i.i.i, %_ZN5clang11DeclContext9getParentEv.exit.i.i ], [ %73, %71 ] %76 = tail call noundef ptr @_ZN5clang4Decl19castFromDeclContextEPKNS_11DeclContextE(ptr noundef nonnull align 8 dereferenceable(32) %.09.i.i) #27 %77 = getelementptr inbounds nuw i8, ptr %76, i64 16 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i = load i64, ptr %77, align 8 @@ -15600,7 +15598,7 @@ _ZN5clang11DeclContext9getParentEv.exit.i.i: ; preds = %82, %.lr.ph.i.i br i1 %84, label %._crit_edge.i.i, label %.lr.ph.i.i, !llvm.loop !1531 ._crit_edge.i.i: ; preds = %_ZN5clang11DeclContext9getParentEv.exit.i.i, %71 - %.0.lcssa.i.i = phi ptr [ %spec.select.i7.i, %71 ], [ %.0.i.i.i.i, %_ZN5clang11DeclContext9getParentEv.exit.i.i ] + %.0.lcssa.i.i = phi ptr [ %73, %71 ], [ %.0.i.i.i.i, %_ZN5clang11DeclContext9getParentEv.exit.i.i ] %85 = tail call noundef ptr @_ZN5clang11DeclContext17getPrimaryContextEv(ptr noundef nonnull align 8 dereferenceable(32) %.0.lcssa.i.i) #27 %86 = tail call noundef ptr @_ZN5clang18UsingDirectiveDecl21getNominatedNamespaceEv(ptr noundef nonnull align 8 dereferenceable(88) %47) #27 %87 = load i32, ptr %10, align 8, !tbaa !1050 @@ -51203,14 +51201,12 @@ _ZN4llvm19SmallPtrSetImplBase10insert_impEPKv.exit.i: ; preds = %._crit_edge.i.i 47: ; preds = %.critedge21, %_ZN4llvm19SmallPtrSetImplBase10insert_impEPKv.exit.i %48 = call noundef ptr @_ZN5clang18UsingDirectiveDecl21getNominatedNamespaceEv(ptr noundef nonnull align 8 dereferenceable(88) %23) #27 - %49 = icmp eq ptr %48, null - %50 = getelementptr inbounds nuw i8, ptr %48, i64 48 - %spec.select.i11 = select i1 %49, ptr null, ptr %50 - %51 = call noundef zeroext i1 @_ZNK5clang11DeclContext8EnclosesEPKS0_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef %2) #27 - br i1 %51, label %._crit_edge.i, label %.lr.ph.i + %49 = getelementptr inbounds nuw i8, ptr %48, i64 48 + %50 = call noundef zeroext i1 @_ZNK5clang11DeclContext8EnclosesEPKS0_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef %2) #27 + br i1 %50, label %._crit_edge.i, label %.lr.ph.i .lr.ph.i: ; preds = %47, %_ZN5clang11DeclContext9getParentEv.exit.i - %.09.i = phi ptr [ %.0.i.i.i, %_ZN5clang11DeclContext9getParentEv.exit.i ], [ %spec.select.i11, %47 ] + %.09.i = phi ptr [ %.0.i.i.i, %_ZN5clang11DeclContext9getParentEv.exit.i ], [ %49, %47 ] %52 = call noundef ptr @_ZN5clang4Decl19castFromDeclContextEPKNS_11DeclContextE(ptr noundef nonnull align 8 dereferenceable(32) %.09.i) #27 %53 = getelementptr inbounds nuw i8, ptr %52, i64 16 %.0.copyload.i.i.i.i.i.i.i.i.i.i.i = load i64, ptr %53, align 8 @@ -51230,7 +51226,7 @@ _ZN5clang11DeclContext9getParentEv.exit.i: ; preds = %58, %.lr.ph.i br i1 %60, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !1531 ._crit_edge.i: ; preds = %_ZN5clang11DeclContext9getParentEv.exit.i, %47 - %.0.lcssa.i = phi ptr [ %spec.select.i11, %47 ], [ %.0.i.i.i, %_ZN5clang11DeclContext9getParentEv.exit.i ] + %.0.lcssa.i = phi ptr [ %49, %47 ], [ %.0.i.i.i, %_ZN5clang11DeclContext9getParentEv.exit.i ] %61 = call noundef ptr @_ZN5clang11DeclContext17getPrimaryContextEv(ptr noundef nonnull align 8 dereferenceable(32) %.0.lcssa.i) #27 %62 = call noundef ptr @_ZN5clang18UsingDirectiveDecl21getNominatedNamespaceEv(ptr noundef nonnull align 8 dereferenceable(88) %23) #27 %63 = load i32, ptr %14, align 8, !tbaa !1050 diff --git a/bench/llvm/optimized/SimplifyCFG.ll b/bench/llvm/optimized/SimplifyCFG.ll index 41f23acd0f0..834ef86a92e 100644 --- a/bench/llvm/optimized/SimplifyCFG.ll +++ b/bench/llvm/optimized/SimplifyCFG.ll @@ -4608,34 +4608,22 @@ _ZL53cloneInstructionsIntoPredecessorBlockAndUpdateSSAUsesPN4llvm10BasicBlockES1 283: ; preds = %_ZL53cloneInstructionsIntoPredecessorBlockAndUpdateSSAUsesPN4llvm10BasicBlockES1_RNS_8ValueMapIPKNS_5ValueENS_14WeakTrackingVHENS_14ValueMapConfigIS5_NS_3sys10SmartMutexILb0EEEEEEE.exit %284 = load ptr, ptr %159, align 8, !tbaa !110 - %285 = icmp eq ptr %159, %284 - br i1 %285, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit83, label %286 - -286: ; preds = %283 - %287 = getelementptr inbounds i8, ptr %284, i64 -24 - %288 = load i8, ptr %287, align 8, !tbaa !107 - %289 = add i8 %288, -30 - %290 = icmp ult i8 %289, 11 - %spec.select.i.i81 = select i1 %290, ptr %287, ptr null - br label %_ZN4llvm10BasicBlock13getTerminatorEv.exit83 - -_ZN4llvm10BasicBlock13getTerminatorEv.exit83: ; preds = %283, %286 - %.0.i.i82 = phi ptr [ null, %283 ], [ %spec.select.i.i81, %286 ] - %291 = load ptr, ptr %32, align 8, !tbaa !110 - %292 = icmp eq ptr %32, %291 - br i1 %292, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit86, label %293 - -293: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit83 - %294 = getelementptr inbounds i8, ptr %291, i64 -24 - %295 = load i8, ptr %294, align 8, !tbaa !107 - %296 = add i8 %295, -30 - %297 = icmp ult i8 %296, 11 - %spec.select.i.i84 = select i1 %297, ptr %294, ptr null + %284 = getelementptr inbounds i8, ptr %283, i64 -24 + %285 = load ptr, ptr %32, align 8, !tbaa !110 + %286 = icmp eq ptr %32, %285 + br i1 %286, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit86, label %287 + +287: ; preds = %283 + %288 = getelementptr inbounds i8, ptr %285, i64 -24 + %289 = load i8, ptr %288, align 8, !tbaa !107 + %290 = add i8 %289, -30 + %291 = icmp ult i8 %290, 11 + %spec.select.i.i84 = select i1 %291, ptr %288, ptr null br label %_ZN4llvm10BasicBlock13getTerminatorEv.exit86 -_ZN4llvm10BasicBlock13getTerminatorEv.exit86: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit83, %293 - %.0.i.i85 = phi ptr [ null, %_ZN4llvm10BasicBlock13getTerminatorEv.exit83 ], [ %spec.select.i.i84, %293 ] - %298 = call { ptr, ptr } @_ZN4llvm11Instruction18cloneDebugInfoFromEPKS0_St8optionalINS_14ilist_iteratorINS_12ilist_detail12node_optionsINS_9DbgRecordELb0ELb0EvLb0EvEELb0ELb0EEEEb(ptr noundef nonnull align 8 dereferenceable(72) %.0.i.i82, ptr noundef %.0.i.i85, ptr undef, i8 0, i1 noundef zeroext false) #27 +_ZN4llvm10BasicBlock13getTerminatorEv.exit86: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit83, %287 + %.0.i.i85 = phi ptr [ null, %_ZN4llvm10BasicBlock13getTerminatorEv.exit83 ], [ %spec.select.i.i84, %287 ] + %298 = call { ptr, ptr } @_ZN4llvm11Instruction18cloneDebugInfoFromEPKS0_St8optionalINS_14ilist_iteratorINS_12ilist_detail12node_optionsINS_9DbgRecordELb0ELb0EvLb0EvEELb0ELb0EEEEb(ptr noundef nonnull align 8 dereferenceable(72) %284, ptr noundef %.0.i.i85, ptr undef, i8 0, i1 noundef zeroext false) #27 %299 = load ptr, ptr %159, align 8, !tbaa !110 %300 = icmp ne ptr %159, %299 call void @llvm.assume(i1 %300) diff --git a/bench/llvm/optimized/SpeculativeExecution.ll b/bench/llvm/optimized/SpeculativeExecution.ll index 77909781594..c865a03429d 100644 --- a/bench/llvm/optimized/SpeculativeExecution.ll +++ b/bench/llvm/optimized/SpeculativeExecution.ll @@ -606,7 +606,7 @@ define dso_local noundef zeroext i1 @_ZN4llvm24SpeculativeExecutionPass7runImplE declare noundef zeroext i1 @_ZNK4llvm19TargetTransformInfo19hasBranchDivergenceEPKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #4 ; Function Attrs: mustprogress nounwind uwtable -define dso_local noundef zeroext i1 @_ZN4llvm24SpeculativeExecutionPass15runOnBasicBlockERNS_10BasicBlockE(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(80) %1) local_unnamed_addr #1 align 2 { +define dso_local noundef zeroext i1 @_ZN4llvm24SpeculativeExecutionPass15runOnBasicBlockERNS_10BasicBlockE(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %0, ptr noundef nonnull readonly align 8 dereferenceable(80) %1) local_unnamed_addr #1 align 2 { _ZN4llvm10BasicBlock13getTerminatorEv.exit: %2 = getelementptr inbounds nuw i8, ptr %1, i64 48 %3 = load ptr, ptr %2, align 8, !tbaa !84 @@ -733,7 +733,7 @@ _ZNK4llvm10BasicBlock4sizeEv.exit54.thread: ; preds = %_ZNK4llvm10BasicBlo } ; Function Attrs: mustprogress nounwind uwtable -define dso_local noundef zeroext i1 @_ZN4llvm24SpeculativeExecutionPass22considerHoistingFromToERNS_10BasicBlockES2_(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %0, ptr noundef nonnull readonly align 8 dereferenceable(80) %1, ptr noundef nonnull readonly align 8 dereferenceable(80) %2) local_unnamed_addr #1 align 2 { +define dso_local noundef zeroext i1 @_ZN4llvm24SpeculativeExecutionPass22considerHoistingFromToERNS_10BasicBlockES2_(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %0, ptr noundef nonnull readonly align 8 dereferenceable(80) %1, ptr noundef nonnull readonly align 8 captures(none) dereferenceable(80) %2) local_unnamed_addr #1 align 2 { %4 = alloca %"class.llvm::SmallVector.73", align 8 %5 = alloca %"class.llvm::SmallPtrSet.47", align 8 call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %5) #20 @@ -1182,25 +1182,11 @@ _ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit: ; preds = %155 _ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit.thread: ; preds = %166, %161, %_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit %171 = load ptr, ptr %154, align 8, !tbaa !84 - %172 = icmp eq ptr %154, %171 - br i1 %172, label %_ZN4llvm10BasicBlock13getTerminatorEv.exit, label %173 - -173: ; preds = %_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit.thread - %174 = getelementptr inbounds i8, ptr %171, i64 -24 - %175 = load i8, ptr %174, align 8, !tbaa !87 - %176 = add i8 %175, -30 - %177 = icmp ult i8 %176, 11 - %spec.select.i.i = select i1 %177, ptr %174, ptr null - br label %_ZN4llvm10BasicBlock13getTerminatorEv.exit - -_ZN4llvm10BasicBlock13getTerminatorEv.exit: ; preds = %_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit.thread, %173 - %.0.i.i = phi ptr [ null, %_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit.thread ], [ %spec.select.i.i, %173 ] - %178 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 24 - call void @_ZN4llvm11Instruction10moveBeforeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %158, ptr nonnull %178, i64 0) #20 + call void @_ZN4llvm11Instruction10moveBeforeENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS0_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(72) %158, ptr nonnull %171, i64 0) #20 call void @_ZN4llvm11Instruction12dropLocationEv(ptr noundef nonnull align 8 dereferenceable(72) %158) #20 br label %_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit.thread113 -_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit.thread113: ; preds = %.lr.ph.i.i62, %_ZN4llvm10BasicBlock13getTerminatorEv.exit, %_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit +_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit.thread113: ; preds = %.lr.ph.i.i62, %_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit.thread, %_ZNK4llvm15SmallPtrSetImplIPKNS_11InstructionEE5countES3_.exit %.not117 = icmp eq ptr %157, %12 br i1 %.not117, label %_ZN4llvm15SmallPtrSetImplIPKNS_11InstructionEE6insertES3_.exit, label %155, !llvm.loop !131 diff --git a/bench/llvm/optimized/X86FrameLowering.ll b/bench/llvm/optimized/X86FrameLowering.ll index 7a8e35fd796..5b0114bf5c0 100644 --- a/bench/llvm/optimized/X86FrameLowering.ll +++ b/bench/llvm/optimized/X86FrameLowering.ll @@ -25201,7 +25201,7 @@ _ZNK4llvm6MDNode14getNumOperandsEv.exit.thread: ; preds = %.lr.ph br label %_ZNK4llvm6MDNode10getOperandEj.exit33 _ZNK4llvm6MDNode10getOperandEj.exit33: ; preds = %.thread, %18 - %.sink.in = phi ptr [ %17, %.thread ], [ %22, %18 ] + %.sink.in = phi ptr [ %22, %18 ], [ %17, %.thread ] %.sink = load ptr, ptr %.sink.in, align 8, !tbaa !1974 %23 = load i8, ptr %.sink, align 4, !tbaa !1976 %24 = icmp eq i8 %23, 0 diff --git a/bench/luau/optimized/AstQuery.ll b/bench/luau/optimized/AstQuery.ll index 8150ad72f88..2af6b71190f 100644 --- a/bench/luau/optimized/AstQuery.ll +++ b/bench/luau/optimized/AstQuery.ll @@ -2925,15 +2925,10 @@ _ZNK4Luau8LocationeqERKS0_.exit.thread.i: ; preds = %_ZNK4Luau8Locatione 139: ; preds = %.loopexit.i %140 = getelementptr inbounds i8, ptr %138, i64 -8 %141 = load ptr, ptr %140, align 8, !tbaa !26 - %142 = getelementptr inbounds nuw i8, ptr %141, i64 8 - %143 = load i32, ptr %142, align 8, !tbaa !114 - %144 = load i32, ptr @_ZN4Luau7AstRttiINS_12AstStatLocalEE5valueE, align 4, !tbaa !4 - %145 = icmp eq i32 %143, %144 - %..i.i = select i1 %145, ptr %141, ptr null br label %146 146: ; preds = %139, %.loopexit.i - %.sroa.08.0.i = phi ptr [ %..i.i, %139 ], [ undef, %.loopexit.i ] + %.sroa.08.0.i = phi ptr [ %141, %139 ], [ undef, %.loopexit.i ] %.not.i.i.i.i = icmp eq ptr %62, null br i1 %.not.i.i.i.i, label %151, label %147 @@ -3026,11 +3021,11 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i %181 = load ptr, ptr %173, align 8, !tbaa !8 %182 = getelementptr inbounds nuw i8, ptr %181, i64 16 %183 = load ptr, ptr %182, align 8 - call void %183(ptr noundef nonnull align 8 dereferenceable(16) %173) #24 + call void %179(ptr noundef nonnull align 8 dereferenceable(16) %173) #24 %184 = load ptr, ptr %173, align 8, !tbaa !8 %185 = getelementptr inbounds nuw i8, ptr %184, i64 24 %186 = load ptr, ptr %185, align 8 - call void %186(ptr noundef nonnull align 8 dereferenceable(16) %173) #24 + call void %182(ptr noundef nonnull align 8 dereferenceable(16) %173) #24 br label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv.exit.i.i.i 187: ; preds = %174 @@ -3096,11 +3091,11 @@ _ZNSt10shared_ptrIN4Luau5ScopeEEaSERKS2_.exit: ; preds = %.critedge32, %_ZNSt %207 = load ptr, ptr %199, align 8, !tbaa !8 %208 = getelementptr inbounds nuw i8, ptr %207, i64 16 %209 = load ptr, ptr %208, align 8 - call void %209(ptr noundef nonnull align 8 dereferenceable(16) %199) #24 + call void %205(ptr noundef nonnull align 8 dereferenceable(16) %199) #24 %210 = load ptr, ptr %199, align 8, !tbaa !8 %211 = getelementptr inbounds nuw i8, ptr %210, i64 24 %212 = load ptr, ptr %211, align 8 - call void %212(ptr noundef nonnull align 8 dereferenceable(16) %199) #24 + call void %208(ptr noundef nonnull align 8 dereferenceable(16) %199) #24 br label %_ZNSt12__shared_ptrIN4Luau5ScopeELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit 213: ; preds = %200 diff --git a/bench/luau/optimized/ConstraintGenerator.ll b/bench/luau/optimized/ConstraintGenerator.ll index b3b6d115e1b..72ead797446 100644 --- a/bench/luau/optimized/ConstraintGenerator.ll +++ b/bench/luau/optimized/ConstraintGenerator.ll @@ -29181,18 +29181,7 @@ _ZNSt6vectorIN4Luau7NotNullINS0_10ConstraintEEESaIS3_EE9push_backEOS3_.exit21.i. to label %.noexc78 unwind label %.loopexit.split-lp .noexc78: ; preds = %"_ZN4Luau12_GLOBAL__N_117forEachConstraintIZNS_19ConstraintGenerator5visitERKSt10shared_ptrINS_5ScopeEEPNS_20AstStatLocalFunctionEE3$_0EEvRKNS0_10CheckpointESD_PKS2_T_.exit" - %.not.i.i77 = icmp eq ptr %391, null - br i1 %.not.i.i77, label %_ZN4Luau10getMutableINS_11BlockedTypeEEEPT_PKNS_4TypeE.exit, label %392 - -392: ; preds = %.noexc78 - %393 = load i32, ptr %391, align 8, !tbaa !277 - %394 = icmp eq i32 %393, 6 - %395 = getelementptr inbounds nuw i8, ptr %391, i64 8 - %396 = select i1 %394, ptr %395, ptr null - br label %_ZN4Luau10getMutableINS_11BlockedTypeEEEPT_PKNS_4TypeE.exit - -_ZN4Luau10getMutableINS_11BlockedTypeEEEPT_PKNS_4TypeE.exit: ; preds = %392, %.noexc78 - %397 = phi ptr [ %396, %392 ], [ null, %.noexc78 ] + %392 = getelementptr inbounds nuw i8, ptr %391, i64 8 store i64 %305, ptr %19, align 8, !tbaa !256 store ptr null, ptr %18, align 8, !tbaa !256 %398 = load ptr, ptr %217, align 8, !tbaa !226 @@ -29201,14 +29190,14 @@ _ZN4Luau10getMutableINS_11BlockedTypeEEEPT_PKNS_4TypeE.exit: ; preds = %392, %.n %.not.i.i79 = icmp eq ptr %398, %400 br i1 %.not.i.i79, label %403, label %401 -401: ; preds = %_ZN4Luau10getMutableINS_11BlockedTypeEEEPT_PKNS_4TypeE.exit +401: ; preds = %.noexc78 store i64 %305, ptr %398, align 8, !tbaa !256 store ptr null, ptr %19, align 8, !tbaa !256 %402 = getelementptr inbounds nuw i8, ptr %398, i64 8 store ptr %402, ptr %217, align 8, !tbaa !226 br label %424 -403: ; preds = %_ZN4Luau10getMutableINS_11BlockedTypeEEEPT_PKNS_4TypeE.exit +403: ; preds = %.noexc78 %404 = load ptr, ptr %216, align 8, !tbaa !225 %405 = ptrtoint ptr %398 to i64 %406 = ptrtoint ptr %404 to i64 @@ -29276,7 +29265,7 @@ _ZNSt6vectorISt10unique_ptrIN4Luau10ConstraintESt14default_deleteIS2_EESaIS5_EE1 424: ; preds = %.noexc81, %401 %425 = phi ptr [ %.pre135, %.noexc81 ], [ %296, %401 ] - invoke void @_ZN4Luau11BlockedType8setOwnerEPKNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(16) %397, ptr noundef %425) + invoke void @_ZN4Luau11BlockedType8setOwnerEPKNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(16) %392, ptr noundef %425) to label %_ZNSt10unique_ptrIN4Luau10ConstraintESt14default_deleteIS1_EED2Ev.exit unwind label %440 _ZNSt10unique_ptrIN4Luau10ConstraintESt14default_deleteIS1_EED2Ev.exit: ; preds = %424 @@ -29404,11 +29393,11 @@ _ZN4Luau24GeneralizationConstraintD2Ev.exit89: ; preds = %_ZN4Luau7VariantIJN %465 = load ptr, ptr %457, align 8, !tbaa !144 %466 = getelementptr inbounds nuw i8, ptr %465, i64 16 %467 = load ptr, ptr %466, align 8 - call void %467(ptr noundef nonnull align 8 dereferenceable(16) %457) #28 + call void %462(ptr noundef nonnull align 8 dereferenceable(16) %457) #28 %468 = load ptr, ptr %457, align 8, !tbaa !144 %469 = getelementptr inbounds nuw i8, ptr %468, i64 24 %470 = load ptr, ptr %469, align 8 - call void %470(ptr noundef nonnull align 8 dereferenceable(16) %457) #28 + call void %465(ptr noundef nonnull align 8 dereferenceable(16) %457) #28 br label %_ZNSt12__shared_ptrIN4Luau5ScopeELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit.i 471: ; preds = %458 @@ -29454,11 +29443,11 @@ _ZNSt12__shared_ptrIN4Luau5ScopeELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit.i: ; pr %488 = load ptr, ptr %480, align 8, !tbaa !144 %489 = getelementptr inbounds nuw i8, ptr %488, i64 16 %490 = load ptr, ptr %489, align 8 - call void %490(ptr noundef nonnull align 8 dereferenceable(16) %480) #28 + call void %485(ptr noundef nonnull align 8 dereferenceable(16) %480) #28 %491 = load ptr, ptr %480, align 8, !tbaa !144 %492 = getelementptr inbounds nuw i8, ptr %491, i64 24 %493 = load ptr, ptr %492, align 8 - call void %493(ptr noundef nonnull align 8 dereferenceable(16) %480) #28 + call void %488(ptr noundef nonnull align 8 dereferenceable(16) %480) #28 br label %_ZN4Luau19ConstraintGenerator17FunctionSignatureD2Ev.exit 494: ; preds = %481 diff --git a/bench/luau/optimized/Generalization.ll b/bench/luau/optimized/Generalization.ll index 96c96bc6b71..7258b812938 100644 --- a/bench/luau/optimized/Generalization.ll +++ b/bench/luau/optimized/Generalization.ll @@ -7874,30 +7874,18 @@ _ZN4Luau19MutatingGeneralizer8getCountERKNS_12DenseHashMapIPKvmNS_16DenseHashPoi 90: ; preds = %_ZN4Luau19MutatingGeneralizer8getCountERKNS_12DenseHashMapIPKvmNS_16DenseHashPointerESt8equal_toIS3_EEES3_.exit10 %91 = tail call noundef ptr @_ZN4Luau9asMutableEPKNS_4TypeE(ptr noundef %1) - %.not.i.i11 = icmp eq ptr %91, null - br i1 %.not.i.i11, label %_ZN4Luau10getMutableINS_9TableTypeEEEPT_PKNS_4TypeE.exit, label %92 - -92: ; preds = %90 - %93 = load i32, ptr %91, align 8, !tbaa !86 - %94 = icmp eq i32 %93, 9 - %95 = getelementptr inbounds nuw i8, ptr %91, i64 8 - %96 = select i1 %94, ptr %95, ptr null - br label %_ZN4Luau10getMutableINS_9TableTypeEEEPT_PKNS_4TypeE.exit - -_ZN4Luau10getMutableINS_9TableTypeEEEPT_PKNS_4TypeE.exit: ; preds = %90, %92 - %97 = phi ptr [ %96, %92 ], [ null, %90 ] - %98 = getelementptr inbounds nuw i8, ptr %0, i64 225 - %99 = load i8, ptr %98, align 1, !tbaa !71, !range !20, !noundef !21 - %100 = trunc nuw i8 %99 to i1 - br i1 %100, label %_ZNK4Luau12DenseHashSetIPKNS_4TypeENS_16DenseHashPointerESt8equal_toIS3_EE8containsERKS3_.exit, label %101 - -101: ; preds = %_ZN4Luau10getMutableINS_9TableTypeEEEPT_PKNS_4TypeE.exit - %102 = getelementptr inbounds nuw i8, ptr %97, i64 72 - store i32 0, ptr %102, align 8, !tbaa !173 + %91 = getelementptr inbounds nuw i8, ptr %0, i64 225 + %92 = load i8, ptr %91, align 1, !tbaa !71, !range !20, !noundef !21 + %93 = trunc nuw i8 %92 to i1 + br i1 %93, label %_ZNK4Luau12DenseHashSetIPKNS_4TypeENS_16DenseHashPointerESt8equal_toIS3_EE8containsERKS3_.exit, label %94 + +94:; preds = %90 + %95 = getelementptr inbounds nuw i8, ptr %91, i64 80 + store i32 0, ptr %95, align 8, !tbaa !173 br label %_ZNK4Luau12DenseHashSetIPKNS_4TypeENS_16DenseHashPointerESt8equal_toIS3_EE8containsERKS3_.exit -_ZNK4Luau12DenseHashSetIPKNS_4TypeENS_16DenseHashPointerESt8equal_toIS3_EE8containsERKS3_.exit: ; preds = %22, %_ZN4Luau19MutatingGeneralizer8getCountERKNS_12DenseHashMapIPKvmNS_16DenseHashPointerESt8equal_toIS3_EEES3_.exit10, %101, %_ZN4Luau10getMutableINS_9TableTypeEEEPT_PKNS_4TypeE.exit - %.0 = phi i1 [ true, %_ZN4Luau19MutatingGeneralizer8getCountERKNS_12DenseHashMapIPKvmNS_16DenseHashPointerESt8equal_toIS3_EEES3_.exit10 ], [ true, %101 ], [ true, %_ZN4Luau10getMutableINS_9TableTypeEEEPT_PKNS_4TypeE.exit ], [ false, %22 ] +_ZNK4Luau12DenseHashSetIPKNS_4TypeENS_16DenseHashPointerESt8equal_toIS3_EE8containsERKS3_.exit: ; preds = %22, %_ZN4Luau19MutatingGeneralizer8getCountERKNS_12DenseHashMapIPKvmNS_16DenseHashPointerESt8equal_toIS3_EEES3_.exit10, %94, %_ZN4Luau10getMutableINS_9TableTypeEEEPT_PKNS_4TypeE.exit + %.0 = phi i1 [ true, %_ZN4Luau19MutatingGeneralizer8getCountERKNS_12DenseHashMapIPKvmNS_16DenseHashPointerESt8equal_toIS3_EEES3_.exit10 ], [ true, %94 ], [ true, %_ZN4Luau10getMutableINS_9TableTypeEEEPT_PKNS_4TypeE.exit ], [ false, %22 ] ret i1 %.0 } diff --git a/bench/openjdk/optimized/compileBroker.ll b/bench/openjdk/optimized/compileBroker.ll index d9c7f47d5b3..a9ace8c2d6d 100644 --- a/bench/openjdk/optimized/compileBroker.ll +++ b/bench/openjdk/optimized/compileBroker.ll @@ -738,44 +738,32 @@ _ZN11MutexLockerC2EP6ThreadP5MutexNS2_18SafepointCheckFlagE.exit: ; preds = %16, %20 = getelementptr inbounds nuw i8, ptr %5, i64 80 %21 = load i32, ptr %20, align 8 %22 = icmp eq i32 %21, 4 - br i1 %22, label %23, label %25 - -23: ; preds = %_ZN11MutexLockerC2EP6ThreadP5MutexNS2_18SafepointCheckFlagE.exit - %24 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZN13CompileBroker10_compilersE, i64 8), align 8 - br label %_ZN13CompileBroker8compilerEi.exit + %.val = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZN13CompileBroker10_compilersE, i64 8), align 8 + %_ZN13CompileBroker10_compilersE.val = load ptr, ptr @_ZN13CompileBroker10_compilersE, align 16 + %.0.i = select i1 %22, ptr %.val, ptr %_ZN13CompileBroker10_compilersE.val + %23 = getelementptr inbounds nuw i8, ptr %.0.i, i64 16 + %24 = load i8, ptr %23, align 8 + %25 = icmp eq i8 %24, 3 + br i1 %25, label %26, label %.critedge22 + +26: ; preds = %_ZN11MutexLockerC2EP6ThreadP5MutexNS2_18SafepointCheckFlagE.exit + %27 = getelementptr inbounds nuw i8, ptr %5, i64 64 + %28 = load i8, ptr %27, align 8 + %29 = trunc i8 %28 to i1 + %30 = getelementptr inbounds nuw i8, ptr %5, i64 72 + store ptr null, ptr %30, align 8 + br i1 %29, label %.critedge22, label %.critedge -25: ; preds = %_ZN11MutexLockerC2EP6ThreadP5MutexNS2_18SafepointCheckFlagE.exit - %26 = add i32 %21, -1 - %27 = icmp ult i32 %26, 3 - %28 = load ptr, ptr @_ZN13CompileBroker10_compilersE, align 16 - %spec.select.i = select i1 %27, ptr %28, ptr null - br label %_ZN13CompileBroker8compilerEi.exit +25: ; preds = %_ZN11MutexLockerC2EP6ThreadP5MutexNS2_18SafepointCheckFlagE.exit, %26 + %31 = load ptr, ptr %5, align 8 + tail call void @_ZN7Monitor10notify_allEv(ptr noundef nonnull align 8 dereferenceable(104) %31) #20 + br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit, label %_ZN13CompileBroker8compilerEi.exit -_ZN13CompileBroker8compilerEi.exit: ; preds = %23, %25 - %.0.i = phi ptr [ %24, %23 ], [ %spec.select.i, %25 ] - %29 = getelementptr inbounds nuw i8, ptr %.0.i, i64 16 - %30 = load i8, ptr %29, align 8 - %31 = icmp eq i8 %30, 3 - br i1 %31, label %32, label %.critedge22 - -32: ; preds = %_ZN13CompileBroker8compilerEi.exit - %33 = getelementptr inbounds nuw i8, ptr %5, i64 64 - %34 = load i8, ptr %33, align 8 - %35 = trunc i8 %34 to i1 - %36 = getelementptr inbounds nuw i8, ptr %5, i64 72 - store ptr null, ptr %36, align 8 - br i1 %35, label %.critedge22, label %.critedge - -.critedge22: ; preds = %_ZN13CompileBroker8compilerEi.exit, %32 - %37 = load ptr, ptr %5, align 8 - tail call void @_ZN7Monitor10notify_allEv(ptr noundef nonnull align 8 dereferenceable(104) %37) #20 - br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit, label %38 - -38: ; preds = %.critedge22 +_ZN13CompileBroker8compilerEi.exit: ; preds = %25 tail call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %17) #20 br label %_ZN11MutexLockerD2Ev.exit -.critedge: ; preds = %32 +.critedge: ; preds = %26 br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit25, label %39 39: ; preds = %.critedge @@ -792,7 +780,7 @@ _ZN11MutexLockerD2Ev.exit25: ; preds = %.critedge, %39 tail call void @_ZN11CompileTask4freeEPS_(ptr noundef nonnull %5) #20 br label %_ZN11MutexLockerD2Ev.exit -_ZN11MutexLockerD2Ev.exit: ; preds = %38, %.critedge22, %_ZN11MutexLockerD2Ev.exit25, %40 +_ZN11MutexLockerD2Ev.exit: ; preds = %32, %.critedge22, %_ZN11MutexLockerD2Ev.exit25, %40 ret void } @@ -3267,7 +3255,7 @@ _ZN13CompileBroker23compilation_is_completeERK12methodHandleii.exit41.thread49: %not.56 = xor i1 %94, true %95 = load i8, ptr @UseJVMCINativeLibrary, align 1 %96 = trunc i8 %95 to i1 - br i1 %96, label %143, label %97 + br i1 %96, label %136, label %97 97: ; preds = %90 call void @_ZN12vframeStreamC2EP10JavaThreadbbb(ptr noundef nonnull align 8 dereferenceable(5104) %9, ptr noundef nonnull %7, i1 noundef zeroext false, i1 noundef zeroext true, i1 noundef zeroext false) @@ -3322,39 +3310,27 @@ _ZN13CompileBroker23compilation_is_completeERK12methodHandleii.exit41.thread49: ._crit_edge: ; preds = %129, %115, %102, %97 %.4 = phi i1 [ %not.56, %97 ], [ false, %102 ], [ false, %115 ], [ %not.56, %129 ] %132 = call noundef zeroext i1 @_ZN5JVMCI23is_compiler_initializedEv() #20 - br i1 %132, label %143, label %133 + br i1 %132, label %136, label %133 133: ; preds = %._crit_edge - br i1 %48, label %134, label %136 - -134: ; preds = %133 - %135 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZN13CompileBroker10_compilersE, i64 8), align 8 - br label %_ZN13CompileBroker8compilerEi.exit - -136: ; preds = %133 - %137 = add i32 %2, -1 - %138 = icmp ult i32 %137, 3 - %139 = load ptr, ptr @_ZN13CompileBroker10_compilersE, align 16 - %spec.select.i42 = select i1 %138, ptr %139, ptr null - br label %_ZN13CompileBroker8compilerEi.exit - -_ZN13CompileBroker8compilerEi.exit: ; preds = %134, %136 - %.0.i43 = phi ptr [ %135, %134 ], [ %spec.select.i42, %136 ] - %140 = getelementptr inbounds nuw i8, ptr %.0.i43, i64 16 - %141 = load i8, ptr %140, align 8 - %142 = icmp ne i8 %141, 3 - %spec.select35 = and i1 %142, %.4 - br label %143 - -143: ; preds = %_ZN13CompileBroker8compilerEi.exit, %._crit_edge, %90 + %.val = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZN13CompileBroker10_compilersE, i64 8), align 8 + %_ZN13CompileBroker10_compilersE.val = load ptr, ptr @_ZN13CompileBroker10_compilersE, align 16 + %.0.i43 = select i1 %48, ptr %.val, ptr %_ZN13CompileBroker10_compilersE.val + %133 = getelementptr inbounds nuw i8, ptr %.0.i43, i64 16 + %134 = load i8, ptr %133, align 8 + %135 = icmp ne i8 %134, 3 + %spec.select35 = and i1 %135, %.4 + br label %136 + +136:; preds = %_ZN13CompileBroker8compilerEi.exit, %._crit_edge, %90 %.3 = phi i1 [ %not.56, %90 ], [ %.4, %._crit_edge ], [ %spec.select35, %_ZN13CompileBroker8compilerEi.exit ] %144 = call noundef zeroext i1 @_ZN5JVMCI11in_shutdownEv() #20 %not. = xor i1 %144, true %145 = select i1 %not., i1 %.3, i1 false br label %146 -146: ; preds = %143, %87 - %.1 = phi i1 [ %6, %87 ], [ %145, %143 ] +146: ; preds = %136, %87 + %.1 = phi i1 [ %6, %87 ], [ %145, %136 ] %147 = call noundef ptr @_ZN13CompileBroker19create_compile_taskEP12CompileQueueiRK12methodHandleiiS4_iN11CompileTask13CompileReasonEb(ptr noundef %.0.i38, i32 noundef %85, ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %1, i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %4, i32 noundef %5, i1 noundef zeroext %.1) br label %_ZN13CompileBroker23compilation_is_completeERK12methodHandleii.exit41.thread diff --git a/bench/openjdk/optimized/compileTask.ll b/bench/openjdk/optimized/compileTask.ll index 15f29efda3d..0035e85241b 100644 --- a/bench/openjdk/optimized/compileTask.ll +++ b/bench/openjdk/optimized/compileTask.ll @@ -341,68 +341,56 @@ _ZN6HandleC2EP6ThreadP7oopDesc.exit: ; preds = %9, %_ZN10HandleArea %43 = getelementptr inbounds nuw i8, ptr %0, i64 38 store i8 %10, ptr %43, align 2 %44 = icmp eq i32 %4, 4 - br i1 %44, label %45, label %47 - -45: ; preds = %_ZN6HandleC2EP6ThreadP7oopDesc.exit - %46 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZN13CompileBroker10_compilersE, i64 8), align 8 - br label %_ZN13CompileBroker8compilerEi.exit - -47: ; preds = %_ZN6HandleC2EP6ThreadP7oopDesc.exit - %48 = add i32 %4, -1 - %49 = icmp ult i32 %48, 3 - %50 = load ptr, ptr @_ZN13CompileBroker10_compilersE, align 16 - %spec.select.i = select i1 %49, ptr %50, ptr null - br label %_ZN13CompileBroker8compilerEi.exit - -_ZN13CompileBroker8compilerEi.exit: ; preds = %45, %47 - %.0.i = phi ptr [ %46, %45 ], [ %spec.select.i, %47 ] - %51 = getelementptr inbounds nuw i8, ptr %.0.i, i64 16 - %52 = load i8, ptr %51, align 8 - %53 = icmp eq i8 %52, 3 - %54 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %55 = zext i1 %53 to i8 - store i8 %55, ptr %54, align 8 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 72 - store ptr null, ptr %56, align 8 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 80 - store i32 %4, ptr %57, align 8 - %58 = getelementptr inbounds nuw i8, ptr %0, i64 84 - store i32 0, ptr %58, align 4 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 36 - store i8 0, ptr %59, align 4 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 37 - store i8 0, ptr %60, align 1 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 128 - %62 = getelementptr inbounds nuw i8, ptr %0, i64 136 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 144 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %61, i8 0, i64 16, i1 false) - store i32 %6, ptr %63, align 8 - %64 = tail call noundef i64 @_ZN2os15elapsed_counterEv() #10 - %65 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store i64 %64, ptr %65, align 8 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 120 - store i64 0, ptr %66, align 8 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 148 - store i32 %7, ptr %67, align 4 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store i32 0, ptr %68, align 8 - %69 = load i32, ptr %57, align 8 - %70 = icmp eq i32 %69, 4 - br i1 %70, label %71, label %73 - -71: ; preds = %_ZN13CompileBroker8compilerEi.exit - %72 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZN13CompileBroker10_compilersE, i64 8), align 8 + %.val = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZN13CompileBroker10_compilersE, i64 8), align 8 + %_ZN13CompileBroker10_compilersE.val = load ptr, ptr @_ZN13CompileBroker10_compilersE, align 16 + %.0.i = select i1 %44, ptr %.val, ptr %_ZN13CompileBroker10_compilersE.val + %45 = getelementptr inbounds nuw i8, ptr %.0.i, i64 16 + %46 = load i8, ptr %45, align 8 + %47 = icmp eq i8 %46, 3 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %49 = zext i1 %47 to i8 + store i8 %49, ptr %48, align 8 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 72 + store ptr null, ptr %50, align 8 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 80 + store i32 %4, ptr %51, align 8 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 84 + store i32 0, ptr %52, align 4 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 36 + store i8 0, ptr %51, align 4 + %54 = getelementptr inbounds nuw i8, ptr %0, i64 37 + store i8 0, ptr %54, align 1 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 128 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 136 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 144 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %55, i8 0, i64 16, i1 false) + store i32 %6, ptr %57, align 8 + %58 = tail call noundef i64 @_ZN2os15elapsed_counterEv() #10 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store i64 %58, ptr %58, align 8 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 120 + store i64 0, ptr %59, align 8 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 148 + store i32 %7, ptr %60, align 4 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 40 + store i32 0, ptr %62, align 8 + %63 = load i32, ptr %51, align 8 + %64 = icmp eq i32 %63, 4 + br i1 %64, label %65, label %67 + +65: ; preds = %_ZN6HandleC2EP6ThreadP7oopDesc.exit + %66 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZN13CompileBroker10_compilersE, i64 8), align 8 br label %_ZNK11CompileTask8compilerEv.exit -73: ; preds = %_ZN13CompileBroker8compilerEi.exit - %74 = add i32 %69, -1 +73: ; preds = %_ZN6HandleC2EP6ThreadP7oopDesc.exit + %74 = add i32 %63, -1 %75 = icmp ult i32 %74, 3 %76 = load ptr, ptr @_ZN13CompileBroker10_compilersE, align 16 %spec.select.i.i = select i1 %75, ptr %76, ptr null br label %_ZNK11CompileTask8compilerEv.exit -_ZNK11CompileTask8compilerEv.exit: ; preds = %71, %73 - %.0.i.i = phi ptr [ %72, %71 ], [ %spec.select.i.i, %73 ] +_ZNK11CompileTask8compilerEv.exit: ; preds = %65, %73 + %.0.i.i = phi ptr [ %66, %65 ], [ %spec.select.i.i, %73 ] %77 = tail call noundef ptr @_ZN15DirectivesStack20getMatchingDirectiveERK12methodHandleP16AbstractCompiler(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef %.0.i.i) #10 %78 = getelementptr inbounds nuw i8, ptr %0, i64 56 store ptr %77, ptr %78, align 8 @@ -432,55 +420,55 @@ _ZNK11CompileTask8compilerEv.exit: ; preds = %71, %73 91: ; preds = %88 %92 = load ptr, ptr %15, align 8 - store ptr %92, ptr %61, align 8 + store ptr %92, ptr %55, align 8 br label %120 93: ; preds = %88 - store ptr %87, ptr %61, align 8 + store ptr %87, ptr %55, align 8 %94 = load ptr, ptr %5, align 8 %95 = getelementptr inbounds nuw i8, ptr %94, i64 8 + %90 = load ptr, ptr %89, align 8 + %91 = getelementptr inbounds nuw i8, ptr %90, i64 8 + %92 = load ptr, ptr %91, align 8 + %93 = getelementptr inbounds nuw i8, ptr %92, i64 24 + %94 = load ptr, ptr %93, align 8 + %95 = getelementptr inbounds nuw i8, ptr %94, i64 152 %96 = load ptr, ptr %95, align 8 - %97 = getelementptr inbounds nuw i8, ptr %96, i64 8 - %98 = load ptr, ptr %97, align 8 - %99 = getelementptr inbounds nuw i8, ptr %98, i64 24 - %100 = load ptr, ptr %99, align 8 - %101 = getelementptr inbounds nuw i8, ptr %100, i64 152 - %102 = load ptr, ptr %101, align 8 - %103 = tail call noundef ptr @_ZNK15ClassLoaderData6holderEv(ptr noundef nonnull align 8 dereferenceable(160) %102) #10 - %104 = icmp eq ptr %103, null - br i1 %104, label %_ZN6HandleC2EP6ThreadP7oopDesc.exit22, label %105 - -105: ; preds = %93 - %106 = getelementptr inbounds nuw i8, ptr %12, i64 808 - %107 = load ptr, ptr %106, align 8 - %108 = getelementptr inbounds nuw i8, ptr %107, i64 40 - %109 = load ptr, ptr %108, align 8 - %110 = getelementptr inbounds nuw i8, ptr %107, i64 32 - %111 = load ptr, ptr %110, align 8 - %112 = ptrtoint ptr %109 to i64 - %113 = ptrtoint ptr %111 to i64 - %114 = sub i64 %112, %113 - %.not.i.i.i.i18 = icmp ult i64 %114, 8 - br i1 %.not.i.i.i.i18, label %117, label %115 - -115: ; preds = %105 - %116 = getelementptr inbounds nuw i8, ptr %111, i64 8 - store ptr %116, ptr %110, align 8 + %97 = tail call noundef ptr @_ZNK15ClassLoaderData6holderEv(ptr noundef nonnull align 8 dereferenceable(160) %96) #10 + %98 = icmp eq ptr %97, null + br i1 %98, label %_ZN6HandleC2EP6ThreadP7oopDesc.exit22, label %99 + +99: ; preds = %87 + %100 = getelementptr inbounds nuw i8, ptr %12, i64 808 + %101 = load ptr, ptr %100, align 8 + %102 = getelementptr inbounds nuw i8, ptr %101, i64 40 + %103 = load ptr, ptr %102, align 8 + %104 = getelementptr inbounds nuw i8, ptr %101, i64 32 + %105 = load ptr, ptr %104, align 8 + %106 = ptrtoint ptr %103 to i64 + %107 = ptrtoint ptr %105 to i64 + %108 = sub i64 %106, %107 + %.not.i.i.i.i18 = icmp ult i64 %108, 8 + br i1 %.not.i.i.i.i18, label %111, label %109 + +109:; preds = %99 + %110 = getelementptr inbounds nuw i8, ptr %105, i64 8 + store ptr %110, ptr %104, align 8 br label %_ZN10HandleArea15allocate_handleEP7oopDesc.exit.i19 -117: ; preds = %105 - %118 = tail call noundef ptr @_ZN5Arena4growEmN17AllocFailStrategy13AllocFailEnumE(ptr noundef nonnull align 8 dereferenceable(56) %107, i64 noundef 8, i32 noundef 0) #10 +117: ; preds = %99 + %118 = tail call noundef ptr @_ZN5Arena4growEmN17AllocFailStrategy13AllocFailEnumE(ptr noundef nonnull align 8 dereferenceable(56) %101, i64 noundef 8, i32 noundef 0) #10 br label %_ZN10HandleArea15allocate_handleEP7oopDesc.exit.i19 -_ZN10HandleArea15allocate_handleEP7oopDesc.exit.i19: ; preds = %117, %115 - %.0.i.i.i.i20 = phi ptr [ %111, %115 ], [ %118, %117 ] - store ptr %103, ptr %.0.i.i.i.i20, align 8 +_ZN10HandleArea15allocate_handleEP7oopDesc.exit.i19: ; preds = %117, %109 + %.0.i.i.i.i20 = phi ptr [ %105, %109 ], [ %118, %117 ] + store ptr %97, ptr %.0.i.i.i.i20, align 8 br label %_ZN6HandleC2EP6ThreadP7oopDesc.exit22 _ZN6HandleC2EP6ThreadP7oopDesc.exit22: ; preds = %93, %_ZN10HandleArea15allocate_handleEP7oopDesc.exit.i19 %storemerge.i21 = phi ptr [ %.0.i.i.i.i20, %_ZN10HandleArea15allocate_handleEP7oopDesc.exit.i19 ], [ null, %93 ] %119 = tail call noundef ptr @_ZN10JNIHandles16make_weak_globalE6HandleN17AllocFailStrategy13AllocFailEnumE(ptr %storemerge.i21, i32 noundef 0) #10 - store ptr %119, ptr %62, align 8 + store ptr %119, ptr %56, align 8 br label %120 120: ; preds = %86, %_ZN6HandleC2EP6ThreadP7oopDesc.exit22, %91, %_ZNK11CompileTask8compilerEv.exit diff --git a/bench/openjdk/optimized/dfa_x86.ll b/bench/openjdk/optimized/dfa_x86.ll index 848b4ffcf8d..c085f433c66 100644 --- a/bench/openjdk/optimized/dfa_x86.ll +++ b/bench/openjdk/optimized/dfa_x86.ll @@ -53472,34 +53472,22 @@ define hidden void @_ZN5State15_sub_Op_EncodePEPK4Node(ptr noundef nonnull align %13 = tail call noundef ptr %12(ptr noundef nonnull align 8 dereferenceable(52) %1) #8 %14 = getelementptr inbounds nuw i8, ptr %13, i64 16 %15 = load i32, ptr %14, align 8 - switch i32 %15, label %22 [ - i32 6, label %16 - i32 7, label %19 - ] + %16 = and i32 %15, -2 + %switch = icmp eq i32 %16, 6 + br i1 %switch, label %16, label %19 16: ; preds = %9 %17 = getelementptr inbounds nuw i8, ptr %13, i64 24 %18 = load ptr, ptr %17, align 8 br label %_ZNK4Type8make_ptrEv.exit -19: ; preds = %9 - %20 = getelementptr inbounds nuw i8, ptr %13, i64 24 - %21 = load ptr, ptr %20, align 8 - br label %_ZNK4Type8make_ptrEv.exit - -22: ; preds = %9 - %23 = add i32 %15, -18 - %or.cond.i.i = icmp ult i32 %23, 9 - %24 = select i1 %or.cond.i.i, ptr %13, ptr null - br label %_ZNK4Type8make_ptrEv.exit - -_ZNK4Type8make_ptrEv.exit: ; preds = %16, %19, %22 - %25 = phi ptr [ %18, %16 ], [ %21, %19 ], [ %24, %22 ] - %26 = getelementptr inbounds nuw i8, ptr %25, i64 40 - %27 = load i32, ptr %26, align 8 - %28 = icmp eq i32 %27, 4 +19: ; preds = %9, %16 + %19 = phi ptr [ %13, %9 ], [ %18, %16 ] + %20 = getelementptr inbounds nuw i8, ptr %19, i64 40 + %21 = load i32, ptr %20, align 8 + %22 = icmp eq i32 %21, 4 %.pr.pre = load ptr, ptr %3, align 8 - br i1 %28, label %29, label %37 + br i1 %22, label %29, label %37 29: ; preds = %_ZNK4Type8make_ptrEv.exit %30 = getelementptr inbounds nuw i8, ptr %.pr.pre, i64 232 @@ -53525,38 +53513,26 @@ _ZNK4Type8make_ptrEv.exit: ; preds = %16, %19, %22 %39 = load i16, ptr %38, align 4 %40 = and i16 %39, 1 %.not11 = icmp eq i16 %40, 0 - br i1 %.not11, label %.thread, label %41 + br i1 %.not11, label %.thread, label %51 -41: ; preds = %.thread22 - %42 = load ptr, ptr %1, align 8 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 40 - %44 = load ptr, ptr %43, align 8 - %45 = tail call noundef ptr %44(ptr noundef nonnull align 8 dereferenceable(52) %1) #8 - %46 = getelementptr inbounds nuw i8, ptr %45, i64 16 - %47 = load i32, ptr %46, align 8 - switch i32 %47, label %54 [ - i32 6, label %48 - i32 7, label %51 - ] - -48: ; preds = %41 - %49 = getelementptr inbounds nuw i8, ptr %45, i64 24 - %50 = load ptr, ptr %49, align 8 - br label %_ZNK4Type8make_ptrEv.exit19 - -51: ; preds = %41 - %52 = getelementptr inbounds nuw i8, ptr %45, i64 24 - %53 = load ptr, ptr %52, align 8 - br label %_ZNK4Type8make_ptrEv.exit19 +51: ; preds = %.thread22 + %36 = load ptr, ptr %1, align 8 + %37 = getelementptr inbounds nuw i8, ptr %36, i64 40 + %38 = load ptr, ptr %37, align 8 + %39 = tail call noundef ptr %38(ptr noundef nonnull align 8 dereferenceable(52) %1) #8 + %40 = getelementptr inbounds nuw i8, ptr %39, i64 16 + %41 = load i32, ptr %40, align 8 + %42 = and i32 %41, -2 + %switch27 = icmp eq i32 %42, 6 + br i1 %switch27, label %_ZNK4Type8make_ptrEv.exit19.sink.split, label %_ZNK4Type8make_ptrEv.exit19 -54: ; preds = %41 - %55 = add i32 %47, -18 - %or.cond.i.i18 = icmp ult i32 %55, 9 - %56 = select i1 %or.cond.i.i18, ptr %45, ptr null +54: ; preds = %51 + %43 = getelementptr inbounds nuw i8, ptr %39, i64 24 + %44 = load ptr, ptr %43, align 8 br label %_ZNK4Type8make_ptrEv.exit19 -_ZNK4Type8make_ptrEv.exit19: ; preds = %48, %51, %54 - %57 = phi ptr [ %50, %48 ], [ %53, %51 ], [ %56, %54 ] +_ZNK4Type8make_ptrEv.exit19: ; preds = %51, %54 + %57 = phi ptr [ %39, %51 ], [ %44, %54 ] %58 = getelementptr inbounds nuw i8, ptr %57, i64 40 %59 = load i32, ptr %58, align 8 %.not12 = icmp eq i32 %59, 4 diff --git a/bench/openjdk/optimized/loopnode.ll b/bench/openjdk/optimized/loopnode.ll index 36458dbc5cf..32f899ce1f5 100644 --- a/bench/openjdk/optimized/loopnode.ll +++ b/bench/openjdk/optimized/loopnode.ll @@ -6417,12 +6417,10 @@ _ZNK15CountedLoopNode8loopexitEv.exit: ; preds = %3, %11, %19 %54 = getelementptr inbounds nuw i8, ptr %53, i64 232 %55 = load ptr, ptr %54, align 8 %56 = tail call noundef zeroext i8 %55(ptr noundef nonnull align 8 dereferenceable(92) %5) #16 - %.not.i.i.i86 = icmp eq i8 %52, %56 - %..i.i.i87 = select i1 %.not.i.i.i86, ptr %43, ptr null br label %_ZNK15CountedLoopNode8loopexitEv.exit88 _ZNK15CountedLoopNode8loopexitEv.exit88: ; preds = %_ZNK15CountedLoopNode8loopexitEv.exit, %40, %48 - %.0.i.i.i85 = phi ptr [ null, %_ZNK15CountedLoopNode8loopexitEv.exit ], [ null, %40 ], [ %..i.i.i87, %48 ] + %.0.i.i.i85 = phi ptr [ null, %_ZNK15CountedLoopNode8loopexitEv.exit ], [ null, %40 ], [ %43, %48 ] %57 = load ptr, ptr %0, align 8 %58 = getelementptr inbounds nuw i8, ptr %57, i64 224 %59 = load ptr, ptr %58, align 8 diff --git a/bench/openjdk/optimized/output.ll b/bench/openjdk/optimized/output.ll index f94ee056c10..db5499cb1b5 100644 --- a/bench/openjdk/optimized/output.ll +++ b/bench/openjdk/optimized/output.ll @@ -4312,18 +4312,18 @@ _ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_. br label %484 385: ; preds = %275 - switch i32 %289, label %482 [ + switch i32 %289, label %476 [ i32 5, label %386 i32 18, label %388 i32 22, label %392 i32 21, label %392 i32 6, label %416 - i32 3, label %440 - i32 19, label %446 - i32 32, label %454 - i32 35, label %460 - i32 4, label %469 - i32 2, label %478 + i32 3, label %434 + i32 19, label %440 + i32 32, label %448 + i32 35, label %454 + i32 4, label %463 + i32 2, label %472 ] 386: ; preds = %385 @@ -4396,124 +4396,112 @@ _ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_. 423: ; preds = %416 %424 = load i32, ptr %288, align 8 - switch i32 %424, label %431 [ - i32 6, label %425 - i32 7, label %428 - ] + %425 = and i32 %424, -2 + %switch = icmp eq i32 %425, 6 + br i1 %switch, label %425, label %428 425: ; preds = %423 %426 = getelementptr inbounds nuw i8, ptr %41, i64 24 %427 = load ptr, ptr %426, align 8 br label %_ZNK4Type8make_ptrEv.exit -428: ; preds = %423 - %429 = getelementptr inbounds nuw i8, ptr %41, i64 24 +428: ; preds = %423, %425 + %428 = phi ptr [ %41, %423 ], [ %427, %425 ] + %429 = getelementptr inbounds nuw i8, ptr %428, i64 48 %430 = load ptr, ptr %429, align 8 - br label %_ZNK4Type8make_ptrEv.exit - -431: ; preds = %423 - %432 = add i32 %424, -18 - %or.cond.i.i = icmp ult i32 %432, 9 - %433 = select i1 %or.cond.i.i, ptr %41, ptr null - br label %_ZNK4Type8make_ptrEv.exit - -_ZNK4Type8make_ptrEv.exit: ; preds = %425, %428, %431 - %434 = phi ptr [ %427, %425 ], [ %430, %428 ], [ %433, %431 ] - %435 = getelementptr inbounds nuw i8, ptr %434, i64 48 - %436 = load ptr, ptr %435, align 8 - %437 = tail call noundef ptr @_ZN8ciObject17constant_encodingEv(ptr noundef nonnull align 8 dereferenceable(40) %436) #14 + %431 = tail call noundef ptr @_ZN8ciObject17constant_encodingEv(ptr noundef nonnull align 8 dereferenceable(40) %430) #14 store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV21ConstantOopWriteValue, i64 16), ptr %419, align 8 %438 = getelementptr inbounds nuw i8, ptr %419, i64 8 - store ptr %437, ptr %438, align 8 + store ptr %431, ptr %438, align 8 store ptr %419, ptr %19, align 8 %439 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %19) br label %484 +434: ; preds = %385 + %435 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 + %436 = getelementptr inbounds nuw i8, ptr %41, i64 24 + %437 = load i32, ptr %436, align 8 + store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV16ConstantIntValue, i64 16), ptr %435, align 8 + %438 = getelementptr inbounds nuw i8, ptr %435, i64 8 + store i32 %437, ptr %438, align 8 + store ptr %435, ptr %20, align 8 + %439 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %20) + br label %478 + 440: ; preds = %385 %441 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 - %442 = getelementptr inbounds nuw i8, ptr %41, i64 24 - %443 = load i32, ptr %442, align 8 - store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV16ConstantIntValue, i64 16), ptr %441, align 8 - %444 = getelementptr inbounds nuw i8, ptr %441, i64 8 - store i32 %443, ptr %444, align 8 - store ptr %441, ptr %20, align 8 - %445 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %20) - br label %484 - -446: ; preds = %385 - %447 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 - %448 = load ptr, ptr %41, align 8 - %449 = getelementptr inbounds nuw i8, ptr %448, i64 184 - %450 = load ptr, ptr %449, align 8 - %451 = tail call noundef i64 %450(ptr noundef nonnull align 8 dereferenceable(44) %41) #14 - store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV17ConstantLongValue, i64 16), ptr %447, align 8 - %452 = getelementptr inbounds nuw i8, ptr %447, i64 8 - store i64 %451, ptr %452, align 8 - store ptr %447, ptr %21, align 8 - %453 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %21) + %442 = load ptr, ptr %41, align 8 + %443 = getelementptr inbounds nuw i8, ptr %442, i64 184 + %444 = load ptr, ptr %443, align 8 + %445 = tail call noundef i64 %444(ptr noundef nonnull align 8 dereferenceable(44) %41) #14 + store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV17ConstantLongValue, i64 16), ptr %441, align 8 + %446 = getelementptr inbounds nuw i8, ptr %441, i64 8 + store i64 %445, ptr %446, align 8 + store ptr %441, ptr %21, align 8 + %447 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %21) + br label %478 + +448:; preds = %385 + %449 = getelementptr inbounds nuw i8, ptr %41, i64 20 + %450 = load i32, ptr %449, align 4 + %451 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 + store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV16ConstantIntValue, i64 16), ptr %451, align 8 + %452 = getelementptr inbounds nuw i8, ptr %451, i64 8 + store i32 %450, ptr %452, align 8 + store ptr %451, ptr %22, align 8 + %453 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %22) br label %484 454: ; preds = %385 - %455 = getelementptr inbounds nuw i8, ptr %41, i64 20 - %456 = load i32, ptr %455, align 4 + %455 = getelementptr inbounds nuw i8, ptr %41, i64 24 + %456 = load double, ptr %455, align 8 %457 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV16ConstantIntValue, i64 16), ptr %457, align 8 %458 = getelementptr inbounds nuw i8, ptr %457, i64 8 - store i32 %456, ptr %458, align 8 - store ptr %457, ptr %22, align 8 - %459 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %22) - br label %484 - -460: ; preds = %385 - %461 = getelementptr inbounds nuw i8, ptr %41, i64 24 - %462 = load double, ptr %461, align 8 - %463 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 - store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV16ConstantIntValue, i64 16), ptr %463, align 8 - %464 = getelementptr inbounds nuw i8, ptr %463, i64 8 - store i32 0, ptr %464, align 8 - store ptr %463, ptr %23, align 8 - %465 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %23) - %466 = call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 - store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV19ConstantDoubleValue, i64 16), ptr %466, align 8 + store i32 0, ptr %458, align 8 + store ptr %457, ptr %23, align 8 + %459 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %23) + %460 = call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 + store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV19ConstantDoubleValue, i64 16), ptr %460, align 8 + %461 = getelementptr inbounds nuw i8, ptr %460, i64 8 + store double %456, ptr %461, align 8 + store ptr %460, ptr %24, align 8 + %462 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %24) + br label %478 + +463:; preds = %385 + %464 = getelementptr inbounds nuw i8, ptr %41, i64 24 + %465 = load i64, ptr %464, align 8 + %466 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 + store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV16ConstantIntValue, i64 16), ptr %466, align 8 %467 = getelementptr inbounds nuw i8, ptr %466, i64 8 - store double %462, ptr %467, align 8 - store ptr %466, ptr %24, align 8 - %468 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %24) - br label %484 - -469: ; preds = %385 - %470 = getelementptr inbounds nuw i8, ptr %41, i64 24 - %471 = load i64, ptr %470, align 8 - %472 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 - store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV16ConstantIntValue, i64 16), ptr %472, align 8 - %473 = getelementptr inbounds nuw i8, ptr %472, i64 8 - store i32 0, ptr %473, align 8 - store ptr %472, ptr %25, align 8 - %474 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %25) - %475 = call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 - store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV17ConstantLongValue, i64 16), ptr %475, align 8 - %476 = getelementptr inbounds nuw i8, ptr %475, i64 8 - store i64 %471, ptr %476, align 8 - store ptr %475, ptr %26, align 8 - %477 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %26) - br label %484 - -478: ; preds = %385 - %479 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 - store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV13LocationValue, i64 16), ptr %479, align 8 - %480 = getelementptr inbounds nuw i8, ptr %479, i64 8 - store i32 0, ptr %480, align 8 - store ptr %479, ptr %27, align 8 - %481 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %27) - br label %484 - -482: ; preds = %385 - %483 = load ptr, ptr @g_assert_poison, align 8 - store i8 88, ptr %483, align 1 + store i32 0, ptr %467, align 8 + store ptr %466, ptr %25, align 8 + %468 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %25) + %469 = call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 + store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV17ConstantLongValue, i64 16), ptr %469, align 8 + %470 = getelementptr inbounds nuw i8, ptr %469, i64 8 + store i64 %465, ptr %470, align 8 + store ptr %469, ptr %26, align 8 + %471 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %26) + br label %478 + +472:; preds = %385 + %473 = tail call noundef ptr @_Z23resource_allocate_bytesmN17AllocFailStrategy13AllocFailEnumE(i64 noundef 16, i32 noundef 0) #14 + store ptr getelementptr inbounds nuw inrange(-16, 88) (i8, ptr @_ZTV13LocationValue, i64 16), ptr %473, align 8 + %474 = getelementptr inbounds nuw i8, ptr %473, i64 8 + store i32 0, ptr %474, align 8 + store ptr %473, ptr %27, align 8 + %475 = call noundef i32 @_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %27) + br label %478 + +476:; preds = %385 + %477 = load ptr, ptr @g_assert_poison, align 8 + store i8 88, ptr %477, align 1 tail call void @_Z28report_should_not_reach_herePKci(ptr noundef nonnull @.str.6, i32 noundef 954) #15 unreachable -484: ; preds = %420, %_ZNK4Type8make_ptrEv.exit, %_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_.exit151, %356, %366, %372, %382, %379, %369, %361, %347, %29, %478, %469, %460, %454, %446, %440, %_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_.exit155, %388, %_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_.exit143, %_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_.exit +484: ; preds = %420, %_ZNK4Type8make_ptrEv.exit, %_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_.exit151, %356, %366, %372, %382, %379, %369, %361, %347, %29, %472, %463, %454, %448, %440, %434, %_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_.exit155, %388, %_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_.exit143, %_ZN26GrowableArrayWithAllocatorIP10ScopeValue13GrowableArrayIS1_EE6appendERKS1_.exit ret void } diff --git a/bench/openjdk/optimized/shenandoahSupport.ll b/bench/openjdk/optimized/shenandoahSupport.ll index 6fae08825db..203a444d77e 100644 --- a/bench/openjdk/optimized/shenandoahSupport.ll +++ b/bench/openjdk/optimized/shenandoahSupport.ll @@ -22038,37 +22038,25 @@ _ZN16Unique_Node_List4pushEP4Node.exit: ; preds = %_ZN9VectorSet8test_ 51: ; preds = %41 %52 = getelementptr inbounds nuw i8, ptr %48, i64 16 %53 = load i32, ptr %52, align 8 - switch i32 %53, label %60 [ - i32 6, label %54 - i32 7, label %57 - ] + %54 = and i32 %53, -2 + %switch = icmp eq i32 %54, 6 + br i1 %switch, label %54, label %57 54: ; preds = %51 %55 = getelementptr inbounds nuw i8, ptr %48, i64 24 %56 = load ptr, ptr %55, align 8 br label %_ZNK4Type8make_ptrEv.exit -57: ; preds = %51 - %58 = getelementptr inbounds nuw i8, ptr %48, i64 24 - %59 = load ptr, ptr %58, align 8 - br label %_ZNK4Type8make_ptrEv.exit - -60: ; preds = %51 - %61 = add i32 %53, -18 - %or.cond.i.i = icmp ult i32 %61, 9 - %62 = select i1 %or.cond.i.i, ptr %48, ptr null - br label %_ZNK4Type8make_ptrEv.exit - -_ZNK4Type8make_ptrEv.exit: ; preds = %54, %57, %60 - %63 = phi ptr [ %56, %54 ], [ %59, %57 ], [ %62, %60 ] - %64 = load ptr, ptr @_ZN7TypePtr8NULL_PTRE, align 8 - %65 = tail call noundef ptr @_ZNK4Type11meet_helperEPKS_b(ptr noundef nonnull align 8 dereferenceable(20) %63, ptr noundef %64, i1 noundef zeroext false) #11 - %66 = load ptr, ptr %64, align 8 - %67 = getelementptr inbounds nuw i8, ptr %66, i64 128 - %68 = load ptr, ptr %67, align 8 - %69 = tail call noundef ptr %68(ptr noundef nonnull align 8 dereferenceable(20) %64) #11 - %70 = tail call noundef zeroext i1 @_ZN4Type6equalsEPKS_S1_(ptr noundef %65, ptr noundef %69) #11 - br i1 %70, label %.loopexit.loopexit98, label %71 +57: ; preds = %51, %54 + %57 = phi ptr [ %48, %51 ], [ %56, %54 ] + %59 = load ptr, ptr @_ZN7TypePtr8NULL_PTRE, align 8 + %59 = tail call noundef ptr @_ZNK4Type11meet_helperEPKS_b(ptr noundef nonnull align 8 dereferenceable(20) %57, ptr noundef %58, i1 noundef zeroext false) #11 + %60 = load ptr, ptr %58, align 8 + %61 = getelementptr inbounds nuw i8, ptr %60, i64 128 + %62 = load ptr, ptr %61, align 8 + %63 = tail call noundef ptr %62(ptr noundef nonnull align 8 dereferenceable(20) %59) #11 + %64 = tail call noundef zeroext i1 @_ZN4Type6equalsEPKS_S1_(ptr noundef %59, ptr noundef %63) #11 + br i1 %64, label %.loopexit.loopexit98, label %65 71: ; preds = %_ZNK4Type8make_ptrEv.exit %72 = load i32, ptr %52, align 8 @@ -22101,7 +22089,7 @@ _ZNK4Type11make_oopptrEv.exit48: ; preds = %_ZNK4Type11make_oop 82: ; preds = %_ZNK4Type11make_oopptrEv.exit.thread, %_ZNK4Type11make_oopptrEv.exit48, %_ZNK4Type11make_oopptrEv.exit %83 = load ptr, ptr %.tr6066, align 8 %84 = load ptr, ptr %83, align 8 - %85 = tail call noundef i32 %84(ptr noundef nonnull align 8 dereferenceable(52) %.tr6066) #11 + %85 = tail call noundef i32 %78(ptr noundef nonnull align 8 dereferenceable(52) %.tr6066) #11 switch i32 %85, label %.loopexit.loopexit98 [ i32 153, label %.loopexit i32 74, label %111 diff --git a/bench/openspiel/optimized/observer.ll b/bench/openspiel/optimized/observer.ll index 352b6778843..6c7f658e6e2 100644 --- a/bench/openspiel/optimized/observer.ll +++ b/bench/openspiel/optimized/observer.ll @@ -5575,8 +5575,7 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i: ; preds = %11 _ZN4absl7debian223inlined_vector_internal21AllocationTransactionISaIiEE8AllocateEm.exit: ; preds = %3 %.sink1.i = lshr i64 %4, 1 - %18 = icmp ugt i64 %2, %.sink1.i - %19 = getelementptr inbounds nuw i32, ptr %.sink2.i, i64 %.sink1.i + %18 = getelementptr inbounds nuw i32, ptr %.sink2.i, i64 %.sink1.i %.sroa.438.0 = tail call i64 @llvm.usub.sat.i64(i64 %2, i64 %.sink1.i) %.sroa.440.0 = tail call i64 @llvm.umin.i64(i64 %2, i64 %.sink1.i) %.not.i17 = icmp eq i64 %.sroa.440.0, 0 @@ -5595,7 +5594,8 @@ _ZN4absl7debian223inlined_vector_internal21AllocationTransactionISaIiEE8Allocate _ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit: ; preds = %.lr.ph.i, %_ZN4absl7debian223inlined_vector_internal21AllocationTransactionISaIiEE8AllocateEm.exit %.sroa.057.1 = phi ptr [ %1, %_ZN4absl7debian223inlined_vector_internal21AllocationTransactionISaIiEE8AllocateEm.exit ], [ %22, %.lr.ph.i ] - br i1 %18, label %.lr.ph.preheader.i19, label %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit._ZN4absl7debian223inlined_vector_internal21AllocationTransactionISaIiEED2Ev.exit25_crit_edge + %.not.i18.not = icmp ugt i64 %2, %.sink1.i + br i1 %.not.i18.not, label %.lr.ph.preheader.i19, label %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit._ZN4absl7debian223inlined_vector_internal21AllocationTransactionISaIiEED2Ev.exit25_crit_edge _ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit._ZN4absl7debian223inlined_vector_internal21AllocationTransactionISaIiEED2Ev.exit25_crit_edge: ; preds = %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit %.pre85 = load i64, ptr %0, align 8 @@ -5604,7 +5604,7 @@ _ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueA .lr.ph.preheader.i19: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i, %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit %.sroa.057.182 = phi ptr [ %.sroa.057.1, %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit ], [ %1, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i ] %.sroa.438.06681 = phi i64 [ %.sroa.438.0, %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit ], [ %2, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i ] - %.sroa.037.06780 = phi ptr [ %19, %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit ], [ %17, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i ] + %.sroa.037.06780 = phi ptr [ %18, %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit ], [ %17, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i ] %.sroa.7.06878 = phi i64 [ 0, %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit ], [ %.sroa.speculated.i, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i ] %.sroa.041.06976 = phi ptr [ null, %_ZN4absl7debian223inlined_vector_internal14AssignElementsIPiNS1_20IteratorValueAdapterISaIiEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIiS5_EEEEEmEEvT_PT0_T1_.exit ], [ %17, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i ] br label %.lr.ph.i21 diff --git a/bench/postgres/optimized/freepage.ll b/bench/postgres/optimized/freepage.ll index f0335d9105d..daf3af456b1 100644 --- a/bench/postgres/optimized/freepage.ll +++ b/bench/postgres/optimized/freepage.ll @@ -1302,20 +1302,27 @@ FreePageBtreeSearchInternal.exit.i: ; preds = %215, %213 %234 = icmp sgt i32 %.027.i479, 0 br i1 %234, label %.lr.ph.i, label %FreePageBtreeFindRightSibling.exit -.lr.ph.i: ; preds = %.preheader.i, %.lr.ph.i - %.22544.i = phi ptr [ %238, %.lr.ph.i ], [ %233, %.preheader.i ] - %.22943.i = phi i32 [ %239, %.lr.ph.i ], [ %.027.i479, %.preheader.i ] - %235 = getelementptr inbounds nuw i8, ptr %.22544.i, i64 32 - %236 = load i64, ptr %235, align 8 - %237 = icmp eq i64 %236, 0 +.lr.ph.i: ; preds = %.preheader.i + %invariant.gep = getelementptr i8, ptr %10, i64 31 + br label %.lr.ph.i + +.lr.ph.i:; preds = %.lr.ph.i, %.lr.ph.i + %235 = phi i64 [ %236, %.lr.ph.i ], [ %231, %.lr.ph.i ] + %.22943.i = phi i32 [ %237, %.lr.ph.i ], [ %.027.i478, %.lr.ph.i.preheader ] + %gep = getelementptr i8, ptr %invariant.gep, i64 %235 + %236 = load i64, ptr %gep, align 8 + %237 = add nsw i32 %.22943.i, -1 + %238 = icmp samesign ugt i32 %.22943.i, 1 + br i1 %238, label %.lr.ph.i, label %.thread.loopexit.i, !llvm.loop !12 + +.thread.loopexit.i: ; preds = %.lr.ph.i %gep42.i = getelementptr i8, ptr %invariant.gep.i, i64 %236 - %238 = select i1 %237, ptr null, ptr %gep42.i - %239 = add nsw i32 %.22943.i, -1 - %240 = icmp samesign ugt i32 %.22943.i, 1 - br i1 %240, label %.lr.ph.i, label %FreePageBtreeFindRightSibling.exit, !llvm.loop !12 + %239 = icmp eq i64 %236, 0 + %240 = select i1 %239, ptr null, ptr %gep42.i + br label %FreePageBtreeFindRightSibling.exit -FreePageBtreeFindRightSibling.exit: ; preds = %223, %.lr.ph.i, %204, %.preheader.i - %.2.i = phi ptr [ %233, %.preheader.i ], [ null, %204 ], [ %238, %.lr.ph.i ], [ null, %223 ] +FreePageBtreeFindRightSibling.exit: ; preds = %223, %204, %.preheader.i, %.thread.loopexit.i + %.2.i = phi ptr [ %233, %.preheader.i ], [ %240, %.thread.loopexit.i ], [ null, %204 ], [ null, %223 ] %.not253 = icmp eq ptr %.2.i, null %241 = getelementptr inbounds nuw i8, ptr %.2.i, i64 24 %spec.select262 = select i1 %.not253, ptr null, ptr %241 @@ -3378,24 +3385,30 @@ FreePageBtreeSearchInternal.exit.i: ; preds = %22, %20 %43 = icmp sgt i32 %.027.i89, 0 br i1 %43, label %.lr.ph.i, label %FreePageBtreeFindRightSibling.exit -.lr.ph.i: ; preds = %.preheader.i, %.lr.ph.i - %.22544.i = phi ptr [ %47, %.lr.ph.i ], [ %42, %.preheader.i ] - %.22943.i = phi i32 [ %48, %.lr.ph.i ], [ %.027.i89, %.preheader.i ] - %44 = getelementptr inbounds nuw i8, ptr %.22544.i, i64 32 - %45 = load i64, ptr %44, align 8 - %46 = icmp eq i64 %45, 0 +.lr.ph.i: ; preds = %.preheader.i + %invariant.gep = getelementptr i8, ptr %5, i64 31 + br label %.lr.ph.i + +.lr.ph.i:; preds = %.lr.ph.i, %.lr.ph.i + %44 = phi i64 [ %45, %.lr.ph.i ], [ %40, %.lr.ph.i ] + %.22943.i = phi i32 [ %46, %.lr.ph.i ], [ %.027.i89, %.lr.ph.i.preheader ] + %gep = getelementptr i8, ptr %invariant.gep, i64 %44 + %45 = load i64, ptr %gep, align 8 + %46 = add nsw i32 %.22943.i, -1 + %47 = icmp samesign ugt i32 %.22943.i, 1 + br i1 %47, label %.lr.ph.i, label %.thread.loopexit.i, !llvm.loop !12 + +.thread.loopexit.i: ; preds = %.lr.ph.i %gep42.i = getelementptr i8, ptr %invariant.gep.i, i64 %45 - %47 = select i1 %46, ptr null, ptr %gep42.i - %48 = add nsw i32 %.22943.i, -1 - %49 = icmp samesign ugt i32 %.22943.i, 1 - br i1 %49, label %.lr.ph.i, label %FreePageBtreeFindRightSibling.exit, !llvm.loop !12 + %48 = icmp eq i64 %45, 0 + br i1 %48, label %.lr.ph94.preheader, label %FreePageBtreeFindRightSibling.exit -FreePageBtreeFindRightSibling.exit: ; preds = %.lr.ph.i, %.preheader.i - %.2.i = phi ptr [ %42, %.preheader.i ], [ %47, %.lr.ph.i ] +FreePageBtreeFindRightSibling.exit: ; preds = %.thread.loopexit.i, %.preheader.i + %.2.i = phi ptr [ %42, %.preheader.i ], [ %gep42.i, %.thread.loopexit.i ] %.not = icmp eq ptr %.2.i, null br i1 %.not, label %.lr.ph94.preheader, label %50 -.lr.ph94.preheader: ; preds = %30, %50, %FreePageBtreeFindRightSibling.exit +.lr.ph94.preheader: ; preds = %30, %.thread.loopexit.i, %50, %FreePageBtreeFindRightSibling.exit br label %.lr.ph94 50: ; preds = %FreePageBtreeFindRightSibling.exit diff --git a/bench/pybind11/optimized/test_tagbased_polymorphic.ll b/bench/pybind11/optimized/test_tagbased_polymorphic.ll index b0c19a8b134..8e4c9c06a4e 100644 --- a/bench/pybind11/optimized/test_tagbased_polymorphic.ll +++ b/bench/pybind11/optimized/test_tagbased_polymorphic.ll @@ -2376,16 +2376,11 @@ define hidden void @_ZN6Animal12name_of_kindB5cxx11ENS_4KindE(ptr dead_on_unwind 6: ; preds = %2 %7 = add i32 %1, -100 %or.cond.i = icmp ult i32 %7, 100 - br i1 %or.cond.i, label %_ZN6Animal12type_of_kindENS_4KindE.exit, label %8 - -8: ; preds = %6 - %9 = add i32 %1, -200 - %or.cond3.i = icmp ult i32 %9, 100 - %_ZTI3Cat..i = select i1 %or.cond3.i, ptr @_ZTI3Cat, ptr null + %spec.select = select i1 %or.cond.i, ptr @_ZTI3Dog, ptr @_ZTI3Cat br label %_ZN6Animal12type_of_kindENS_4KindE.exit -_ZN6Animal12type_of_kindENS_4KindE.exit: ; preds = %2, %4, %5, %6, %8 - %.0.i = phi ptr [ @_ZTI9Chihuahua, %4 ], [ @_ZTI7Panther, %5 ], [ @_ZTI8Labrador, %2 ], [ @_ZTI3Dog, %6 ], [ %_ZTI3Cat..i, %8 ] +_ZN6Animal12type_of_kindENS_4KindE.exit: ; preds = %6, %2, %4, %5 + %.0.i = phi ptr [ @_ZTI9Chihuahua, %4 ], [ @_ZTI7Panther, %5 ], [ @_ZTI8Labrador, %2 ], [ %spec.select, %6 ] %10 = getelementptr inbounds nuw i8, ptr %.0.i, i64 8 %11 = load ptr, ptr %10, align 8 %12 = load i8, ptr %11, align 1 diff --git a/bench/ruby/optimized/vm.ll b/bench/ruby/optimized/vm.ll index 6e68d130786..ebaeb8ae08a 100644 --- a/bench/ruby/optimized/vm.ll +++ b/bench/ruby/optimized/vm.ll @@ -53536,14 +53536,10 @@ define internal fastcc void @vm_trace(ptr noundef nonnull %0, ptr noundef captur %57 = icmp ne i64 %56, 0 tail call void @llvm.assume(i1 %57) %58 = inttoptr i64 %56 to ptr - %59 = load i64, ptr %58, align 8, !tbaa !97 - %60 = and i64 %59, 61440 - %cond.i.i = icmp eq i64 %60, 24576 - %spec.select.i.i = select i1 %cond.i.i, ptr %58, ptr null br label %rb_vm_frame_method_entry.exit rb_vm_frame_method_entry.exit: ; preds = %39, %._crit_edge.i, %54 - %.0.i = phi ptr [ %spec.select.i.i, %54 ], [ %51, %._crit_edge.i ], [ %40, %39 ] + %.0.i = phi ptr [ %58, %54 ], [ %51, %._crit_edge.i ], [ %40, %39 ] %61 = getelementptr inbounds nuw i8, ptr %.0.i, i64 16 %62 = load ptr, ptr %61, align 8, !tbaa !101 %63 = getelementptr inbounds nuw i8, ptr %62, i64 16 @@ -53611,69 +53607,69 @@ rb_ec_ractor_hooks.exit: ; preds = %74, %76 %89 = and i32 %23, 16384 %90 = and i32 %89, %33 %.not109 = icmp eq i32 %90, 0 - br i1 %.not109, label %93, label %91 + br i1 %.not109, label %91, label %91 91: ; preds = %88 %.val122 = load ptr, ptr %31, align 8, !tbaa !13 %92 = getelementptr i8, ptr %.val122, i64 -24 %.val122.val = load i64, ptr %92, align 8, !tbaa !7 tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %23, i32 noundef 16384, ptr noundef nonnull %79, ptr noundef nonnull %24, i64 noundef %.val122.val) - br label %93 - -93: ; preds = %88, %91 - %94 = and i32 %23, 1 - %95 = and i32 %94, %33 - %.not110 = icmp eq i32 %95, 0 - br i1 %.not110, label %97, label %96 - -96: ; preds = %93 - tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %23, i32 noundef 1, ptr noundef nonnull %79, ptr noundef nonnull %24, i64 noundef 36) - br label %97 + br label %91 -97: ; preds = %93, %96 - %98 = and i32 %23, 65536 +97: ; preds = %86, %89 + %98 = and i32 %23, 1 %99 = and i32 %98, %33 %.not111 = icmp eq i32 %99, 0 br i1 %.not111, label %101, label %100 100: ; preds = %97 - tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %23, i32 noundef 65536, ptr noundef nonnull %79, ptr noundef nonnull %24, i64 noundef 36) + tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %23, i32 noundef 1, ptr noundef nonnull %79, ptr noundef nonnull %24, i64 noundef 36) br label %101 101: ; preds = %97, %100 - %102 = and i32 %23, 131072 + %102 = and i32 %23, 65536 %103 = and i32 %102, %33 %.not112 = icmp eq i32 %103, 0 br i1 %.not112, label %105, label %104 104: ; preds = %101 - tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %23, i32 noundef 131072, ptr noundef nonnull %79, ptr noundef nonnull %24, i64 noundef 36) + tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %23, i32 noundef 65536, ptr noundef nonnull %79, ptr noundef nonnull %24, i64 noundef 36) br label %105 105: ; preds = %101, %104 - %106 = and i32 %23, 532 + %106 = and i32 %23, 131072 %107 = and i32 %106, %33 %.not113 = icmp eq i32 %107, 0 br i1 %.not113, label %113, label %108 108: ; preds = %105 - %109 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %110 = load ptr, ptr %109, align 8, !tbaa !93 - %111 = getelementptr i8, ptr %110, i64 -8 - %112 = load i64, ptr %111, align 8, !tbaa !7 - tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %23, i32 noundef 532, ptr noundef nonnull %79, ptr noundef nonnull %24, i64 noundef %112) - br label %113 + tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %23, i32 noundef 131072, ptr noundef nonnull %77, ptr noundef nonnull %24, i64 noundef 36) + br label %103 -113: ; preds = %108, %105 - %114 = and i32 %23, 512 - %.not114 = icmp eq i32 %114, 0 +113: ; preds = %105, %102 + %114 = and i32 %23, 532 + %105 = and i32 %114, %33 + %.not113 = icmp eq i32 %105, 0 + br i1 %.not113, label %111, label %106 + +106: ; preds = %103 + %107 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %108 = load ptr, ptr %107, align 8, !tbaa !93 + %109 = getelementptr i8, ptr %108, i64 -8 + %110 = load i64, ptr %109, align 8, !tbaa !7 + tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %23, i32 noundef 532, ptr noundef nonnull %77, ptr noundef nonnull %24, i64 noundef %110) + br label %111 + +111: ; preds = %106, %103 + %112 = and i32 %23, 512 + %.not114 = icmp eq i32 %112, 0 %brmerge119 = or i1 %.not114, %.not103 %115 = and i32 %80, 16 %.not115 = icmp eq i32 %115, 0 %or.cond120 = select i1 %brmerge119, i1 true, i1 %.not115 br i1 %or.cond120, label %121, label %116 -116: ; preds = %113 +116: ; preds = %111 %117 = getelementptr inbounds nuw i8, ptr %1, i64 8 %118 = load ptr, ptr %117, align 8, !tbaa !93 %119 = getelementptr i8, ptr %118, i64 -8 @@ -53681,7 +53677,7 @@ rb_ec_ractor_hooks.exit: ; preds = %74, %76 tail call fastcc void @vm_trace_hook(ptr noundef %0, ptr noundef nonnull %1, i32 noundef 16, i32 noundef 16, ptr noundef nonnull %79, ptr noundef %.099, i64 noundef %120) br label %121 -121: ; preds = %113, %116 +121: ; preds = %111, %116 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #21 store ptr %3, ptr %4, align 8, !tbaa !95 call void asm sideeffect "", "*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(ptr) %4) #21, !srcloc !697 @@ -62270,19 +62266,11 @@ rb_ec_ractor_hooks.exit103: ; preds = %frame_return_value. 171: ; preds = %164 %172 = getelementptr inbounds nuw i8, ptr %165, i64 8 %173 = load i64, ptr %172, align 8, !tbaa !99 - %174 = icmp eq i64 %173, 0 - br i1 %174, label %rb_vm_frame_method_entry.exit, label %175 - -175: ; preds = %171 - %176 = inttoptr i64 %173 to ptr - %177 = load i64, ptr %176, align 8, !tbaa !97 - %178 = and i64 %177, 61440 - %cond.i.i = icmp eq i64 %178, 24576 - %spec.select.i.i = select i1 %cond.i.i, ptr %176, ptr null + %174 = inttoptr i64 %173 to ptr br label %rb_vm_frame_method_entry.exit -rb_vm_frame_method_entry.exit: ; preds = %152, %._crit_edge.i, %164, %170, %171, %175 - %.0.i104 = phi ptr [ %165, %170 ], [ null, %._crit_edge.i ], [ null, %164 ], [ null, %171 ], [ %spec.select.i.i, %175 ], [ %153, %152 ] +rb_vm_frame_method_entry.exit: ; preds = %152, %171, %._crit_edge.i, %164, %170 + %.0.i104 = phi ptr [ %165, %170 ], [ null, %._crit_edge.i ], [ null, %164 ], [ %174, %171 ], [ %153, %152 ] %.val93 = load ptr, ptr %112, align 8, !tbaa !29, !nonnull !60, !noundef !60 %179 = getelementptr inbounds nuw i8, ptr %.val93, i64 24 %180 = load ptr, ptr %179, align 8, !tbaa !251 @@ -62317,10 +62305,10 @@ rb_vm_frame_method_entry.exit: ; preds = %152, %._crit_edge.i store i64 %192, ptr %200, align 8, !tbaa !473 %201 = getelementptr inbounds nuw i8, ptr %9, i64 40 store i64 %194, ptr %201, align 8, !tbaa !474 - %202 = getelementptr inbounds nuw i8, ptr %9, i64 48 - store i64 %196, ptr %202, align 8, !tbaa !475 - %203 = getelementptr inbounds nuw i8, ptr %9, i64 56 - store i64 %.0, ptr %203, align 8, !tbaa !476 + %1104 = getelementptr inbounds nuw i8, ptr %9, i64 48 + store i64 %196, ptr %1104, align 8, !tbaa !475 + %1105 = getelementptr inbounds nuw i8, ptr %9, i64 56 + store i64 %.0, ptr %1105, align 8, !tbaa !476 %204 = getelementptr inbounds nuw i8, ptr %9, i64 72 store i64 36, ptr %204, align 8, !tbaa !477 %205 = getelementptr inbounds nuw i8, ptr %9, i64 64 @@ -62455,8 +62443,8 @@ rb_ec_ractor_hooks.exit113: ; preds = %92 %272 = call fastcc i64 @frame_return_value(ptr noundef %3) call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %6) #21 store i32 512, ptr %6, align 8, !tbaa !468 - %273 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store ptr %0, ptr %273, align 8, !tbaa !470 + %271 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store ptr %0, ptr %271, align 8, !tbaa !470 %274 = getelementptr inbounds nuw i8, ptr %6, i64 16 store ptr %269, ptr %274, align 8, !tbaa !471 %275 = getelementptr inbounds nuw i8, ptr %6, i64 24 @@ -62515,8 +62503,8 @@ rb_ec_ractor_hooks.exit119: ; preds = %21 %302 = load i64, ptr %301, align 8, !tbaa !94 call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %5) #21 store i32 4, ptr %5, align 8, !tbaa !468 - %303 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store ptr %0, ptr %303, align 8, !tbaa !470 + %2105 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store ptr %0, ptr %2105, align 8, !tbaa !470 %304 = getelementptr inbounds nuw i8, ptr %5, i64 16 store ptr %23, ptr %304, align 8, !tbaa !471 %305 = getelementptr inbounds nuw i8, ptr %5, i64 24 diff --git a/bench/sentencepiece/optimized/extension_set.ll b/bench/sentencepiece/optimized/extension_set.ll index a6465c03147..043603d227c 100644 --- a/bench/sentencepiece/optimized/extension_set.ll +++ b/bench/sentencepiece/optimized/extension_set.ll @@ -10093,13 +10093,16 @@ _ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit73: ; preds = %49, 96: ; preds = %92 %97 = getelementptr inbounds nuw i8, ptr %95, i64 16 %98 = load ptr, ptr %97, align 8 - %99 = getelementptr inbounds nuw i8, ptr %95, i64 8 %.not10.i.i.i.i.i87 = icmp eq ptr %98, null - br i1 %.not10.i.i.i.i.i87, label %_ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit99, label %.lr.ph.i.i.i.i.i88 + br i1 %.not10.i.i.i.i.i87, label %_ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit99, label %.lr.ph.i.i.i.i.i88.preheader + +.lr.ph.i.i.i.i.i88.preheader: ; preds = %96 + %99 = getelementptr inbounds nuw i8, ptr %95, i64 8 + br label %.lr.ph.i.i.i.i.i88 -.lr.ph.i.i.i.i.i88: ; preds = %96, %.lr.ph.i.i.i.i.i88 - %.012.i.i.i.i.i89 = phi ptr [ %.1.i.i.i.i.i94, %.lr.ph.i.i.i.i.i88 ], [ %98, %96 ] - %.0811.i.i.i.i.i90 = phi ptr [ %.19.i.i.i.i.i91, %.lr.ph.i.i.i.i.i88 ], [ %99, %96 ] +.lr.ph.i.i.i.i.i88: ; preds = %.lr.ph.i.i.i.i.i88.preheader, %.lr.ph.i.i.i.i.i88 + %.012.i.i.i.i.i89 = phi ptr [ %.1.i.i.i.i.i94, %.lr.ph.i.i.i.i.i88 ], [ %98, %.lr.ph.i.i.i.i.i88.preheader ] + %.0811.i.i.i.i.i90 = phi ptr [ %.19.i.i.i.i.i91, %.lr.ph.i.i.i.i.i88 ], [ %99, %.lr.ph.i.i.i.i.i88.preheader ] %100 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.i89, i64 32 %101 = load i32, ptr %100, align 4 %102 = icmp slt i32 %101, %2 @@ -10111,53 +10114,40 @@ _ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit73: ; preds = %49, br i1 %.not.i.i.i.i.i95, label %_ZNSt8_Rb_treeIiSt4pairIKiN6google8protobuf8internal12ExtensionSet9ExtensionEESt10_Select1stIS7_ESt4lessIiESaIS7_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS7_EPSt18_Rb_tree_node_baseRS1_.exit.i.i.i.i96, label %.lr.ph.i.i.i.i.i88, !llvm.loop !13 _ZNSt8_Rb_treeIiSt4pairIKiN6google8protobuf8internal12ExtensionSet9ExtensionEESt10_Select1stIS7_ESt4lessIiESaIS7_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS7_EPSt18_Rb_tree_node_baseRS1_.exit.i.i.i.i96: ; preds = %.lr.ph.i.i.i.i.i88 - %103 = icmp eq ptr %.19.i.i.i.i.i91, %99 - br i1 %103, label %_ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit99, label %_ZNSt3mapIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS4_EEE4findERS8_.exit.i.i97 - -_ZNSt3mapIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS4_EEE4findERS8_.exit.i.i97: ; preds = %_ZNSt8_Rb_treeIiSt4pairIKiN6google8protobuf8internal12ExtensionSet9ExtensionEESt10_Select1stIS7_ESt4lessIiESaIS7_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS7_EPSt18_Rb_tree_node_baseRS1_.exit.i.i.i.i96 - %104 = getelementptr inbounds nuw i8, ptr %.19.i.i.i.i.i91, i64 32 - %105 = load i32, ptr %104, align 4 - %106 = icmp slt i32 %2, %105 - %107 = getelementptr inbounds nuw i8, ptr %.19.i.i.i.i.i91, i64 40 - %spec.select.i.i98 = select i1 %106, ptr null, ptr %107 + %103 = getelementptr inbounds nuw i8, ptr %.19.i.i.i.i.i91, i64 40 br label %_ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit99 108: ; preds = %92 %109 = load i16, ptr %90, align 2 - %110 = zext i16 %109 to i64 - %111 = getelementptr inbounds nuw %"struct.google::protobuf::internal::ExtensionSet::KeyValue", ptr %95, i64 %110 %.not10.i74 = icmp eq i16 %109, 0 - br i1 %.not10.i74, label %_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82, label %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 - -_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75: ; preds = %108, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 - %.017.i.i.i76 = phi ptr [ %.1.i.i.i81, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 ], [ %95, %108 ] - %.01116.i.i.i77 = phi i64 [ %.112.i.i.i80, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 ], [ %110, %108 ] - %112 = lshr i64 %.01116.i.i.i77, 1 - %113 = getelementptr inbounds nuw %"struct.google::protobuf::internal::ExtensionSet::KeyValue", ptr %.017.i.i.i76, i64 %112 - %114 = load i32, ptr %113, align 8 - %115 = icmp slt i32 %114, %2 - %116 = getelementptr inbounds nuw i8, ptr %113, i64 32 - %117 = xor i64 %112, -1 - %118 = add nsw i64 %.01116.i.i.i77, %117 - %.112.i.i.i80 = select i1 %115, i64 %118, i64 %112 - %.1.i.i.i81 = select i1 %115, ptr %116, ptr %.017.i.i.i76 - %119 = icmp sgt i64 %.112.i.i.i80, 0 - br i1 %119, label %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75, label %_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82, !llvm.loop !17 - -_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82: ; preds = %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75, %108 - %.0.lcssa.i.i.i83 = phi ptr [ %95, %108 ], [ %.1.i.i.i81, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 ] - %.not.i84 = icmp eq ptr %.0.lcssa.i.i.i83, %111 - br i1 %.not.i84, label %_ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit99, label %120 - -120: ; preds = %_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82 - %121 = load i32, ptr %.0.lcssa.i.i.i83, align 8 - %122 = icmp eq i32 %121, %2 - %123 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i83, i64 8 - %spec.select.i85 = select i1 %122, ptr %123, ptr null + br i1 %.not10.i74, label %_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82, label %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75.preheader + +_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75.preheader:; preds = %104 + %106 = zext i16 %105 to i64 + br label %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 + +_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75:; preds = %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75.preheader, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 + %.017.i.i.i76 = phi ptr [ %.1.i.i.i81, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 ], [ %95, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75.preheader ] + %.01116.i.i.i77 = phi i64 [ %.112.i.i.i80, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 ], [ %106, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75.preheader ] + %107 = lshr i64 %.01116.i.i.i77, 1 + %108 = getelementptr inbounds nuw %"struct.google::protobuf::internal::ExtensionSet::KeyValue", ptr %.017.i.i.i76, i64 %107 + %109 = load i32, ptr %108, align 8 + %110 = icmp slt i32 %109, %2 + %111 = getelementptr inbounds nuw i8, ptr %108, i64 32 + %112 = xor i64 %107, -1 + %113 = add nsw i64 %.01116.i.i.i77, %112 + %.112.i.i.i80 = select i1 %110, i64 %113, i64 %107 + %.1.i.i.i81 = select i1 %110, ptr %111, ptr %.017.i.i.i76 + %114 = icmp sgt i64 %.112.i.i.i80, 0 + br i1 %114, label %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75, label %_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82, !llvm.loop !17 + +_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82:; preds = %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75, %104 + %.0.lcssa.i.i.i83 = phi ptr [ %95, %104 ], [ %.1.i.i.i81, %_ZSt7advanceIPN6google8protobuf8internal12ExtensionSet8KeyValueElEvRT_T0_.exit.i.i.i75 ] + %115 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i83, i64 8 br label %_ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit99 -_ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit99: ; preds = %120, %_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82, %_ZNSt3mapIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS4_EEE4findERS8_.exit.i.i97, %_ZNSt8_Rb_treeIiSt4pairIKiN6google8protobuf8internal12ExtensionSet9ExtensionEESt10_Select1stIS7_ESt4lessIiESaIS7_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS7_EPSt18_Rb_tree_node_baseRS1_.exit.i.i.i.i96, %96 - %.0.i86 = phi ptr [ null, %_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82 ], [ %spec.select.i85, %120 ], [ null, %_ZNSt8_Rb_treeIiSt4pairIKiN6google8protobuf8internal12ExtensionSet9ExtensionEESt10_Select1stIS7_ESt4lessIiESaIS7_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS7_EPSt18_Rb_tree_node_baseRS1_.exit.i.i.i.i96 ], [ null, %96 ], [ %spec.select.i.i98, %_ZNSt3mapIiN6google8protobuf8internal12ExtensionSet9ExtensionESt4lessIiESaISt4pairIKiS4_EEE4findERS8_.exit.i.i97 ] +_ZN6google8protobuf8internal12ExtensionSet10FindOrNullEi.exit99: ; preds = %_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82, %_ZNSt8_Rb_treeIiSt4pairIKiN6google8protobuf8internal12ExtensionSet9ExtensionEESt10_Select1stIS7_ESt4lessIiESaIS7_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS7_EPSt18_Rb_tree_node_baseRS1_.exit.i.i.i.i96, %96 + %.0.i86 = phi ptr [ null, %96 ], [ %103, %_ZNSt8_Rb_treeIiSt4pairIKiN6google8protobuf8internal12ExtensionSet9ExtensionEESt10_Select1stIS7_ESt4lessIiESaIS7_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS7_EPSt18_Rb_tree_node_baseRS1_.exit.i.i.i.i96 ], [ %115, %_ZSt11lower_boundIPN6google8protobuf8internal12ExtensionSet8KeyValueEiNS4_15FirstComparatorEET_S7_S7_RKT0_T1_.exit.i82 ] invoke void @_ZN6google8protobuf8internal12ExtensionSet9Extension5ClearEv(ptr noundef nonnull align 8 dereferenceable(24) %.0.i60) to label %124 unwind label %128 diff --git a/bench/yosys/optimized/preproc.ll b/bench/yosys/optimized/preproc.ll index 85a03000ac7..c382c0dc6f1 100644 --- a/bench/yosys/optimized/preproc.ll +++ b/bench/yosys/optimized/preproc.ll @@ -6171,7 +6171,6 @@ define linkonce_odr void @_ZNK5Yosys9arg_map_t8get_valsERKNSt7__cxx1112basic_str %24 = load i8, ptr %23, align 8 %25 = trunc i8 %24 to i1 %26 = getelementptr inbounds nuw i8, ptr %22, i64 40 - %spec.select = select i1 %25, ptr %26, ptr null %27 = load ptr, ptr %16, align 8 %28 = load ptr, ptr %3, align 8 %29 = ptrtoint ptr %27 to i64 @@ -6241,8 +6240,8 @@ define linkonce_odr void @_ZNK5Yosys9arg_map_t8get_valsERKNSt7__cxx1112basic_str 58: ; preds = %45 unreachable -_ZN5YosysL9all_whiteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %40, %.lr.ph.i, %37, %.thread, %36 - %.0 = phi ptr [ %35, %36 ], [ %spec.select, %.thread ], [ %26, %37 ], [ %26, %40 ], [ %35, %.lr.ph.i ] +_ZN5YosysL9all_whiteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %.lr.ph.i, %40, %37, %.thread, %36 + %.0 = phi ptr [ %35, %36 ], [ %26, %.thread ], [ %26, %37 ], [ %35, %.lr.ph.i ], [ %26, %40 ] %59 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #23, !noalias !52 %60 = trunc nuw nsw i64 %indvars.iv to i32 invoke void (ptr, ptr, ...) @_ZN5Yosys7stringfB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull @.str.49, ptr noundef %59, i32 noundef %60) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..e5e2a8369d4 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/128466 export COMPTIME_MODE=0 # Please rebase manually