[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / Transforms / LICM / no-preheader-test.ll
blob5cfa462dfc4a0ad13359ac1ec256c1d4b963571d
1 ; Test that LICM works when there is not a loop-preheader
2 ; RUN: opt < %s -licm | llvm-dis
3 ; RUN: opt -aa-pipeline=basic-aa -passes='require<aa>,require<targetir>,require<scalar-evolution>,require<opt-remark-emit>,loop(licm)' < %s | llvm-dis
5 define void @testfunc(i32 %i.s, i1 %ifcond) {
6         br i1 %ifcond, label %Then, label %Else
7 Then:           ; preds = %0
8         br label %Loop
9 Else:           ; preds = %0
10         br label %Loop
11 Loop:           ; preds = %Loop, %Else, %Then
12         %j = phi i32 [ 0, %Then ], [ 12, %Else ], [ %Next, %Loop ]              ; <i32> [#uses=1]
13         %i = bitcast i32 %i.s to i32            ; <i32> [#uses=1]
14         %i2 = mul i32 %i, 17            ; <i32> [#uses=1]
15         %Next = add i32 %j, %i2         ; <i32> [#uses=2]
16         %cond = icmp eq i32 %Next, 0            ; <i1> [#uses=1]
17         br i1 %cond, label %Out, label %Loop
18 Out:            ; preds = %Loop
19         ret void