[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / X86 / 2007-10-15-CoalescerCrash.ll
blob511b8abe1ef994177d8121d30c8ad03b269b8e12
1 ; RUN: llc < %s -mtriple=x86_64-linux-gnu
2 ; PR1729
4         %struct.CUMULATIVE_ARGS = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
5         %struct.VEC_edge = type { i32, i32, [1 x ptr] }
6         %struct.VEC_tree = type { i32, i32, [1 x ptr] }
7         %struct._IO_FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i64, i32, [20 x i8] }
8         %struct._IO_marker = type { ptr, ptr, i32 }
9         %struct._obstack_chunk = type { ptr, ptr, [4 x i8] }
10         %struct.addr_diff_vec_flags = type <{ i8, i8, i8, i8 }>
11         %struct.alloc_pool_def = type { ptr, i64, i64, ptr, i64, i64, i64, ptr, i64, i64 }
12         %struct.alloc_pool_list_def = type { ptr }
13         %struct.basic_block_def = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x ptr], ptr, ptr, ptr, ptr, i64, i32, i32, i32, i32 }
14         %struct.bb_ann_d = type opaque
15         %struct.bitmap_element_def = type { ptr, ptr, i32, [2 x i64] }
16         %struct.bitmap_head_def = type { ptr, ptr, i32, ptr }
17         %struct.bitmap_obstack = type { ptr, ptr, %struct.obstack }
18         %struct.cselib_val_struct = type opaque
19         %struct.dataflow_d = type opaque
20         %struct.die_struct = type opaque
21         %struct.edge_def = type { ptr, ptr, %struct.edge_def_insns, ptr, ptr, i32, i32, i64, i32 }
22         %struct.edge_def_insns = type { ptr }
23         %struct.edge_iterator = type { i32, ptr }
24         %struct.eh_status = type opaque
25         %struct.elt_list = type opaque
26         %struct.emit_status = type { i32, i32, ptr, ptr, ptr, i32, %struct.location_t, i32, ptr, ptr }
27         %struct.et_node = type opaque
28         %struct.expr_status = type { i32, i32, i32, ptr, ptr, ptr }
29         %struct.function = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, ptr, %struct.CUMULATIVE_ARGS, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i32, i64, ptr, ptr, ptr, ptr, ptr, i32, ptr, i32, i32, ptr, ptr, i32, i32, i32, ptr, i32, i32, i8, i8, ptr, ptr, i32, i32, i32, i32, %struct.location_t, ptr, ptr, ptr, i8, i8, i8 }
30         %struct.ht_identifier = type { ptr, i32, i32 }
31         %struct.initial_value_struct = type opaque
32         %struct.lang_decl = type opaque
33         %struct.lang_type = type opaque
34         %struct.language_function = type opaque
35         %struct.location_t = type { ptr, i32 }
36         %struct.loop = type opaque
37         %struct.machine_function = type { ptr, ptr, ptr, i32, i32, i32, i32, i32 }
38         %struct.mem_attrs = type { i64, ptr, ptr, ptr, i32 }
39         %struct.obstack = type { i64, ptr, ptr, ptr, ptr, i64, i32, ptr, ptr, ptr, i8 }
40         %struct.phi_arg_d = type { ptr, i8 }
41         %struct.ptr_info_def = type opaque
42         %struct.real_value = type opaque
43         %struct.reg_attrs = type { ptr, i64 }
44         %struct.reg_info_def = type { i32, i32, i32, i32, i32, i32, i32, i32, i32 }
45         %struct.reorder_block_def = type { ptr, ptr, ptr, ptr, ptr, i32, i32, i32 }
46         %struct.rtunion = type { ptr }
47         %struct.rtvec_def = type { i32, [1 x ptr] }
48         %struct.rtx_def = type { i16, i8, i8, %struct.u }
49         %struct.sequence_stack = type { ptr, ptr, ptr }
50         %struct.simple_bitmap_def = type { i32, i32, i32, [1 x i64] }
51         %struct.stack_local_entry = type opaque
52         %struct.temp_slot = type opaque
53         %struct.tree_binfo = type { %struct.tree_common, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.VEC_tree }
54         %struct.tree_block = type { %struct.tree_common, i32, ptr, ptr, ptr, ptr, ptr, ptr }
55         %struct.tree_common = type { ptr, ptr, ptr, i8, i8, i8, i8, i8 }
56         %struct.tree_complex = type { %struct.tree_common, ptr, ptr }
57         %struct.tree_decl = type { %struct.tree_common, %struct.location_t, i32, ptr, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.tree_decl_u1, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, %struct.tree_decl_u2, ptr, ptr, i64, ptr }
58         %struct.tree_decl_u1 = type { i64 }
59         %struct.tree_decl_u1_a = type <{ i32 }>
60         %struct.tree_decl_u2 = type { ptr }
61         %struct.tree_exp = type { %struct.tree_common, ptr, i32, ptr, [1 x ptr] }
62         %struct.tree_identifier = type { %struct.tree_common, %struct.ht_identifier }
63         %struct.tree_int_cst = type { %struct.tree_common, %struct.tree_int_cst_lowhi }
64         %struct.tree_int_cst_lowhi = type { i64, i64 }
65         %struct.tree_list = type { %struct.tree_common, ptr, ptr }
66         %struct.tree_node = type { %struct.tree_decl }
67         %struct.tree_phi_node = type { %struct.tree_common, ptr, i32, i32, i32, ptr, ptr, [1 x %struct.phi_arg_d] }
68         %struct.tree_real_cst = type { %struct.tree_common, ptr }
69         %struct.tree_ssa_name = type { %struct.tree_common, ptr, i32, ptr, ptr, ptr }
70         %struct.tree_statement_list = type { %struct.tree_common, ptr, ptr }
71         %struct.tree_statement_list_node = type { ptr, ptr, ptr }
72         %struct.tree_string = type { %struct.tree_common, i32, [1 x i8] }
73         %struct.tree_type = type { %struct.tree_common, ptr, ptr, ptr, ptr, i32, i16, i8, i8, i32, ptr, ptr, %struct.rtunion, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, ptr }
74         %struct.tree_type_symtab = type { ptr }
75         %struct.tree_value_handle = type { %struct.tree_common, ptr, i32 }
76         %struct.tree_vec = type { %struct.tree_common, i32, [1 x ptr] }
77         %struct.tree_vector = type { %struct.tree_common, ptr }
78         %struct.u = type { [1 x %struct.rtunion] }
79         %struct.value_set = type opaque
80         %struct.var_refs_queue = type { ptr, i32, i32, ptr }
81         %struct.varasm_status = type opaque
82         %struct.varray_data = type { [1 x i64] }
83         %struct.varray_head_tag = type { i64, i64, i32, ptr, %struct.varray_data }
84         %union.tree_ann_d = type opaque
85 @first_edge_aux_obj = external global ptr               ; <ptr> [#uses=0]
86 @first_block_aux_obj = external global ptr              ; <ptr> [#uses=0]
87 @n_edges = external global i32          ; <ptr> [#uses=0]
88 @ENTRY_BLOCK_PTR = external global ptr          ; <ptr> [#uses=0]
89 @EXIT_BLOCK_PTR = external global ptr           ; <ptr> [#uses=0]
90 @n_basic_blocks = external global i32           ; <ptr> [#uses=0]
91 @.str = external constant [9 x i8]              ; <ptr> [#uses=0]
92 @rbi_pool = external global ptr         ; <ptr> [#uses=0]
93 @__FUNCTION__.19643 = external constant [18 x i8]               ; <ptr> [#uses=0]
94 @.str1 = external constant [20 x i8]            ; <ptr> [#uses=0]
95 @__FUNCTION__.19670 = external constant [15 x i8]               ; <ptr> [#uses=0]
96 @basic_block_info = external global ptr         ; <ptr> [#uses=0]
97 @last_basic_block = external global i32         ; <ptr> [#uses=0]
98 @__FUNCTION__.19696 = external constant [14 x i8]               ; <ptr> [#uses=0]
99 @__FUNCTION__.20191 = external constant [20 x i8]               ; <ptr> [#uses=0]
100 @block_aux_obstack = external global %struct.obstack            ; <ptr> [#uses=0]
101 @__FUNCTION__.20301 = external constant [20 x i8]               ; <ptr> [#uses=0]
102 @__FUNCTION__.20316 = external constant [19 x i8]               ; <ptr> [#uses=0]
103 @edge_aux_obstack = external global %struct.obstack             ; <ptr> [#uses=0]
104 @stderr = external global ptr           ; <ptr> [#uses=0]
105 @__FUNCTION__.20463 = external constant [11 x i8]               ; <ptr> [#uses=0]
106 @.str2 = external constant [7 x i8]             ; <ptr> [#uses=0]
107 @.str3 = external constant [6 x i8]             ; <ptr> [#uses=0]
108 @.str4 = external constant [4 x i8]             ; <ptr> [#uses=0]
109 @.str5 = external constant [11 x i8]            ; <ptr> [#uses=0]
110 @.str6 = external constant [8 x i8]             ; <ptr> [#uses=0]
111 @.str7 = external constant [4 x i8]             ; <ptr> [#uses=0]
112 @bitnames.20157 = external constant [13 x ptr]          ; <ptr> [#uses=0]
113 @.str8 = external constant [9 x i8]             ; <ptr> [#uses=0]
114 @.str9 = external constant [3 x i8]             ; <ptr> [#uses=0]
115 @.str10 = external constant [7 x i8]            ; <ptr> [#uses=0]
116 @.str11 = external constant [3 x i8]            ; <ptr> [#uses=0]
117 @.str12 = external constant [5 x i8]            ; <ptr> [#uses=0]
118 @.str13 = external constant [9 x i8]            ; <ptr> [#uses=0]
119 @.str14 = external constant [13 x i8]           ; <ptr> [#uses=0]
120 @.str15 = external constant [12 x i8]           ; <ptr> [#uses=0]
121 @.str16 = external constant [8 x i8]            ; <ptr> [#uses=0]
122 @.str17 = external constant [10 x i8]           ; <ptr> [#uses=0]
123 @.str18 = external constant [5 x i8]            ; <ptr> [#uses=0]
124 @.str19 = external constant [6 x i8]            ; <ptr> [#uses=0]
125 @.str20 = external constant [5 x i8]            ; <ptr> [#uses=0]
126 @.str21 = external constant [3 x i8]            ; <ptr> [#uses=0]
127 @.str22 = external constant [3 x i8]            ; <ptr> [#uses=0]
128 @__FUNCTION__.19709 = external constant [20 x i8]               ; <ptr> [#uses=0]
129 @.str23 = external constant [5 x i8]            ; <ptr> [#uses=0]
130 @.str24 = external constant [10 x i8]           ; <ptr> [#uses=0]
131 @__FUNCTION__.19813 = external constant [19 x i8]               ; <ptr> [#uses=0]
132 @.str25 = external constant [7 x i8]            ; <ptr> [#uses=0]
133 @.str26 = external constant [6 x i8]            ; <ptr> [#uses=0]
134 @initialized.20241.b = external global i1               ; <ptr> [#uses=0]
135 @__FUNCTION__.20244 = external constant [21 x i8]               ; <ptr> [#uses=0]
136 @__FUNCTION__.19601 = external constant [12 x i8]               ; <ptr> [#uses=0]
137 @__FUNCTION__.14571 = external constant [8 x i8]                ; <ptr> [#uses=0]
138 @__FUNCTION__.14535 = external constant [13 x i8]               ; <ptr> [#uses=0]
139 @.str27 = external constant [28 x i8]           ; <ptr> [#uses=0]
140 @__FUNCTION__.14589 = external constant [8 x i8]                ; <ptr> [#uses=0]
141 @__FUNCTION__.19792 = external constant [12 x i8]               ; <ptr> [#uses=0]
142 @__FUNCTION__.19851 = external constant [19 x i8]               ; <ptr> [#uses=0]
143 @profile_status = external global i32           ; <ptr> [#uses=0]
144 @.str29 = external constant [46 x i8]           ; <ptr> [#uses=0]
145 @.str30 = external constant [49 x i8]           ; <ptr> [#uses=0]
146 @.str31 = external constant [54 x i8]           ; <ptr> [#uses=0]
147 @.str32 = external constant [49 x i8]           ; <ptr> [#uses=1]
148 @__FUNCTION__.19948 = external constant [15 x i8]               ; <ptr> [#uses=0]
149 @reg_n_info = external global ptr               ; <ptr> [#uses=0]
150 @reload_completed = external global i32         ; <ptr> [#uses=0]
151 @.str33 = external constant [15 x i8]           ; <ptr> [#uses=0]
152 @.str34 = external constant [43 x i8]           ; <ptr> [#uses=0]
153 @.str35 = external constant [13 x i8]           ; <ptr> [#uses=0]
154 @.str36 = external constant [1 x i8]            ; <ptr> [#uses=0]
155 @.str37 = external constant [2 x i8]            ; <ptr> [#uses=0]
156 @.str38 = external constant [16 x i8]           ; <ptr> [#uses=0]
157 @cfun = external global ptr             ; <ptr> [#uses=0]
158 @.str39 = external constant [14 x i8]           ; <ptr> [#uses=0]
159 @.str40 = external constant [11 x i8]           ; <ptr> [#uses=0]
160 @.str41 = external constant [20 x i8]           ; <ptr> [#uses=0]
161 @.str42 = external constant [17 x i8]           ; <ptr> [#uses=0]
162 @.str43 = external constant [19 x i8]           ; <ptr> [#uses=0]
163 @mode_size = external global [48 x i8]          ; <ptr> [#uses=0]
164 @target_flags = external global i32             ; <ptr> [#uses=0]
165 @.str44 = external constant [11 x i8]           ; <ptr> [#uses=0]
166 @reg_class_names = external global [0 x ptr]            ; <ptr> [#uses=0]
167 @.str45 = external constant [10 x i8]           ; <ptr> [#uses=0]
168 @.str46 = external constant [13 x i8]           ; <ptr> [#uses=0]
169 @.str47 = external constant [19 x i8]           ; <ptr> [#uses=0]
170 @.str48 = external constant [12 x i8]           ; <ptr> [#uses=0]
171 @.str49 = external constant [10 x i8]           ; <ptr> [#uses=0]
172 @.str50 = external constant [3 x i8]            ; <ptr> [#uses=0]
173 @.str51 = external constant [29 x i8]           ; <ptr> [#uses=0]
174 @.str52 = external constant [17 x i8]           ; <ptr> [#uses=0]
175 @.str53 = external constant [19 x i8]           ; <ptr> [#uses=0]
176 @.str54 = external constant [22 x i8]           ; <ptr> [#uses=0]
177 @.str55 = external constant [10 x i8]           ; <ptr> [#uses=0]
178 @.str56 = external constant [12 x i8]           ; <ptr> [#uses=0]
179 @.str57 = external constant [26 x i8]           ; <ptr> [#uses=0]
180 @.str58 = external constant [15 x i8]           ; <ptr> [#uses=0]
181 @.str59 = external constant [14 x i8]           ; <ptr> [#uses=0]
182 @.str60 = external constant [26 x i8]           ; <ptr> [#uses=0]
183 @.str61 = external constant [24 x i8]           ; <ptr> [#uses=0]
184 @initialized.20366.b = external global i1               ; <ptr> [#uses=0]
185 @__FUNCTION__.20369 = external constant [20 x i8]               ; <ptr> [#uses=0]
186 @__FUNCTION__.20442 = external constant [19 x i8]               ; <ptr> [#uses=0]
187 @bb_bitnames.20476 = external constant [6 x ptr]                ; <ptr> [#uses=0]
188 @.str62 = external constant [6 x i8]            ; <ptr> [#uses=0]
189 @.str63 = external constant [4 x i8]            ; <ptr> [#uses=0]
190 @.str64 = external constant [10 x i8]           ; <ptr> [#uses=0]
191 @.str65 = external constant [8 x i8]            ; <ptr> [#uses=0]
192 @.str66 = external constant [17 x i8]           ; <ptr> [#uses=0]
193 @.str67 = external constant [11 x i8]           ; <ptr> [#uses=0]
194 @.str68 = external constant [15 x i8]           ; <ptr> [#uses=0]
195 @.str69 = external constant [3 x i8]            ; <ptr> [#uses=0]
196 @.str70 = external constant [3 x i8]            ; <ptr> [#uses=0]
197 @__FUNCTION__.20520 = external constant [32 x i8]               ; <ptr> [#uses=0]
198 @dump_file = external global ptr                ; <ptr> [#uses=0]
199 @.str71 = external constant [86 x i8]           ; <ptr> [#uses=0]
200 @.str72 = external constant [94 x i8]           ; <ptr> [#uses=0]
201 @reg_obstack = external global %struct.bitmap_obstack           ; <ptr> [#uses=0]
203 declare void @init_flow()
205 declare ptr @ggc_alloc_cleared_stat(i64)
207 declare fastcc void @free_edge(ptr)
209 declare void @ggc_free(ptr)
211 declare ptr @alloc_block()
213 declare void @alloc_rbi_pool()
215 declare ptr @create_alloc_pool(ptr, i64, i64)
217 declare void @free_rbi_pool()
219 declare void @free_alloc_pool(ptr)
221 declare void @initialize_bb_rbi(ptr)
223 declare void @fancy_abort(ptr, i32, ptr)
225 declare ptr @pool_alloc(ptr)
227 declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1)
229 declare void @link_block(ptr, ptr)
231 declare void @unlink_block(ptr)
233 declare void @compact_blocks()
235 declare void @varray_check_failed(ptr, i64, ptr, i32, ptr)
237 declare void @expunge_block(ptr)
239 declare void @clear_bb_flags()
241 declare void @alloc_aux_for_block(ptr, i32)
243 declare void @_obstack_newchunk(ptr, i32)
245 declare void @clear_aux_for_blocks()
247 declare void @free_aux_for_blocks()
249 declare void @obstack_free(ptr, ptr)
251 declare void @alloc_aux_for_edge(ptr, i32)
253 declare void @debug_bb(ptr)
255 declare void @dump_bb(ptr, ptr, i32)
257 declare ptr @debug_bb_n(i32)
259 declare void @dump_edge_info(ptr, ptr, i32)
261 declare i32 @fputs_unlocked(ptr noalias , ptr noalias )
263 declare i32 @fprintf(ptr noalias , ptr noalias , ...)
265 declare i64 @fwrite(ptr, i64, i64, ptr)
267 declare i32 @__overflow(ptr, i32)
269 declare ptr @unchecked_make_edge(ptr, ptr, i32)
271 declare ptr @vec_gc_p_reserve(ptr, i32)
273 declare void @vec_assert_fail(ptr, ptr, ptr, i32, ptr)
275 declare void @execute_on_growing_pred(ptr)
277 declare ptr @make_edge(ptr, ptr, i32)
279 declare ptr @find_edge(ptr, ptr)
281 declare ptr @make_single_succ_edge(ptr, ptr, i32)
283 declare ptr @cached_make_edge(ptr, ptr, ptr, i32)
285 declare void @redirect_edge_succ(ptr, ptr)
287 declare void @execute_on_shrinking_pred(ptr)
289 declare void @alloc_aux_for_blocks(i32)
291 declare ptr @xmalloc(i64)
293 declare i32 @_obstack_begin(ptr, i32, i32, ptr, ptr)
295 declare void @free(ptr)
297 declare void @clear_edges()
299 declare void @remove_edge(ptr)
301 declare ptr @redirect_edge_succ_nodup(ptr, ptr)
303 declare void @redirect_edge_pred(ptr, ptr)
305 define void @check_bb_profile(ptr %bb, ptr %file) {
306 entry:
307         br i1 false, label %cond_false759.preheader, label %cond_false149.preheader
309 cond_false149.preheader:                ; preds = %entry
310         ret void
312 cond_false759.preheader:                ; preds = %entry
313         br i1 false, label %cond_next873, label %cond_true794
315 bb644:          ; preds = %cond_next873
316         ret void
318 cond_true794:           ; preds = %cond_false759.preheader
319         ret void
321 cond_next873:           ; preds = %cond_false759.preheader
322         br i1 false, label %bb882, label %bb644
324 bb882:          ; preds = %cond_next873
325         br i1 false, label %cond_true893, label %cond_next901
327 cond_true893:           ; preds = %bb882
328         br label %cond_false1036
330 cond_next901:           ; preds = %bb882
331         ret void
333 bb929:          ; preds = %cond_next1150
334         %tmp934 = add i64 0, %lsum.11225.0              ; <i64> [#uses=1]
335         br i1 false, label %cond_next979, label %cond_true974
337 cond_true974:           ; preds = %bb929
338         ret void
340 cond_next979:           ; preds = %bb929
341         br label %cond_false1036
343 cond_false1036:         ; preds = %cond_next979, %cond_true893
344         %lsum.11225.0 = phi i64 [ 0, %cond_true893 ], [ %tmp934, %cond_next979 ]                ; <i64> [#uses=2]
345         br i1 false, label %cond_next1056, label %cond_true1051
347 cond_true1051:          ; preds = %cond_false1036
348         ret void
350 cond_next1056:          ; preds = %cond_false1036
351         br i1 false, label %cond_next1150, label %cond_true1071
353 cond_true1071:          ; preds = %cond_next1056
354         ret void
356 cond_next1150:          ; preds = %cond_next1056
357         %tmp1156 = icmp eq ptr null, null               ; <i1> [#uses=1]
358         br i1 %tmp1156, label %bb1159, label %bb929
360 bb1159:         ; preds = %cond_next1150
361         br i1 false, label %cond_true1169, label %UnifiedReturnBlock
363 cond_true1169:          ; preds = %bb1159
364         %tmp11741175 = trunc i64 %lsum.11225.0 to i32           ; <i32> [#uses=1]
365         %tmp1178 = tail call i32 (ptr  , ptr  , ...) @fprintf( ptr noalias %file  , ptr @.str32  , i32 %tmp11741175, i32 0 )            ; <i32> [#uses=0]
366         ret void
368 UnifiedReturnBlock:             ; preds = %bb1159
369         ret void
372 declare void @dump_flow_info(ptr)
374 declare i32 @max_reg_num()
376 declare void @rtl_check_failed_flag(ptr, ptr, ptr, i32, ptr)
378 declare i32 @reg_preferred_class(i32)
380 declare i32 @reg_alternate_class(i32)
382 declare zeroext i8 @maybe_hot_bb_p(ptr)  
384 declare zeroext i8 @probably_never_executed_bb_p(ptr)  
386 declare void @dump_regset(ptr, ptr)
388 declare void @debug_flow_info()
390 declare void @alloc_aux_for_edges(i32)
392 declare void @clear_aux_for_edges()
394 declare void @free_aux_for_edges()
396 declare void @brief_dump_cfg(ptr)
398 declare i32 @fputc(i32, ptr)
400 declare void @update_bb_profile_for_threading(ptr, i32, i64, ptr)