1; RUN: opt < %s -gvn -enable-load-pre -disable-output
2
3	%struct.VEC_rtx_base = type { i32, i32, [1 x %struct.rtx_def*] }
4	%struct.VEC_rtx_gc = type { %struct.VEC_rtx_base }
5	%struct.block_symbol = type { [3 x %struct.cgraph_rtl_info], %struct.object_block*, i64 }
6	%struct.cgraph_rtl_info = type { i32 }
7	%struct.object_block = type { %struct.section*, i32, i64, %struct.VEC_rtx_gc*, %struct.VEC_rtx_gc* }
8	%struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] }
9	%struct.rtx_def = type { i16, i8, i8, %struct.u }
10	%struct.section = type { %struct.unnamed_section }
11	%struct.u = type { %struct.block_symbol }
12	%struct.unnamed_section = type { %struct.cgraph_rtl_info, void (i8*)*, i8*, %struct.section* }
13
14declare %struct.rtvec_def* @gen_rtvec(i32, ...)
15
16declare %struct.rtx_def* @plus_constant(%struct.rtx_def*, i64)
17
18declare %struct.rtx_def* @gen_rtx_fmt_Ei(i32, i32, %struct.rtvec_def*, i32)
19
20declare i32 @local_symbolic_operand(%struct.rtx_def*, i32)
21
22define %struct.rtx_def* @legitimize_pic_address(%struct.rtx_def* %orig, %struct.rtx_def* %reg) nounwind {
23entry:
24	%addr = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=5]
25	%iftmp.1532 = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=3]
26	store %struct.rtx_def* %orig, %struct.rtx_def** null
27	%0 = load %struct.rtx_def*, %struct.rtx_def** null, align 4		; <%struct.rtx_def*> [#uses=0]
28	br i1 false, label %bb96, label %bb59
29
30bb59:		; preds = %entry
31	%1 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
32	%2 = call i32 @local_symbolic_operand(%struct.rtx_def* %1, i32 0) nounwind		; <i32> [#uses=0]
33	br i1 false, label %bb96, label %bb63
34
35bb63:		; preds = %bb59
36	br i1 false, label %bb64, label %bb74
37
38bb64:		; preds = %bb63
39	br i1 false, label %bb72, label %bb65
40
41bb65:		; preds = %bb64
42	br label %bb72
43
44bb72:		; preds = %bb65, %bb64
45	br label %bb74
46
47bb74:		; preds = %bb72, %bb63
48	br i1 false, label %bb75, label %bb76
49
50bb75:		; preds = %bb74
51	br label %bb76
52
53bb76:		; preds = %bb75, %bb74
54	br i1 false, label %bb77, label %bb84
55
56bb77:		; preds = %bb76
57	%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	unreachable
59
60bb84:		; preds = %bb76
61	br i1 false, label %bb85, label %bb86
62
63bb85:		; preds = %bb84
64	br label %bb87
65
66bb86:		; preds = %bb84
67	br label %bb87
68
69bb87:		; preds = %bb86, %bb85
70	%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	br i1 false, label %bb89, label %bb90
72
73bb89:		; preds = %bb87
74	br label %bb91
75
76bb90:		; preds = %bb87
77	br label %bb91
78
79bb91:		; preds = %bb90, %bb89
80	br i1 false, label %bb92, label %bb93
81
82bb92:		; preds = %bb91
83	br label %bb94
84
85bb93:		; preds = %bb91
86	br label %bb94
87
88bb94:		; preds = %bb93, %bb92
89	unreachable
90
91bb96:		; preds = %bb59, %entry
92	%5 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
93	%6 = getelementptr %struct.rtx_def, %struct.rtx_def* %5, i32 0, i32 0		; <i16*> [#uses=1]
94	%7 = load i16, i16* %6, align 2		; <i16> [#uses=0]
95	br i1 false, label %bb147, label %bb97
96
97bb97:		; preds = %bb96
98	%8 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0]
99	br i1 false, label %bb147, label %bb99
100
101bb99:		; preds = %bb97
102	unreachable
103
104bb147:		; preds = %bb97, %bb96
105	%9 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
106	%10 = getelementptr %struct.rtx_def, %struct.rtx_def* %9, i32 0, i32 0		; <i16*> [#uses=1]
107	%11 = load i16, i16* %10, align 2		; <i16> [#uses=0]
108	br i1 false, label %bb164, label %bb148
109
110bb148:		; preds = %bb147
111	br i1 false, label %bb164, label %bb149
112
113bb149:		; preds = %bb148
114	br i1 false, label %bb150, label %bb152
115
116bb150:		; preds = %bb149
117	unreachable
118
119bb152:		; preds = %bb149
120	br label %bb164
121
122bb164:		; preds = %bb152, %bb148, %bb147
123	%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	br i1 false, label %bb165, label %bb166
125
126bb165:		; preds = %bb164
127	br label %bb167
128
129bb166:		; preds = %bb164
130	br label %bb167
131
132bb167:		; preds = %bb166, %bb165
133	br i1 false, label %bb211, label %bb168
134
135bb168:		; preds = %bb167
136	br i1 false, label %bb211, label %bb170
137
138bb170:		; preds = %bb168
139	br i1 false, label %bb172, label %bb181
140
141bb172:		; preds = %bb170
142	br i1 false, label %bb179, label %bb174
143
144bb174:		; preds = %bb172
145	br i1 false, label %bb177, label %bb175
146
147bb175:		; preds = %bb174
148	br i1 false, label %bb177, label %bb176
149
150bb176:		; preds = %bb175
151	br label %bb178
152
153bb177:		; preds = %bb175, %bb174
154	br label %bb178
155
156bb178:		; preds = %bb177, %bb176
157	br label %bb180
158
159bb179:		; preds = %bb172
160	br label %bb180
161
162bb180:		; preds = %bb179, %bb178
163	br label %bb181
164
165bb181:		; preds = %bb180, %bb170
166	%13 = call %struct.rtvec_def* (i32, ...) @gen_rtvec(i32 1, %struct.rtx_def* null) nounwind		; <%struct.rtvec_def*> [#uses=0]
167	unreachable
168
169bb211:		; preds = %bb168, %bb167
170	%14 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0]
171	%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	store %struct.rtx_def* null, %struct.rtx_def** null, align 4
173	br i1 false, label %bb212, label %bb213
174
175bb212:		; preds = %bb211
176	store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4
177	br label %bb214
178
179bb213:		; preds = %bb211
180	store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4
181	br label %bb214
182
183bb214:		; preds = %bb213, %bb212
184	%16 = bitcast %struct.block_symbol* null to [1 x %struct.cgraph_rtl_info]*		; <[1 x %struct.cgraph_rtl_info]*> [#uses=1]
185	%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	%18 = load %struct.rtx_def*, %struct.rtx_def** %iftmp.1532, align 4		; <%struct.rtx_def*> [#uses=0]
187	%19 = getelementptr %struct.rtx_def, %struct.rtx_def* null, i32 0, i32 3		; <%struct.u*> [#uses=1]
188	%20 = getelementptr %struct.u, %struct.u* %19, i32 0, i32 0		; <%struct.block_symbol*> [#uses=1]
189	%21 = bitcast %struct.block_symbol* %20 to [1 x i64]*		; <[1 x i64]*> [#uses=1]
190	%22 = getelementptr [1 x i64], [1 x i64]* %21, i32 0, i32 0		; <i64*> [#uses=0]
191	%23 = call %struct.rtx_def* @plus_constant(%struct.rtx_def* null, i64 0) nounwind		; <%struct.rtx_def*> [#uses=0]
192	unreachable
193}
194