xref: /aosp_15_r20/external/llvm/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -gvn -enable-load-pre -disable-output
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker	%struct.VEC_rtx_base = type { i32, i32, [1 x %struct.rtx_def*] }
4*9880d681SAndroid Build Coastguard Worker	%struct.VEC_rtx_gc = type { %struct.VEC_rtx_base }
5*9880d681SAndroid Build Coastguard Worker	%struct.block_symbol = type { [3 x %struct.cgraph_rtl_info], %struct.object_block*, i64 }
6*9880d681SAndroid Build Coastguard Worker	%struct.cgraph_rtl_info = type { i32 }
7*9880d681SAndroid Build Coastguard Worker	%struct.object_block = type { %struct.section*, i32, i64, %struct.VEC_rtx_gc*, %struct.VEC_rtx_gc* }
8*9880d681SAndroid Build Coastguard Worker	%struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] }
9*9880d681SAndroid Build Coastguard Worker	%struct.rtx_def = type { i16, i8, i8, %struct.u }
10*9880d681SAndroid Build Coastguard Worker	%struct.section = type { %struct.unnamed_section }
11*9880d681SAndroid Build Coastguard Worker	%struct.u = type { %struct.block_symbol }
12*9880d681SAndroid Build Coastguard Worker	%struct.unnamed_section = type { %struct.cgraph_rtl_info, void (i8*)*, i8*, %struct.section* }
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Workerdeclare %struct.rtvec_def* @gen_rtvec(i32, ...)
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Workerdeclare %struct.rtx_def* @plus_constant(%struct.rtx_def*, i64)
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerdeclare %struct.rtx_def* @gen_rtx_fmt_Ei(i32, i32, %struct.rtvec_def*, i32)
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerdeclare i32 @local_symbolic_operand(%struct.rtx_def*, i32)
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerdefine %struct.rtx_def* @legitimize_pic_address(%struct.rtx_def* %orig, %struct.rtx_def* %reg) nounwind {
23*9880d681SAndroid Build Coastguard Workerentry:
24*9880d681SAndroid Build Coastguard Worker	%addr = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=5]
25*9880d681SAndroid Build Coastguard Worker	%iftmp.1532 = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=3]
26*9880d681SAndroid Build Coastguard Worker	store %struct.rtx_def* %orig, %struct.rtx_def** null
27*9880d681SAndroid Build Coastguard Worker	%0 = load %struct.rtx_def*, %struct.rtx_def** null, align 4		; <%struct.rtx_def*> [#uses=0]
28*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb96, label %bb59
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerbb59:		; preds = %entry
31*9880d681SAndroid Build Coastguard Worker	%1 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
32*9880d681SAndroid Build Coastguard Worker	%2 = call i32 @local_symbolic_operand(%struct.rtx_def* %1, i32 0) nounwind		; <i32> [#uses=0]
33*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb96, label %bb63
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerbb63:		; preds = %bb59
36*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb64, label %bb74
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerbb64:		; preds = %bb63
39*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb72, label %bb65
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerbb65:		; preds = %bb64
42*9880d681SAndroid Build Coastguard Worker	br label %bb72
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Workerbb72:		; preds = %bb65, %bb64
45*9880d681SAndroid Build Coastguard Worker	br label %bb74
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerbb74:		; preds = %bb72, %bb63
48*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb75, label %bb76
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerbb75:		; preds = %bb74
51*9880d681SAndroid Build Coastguard Worker	br label %bb76
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Workerbb76:		; preds = %bb75, %bb74
54*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb77, label %bb84
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Workerbb77:		; preds = %bb76
57*9880d681SAndroid Build Coastguard Worker	%3 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 0		; <%struct.cgraph_rtl_info*> [#uses=0]
58*9880d681SAndroid Build Coastguard Worker	unreachable
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerbb84:		; preds = %bb76
61*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb85, label %bb86
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Workerbb85:		; preds = %bb84
64*9880d681SAndroid Build Coastguard Worker	br label %bb87
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Workerbb86:		; preds = %bb84
67*9880d681SAndroid Build Coastguard Worker	br label %bb87
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workerbb87:		; preds = %bb86, %bb85
70*9880d681SAndroid Build Coastguard Worker	%4 = call %struct.rtx_def* @gen_rtx_fmt_Ei(i32 16, i32 0, %struct.rtvec_def* null, i32 1) nounwind		; <%struct.rtx_def*> [#uses=0]
71*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb89, label %bb90
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Workerbb89:		; preds = %bb87
74*9880d681SAndroid Build Coastguard Worker	br label %bb91
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Workerbb90:		; preds = %bb87
77*9880d681SAndroid Build Coastguard Worker	br label %bb91
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerbb91:		; preds = %bb90, %bb89
80*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb92, label %bb93
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Workerbb92:		; preds = %bb91
83*9880d681SAndroid Build Coastguard Worker	br label %bb94
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerbb93:		; preds = %bb91
86*9880d681SAndroid Build Coastguard Worker	br label %bb94
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Workerbb94:		; preds = %bb93, %bb92
89*9880d681SAndroid Build Coastguard Worker	unreachable
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Workerbb96:		; preds = %bb59, %entry
92*9880d681SAndroid Build Coastguard Worker	%5 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
93*9880d681SAndroid Build Coastguard Worker	%6 = getelementptr %struct.rtx_def, %struct.rtx_def* %5, i32 0, i32 0		; <i16*> [#uses=1]
94*9880d681SAndroid Build Coastguard Worker	%7 = load i16, i16* %6, align 2		; <i16> [#uses=0]
95*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb147, label %bb97
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerbb97:		; preds = %bb96
98*9880d681SAndroid Build Coastguard Worker	%8 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0]
99*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb147, label %bb99
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Workerbb99:		; preds = %bb97
102*9880d681SAndroid Build Coastguard Worker	unreachable
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Workerbb147:		; preds = %bb97, %bb96
105*9880d681SAndroid Build Coastguard Worker	%9 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
106*9880d681SAndroid Build Coastguard Worker	%10 = getelementptr %struct.rtx_def, %struct.rtx_def* %9, i32 0, i32 0		; <i16*> [#uses=1]
107*9880d681SAndroid Build Coastguard Worker	%11 = load i16, i16* %10, align 2		; <i16> [#uses=0]
108*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb164, label %bb148
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Workerbb148:		; preds = %bb147
111*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb164, label %bb149
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Workerbb149:		; preds = %bb148
114*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb150, label %bb152
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerbb150:		; preds = %bb149
117*9880d681SAndroid Build Coastguard Worker	unreachable
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Workerbb152:		; preds = %bb149
120*9880d681SAndroid Build Coastguard Worker	br label %bb164
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Workerbb164:		; preds = %bb152, %bb148, %bb147
123*9880d681SAndroid Build Coastguard Worker	%12 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 1		; <%struct.cgraph_rtl_info*> [#uses=0]
124*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb165, label %bb166
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Workerbb165:		; preds = %bb164
127*9880d681SAndroid Build Coastguard Worker	br label %bb167
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Workerbb166:		; preds = %bb164
130*9880d681SAndroid Build Coastguard Worker	br label %bb167
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Workerbb167:		; preds = %bb166, %bb165
133*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb211, label %bb168
134*9880d681SAndroid Build Coastguard Worker
135*9880d681SAndroid Build Coastguard Workerbb168:		; preds = %bb167
136*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb211, label %bb170
137*9880d681SAndroid Build Coastguard Worker
138*9880d681SAndroid Build Coastguard Workerbb170:		; preds = %bb168
139*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb172, label %bb181
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerbb172:		; preds = %bb170
142*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb179, label %bb174
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Workerbb174:		; preds = %bb172
145*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb177, label %bb175
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Workerbb175:		; preds = %bb174
148*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb177, label %bb176
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Workerbb176:		; preds = %bb175
151*9880d681SAndroid Build Coastguard Worker	br label %bb178
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Workerbb177:		; preds = %bb175, %bb174
154*9880d681SAndroid Build Coastguard Worker	br label %bb178
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Workerbb178:		; preds = %bb177, %bb176
157*9880d681SAndroid Build Coastguard Worker	br label %bb180
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Workerbb179:		; preds = %bb172
160*9880d681SAndroid Build Coastguard Worker	br label %bb180
161*9880d681SAndroid Build Coastguard Worker
162*9880d681SAndroid Build Coastguard Workerbb180:		; preds = %bb179, %bb178
163*9880d681SAndroid Build Coastguard Worker	br label %bb181
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Workerbb181:		; preds = %bb180, %bb170
166*9880d681SAndroid Build Coastguard Worker	%13 = call %struct.rtvec_def* (i32, ...) @gen_rtvec(i32 1, %struct.rtx_def* null) nounwind		; <%struct.rtvec_def*> [#uses=0]
167*9880d681SAndroid Build Coastguard Worker	unreachable
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Workerbb211:		; preds = %bb168, %bb167
170*9880d681SAndroid Build Coastguard Worker	%14 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0]
171*9880d681SAndroid Build Coastguard Worker	%15 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 0		; <%struct.cgraph_rtl_info*> [#uses=0]
172*9880d681SAndroid Build Coastguard Worker	store %struct.rtx_def* null, %struct.rtx_def** null, align 4
173*9880d681SAndroid Build Coastguard Worker	br i1 false, label %bb212, label %bb213
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerbb212:		; preds = %bb211
176*9880d681SAndroid Build Coastguard Worker	store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4
177*9880d681SAndroid Build Coastguard Worker	br label %bb214
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Workerbb213:		; preds = %bb211
180*9880d681SAndroid Build Coastguard Worker	store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4
181*9880d681SAndroid Build Coastguard Worker	br label %bb214
182*9880d681SAndroid Build Coastguard Worker
183*9880d681SAndroid Build Coastguard Workerbb214:		; preds = %bb213, %bb212
184*9880d681SAndroid Build Coastguard Worker	%16 = bitcast %struct.block_symbol* null to [1 x %struct.cgraph_rtl_info]*		; <[1 x %struct.cgraph_rtl_info]*> [#uses=1]
185*9880d681SAndroid Build Coastguard Worker	%17 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* %16, i32 0, i32 1		; <%struct.cgraph_rtl_info*> [#uses=0]
186*9880d681SAndroid Build Coastguard Worker	%18 = load %struct.rtx_def*, %struct.rtx_def** %iftmp.1532, align 4		; <%struct.rtx_def*> [#uses=0]
187*9880d681SAndroid Build Coastguard Worker	%19 = getelementptr %struct.rtx_def, %struct.rtx_def* null, i32 0, i32 3		; <%struct.u*> [#uses=1]
188*9880d681SAndroid Build Coastguard Worker	%20 = getelementptr %struct.u, %struct.u* %19, i32 0, i32 0		; <%struct.block_symbol*> [#uses=1]
189*9880d681SAndroid Build Coastguard Worker	%21 = bitcast %struct.block_symbol* %20 to [1 x i64]*		; <[1 x i64]*> [#uses=1]
190*9880d681SAndroid Build Coastguard Worker	%22 = getelementptr [1 x i64], [1 x i64]* %21, i32 0, i32 0		; <i64*> [#uses=0]
191*9880d681SAndroid Build Coastguard Worker	%23 = call %struct.rtx_def* @plus_constant(%struct.rtx_def* null, i64 0) nounwind		; <%struct.rtx_def*> [#uses=0]
192*9880d681SAndroid Build Coastguard Worker	unreachable
193*9880d681SAndroid Build Coastguard Worker}
194