Handle overflow of 64-bit loop conditions.
[oota-llvm.git] / test / Transforms / CondProp / 2009-01-25-SingleEntryPHI.ll
1 ; RUN: llvm-as < %s | opt -condprop | llvm-dis
2 ; PR3405
3 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
4 target triple = "x86_64-unknown-linux-gnu"
5
6 define i32 @main(i32 %argc, i8** %argv) nounwind {
7 entry:
8         br label %bb2
9
10 bb2:            ; preds = %bb.bb2_crit_edge, %entry
11         br i1 false, label %bb5.thread2, label %bb
12
13 bb:             ; preds = %bb2
14         br i1 false, label %bb3, label %bb.bb2_crit_edge
15
16 bb.bb2_crit_edge:               ; preds = %bb
17         br label %bb2
18
19 bb3:            ; preds = %bb
20         %.lcssa4 = phi i1 [ false, %bb ]                ; <i1> [#uses=1]
21         br i1 %.lcssa4, label %bb5.thread, label %bb6
22
23 bb5.thread:             ; preds = %bb3
24         br label %bb7
25
26 bb7:            ; preds = %bb5.thread2, %bb5.thread
27         br label %UnifiedReturnBlock
28
29 bb6:            ; preds = %bb3
30         br label %UnifiedReturnBlock
31
32 bb5.thread2:            ; preds = %bb2
33         br label %bb7
34
35 UnifiedReturnBlock:             ; preds = %bb6, %bb7
36         ret i32 0
37 }