1; These tests have an infinite trip count.  We obviously shouldn't remove the
2; loops!  :)
3;
4; RUN: opt < %s -indvars -adce -simplifycfg -S | grep icmp | wc -l > %t2
5; RUN: llvm-as < %s | llvm-dis | grep icmp | wc -l > %t1
6; RUN: diff %t1 %t2
7
8;; test for (i = 1; i != 100; i += 2)
9define i32 @infinite_linear() {
10entry:
11        br label %loop
12
13loop:           ; preds = %loop, %entry
14        %i = phi i32 [ 1, %entry ], [ %i.next, %loop ]          ; <i32> [#uses=3]
15        %i.next = add i32 %i, 2         ; <i32> [#uses=1]
16        %c = icmp ne i32 %i, 100                ; <i1> [#uses=1]
17        br i1 %c, label %loop, label %loopexit
18
19loopexit:               ; preds = %loop
20        ret i32 %i
21}
22
23;; test for (i = 1; i*i != 63; ++i)
24define i32 @infinite_quadratic() {
25entry:
26        br label %loop
27
28loop:           ; preds = %loop, %entry
29        %i = phi i32 [ 1, %entry ], [ %i.next, %loop ]          ; <i32> [#uses=4]
30        %isquare = mul i32 %i, %i               ; <i32> [#uses=1]
31        %i.next = add i32 %i, 1         ; <i32> [#uses=1]
32        %c = icmp ne i32 %isquare, 63           ; <i1> [#uses=1]
33        br i1 %c, label %loop, label %loopexit
34
35loopexit:               ; preds = %loop
36        ret i32 %i
37}
38
39