219 lines · plain
1; RUN: opt < %s -disable-output -passes=indvars2 3; Do not timeout (and do not crash).4;5; This test case used to take around 10 minutes to run (well, that of course6; depends on which kind of build that is used and on which kind of server the7; test is executed). There is a less reduced version of this test case in8; PR51869 that takes much longer time to execute (I've not seen that one9; terminate within reasonable time). Maybe this test case is reduced a bit too10; much if being considered as a regression tests that would timeout without11; the fix. It can at least be used to show compile time explosion that12; happened when using isKnownPredicate inside ScalarEvolution::isImpliedCond.13 14@v_228 = external dso_local global i32, align 115 16; Function Attrs: nounwind17define dso_local i16 @main(ptr %0, ptr %1, ptr %2, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7, ptr %8, ptr %9, ptr %10, i1 %11) #0 {18 br i1 %11, label %27, label %1319 2013: ; preds = %1221 %14 = load i32, ptr @v_228, align 122 %15 = trunc i32 %14 to i1623 %16 = mul i16 %15, 224 %17 = sub i16 10, %1625 %18 = icmp ult i16 10, %1626 %19 = icmp ult i16 %17, 127 %20 = or i1 %18, %1928 br i1 %20, label %139, label %2129 3021: ; preds = %1331 %22 = add i16 %16, 132 %23 = sub i16 10, %2233 %24 = icmp ult i16 10, %2234 %25 = icmp ult i16 %23, 135 %26 = or i1 %24, %2536 br i1 %26, label %139, label %2737 3827: ; preds = %21, %1239 %28 = load i16, ptr %1, align 140 br label %2941 4229: ; preds = %29, %2743 %30 = phi i16 [ %28, %27 ], [ %31, %29 ]44 %31 = add i16 %30, 145 %32 = icmp slt i16 %31, 2846 br i1 %32, label %29, label %3347 4833: ; preds = %2949 %34 = load i16, ptr %2, align 150 br label %3551 5235: ; preds = %43, %3353 %36 = phi i16 [ %34, %33 ], [ %44, %43 ]54 %37 = sext i16 %36 to i3255 %38 = mul i32 %37, 256 %39 = sub i32 56, %3857 %40 = icmp ult i32 56, %3858 %41 = icmp ult i32 %39, 259 %42 = or i1 %40, %4160 br i1 %42, label %139, label %4361 6243: ; preds = %3563 %44 = add i16 %36, 164 %45 = icmp slt i16 %44, 2865 br i1 %45, label %35, label %4666 6746: ; preds = %4368 %47 = load i16, ptr %3, align 169 br label %4870 7148: ; preds = %55, %4672 %49 = phi i16 [ %47, %46 ], [ %56, %55 ]73 %50 = mul i16 %49, 474 %51 = sub i16 28, %5075 %52 = icmp ult i16 28, %5076 %53 = icmp ult i16 %51, 477 %54 = or i1 %52, %5378 br i1 %54, label %139, label %5579 8055: ; preds = %4881 %56 = add i16 %49, 182 %57 = icmp slt i16 %56, 783 br i1 %57, label %48, label %5884 8558: ; preds = %5586 %59 = load i16, ptr %4, align 187 br label %6088 8960: ; preds = %67, %5890 %61 = phi i16 [ %59, %58 ], [ %68, %67 ]91 %62 = sext i16 %61 to i3292 %63 = sub i32 1, %6293 %64 = icmp ult i32 1, %6294 %65 = icmp ult i32 %63, 195 %66 = or i1 %64, %6596 br i1 %66, label %139, label %6797 9867: ; preds = %6099 %68 = add i16 %61, 1100 %69 = icmp slt i16 %68, 1101 br i1 %69, label %60, label %70102 10370: ; preds = %67104 %71 = load i16, ptr %5, align 1105 br label %72106 10772: ; preds = %79, %70108 %73 = phi i16 [ %71, %70 ], [ %80, %79 ]109 %74 = sext i16 %73 to i32110 %75 = sub i32 1, %74111 %76 = icmp ult i32 1, %74112 %77 = icmp ult i32 %75, 1113 %78 = or i1 %76, %77114 br i1 %78, label %139, label %79115 11679: ; preds = %72117 %80 = add i16 %73, 1118 %81 = icmp slt i16 %80, 1119 br i1 %81, label %72, label %82120 12182: ; preds = %79122 %83 = load i16, ptr %6, align 1123 br label %84124 12584: ; preds = %91, %82126 %85 = phi i16 [ %83, %82 ], [ %92, %91 ]127 %86 = sext i16 %85 to i32128 %87 = sub i32 1, %86129 %88 = icmp ult i32 1, %86130 %89 = icmp ult i32 %87, 1131 %90 = or i1 %88, %89132 br i1 %90, label %139, label %91133 13491: ; preds = %84135 %92 = add i16 %85, 1136 %93 = icmp slt i16 %92, 1137 br i1 %93, label %84, label %94138 13994: ; preds = %91140 %95 = load i16, ptr %7, align 1141 br label %96142 14396: ; preds = %103, %94144 %97 = phi i16 [ %95, %94 ], [ %104, %103 ]145 %98 = sext i16 %97 to i32146 %99 = sub i32 1, %98147 %100 = icmp ult i32 1, %98148 %101 = icmp ult i32 %99, 1149 %102 = or i1 %100, %101150 br i1 %102, label %139, label %103151 152103: ; preds = %96153 %104 = add i16 %97, 1154 %105 = icmp slt i16 %104, 1155 br i1 %105, label %96, label %106156 157106: ; preds = %103158 %107 = load i16, ptr %8, align 1159 br label %108160 161108: ; preds = %115, %106162 %109 = phi i16 [ %107, %106 ], [ %116, %115 ]163 %110 = mul i16 %109, 4164 %111 = sub i16 24, %110165 %112 = icmp ult i16 24, %110166 %113 = icmp ult i16 %111, 4167 %114 = or i1 %112, %113168 br i1 %114, label %139, label %115169 170115: ; preds = %108171 %116 = add i16 %109, 1172 %117 = icmp slt i16 %116, 6173 br i1 %117, label %108, label %118174 175118: ; preds = %115176 %119 = load i16, ptr %9, align 1177 br label %120178 179120: ; preds = %128, %118180 %121 = phi i16 [ %119, %118 ], [ %129, %128 ]181 %122 = sext i16 %121 to i32182 %123 = mul i32 %122, 2183 %124 = sub i32 4, %123184 %125 = icmp ult i32 4, %123185 %126 = icmp ult i32 %124, 2186 %127 = or i1 %125, %126187 br i1 %127, label %139, label %128188 189128: ; preds = %120190 %129 = add i16 %121, 1191 %130 = icmp slt i16 %129, 2192 br i1 %130, label %120, label %131193 194131: ; preds = %128195 %132 = load i16, ptr %10, align 1196 br label %133197 198133: ; preds = %133, %131199 %134 = phi i16 [ %132, %131 ], [ %135, %133 ]200 %135 = add i16 %134, 1201 %136 = icmp slt i16 %135, 6202 br i1 %136, label %133, label %137203 204137: ; preds = %133205 %138 = load i16, ptr %0, align 1206 ret i16 %138207 208139: ; preds = %120, %108, %96, %84, %72, %60, %48, %35, %21, %13209 call void @llvm.trap() #2210 unreachable211}212 213; Function Attrs: cold noreturn nounwind214declare void @llvm.trap() #1215 216attributes #0 = { nounwind }217attributes #1 = { cold noreturn nounwind }218attributes #2 = { noreturn nounwind }219