108619006SBjorn Pettersson; RUN: opt < %s -disable-output -passes=indvars
208619006SBjorn Pettersson
308619006SBjorn Pettersson; Do not timeout (and do not crash).
408619006SBjorn Pettersson;
508619006SBjorn Pettersson; This test case used to take around 10 minutes to run (well, that of course
608619006SBjorn Pettersson; depends on which kind of build that is used and on which kind of server the
708619006SBjorn Pettersson; test is executed). There is a less reduced version of this test case in
808619006SBjorn Pettersson; PR51869 that takes much longer time to execute (I've not seen that one
908619006SBjorn Pettersson; terminate within reasonable time). Maybe this test case is reduced a bit too
1008619006SBjorn Pettersson; much if being considered as a regression tests that would timeout without
1108619006SBjorn Pettersson; the fix. It can at least be used to show compile time explosion that
1208619006SBjorn Pettersson; happened when using isKnownPredicate inside ScalarEvolution::isImpliedCond.
1308619006SBjorn Pettersson
1408619006SBjorn Pettersson@v_228 = external dso_local global i32, align 1
1508619006SBjorn Pettersson
1608619006SBjorn Pettersson; Function Attrs: nounwind
17*92619956SNikita Popovdefine 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 {
1808619006SBjorn Pettersson  br i1 %11, label %27, label %13
1908619006SBjorn Pettersson
2008619006SBjorn Pettersson13:                                               ; preds = %12
21*92619956SNikita Popov  %14 = load i32, ptr @v_228, align 1
2208619006SBjorn Pettersson  %15 = trunc i32 %14 to i16
2308619006SBjorn Pettersson  %16 = mul i16 %15, 2
2408619006SBjorn Pettersson  %17 = sub i16 10, %16
2508619006SBjorn Pettersson  %18 = icmp ult i16 10, %16
2608619006SBjorn Pettersson  %19 = icmp ult i16 %17, 1
2708619006SBjorn Pettersson  %20 = or i1 %18, %19
2808619006SBjorn Pettersson  br i1 %20, label %139, label %21
2908619006SBjorn Pettersson
3008619006SBjorn Pettersson21:                                               ; preds = %13
3108619006SBjorn Pettersson  %22 = add i16 %16, 1
3208619006SBjorn Pettersson  %23 = sub i16 10, %22
3308619006SBjorn Pettersson  %24 = icmp ult i16 10, %22
3408619006SBjorn Pettersson  %25 = icmp ult i16 %23, 1
3508619006SBjorn Pettersson  %26 = or i1 %24, %25
3608619006SBjorn Pettersson  br i1 %26, label %139, label %27
3708619006SBjorn Pettersson
3808619006SBjorn Pettersson27:                                               ; preds = %21, %12
39*92619956SNikita Popov  %28 = load i16, ptr %1, align 1
4008619006SBjorn Pettersson  br label %29
4108619006SBjorn Pettersson
4208619006SBjorn Pettersson29:                                               ; preds = %29, %27
4308619006SBjorn Pettersson  %30 = phi i16 [ %28, %27 ], [ %31, %29 ]
4408619006SBjorn Pettersson  %31 = add i16 %30, 1
4508619006SBjorn Pettersson  %32 = icmp slt i16 %31, 28
4608619006SBjorn Pettersson  br i1 %32, label %29, label %33
4708619006SBjorn Pettersson
4808619006SBjorn Pettersson33:                                               ; preds = %29
49*92619956SNikita Popov  %34 = load i16, ptr %2, align 1
5008619006SBjorn Pettersson  br label %35
5108619006SBjorn Pettersson
5208619006SBjorn Pettersson35:                                               ; preds = %43, %33
5308619006SBjorn Pettersson  %36 = phi i16 [ %34, %33 ], [ %44, %43 ]
5408619006SBjorn Pettersson  %37 = sext i16 %36 to i32
5508619006SBjorn Pettersson  %38 = mul i32 %37, 2
5608619006SBjorn Pettersson  %39 = sub i32 56, %38
5708619006SBjorn Pettersson  %40 = icmp ult i32 56, %38
5808619006SBjorn Pettersson  %41 = icmp ult i32 %39, 2
5908619006SBjorn Pettersson  %42 = or i1 %40, %41
6008619006SBjorn Pettersson  br i1 %42, label %139, label %43
6108619006SBjorn Pettersson
6208619006SBjorn Pettersson43:                                               ; preds = %35
6308619006SBjorn Pettersson  %44 = add i16 %36, 1
6408619006SBjorn Pettersson  %45 = icmp slt i16 %44, 28
6508619006SBjorn Pettersson  br i1 %45, label %35, label %46
6608619006SBjorn Pettersson
6708619006SBjorn Pettersson46:                                               ; preds = %43
68*92619956SNikita Popov  %47 = load i16, ptr %3, align 1
6908619006SBjorn Pettersson  br label %48
7008619006SBjorn Pettersson
7108619006SBjorn Pettersson48:                                               ; preds = %55, %46
7208619006SBjorn Pettersson  %49 = phi i16 [ %47, %46 ], [ %56, %55 ]
7308619006SBjorn Pettersson  %50 = mul i16 %49, 4
7408619006SBjorn Pettersson  %51 = sub i16 28, %50
7508619006SBjorn Pettersson  %52 = icmp ult i16 28, %50
7608619006SBjorn Pettersson  %53 = icmp ult i16 %51, 4
7708619006SBjorn Pettersson  %54 = or i1 %52, %53
7808619006SBjorn Pettersson  br i1 %54, label %139, label %55
7908619006SBjorn Pettersson
8008619006SBjorn Pettersson55:                                               ; preds = %48
8108619006SBjorn Pettersson  %56 = add i16 %49, 1
8208619006SBjorn Pettersson  %57 = icmp slt i16 %56, 7
8308619006SBjorn Pettersson  br i1 %57, label %48, label %58
8408619006SBjorn Pettersson
8508619006SBjorn Pettersson58:                                               ; preds = %55
86*92619956SNikita Popov  %59 = load i16, ptr %4, align 1
8708619006SBjorn Pettersson  br label %60
8808619006SBjorn Pettersson
8908619006SBjorn Pettersson60:                                               ; preds = %67, %58
9008619006SBjorn Pettersson  %61 = phi i16 [ %59, %58 ], [ %68, %67 ]
9108619006SBjorn Pettersson  %62 = sext i16 %61 to i32
9208619006SBjorn Pettersson  %63 = sub i32 1, %62
9308619006SBjorn Pettersson  %64 = icmp ult i32 1, %62
9408619006SBjorn Pettersson  %65 = icmp ult i32 %63, 1
9508619006SBjorn Pettersson  %66 = or i1 %64, %65
9608619006SBjorn Pettersson  br i1 %66, label %139, label %67
9708619006SBjorn Pettersson
9808619006SBjorn Pettersson67:                                               ; preds = %60
9908619006SBjorn Pettersson  %68 = add i16 %61, 1
10008619006SBjorn Pettersson  %69 = icmp slt i16 %68, 1
10108619006SBjorn Pettersson  br i1 %69, label %60, label %70
10208619006SBjorn Pettersson
10308619006SBjorn Pettersson70:                                               ; preds = %67
104*92619956SNikita Popov  %71 = load i16, ptr %5, align 1
10508619006SBjorn Pettersson  br label %72
10608619006SBjorn Pettersson
10708619006SBjorn Pettersson72:                                               ; preds = %79, %70
10808619006SBjorn Pettersson  %73 = phi i16 [ %71, %70 ], [ %80, %79 ]
10908619006SBjorn Pettersson  %74 = sext i16 %73 to i32
11008619006SBjorn Pettersson  %75 = sub i32 1, %74
11108619006SBjorn Pettersson  %76 = icmp ult i32 1, %74
11208619006SBjorn Pettersson  %77 = icmp ult i32 %75, 1
11308619006SBjorn Pettersson  %78 = or i1 %76, %77
11408619006SBjorn Pettersson  br i1 %78, label %139, label %79
11508619006SBjorn Pettersson
11608619006SBjorn Pettersson79:                                               ; preds = %72
11708619006SBjorn Pettersson  %80 = add i16 %73, 1
11808619006SBjorn Pettersson  %81 = icmp slt i16 %80, 1
11908619006SBjorn Pettersson  br i1 %81, label %72, label %82
12008619006SBjorn Pettersson
12108619006SBjorn Pettersson82:                                               ; preds = %79
122*92619956SNikita Popov  %83 = load i16, ptr %6, align 1
12308619006SBjorn Pettersson  br label %84
12408619006SBjorn Pettersson
12508619006SBjorn Pettersson84:                                               ; preds = %91, %82
12608619006SBjorn Pettersson  %85 = phi i16 [ %83, %82 ], [ %92, %91 ]
12708619006SBjorn Pettersson  %86 = sext i16 %85 to i32
12808619006SBjorn Pettersson  %87 = sub i32 1, %86
12908619006SBjorn Pettersson  %88 = icmp ult i32 1, %86
13008619006SBjorn Pettersson  %89 = icmp ult i32 %87, 1
13108619006SBjorn Pettersson  %90 = or i1 %88, %89
13208619006SBjorn Pettersson  br i1 %90, label %139, label %91
13308619006SBjorn Pettersson
13408619006SBjorn Pettersson91:                                               ; preds = %84
13508619006SBjorn Pettersson  %92 = add i16 %85, 1
13608619006SBjorn Pettersson  %93 = icmp slt i16 %92, 1
13708619006SBjorn Pettersson  br i1 %93, label %84, label %94
13808619006SBjorn Pettersson
13908619006SBjorn Pettersson94:                                               ; preds = %91
140*92619956SNikita Popov  %95 = load i16, ptr %7, align 1
14108619006SBjorn Pettersson  br label %96
14208619006SBjorn Pettersson
14308619006SBjorn Pettersson96:                                               ; preds = %103, %94
14408619006SBjorn Pettersson  %97 = phi i16 [ %95, %94 ], [ %104, %103 ]
14508619006SBjorn Pettersson  %98 = sext i16 %97 to i32
14608619006SBjorn Pettersson  %99 = sub i32 1, %98
14708619006SBjorn Pettersson  %100 = icmp ult i32 1, %98
14808619006SBjorn Pettersson  %101 = icmp ult i32 %99, 1
14908619006SBjorn Pettersson  %102 = or i1 %100, %101
15008619006SBjorn Pettersson  br i1 %102, label %139, label %103
15108619006SBjorn Pettersson
15208619006SBjorn Pettersson103:                                              ; preds = %96
15308619006SBjorn Pettersson  %104 = add i16 %97, 1
15408619006SBjorn Pettersson  %105 = icmp slt i16 %104, 1
15508619006SBjorn Pettersson  br i1 %105, label %96, label %106
15608619006SBjorn Pettersson
15708619006SBjorn Pettersson106:                                              ; preds = %103
158*92619956SNikita Popov  %107 = load i16, ptr %8, align 1
15908619006SBjorn Pettersson  br label %108
16008619006SBjorn Pettersson
16108619006SBjorn Pettersson108:                                              ; preds = %115, %106
16208619006SBjorn Pettersson  %109 = phi i16 [ %107, %106 ], [ %116, %115 ]
16308619006SBjorn Pettersson  %110 = mul i16 %109, 4
16408619006SBjorn Pettersson  %111 = sub i16 24, %110
16508619006SBjorn Pettersson  %112 = icmp ult i16 24, %110
16608619006SBjorn Pettersson  %113 = icmp ult i16 %111, 4
16708619006SBjorn Pettersson  %114 = or i1 %112, %113
16808619006SBjorn Pettersson  br i1 %114, label %139, label %115
16908619006SBjorn Pettersson
17008619006SBjorn Pettersson115:                                              ; preds = %108
17108619006SBjorn Pettersson  %116 = add i16 %109, 1
17208619006SBjorn Pettersson  %117 = icmp slt i16 %116, 6
17308619006SBjorn Pettersson  br i1 %117, label %108, label %118
17408619006SBjorn Pettersson
17508619006SBjorn Pettersson118:                                              ; preds = %115
176*92619956SNikita Popov  %119 = load i16, ptr %9, align 1
17708619006SBjorn Pettersson  br label %120
17808619006SBjorn Pettersson
17908619006SBjorn Pettersson120:                                              ; preds = %128, %118
18008619006SBjorn Pettersson  %121 = phi i16 [ %119, %118 ], [ %129, %128 ]
18108619006SBjorn Pettersson  %122 = sext i16 %121 to i32
18208619006SBjorn Pettersson  %123 = mul i32 %122, 2
18308619006SBjorn Pettersson  %124 = sub i32 4, %123
18408619006SBjorn Pettersson  %125 = icmp ult i32 4, %123
18508619006SBjorn Pettersson  %126 = icmp ult i32 %124, 2
18608619006SBjorn Pettersson  %127 = or i1 %125, %126
18708619006SBjorn Pettersson  br i1 %127, label %139, label %128
18808619006SBjorn Pettersson
18908619006SBjorn Pettersson128:                                              ; preds = %120
19008619006SBjorn Pettersson  %129 = add i16 %121, 1
19108619006SBjorn Pettersson  %130 = icmp slt i16 %129, 2
19208619006SBjorn Pettersson  br i1 %130, label %120, label %131
19308619006SBjorn Pettersson
19408619006SBjorn Pettersson131:                                              ; preds = %128
195*92619956SNikita Popov  %132 = load i16, ptr %10, align 1
19608619006SBjorn Pettersson  br label %133
19708619006SBjorn Pettersson
19808619006SBjorn Pettersson133:                                              ; preds = %133, %131
19908619006SBjorn Pettersson  %134 = phi i16 [ %132, %131 ], [ %135, %133 ]
20008619006SBjorn Pettersson  %135 = add i16 %134, 1
20108619006SBjorn Pettersson  %136 = icmp slt i16 %135, 6
20208619006SBjorn Pettersson  br i1 %136, label %133, label %137
20308619006SBjorn Pettersson
20408619006SBjorn Pettersson137:                                              ; preds = %133
205*92619956SNikita Popov  %138 = load i16, ptr %0, align 1
20608619006SBjorn Pettersson  ret i16 %138
20708619006SBjorn Pettersson
20808619006SBjorn Pettersson139:                                              ; preds = %120, %108, %96, %84, %72, %60, %48, %35, %21, %13
20908619006SBjorn Pettersson  call void @llvm.trap() #2
21008619006SBjorn Pettersson  unreachable
21108619006SBjorn Pettersson}
21208619006SBjorn Pettersson
21308619006SBjorn Pettersson; Function Attrs: cold noreturn nounwind
21408619006SBjorn Petterssondeclare void @llvm.trap() #1
21508619006SBjorn Pettersson
21608619006SBjorn Petterssonattributes #0 = { nounwind }
21708619006SBjorn Petterssonattributes #1 = { cold noreturn nounwind }
21808619006SBjorn Petterssonattributes #2 = { noreturn nounwind }
219