Mercurial > hg > CbC > CbC_llvm
diff test/Transforms/IndVarSimplify/tripcount_infinite.ll @ 0:95c75e76d11b LLVM3.4
LLVM 3.4
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 12 Dec 2013 13:56:28 +0900 |
parents | |
children | afa8332a0e37 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/Transforms/IndVarSimplify/tripcount_infinite.ll Thu Dec 12 13:56:28 2013 +0900 @@ -0,0 +1,38 @@ +; These tests have an infinite trip count. We obviously shouldn't remove the +; loops! :) +; +; RUN: opt < %s -indvars -adce -simplifycfg -S | grep icmp | wc -l > %t2 +; RUN: llvm-as < %s | llvm-dis | grep icmp | wc -l > %t1 +; RUN: diff %t1 %t2 + +;; test for (i = 1; i != 100; i += 2) +define i32 @infinite_linear() { +entry: + br label %loop + +loop: ; preds = %loop, %entry + %i = phi i32 [ 1, %entry ], [ %i.next, %loop ] ; <i32> [#uses=3] + %i.next = add i32 %i, 2 ; <i32> [#uses=1] + %c = icmp ne i32 %i, 100 ; <i1> [#uses=1] + br i1 %c, label %loop, label %loopexit + +loopexit: ; preds = %loop + ret i32 %i +} + +;; test for (i = 1; i*i != 63; ++i) +define i32 @infinite_quadratic() { +entry: + br label %loop + +loop: ; preds = %loop, %entry + %i = phi i32 [ 1, %entry ], [ %i.next, %loop ] ; <i32> [#uses=4] + %isquare = mul i32 %i, %i ; <i32> [#uses=1] + %i.next = add i32 %i, 1 ; <i32> [#uses=1] + %c = icmp ne i32 %isquare, 63 ; <i1> [#uses=1] + br i1 %c, label %loop, label %loopexit + +loopexit: ; preds = %loop + ret i32 %i +} +