xref: /llvm-project/llvm/test/Transforms/ADCE/2003-06-24-BadSuccessor.ll (revision 563cf93776e7100aabe6d91afdcd7e7405ee7338)
1; RUN: opt < %s -passes=adce -disable-output
2; RUN: opt < %s -passes=adce -adce-remove-loops=true -disable-output
3
4target datalayout = "e-p:32:32"
5	%struct..CppObjTypeDesc = type { i32, i16, i16 }
6	%struct..TypeToken = type { i32, i16, i16 }
7
8define i32 @C_ReFaxToDb() {
9entry:
10	br i1 false, label %endif.0, label %then.0
11
12then.0:		; preds = %entry
13	ret i32 0
14
15endif.0:		; preds = %entry
16	br i1 false, label %then.11, label %then.4
17
18then.4:		; preds = %endif.0
19	ret i32 0
20
21then.11:		; preds = %endif.0
22	br i1 false, label %loopentry.0, label %else.2
23
24loopentry.0:		; preds = %loopentry.1, %endif.14, %then.11
25	br i1 false, label %endif.14, label %loopexit.0
26
27endif.14:		; preds = %loopentry.0
28	br i1 false, label %loopentry.1, label %loopentry.0
29
30loopentry.1:		; preds = %then.53, %endif.14
31	%SubArrays.10 = phi ptr [ %SubArrays.8, %then.53 ], [ null, %endif.14 ]		; <ptr> [#uses=3]
32	br i1 false, label %no_exit.1, label %loopentry.0
33
34no_exit.1:		; preds = %loopentry.1
35; CHECK: switch
36	switch i32 0, label %label.17 [
37		 i32 2, label %label.11
38		 i32 19, label %label.10
39	]
40
41label.10:		; preds = %no_exit.1
42	br i1 false, label %then.43, label %endif.43
43
44then.43:		; preds = %label.10
45	br i1 false, label %then.44, label %endif.44
46
47then.44:		; preds = %then.43
48	br i1 false, label %shortcirc_next.4, label %endif.45
49
50shortcirc_next.4:		; preds = %then.44
51	br i1 false, label %no_exit.2, label %loopexit.2
52
53no_exit.2:		; preds = %shortcirc_next.4
54	%tmp.897 = getelementptr i32, ptr %SubArrays.10, i64 0		; <ptr> [#uses=1]
55	%tmp.899 = load i32, ptr %tmp.897		; <i32> [#uses=1]
56	store i32 %tmp.899, ptr null
57	ret i32 0
58
59loopexit.2:		; preds = %shortcirc_next.4
60	ret i32 0
61
62endif.45:		; preds = %then.44
63	ret i32 0
64
65endif.44:		; preds = %then.43
66	ret i32 0
67
68endif.43:		; preds = %label.10
69	ret i32 0
70
71label.11:		; preds = %no_exit.1
72	ret i32 0
73
74label.17:		; preds = %no_exit.1
75	br i1 false, label %then.53, label %shortcirc_next.7
76
77shortcirc_next.7:		; preds = %label.17
78	br i1 false, label %then.53, label %shortcirc_next.8
79
80shortcirc_next.8:		; preds = %shortcirc_next.7
81	ret i32 0
82
83then.53:		; preds = %shortcirc_next.7, %label.17
84	%SubArrays.8 = phi ptr [ %SubArrays.10, %shortcirc_next.7 ], [ %SubArrays.10, %label.17 ]		; <ptr> [#uses=1]
85	%tmp.1023 = load i32, ptr null		; <i32> [#uses=1]
86	switch i32 %tmp.1023, label %loopentry.1 [
87	]
88
89loopexit.0:		; preds = %loopentry.0
90	ret i32 0
91
92else.2:		; preds = %then.11
93	ret i32 0
94}
95