xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/crash-lre-eliminate-dead-def.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc %s -o - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; This file checks some weird corner case in LiveRangeEdit.
3*9880d681SAndroid Build Coastguard Worker; We used to do crash when we eliminate the definition
4*9880d681SAndroid Build Coastguard Worker; of the product of splitting when the original live-range
5*9880d681SAndroid Build Coastguard Worker; has already been removed.
6*9880d681SAndroid Build Coastguard Worker; Basically, we have the following input.
7*9880d681SAndroid Build Coastguard Worker; v1 = loadimm cst
8*9880d681SAndroid Build Coastguard Worker; ...
9*9880d681SAndroid Build Coastguard Worker; = use v1
10*9880d681SAndroid Build Coastguard Worker;
11*9880d681SAndroid Build Coastguard Worker; We split the live-range like this:
12*9880d681SAndroid Build Coastguard Worker; v1 = loadimm cst
13*9880d681SAndroid Build Coastguard Worker; ...
14*9880d681SAndroid Build Coastguard Worker; v2 = copy v1
15*9880d681SAndroid Build Coastguard Worker; ...
16*9880d681SAndroid Build Coastguard Worker; = use v2
17*9880d681SAndroid Build Coastguard Worker;
18*9880d681SAndroid Build Coastguard Worker; We actually issue loadimm instead of the copy:
19*9880d681SAndroid Build Coastguard Worker; v1 = loadimm cst
20*9880d681SAndroid Build Coastguard Worker; ...
21*9880d681SAndroid Build Coastguard Worker; v2 = loadimm cst
22*9880d681SAndroid Build Coastguard Worker; ...
23*9880d681SAndroid Build Coastguard Worker; = use v2
24*9880d681SAndroid Build Coastguard Worker;
25*9880d681SAndroid Build Coastguard Worker; v1 is now dead so we remove its live-range.
26*9880d681SAndroid Build Coastguard Worker; Actually, we shrink it to empty to keep the
27*9880d681SAndroid Build Coastguard Worker; instruction around for futher remat opportunities
28*9880d681SAndroid Build Coastguard Worker; (accessbile via the origin pointer.)
29*9880d681SAndroid Build Coastguard Worker;
30*9880d681SAndroid Build Coastguard Worker; Later v2 gets remove as well (e.g., because we
31*9880d681SAndroid Build Coastguard Worker; remat it closer to its use) and the live-range
32*9880d681SAndroid Build Coastguard Worker; gets eliminated. We used to crash at this point
33*9880d681SAndroid Build Coastguard Worker; because we were looking for a VNI of origin (v1)
34*9880d681SAndroid Build Coastguard Worker; at the slot index of the definition of v2. However,
35*9880d681SAndroid Build Coastguard Worker; we do not have a VNI for v1 at this point, since the
36*9880d681SAndroid Build Coastguard Worker; live-range is now empty... crash!
37*9880d681SAndroid Build Coastguard Worker; PR27983
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workersource_filename = "bugpoint-output-1e29d28.bc"
40*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
41*9880d681SAndroid Build Coastguard Workertarget triple = "i386-unknown-linux-gnu"
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker@r = external global i32, align 4
44*9880d681SAndroid Build Coastguard Worker@k = external global i32, align 4
45*9880d681SAndroid Build Coastguard Worker@g = external global i32, align 4
46*9880d681SAndroid Build Coastguard Worker@a = external global i16, align 2
47*9880d681SAndroid Build Coastguard Worker@p = external global i32, align 4
48*9880d681SAndroid Build Coastguard Worker@n = external global i16, align 2
49*9880d681SAndroid Build Coastguard Worker@.str = external unnamed_addr constant [12 x i8], align 1
50*9880d681SAndroid Build Coastguard Worker@.str.1 = external unnamed_addr constant [13 x i8], align 1
51*9880d681SAndroid Build Coastguard Worker@s = external global i32, align 4
52*9880d681SAndroid Build Coastguard Worker@z = external global i16, align 2
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fn1:
55*9880d681SAndroid Build Coastguard Workerdefine void @fn1() #0 {
56*9880d681SAndroid Build Coastguard Workerentry:
57*9880d681SAndroid Build Coastguard Worker  br label %for.cond
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Workerfor.cond:                                         ; preds = %cleanup100, %for.end29, %entry
60*9880d681SAndroid Build Coastguard Worker  %t7.0 = phi i16 [ undef, %entry ], [ %t7.1, %for.end29 ], [ %t7.19, %cleanup100 ]
61*9880d681SAndroid Build Coastguard Worker  %t9.0 = phi i32 [ undef, %entry ], [ %t9.1, %for.end29 ], [ 0, %cleanup100 ]
62*9880d681SAndroid Build Coastguard Worker  %t2.0 = phi i32 [ undef, %entry ], [ undef, %for.end29 ], [ %t2.18, %cleanup100 ]
63*9880d681SAndroid Build Coastguard Worker  %tmp = load i32, i32* @r, align 4
64*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.then, label %if.end7
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Workerif.then:                                          ; preds = %for.cond
67*9880d681SAndroid Build Coastguard Worker  %tobool = icmp ne i32 %tmp, 0
68*9880d681SAndroid Build Coastguard Worker  %tobool1 = icmp ne i32 %t2.0, 0
69*9880d681SAndroid Build Coastguard Worker  %tmp1 = and i1 %tobool1, %tobool
70*9880d681SAndroid Build Coastguard Worker  %land.ext = zext i1 %tmp1 to i32
71*9880d681SAndroid Build Coastguard Worker  %tmp2 = load i32, i32* @k, align 4
72*9880d681SAndroid Build Coastguard Worker  %shr = lshr i32 %land.ext, %tmp2
73*9880d681SAndroid Build Coastguard Worker  %tobool4 = icmp ne i32 %shr, 0
74*9880d681SAndroid Build Coastguard Worker  %or.cond = and i1 false, %tobool4
75*9880d681SAndroid Build Coastguard Worker  br i1 %or.cond, label %L6, label %if.end7
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerif.end7:                                          ; preds = %if.then, %for.cond
78*9880d681SAndroid Build Coastguard Worker  %t2.1 = phi i32 [ %shr, %if.then ], [ %t2.0, %for.cond ]
79*9880d681SAndroid Build Coastguard Worker  %tobool8 = icmp eq i32 undef, 0
80*9880d681SAndroid Build Coastguard Worker  br i1 %tobool8, label %if.end11, label %for.cond10
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Workerfor.cond10:                                       ; preds = %for.cond10, %if.end7
83*9880d681SAndroid Build Coastguard Worker  br label %for.cond10
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerif.end11:                                         ; preds = %if.end7
86*9880d681SAndroid Build Coastguard Worker  %tmp3 = load i32, i32* @g, align 4
87*9880d681SAndroid Build Coastguard Worker  %tmp4 = load i16, i16* @a, align 2
88*9880d681SAndroid Build Coastguard Worker  %conv = sext i16 %tmp4 to i32
89*9880d681SAndroid Build Coastguard Worker  %div = sdiv i32 %tmp3, %conv
90*9880d681SAndroid Build Coastguard Worker  %tobool12 = icmp eq i32 %div, 0
91*9880d681SAndroid Build Coastguard Worker  br i1 %tobool12, label %for.cond15, label %L5
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerfor.cond15:                                       ; preds = %for.cond17, %if.end11
94*9880d681SAndroid Build Coastguard Worker  %t7.1 = phi i16 [ %t7.2, %for.cond17 ], [ %t7.0, %if.end11 ]
95*9880d681SAndroid Build Coastguard Worker  %t9.1 = phi i32 [ %t9.2, %for.cond17 ], [ %t9.0, %if.end11 ]
96*9880d681SAndroid Build Coastguard Worker  %tobool16 = icmp eq i32 undef, 0
97*9880d681SAndroid Build Coastguard Worker  br i1 %tobool16, label %for.end29, label %for.cond17
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard Workerfor.cond17:                                       ; preds = %for.cond20, %for.cond15
100*9880d681SAndroid Build Coastguard Worker  %t7.2 = phi i16 [ %t7.3, %for.cond20 ], [ %t7.1, %for.cond15 ]
101*9880d681SAndroid Build Coastguard Worker  %t9.2 = phi i32 [ undef, %for.cond20 ], [ %t9.1, %for.cond15 ]
102*9880d681SAndroid Build Coastguard Worker  %tobool18 = icmp eq i8 undef, 0
103*9880d681SAndroid Build Coastguard Worker  br i1 %tobool18, label %for.cond15, label %for.cond20
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerfor.cond20:                                       ; preds = %for.cond23, %for.cond17
106*9880d681SAndroid Build Coastguard Worker  %t7.3 = phi i16 [ %t7.4, %for.cond23 ], [ %t7.2, %for.cond17 ]
107*9880d681SAndroid Build Coastguard Worker  %tobool21 = icmp eq i32 undef, 0
108*9880d681SAndroid Build Coastguard Worker  br i1 %tobool21, label %for.cond17, label %for.cond23
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Workerfor.cond23:                                       ; preds = %L1, %for.cond20
111*9880d681SAndroid Build Coastguard Worker  %t7.4 = phi i16 [ %t7.5, %L1 ], [ %t7.3, %for.cond20 ]
112*9880d681SAndroid Build Coastguard Worker  %tobool24 = icmp eq i8 undef, 0
113*9880d681SAndroid Build Coastguard Worker  br i1 %tobool24, label %for.cond20, label %L1
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard WorkerL1:                                               ; preds = %cleanup100, %for.cond23
116*9880d681SAndroid Build Coastguard Worker  %t7.5 = phi i16 [ %t7.19, %cleanup100 ], [ %t7.4, %for.cond23 ]
117*9880d681SAndroid Build Coastguard Worker  %conv26 = sext i16 undef to i64
118*9880d681SAndroid Build Coastguard Worker  br label %for.cond23
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard Workerfor.end29:                                        ; preds = %for.cond15
121*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.cond, label %for.cond32thread-pre-split
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workerfor.cond32thread-pre-split:                       ; preds = %for.end29
124*9880d681SAndroid Build Coastguard Worker  %.pr = load i32, i32* @p, align 4
125*9880d681SAndroid Build Coastguard Worker  br label %for.cond32
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Workerfor.cond32:                                       ; preds = %for.inc94, %for.cond32thread-pre-split
128*9880d681SAndroid Build Coastguard Worker  %t7.6 = phi i16 [ %t7.1, %for.cond32thread-pre-split ], [ %t7.17, %for.inc94 ]
129*9880d681SAndroid Build Coastguard Worker  %t3.4 = phi i64 [ 0, %for.cond32thread-pre-split ], [ 0, %for.inc94 ]
130*9880d681SAndroid Build Coastguard Worker  %t9.6 = phi i32 [ %t9.1, %for.cond32thread-pre-split ], [ 0, %for.inc94 ]
131*9880d681SAndroid Build Coastguard Worker  %t2.7 = phi i32 [ undef, %for.cond32thread-pre-split ], [ %t2.16, %for.inc94 ]
132*9880d681SAndroid Build Coastguard Worker  %tobool33 = icmp eq i32 0, 0
133*9880d681SAndroid Build Coastguard Worker  br i1 %tobool33, label %for.end95, label %for.body34
134*9880d681SAndroid Build Coastguard Worker
135*9880d681SAndroid Build Coastguard Workerfor.body34:                                       ; preds = %for.cond32
136*9880d681SAndroid Build Coastguard Worker  %tobool35 = icmp eq i16 undef, 0
137*9880d681SAndroid Build Coastguard Worker  br i1 %tobool35, label %for.inc94, label %if.then36
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Workerif.then36:                                        ; preds = %for.body34
140*9880d681SAndroid Build Coastguard Worker  %tmp5 = load i16, i16* @n, align 2
141*9880d681SAndroid Build Coastguard Worker  %tobool37 = icmp eq i32 undef, 0
142*9880d681SAndroid Build Coastguard Worker  br i1 %tobool37, label %if.end78, label %if.then38
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Workerif.then38:                                        ; preds = %if.then36
145*9880d681SAndroid Build Coastguard Worker  tail call void (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i64 undef)
146*9880d681SAndroid Build Coastguard Worker  %tobool40 = icmp eq i32 undef, 0
147*9880d681SAndroid Build Coastguard Worker  br i1 %tobool40, label %L3, label %cleanup100
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard WorkerL3:                                               ; preds = %while.end.split, %if.then38
150*9880d681SAndroid Build Coastguard Worker  %t7.7 = phi i16 [ %tmp5, %if.then38 ], [ %t7.15, %while.end.split ]
151*9880d681SAndroid Build Coastguard Worker  %t3.5 = phi i64 [ %t3.4, %if.then38 ], [ %t3.11, %while.end.split ]
152*9880d681SAndroid Build Coastguard Worker  %t2.8 = phi i32 [ %t2.7, %if.then38 ], [ %t2.14, %while.end.split ]
153*9880d681SAndroid Build Coastguard Worker  %tobool43 = icmp eq i32 undef, 0
154*9880d681SAndroid Build Coastguard Worker  br i1 %tobool43, label %if.end48, label %cleanup75
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Workerif.end48:                                         ; preds = %L3
157*9880d681SAndroid Build Coastguard Worker  tail call void (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i32 0, i32 0), i64 %t3.5)
158*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.end61, label %for.cond52.preheader
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Workerfor.cond52.preheader:                             ; preds = %if.end48
161*9880d681SAndroid Build Coastguard Worker  %tobool57 = icmp eq i16 undef, 0
162*9880d681SAndroid Build Coastguard Worker  %.130 = select i1 %tobool57, i16 -8, i16 0
163*9880d681SAndroid Build Coastguard Worker  br label %if.end61
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Workerif.end61:                                         ; preds = %for.cond52.preheader, %if.end48
166*9880d681SAndroid Build Coastguard Worker  %t7.9 = phi i16 [ %t7.7, %if.end48 ], [ %.130, %for.cond52.preheader ]
167*9880d681SAndroid Build Coastguard Worker  %tobool62 = icmp eq i32 undef, 0
168*9880d681SAndroid Build Coastguard Worker  br i1 %tobool62, label %if.end71, label %if.then63
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Workerif.then63:                                        ; preds = %if.end61
171*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.end67, label %L5
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard WorkerL5:                                               ; preds = %cleanup100.L5_crit_edge, %if.then63, %if.end11
174*9880d681SAndroid Build Coastguard Worker  %.pre = phi i32 [ %.pre.pre, %cleanup100.L5_crit_edge ], [ undef, %if.then63 ], [ %tmp, %if.end11 ]
175*9880d681SAndroid Build Coastguard Worker  %t7.10 = phi i16 [ %t7.19, %cleanup100.L5_crit_edge ], [ %t7.9, %if.then63 ], [ %t7.0, %if.end11 ]
176*9880d681SAndroid Build Coastguard Worker  %t3.6 = phi i64 [ 0, %cleanup100.L5_crit_edge ], [ %t3.5, %if.then63 ], [ 2, %if.end11 ]
177*9880d681SAndroid Build Coastguard Worker  %t9.8 = phi i32 [ 0, %cleanup100.L5_crit_edge ], [ undef, %if.then63 ], [ %t9.0, %if.end11 ]
178*9880d681SAndroid Build Coastguard Worker  %t2.9 = phi i32 [ %t2.18, %cleanup100.L5_crit_edge ], [ %t2.8, %if.then63 ], [ %t2.1, %if.end11 ]
179*9880d681SAndroid Build Coastguard Worker  store i32 %t9.8, i32* @s, align 4
180*9880d681SAndroid Build Coastguard Worker  br label %if.end67
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Workerif.end67:                                         ; preds = %L5, %if.then63
183*9880d681SAndroid Build Coastguard Worker  %tmp6 = phi i32 [ %.pre, %L5 ], [ undef, %if.then63 ]
184*9880d681SAndroid Build Coastguard Worker  %t7.11 = phi i16 [ %t7.10, %L5 ], [ %t7.9, %if.then63 ]
185*9880d681SAndroid Build Coastguard Worker  %t3.7 = phi i64 [ %t3.6, %L5 ], [ %t3.5, %if.then63 ]
186*9880d681SAndroid Build Coastguard Worker  %t9.9 = phi i32 [ %t9.8, %L5 ], [ undef, %if.then63 ]
187*9880d681SAndroid Build Coastguard Worker  %t2.10 = phi i32 [ %t2.9, %L5 ], [ %t2.8, %if.then63 ]
188*9880d681SAndroid Build Coastguard Worker  %tobool68 = icmp eq i32 %tmp6, 0
189*9880d681SAndroid Build Coastguard Worker  br i1 %tobool68, label %if.end71, label %for.end95
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Workerif.end71:                                         ; preds = %if.end67, %if.end61
192*9880d681SAndroid Build Coastguard Worker  %t7.12 = phi i16 [ %t7.11, %if.end67 ], [ %t7.9, %if.end61 ]
193*9880d681SAndroid Build Coastguard Worker  %t3.8 = phi i64 [ %t3.7, %if.end67 ], [ %t3.5, %if.end61 ]
194*9880d681SAndroid Build Coastguard Worker  %tobool72 = icmp eq i32 undef, 0
195*9880d681SAndroid Build Coastguard Worker  br i1 %tobool72, label %cleanup75.thread128, label %if.then73
196*9880d681SAndroid Build Coastguard Worker
197*9880d681SAndroid Build Coastguard Workerif.then73:                                        ; preds = %if.end71
198*9880d681SAndroid Build Coastguard Worker  br label %cleanup100
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Workercleanup75.thread128:                              ; preds = %if.end71
201*9880d681SAndroid Build Coastguard Worker  br label %if.end78
202*9880d681SAndroid Build Coastguard Worker
203*9880d681SAndroid Build Coastguard Workercleanup75:                                        ; preds = %L3
204*9880d681SAndroid Build Coastguard Worker  br i1 false, label %for.cond98, label %for.end95
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Workerif.end78:                                         ; preds = %cleanup75.thread128, %if.then36
207*9880d681SAndroid Build Coastguard Worker  %t7.14 = phi i16 [ %tmp5, %if.then36 ], [ 0, %cleanup75.thread128 ]
208*9880d681SAndroid Build Coastguard Worker  %t3.10 = phi i64 [ %t3.4, %if.then36 ], [ %t3.8, %cleanup75.thread128 ]
209*9880d681SAndroid Build Coastguard Worker  %t9.12 = phi i32 [ %t9.6, %if.then36 ], [ undef, %cleanup75.thread128 ]
210*9880d681SAndroid Build Coastguard Worker  %t2.13 = phi i32 [ %t2.7, %if.then36 ], [ undef, %cleanup75.thread128 ]
211*9880d681SAndroid Build Coastguard Worker  store i16 %t7.14, i16* @z, align 2
212*9880d681SAndroid Build Coastguard Worker  br label %L6
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard WorkerL6:                                               ; preds = %if.end78, %if.then
215*9880d681SAndroid Build Coastguard Worker  %t7.15 = phi i16 [ %t7.0, %if.then ], [ %t7.14, %if.end78 ]
216*9880d681SAndroid Build Coastguard Worker  %t3.11 = phi i64 [ 2, %if.then ], [ %t3.10, %if.end78 ]
217*9880d681SAndroid Build Coastguard Worker  %t9.13 = phi i32 [ %t9.0, %if.then ], [ %t9.12, %if.end78 ]
218*9880d681SAndroid Build Coastguard Worker  %t2.14 = phi i32 [ %shr, %if.then ], [ %t2.13, %if.end78 ]
219*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %while.condthread-pre-split, label %for.inc94
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Workerwhile.condthread-pre-split:                       ; preds = %L6
222*9880d681SAndroid Build Coastguard Worker  %tobool83 = icmp eq i32 undef, 0
223*9880d681SAndroid Build Coastguard Worker  br i1 %tobool83, label %while.end.split, label %while.cond
224*9880d681SAndroid Build Coastguard Worker
225*9880d681SAndroid Build Coastguard Workerwhile.cond:                                       ; preds = %while.cond, %while.condthread-pre-split
226*9880d681SAndroid Build Coastguard Worker  br label %while.cond
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Workerwhile.end.split:                                  ; preds = %while.condthread-pre-split
229*9880d681SAndroid Build Coastguard Worker  %tobool84 = icmp eq i16 undef, 0
230*9880d681SAndroid Build Coastguard Worker  br i1 %tobool84, label %for.inc94, label %L3
231*9880d681SAndroid Build Coastguard Worker
232*9880d681SAndroid Build Coastguard Workerfor.inc94:                                        ; preds = %while.end.split, %L6, %for.body34
233*9880d681SAndroid Build Coastguard Worker  %t7.17 = phi i16 [ %t7.6, %for.body34 ], [ %t7.15, %L6 ], [ %t7.15, %while.end.split ]
234*9880d681SAndroid Build Coastguard Worker  %t2.16 = phi i32 [ %t2.7, %for.body34 ], [ %t2.14, %L6 ], [ %t2.14, %while.end.split ]
235*9880d681SAndroid Build Coastguard Worker  store i32 undef, i32* @p, align 4
236*9880d681SAndroid Build Coastguard Worker  br label %for.cond32
237*9880d681SAndroid Build Coastguard Worker
238*9880d681SAndroid Build Coastguard Workerfor.end95:                                        ; preds = %cleanup75, %if.end67, %for.cond32
239*9880d681SAndroid Build Coastguard Worker  %t7.18 = phi i16 [ %t7.6, %for.cond32 ], [ %t7.7, %cleanup75 ], [ %t7.11, %if.end67 ]
240*9880d681SAndroid Build Coastguard Worker  %t2.17 = phi i32 [ %t2.7, %for.cond32 ], [ %t2.8, %cleanup75 ], [ %t2.10, %if.end67 ]
241*9880d681SAndroid Build Coastguard Worker  %tobool96 = icmp eq i32 undef, 0
242*9880d681SAndroid Build Coastguard Worker  br i1 %tobool96, label %cleanup100, label %for.cond98
243*9880d681SAndroid Build Coastguard Worker
244*9880d681SAndroid Build Coastguard Workerfor.cond98:                                       ; preds = %for.cond98, %for.end95, %cleanup75
245*9880d681SAndroid Build Coastguard Worker  br label %for.cond98
246*9880d681SAndroid Build Coastguard Worker
247*9880d681SAndroid Build Coastguard Workercleanup100:                                       ; preds = %for.end95, %if.then73, %if.then38
248*9880d681SAndroid Build Coastguard Worker  %t7.19 = phi i16 [ %t7.18, %for.end95 ], [ %tmp5, %if.then38 ], [ %t7.12, %if.then73 ]
249*9880d681SAndroid Build Coastguard Worker  %t2.18 = phi i32 [ %t2.17, %for.end95 ], [ %t2.7, %if.then38 ], [ undef, %if.then73 ]
250*9880d681SAndroid Build Coastguard Worker  switch i32 undef, label %unreachable [
251*9880d681SAndroid Build Coastguard Worker    i32 0, label %for.cond
252*9880d681SAndroid Build Coastguard Worker    i32 17, label %L1
253*9880d681SAndroid Build Coastguard Worker    i32 7, label %cleanup100.L5_crit_edge
254*9880d681SAndroid Build Coastguard Worker  ]
255*9880d681SAndroid Build Coastguard Worker
256*9880d681SAndroid Build Coastguard Workercleanup100.L5_crit_edge:                          ; preds = %cleanup100
257*9880d681SAndroid Build Coastguard Worker  %.pre.pre = load i32, i32* @r, align 4
258*9880d681SAndroid Build Coastguard Worker  br label %L5
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Workerunreachable:                                      ; preds = %cleanup100
261*9880d681SAndroid Build Coastguard Worker  unreachable
262*9880d681SAndroid Build Coastguard Worker}
263*9880d681SAndroid Build Coastguard Worker
264*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind
265*9880d681SAndroid Build Coastguard Workerdeclare void @printf(i8* nocapture readonly, ...) #1
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Workerattributes #0 = { noreturn nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pentium4" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
268*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pentium4" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
269