xref: /aosp_15_r20/external/llvm/test/Transforms/SimplifyCFG/2005-06-16-PHICrash.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -simplifycfg -disable-output
2*9880d681SAndroid Build Coastguard Worker; PR584
3*9880d681SAndroid Build Coastguard Worker@g_38098584 = external global i32		; <i32*> [#uses=1]
4*9880d681SAndroid Build Coastguard Worker@g_60187400 = external global i32		; <i32*> [#uses=1]
5*9880d681SAndroid Build Coastguard Worker@g_59182229 = external global i32		; <i32*> [#uses=2]
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine i32 @_Z13func_26556482h(i8 %l_88173906) {
8*9880d681SAndroid Build Coastguard Workerentry:
9*9880d681SAndroid Build Coastguard Worker	%tmp.1 = bitcast i8 %l_88173906 to i8		; <i8> [#uses=2]
10*9880d681SAndroid Build Coastguard Worker	%tmp.3 = icmp eq i8 %l_88173906, 0		; <i1> [#uses=1]
11*9880d681SAndroid Build Coastguard Worker	br i1 %tmp.3, label %else.0, label %then.0
12*9880d681SAndroid Build Coastguard Workerthen.0:		; preds = %entry
13*9880d681SAndroid Build Coastguard Worker	%tmp.5 = icmp eq i8 %l_88173906, 0		; <i1> [#uses=1]
14*9880d681SAndroid Build Coastguard Worker	br i1 %tmp.5, label %else.1, label %then.1
15*9880d681SAndroid Build Coastguard Workerthen.1:		; preds = %then.0
16*9880d681SAndroid Build Coastguard Worker	br label %return
17*9880d681SAndroid Build Coastguard Workerelse.1:		; preds = %then.0
18*9880d681SAndroid Build Coastguard Worker	br label %loopentry.0
19*9880d681SAndroid Build Coastguard Workerloopentry.0:		; preds = %no_exit.0, %else.1
20*9880d681SAndroid Build Coastguard Worker	%i.0.1 = phi i32 [ 0, %else.1 ], [ %inc.0, %no_exit.0 ]		; <i32> [#uses=2]
21*9880d681SAndroid Build Coastguard Worker	%tmp.9 = icmp sgt i32 %i.0.1, 99		; <i1> [#uses=1]
22*9880d681SAndroid Build Coastguard Worker	br i1 %tmp.9, label %endif.0, label %no_exit.0
23*9880d681SAndroid Build Coastguard Workerno_exit.0:		; preds = %loopentry.0
24*9880d681SAndroid Build Coastguard Worker	%inc.0 = add i32 %i.0.1, 1		; <i32> [#uses=1]
25*9880d681SAndroid Build Coastguard Worker	br label %loopentry.0
26*9880d681SAndroid Build Coastguard Workerelse.0:		; preds = %entry
27*9880d681SAndroid Build Coastguard Worker	%tmp.12 = sext i8 %tmp.1 to i32		; <i32> [#uses=1]
28*9880d681SAndroid Build Coastguard Worker	br label %return
29*9880d681SAndroid Build Coastguard Workerendif.0:		; preds = %loopentry.0
30*9880d681SAndroid Build Coastguard Worker	%tmp.14 = sext i8 %tmp.1 to i32		; <i32> [#uses=1]
31*9880d681SAndroid Build Coastguard Worker	%tmp.16 = zext i8 %l_88173906 to i32		; <i32> [#uses=1]
32*9880d681SAndroid Build Coastguard Worker	%tmp.17 = icmp sgt i32 %tmp.14, %tmp.16		; <i1> [#uses=1]
33*9880d681SAndroid Build Coastguard Worker	%tmp.19 = load i32, i32* @g_59182229		; <i32> [#uses=2]
34*9880d681SAndroid Build Coastguard Worker	br i1 %tmp.17, label %cond_true, label %cond_false
35*9880d681SAndroid Build Coastguard Workercond_true:		; preds = %endif.0
36*9880d681SAndroid Build Coastguard Worker	%tmp.20 = icmp ne i32 %tmp.19, 1		; <i1> [#uses=1]
37*9880d681SAndroid Build Coastguard Worker	br label %cond_continue
38*9880d681SAndroid Build Coastguard Workercond_false:		; preds = %endif.0
39*9880d681SAndroid Build Coastguard Worker	%tmp.22 = icmp ne i32 %tmp.19, 0		; <i1> [#uses=1]
40*9880d681SAndroid Build Coastguard Worker	br label %cond_continue
41*9880d681SAndroid Build Coastguard Workercond_continue:		; preds = %cond_false, %cond_true
42*9880d681SAndroid Build Coastguard Worker	%mem_tmp.0 = phi i1 [ %tmp.20, %cond_true ], [ %tmp.22, %cond_false ]		; <i1> [#uses=1]
43*9880d681SAndroid Build Coastguard Worker	br i1 %mem_tmp.0, label %then.2, label %else.2
44*9880d681SAndroid Build Coastguard Workerthen.2:		; preds = %cond_continue
45*9880d681SAndroid Build Coastguard Worker	%tmp.25 = zext i8 %l_88173906 to i32		; <i32> [#uses=1]
46*9880d681SAndroid Build Coastguard Worker	br label %return
47*9880d681SAndroid Build Coastguard Workerelse.2:		; preds = %cond_continue
48*9880d681SAndroid Build Coastguard Worker	br label %loopentry.1
49*9880d681SAndroid Build Coastguard Workerloopentry.1:		; preds = %endif.3, %else.2
50*9880d681SAndroid Build Coastguard Worker	%i.1.1 = phi i32 [ 0, %else.2 ], [ %inc.3, %endif.3 ]		; <i32> [#uses=2]
51*9880d681SAndroid Build Coastguard Worker	%i.3.2 = phi i32 [ undef, %else.2 ], [ %i.3.0, %endif.3 ]		; <i32> [#uses=2]
52*9880d681SAndroid Build Coastguard Worker	%l_88173906_addr.1 = phi i8 [ %l_88173906, %else.2 ], [ %l_88173906_addr.0, %endif.3 ]		; <i8> [#uses=3]
53*9880d681SAndroid Build Coastguard Worker	%tmp.29 = icmp sgt i32 %i.1.1, 99		; <i1> [#uses=1]
54*9880d681SAndroid Build Coastguard Worker	br i1 %tmp.29, label %endif.2, label %no_exit.1
55*9880d681SAndroid Build Coastguard Workerno_exit.1:		; preds = %loopentry.1
56*9880d681SAndroid Build Coastguard Worker	%tmp.30 = load i32, i32* @g_38098584		; <i32> [#uses=1]
57*9880d681SAndroid Build Coastguard Worker	%tmp.31 = icmp eq i32 %tmp.30, 0		; <i1> [#uses=1]
58*9880d681SAndroid Build Coastguard Worker	br i1 %tmp.31, label %else.3, label %then.3
59*9880d681SAndroid Build Coastguard Workerthen.3:		; preds = %no_exit.1
60*9880d681SAndroid Build Coastguard Worker	br label %endif.3
61*9880d681SAndroid Build Coastguard Workerelse.3:		; preds = %no_exit.1
62*9880d681SAndroid Build Coastguard Worker	br i1 false, label %else.4, label %then.4
63*9880d681SAndroid Build Coastguard Workerthen.4:		; preds = %else.3
64*9880d681SAndroid Build Coastguard Worker	br label %endif.3
65*9880d681SAndroid Build Coastguard Workerelse.4:		; preds = %else.3
66*9880d681SAndroid Build Coastguard Worker	br i1 false, label %else.5, label %then.5
67*9880d681SAndroid Build Coastguard Workerthen.5:		; preds = %else.4
68*9880d681SAndroid Build Coastguard Worker	store i32 -1004318825, i32* @g_59182229
69*9880d681SAndroid Build Coastguard Worker	br label %return
70*9880d681SAndroid Build Coastguard Workerelse.5:		; preds = %else.4
71*9880d681SAndroid Build Coastguard Worker	br label %loopentry.3
72*9880d681SAndroid Build Coastguard Workerloopentry.3:		; preds = %then.7, %else.5
73*9880d681SAndroid Build Coastguard Worker	%i.3.3 = phi i32 [ 0, %else.5 ], [ %inc.2, %then.7 ]		; <i32> [#uses=3]
74*9880d681SAndroid Build Coastguard Worker	%tmp.55 = icmp sgt i32 %i.3.3, 99		; <i1> [#uses=1]
75*9880d681SAndroid Build Coastguard Worker	br i1 %tmp.55, label %endif.3, label %no_exit.3
76*9880d681SAndroid Build Coastguard Workerno_exit.3:		; preds = %loopentry.3
77*9880d681SAndroid Build Coastguard Worker	%tmp.57 = icmp eq i8 %l_88173906_addr.1, 0		; <i1> [#uses=1]
78*9880d681SAndroid Build Coastguard Worker	br i1 %tmp.57, label %else.7, label %then.7
79*9880d681SAndroid Build Coastguard Workerthen.7:		; preds = %no_exit.3
80*9880d681SAndroid Build Coastguard Worker	store i32 16239, i32* @g_60187400
81*9880d681SAndroid Build Coastguard Worker	%inc.2 = add i32 %i.3.3, 1		; <i32> [#uses=1]
82*9880d681SAndroid Build Coastguard Worker	br label %loopentry.3
83*9880d681SAndroid Build Coastguard Workerelse.7:		; preds = %no_exit.3
84*9880d681SAndroid Build Coastguard Worker	br label %return
85*9880d681SAndroid Build Coastguard Workerendif.3:		; preds = %loopentry.3, %then.4, %then.3
86*9880d681SAndroid Build Coastguard Worker	%i.3.0 = phi i32 [ %i.3.2, %then.3 ], [ %i.3.2, %then.4 ], [ %i.3.3, %loopentry.3 ]		; <i32> [#uses=1]
87*9880d681SAndroid Build Coastguard Worker	%l_88173906_addr.0 = phi i8 [ 100, %then.3 ], [ %l_88173906_addr.1, %then.4 ], [ %l_88173906_addr.1, %loopentry.3 ]		; <i8> [#uses=1]
88*9880d681SAndroid Build Coastguard Worker	%inc.3 = add i32 %i.1.1, 1		; <i32> [#uses=1]
89*9880d681SAndroid Build Coastguard Worker	br label %loopentry.1
90*9880d681SAndroid Build Coastguard Workerendif.2:		; preds = %loopentry.1
91*9880d681SAndroid Build Coastguard Worker	br label %return
92*9880d681SAndroid Build Coastguard Workerreturn:		; preds = %endif.2, %else.7, %then.5, %then.2, %else.0, %then.1
93*9880d681SAndroid Build Coastguard Worker	%result.0 = phi i32 [ 1624650671, %then.1 ], [ %tmp.25, %then.2 ], [ 3379, %then.5 ], [ 52410, %else.7 ], [ -1526438411, %endif.2 ], [ %tmp.12, %else.0 ]		; <i32> [#uses=1]
94*9880d681SAndroid Build Coastguard Worker	ret i32 %result.0
95*9880d681SAndroid Build Coastguard Worker}
96