New testcase for a bug exposed by the ipsccp pass, causing dparser to fail
[oota-llvm.git] / test / Transforms / SimplifyCFG / 2004-12-10-SimplifyCFGCrash.ll
1 target endian = little
2 target pointersize = 32
3         %struct.D_Sym = type { sbyte*, int, uint, %struct.D_Sym*, %struct.D_Sym*, uint }
4         %struct.D_SymHash = type { int, int, { uint, uint, %struct.D_Sym**, [3 x %struct.D_Sym*] } }
5
6 implementation   ; Functions:
7
8 void %symhash_add() {
9 entry:
10         br bool undef, label %then.0, label %UnifiedReturnBlock
11
12 then.0:         ; preds = %entry
13         br bool undef, label %loopentry.2, label %loopentry.1.preheader
14
15 loopentry.1.preheader:          ; preds = %then.0
16         br label %loopentry.1.outer
17
18 loopentry.1.outer:              ; preds = %loopentry.1.preheader, %loopexit.1
19         br label %loopentry.1
20
21 loopentry.1:            ; preds = %loopentry.1.outer, %then.1, %then.3, %then.4, %endif.1
22         br bool undef, label %loopexit.1, label %no_exit.1
23
24 no_exit.1:              ; preds = %loopentry.1
25         br bool undef, label %then.1, label %else.0
26
27 then.1:         ; preds = %no_exit.1
28         br label %loopentry.1
29
30 else.0:         ; preds = %no_exit.1
31         br bool undef, label %then.2, label %else.1
32
33 then.2:         ; preds = %else.0
34         br bool undef, label %then.3, label %endif.1
35
36 then.3:         ; preds = %then.2
37         br label %loopentry.1
38
39 else.1:         ; preds = %else.0
40         br bool undef, label %endif.1, label %then.4
41
42 then.4:         ; preds = %else.1
43         br label %loopentry.1
44
45 endif.1:                ; preds = %then.2, %else.1
46         br label %loopentry.1
47
48 loopexit.1:             ; preds = %loopentry.1
49         br bool undef, label %loopentry.1.outer, label %loopentry.2
50
51 loopentry.2:            ; preds = %then.0, %loopexit.1, %no_exit.2
52         br bool undef, label %loopexit.2, label %no_exit.2
53
54 no_exit.2:              ; preds = %loopentry.2
55         br label %loopentry.2
56
57 loopexit.2:             ; preds = %loopentry.2
58         ret void
59
60 UnifiedReturnBlock:             ; preds = %entry
61         ret void
62 }