Use the llvm-upgrade program to upgrade llvm assembly.
[oota-llvm.git] / test / Transforms / Mem2Reg / 2005-11-28-Crash.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | opt -mem2reg -disable-output
2 ; PR670
3
4 void %printk(int, ...) {
5 entry:
6         %flags = alloca uint            ; <uint*> [#uses=2]
7         br bool false, label %then.0, label %endif.0
8
9 then.0:         ; preds = %entry
10         br label %endif.0
11
12 endif.0:                ; preds = %then.0, %entry
13         store uint 0, uint* %flags
14         br label %loopentry
15
16 loopentry:              ; preds = %endif.3, %endif.0
17         br bool false, label %no_exit, label %loopexit
18
19 no_exit:                ; preds = %loopentry
20         br bool false, label %then.1, label %endif.1
21
22 then.1:         ; preds = %no_exit
23         br bool false, label %shortcirc_done.0, label %shortcirc_next.0
24
25 shortcirc_next.0:               ; preds = %then.1
26         br label %shortcirc_done.0
27
28 shortcirc_done.0:               ; preds = %shortcirc_next.0, %then.1
29         br bool false, label %shortcirc_done.1, label %shortcirc_next.1
30
31 shortcirc_next.1:               ; preds = %shortcirc_done.0
32         br label %shortcirc_done.1
33
34 shortcirc_done.1:               ; preds = %shortcirc_next.1, %shortcirc_done.0
35         br bool false, label %shortcirc_done.2, label %shortcirc_next.2
36
37 shortcirc_next.2:               ; preds = %shortcirc_done.1
38         br label %shortcirc_done.2
39
40 shortcirc_done.2:               ; preds = %shortcirc_next.2, %shortcirc_done.1
41         br bool false, label %then.2, label %endif.2
42
43 then.2:         ; preds = %shortcirc_done.2
44         br label %endif.2
45
46 endif.2:                ; preds = %then.2, %shortcirc_done.2
47         br label %endif.1
48
49 endif.1:                ; preds = %endif.2, %no_exit
50         br bool false, label %then.3, label %endif.3
51
52 then.3:         ; preds = %endif.1
53         br label %endif.3
54
55 endif.3:                ; preds = %then.3, %endif.1
56         br label %loopentry
57
58 loopexit:               ; preds = %loopentry
59         br label %endif.4
60
61 then.4:         ; No predecessors!
62         %tmp.61 = load uint* %flags             ; <uint> [#uses=0]
63         br label %out
64
65 dead_block_after_goto:          ; No predecessors!
66         br label %endif.4
67
68 endif.4:                ; preds = %dead_block_after_goto, %loopexit
69         br bool false, label %then.5, label %else
70
71 then.5:         ; preds = %endif.4
72         br label %endif.5
73
74 else:           ; preds = %endif.4
75         br label %endif.5
76
77 endif.5:                ; preds = %else, %then.5
78         br label %out
79
80 out:            ; preds = %endif.5, %then.4
81         br label %return
82
83 after_ret:              ; No predecessors!
84         br label %return
85
86 return:         ; preds = %after_ret, %out
87         ret void
88 }