[Support] Fix SaturatingMultiply<T>() to be correct (and fast), Re-enable Unit Tests
[oota-llvm.git] / test / Analysis / ScalarEvolution / trip-count-switch.ll
1 ; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
2
3 declare void @foo()
4
5 define void @test1() nounwind {
6 entry:
7   br label %for.cond
8
9 for.cond:                                         ; preds = %if.end, %entry
10   %i.0 = phi i32 [ 2, %entry ], [ %dec, %if.end ]
11   switch i32 %i.0, label %if.end [
12     i32 0, label %for.end
13     i32 1, label %if.then
14   ]
15
16 if.then:                                          ; preds = %for.cond
17   tail call void @foo()
18   br label %if.end
19
20 if.end:                                           ; preds = %for.cond, %if.then
21   %dec = add nsw i32 %i.0, -1
22   br label %for.cond
23
24 for.end:                                          ; preds = %for.cond
25   ret void
26
27 ; CHECK-LABEL: @test1
28 ; CHECK: Loop %for.cond: backedge-taken count is 2
29 ; CHECK: Loop %for.cond: max backedge-taken count is 2
30 }