1 ; RUN: opt < %s -passes=gvn -enable-load-pre -disable-output
3 %struct.VEC_rtx_base = type { i32, i32, [1 x ptr] }
4 %struct.VEC_rtx_gc = type { %struct.VEC_rtx_base }
5 %struct.block_symbol = type { [3 x %struct.cgraph_rtl_info], ptr, i64 }
6 %struct.cgraph_rtl_info = type { i32 }
7 %struct.object_block = type { ptr, i32, i64, ptr, ptr }
8 %struct.rtvec_def = type { i32, [1 x ptr] }
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, ptr, ptr, ptr }
14 declare ptr @gen_rtvec(i32, ...)
16 declare ptr @plus_constant(ptr, i64)
18 declare ptr @gen_rtx_fmt_Ei(i32, i32, ptr, i32)
20 declare i32 @local_symbolic_operand(ptr, i32)
22 define ptr @legitimize_pic_address(ptr %orig, ptr %reg) nounwind {
24 %addr = alloca ptr ; <ptr> [#uses=5]
25 %iftmp.1532 = alloca ptr ; <ptr> [#uses=3]
26 store ptr %orig, ptr null
27 %0 = load ptr, ptr null, align 4 ; <ptr> [#uses=0]
28 br i1 false, label %bb96, label %bb59
30 bb59: ; preds = %entry
31 %1 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=1]
32 %2 = call i32 @local_symbolic_operand(ptr %1, i32 0) nounwind ; <i32> [#uses=0]
33 br i1 false, label %bb96, label %bb63
36 br i1 false, label %bb64, label %bb74
39 br i1 false, label %bb72, label %bb65
44 bb72: ; preds = %bb65, %bb64
47 bb74: ; preds = %bb72, %bb63
48 br i1 false, label %bb75, label %bb76
53 bb76: ; preds = %bb75, %bb74
54 br i1 false, label %bb77, label %bb84
57 %3 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 0 ; <ptr> [#uses=0]
61 br i1 false, label %bb85, label %bb86
69 bb87: ; preds = %bb86, %bb85
70 %4 = call ptr @gen_rtx_fmt_Ei(i32 16, i32 0, ptr null, i32 1) nounwind ; <ptr> [#uses=0]
71 br i1 false, label %bb89, label %bb90
79 bb91: ; preds = %bb90, %bb89
80 br i1 false, label %bb92, label %bb93
88 bb94: ; preds = %bb93, %bb92
91 bb96: ; preds = %bb59, %entry
92 %5 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=1]
93 %6 = getelementptr %struct.rtx_def, ptr %5, i32 0, i32 0 ; <ptr> [#uses=1]
94 %7 = load i16, ptr %6, align 2 ; <i16> [#uses=0]
95 br i1 false, label %bb147, label %bb97
98 %8 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=0]
99 br i1 false, label %bb147, label %bb99
101 bb99: ; preds = %bb97
104 bb147: ; preds = %bb97, %bb96
105 %9 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=1]
106 %10 = getelementptr %struct.rtx_def, ptr %9, i32 0, i32 0 ; <ptr> [#uses=1]
107 %11 = load i16, ptr %10, align 2 ; <i16> [#uses=0]
108 br i1 false, label %bb164, label %bb148
110 bb148: ; preds = %bb147
111 br i1 false, label %bb164, label %bb149
113 bb149: ; preds = %bb148
114 br i1 false, label %bb150, label %bb152
116 bb150: ; preds = %bb149
119 bb152: ; preds = %bb149
122 bb164: ; preds = %bb152, %bb148, %bb147
123 %12 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 1 ; <ptr> [#uses=0]
124 br i1 false, label %bb165, label %bb166
126 bb165: ; preds = %bb164
129 bb166: ; preds = %bb164
132 bb167: ; preds = %bb166, %bb165
133 br i1 false, label %bb211, label %bb168
135 bb168: ; preds = %bb167
136 br i1 false, label %bb211, label %bb170
138 bb170: ; preds = %bb168
139 br i1 false, label %bb172, label %bb181
141 bb172: ; preds = %bb170
142 br i1 false, label %bb179, label %bb174
144 bb174: ; preds = %bb172
145 br i1 false, label %bb177, label %bb175
147 bb175: ; preds = %bb174
148 br i1 false, label %bb177, label %bb176
150 bb176: ; preds = %bb175
153 bb177: ; preds = %bb175, %bb174
156 bb178: ; preds = %bb177, %bb176
159 bb179: ; preds = %bb172
162 bb180: ; preds = %bb179, %bb178
165 bb181: ; preds = %bb180, %bb170
166 %13 = call ptr (i32, ...) @gen_rtvec(i32 1, ptr null) nounwind ; <ptr> [#uses=0]
169 bb211: ; preds = %bb168, %bb167
170 %14 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=0]
171 %15 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 0 ; <ptr> [#uses=0]
172 store ptr null, ptr null, align 4
173 br i1 false, label %bb212, label %bb213
175 bb212: ; preds = %bb211
176 store ptr null, ptr %iftmp.1532, align 4
179 bb213: ; preds = %bb211
180 store ptr null, ptr %iftmp.1532, align 4
183 bb214: ; preds = %bb213, %bb212
184 %16 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 1 ; <ptr> [#uses=0]
185 %17 = load ptr, ptr %iftmp.1532, align 4 ; <ptr> [#uses=0]
186 %18 = getelementptr %struct.rtx_def, ptr null, i32 0, i32 3 ; <ptr> [#uses=1]
187 %19 = getelementptr %struct.u, ptr %18, i32 0, i32 0 ; <ptr> [#uses=1]
188 %20 = getelementptr [1 x i64], ptr %19, i32 0, i32 0 ; <ptr> [#uses=0]
189 %21 = call ptr @plus_constant(ptr null, i64 0) nounwind ; <ptr> [#uses=0]