1; RUN: llc < %s -mtriple=x86_64-linux-gnu 2; PR1729 3 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] 202 203declare void @init_flow() 204 205declare ptr @ggc_alloc_cleared_stat(i64) 206 207declare fastcc void @free_edge(ptr) 208 209declare void @ggc_free(ptr) 210 211declare ptr @alloc_block() 212 213declare void @alloc_rbi_pool() 214 215declare ptr @create_alloc_pool(ptr, i64, i64) 216 217declare void @free_rbi_pool() 218 219declare void @free_alloc_pool(ptr) 220 221declare void @initialize_bb_rbi(ptr) 222 223declare void @fancy_abort(ptr, i32, ptr) 224 225declare ptr @pool_alloc(ptr) 226 227declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) 228 229declare void @link_block(ptr, ptr) 230 231declare void @unlink_block(ptr) 232 233declare void @compact_blocks() 234 235declare void @varray_check_failed(ptr, i64, ptr, i32, ptr) 236 237declare void @expunge_block(ptr) 238 239declare void @clear_bb_flags() 240 241declare void @alloc_aux_for_block(ptr, i32) 242 243declare void @_obstack_newchunk(ptr, i32) 244 245declare void @clear_aux_for_blocks() 246 247declare void @free_aux_for_blocks() 248 249declare void @obstack_free(ptr, ptr) 250 251declare void @alloc_aux_for_edge(ptr, i32) 252 253declare void @debug_bb(ptr) 254 255declare void @dump_bb(ptr, ptr, i32) 256 257declare ptr @debug_bb_n(i32) 258 259declare void @dump_edge_info(ptr, ptr, i32) 260 261declare i32 @fputs_unlocked(ptr noalias , ptr noalias ) 262 263declare i32 @fprintf(ptr noalias , ptr noalias , ...) 264 265declare i64 @fwrite(ptr, i64, i64, ptr) 266 267declare i32 @__overflow(ptr, i32) 268 269declare ptr @unchecked_make_edge(ptr, ptr, i32) 270 271declare ptr @vec_gc_p_reserve(ptr, i32) 272 273declare void @vec_assert_fail(ptr, ptr, ptr, i32, ptr) 274 275declare void @execute_on_growing_pred(ptr) 276 277declare ptr @make_edge(ptr, ptr, i32) 278 279declare ptr @find_edge(ptr, ptr) 280 281declare ptr @make_single_succ_edge(ptr, ptr, i32) 282 283declare ptr @cached_make_edge(ptr, ptr, ptr, i32) 284 285declare void @redirect_edge_succ(ptr, ptr) 286 287declare void @execute_on_shrinking_pred(ptr) 288 289declare void @alloc_aux_for_blocks(i32) 290 291declare ptr @xmalloc(i64) 292 293declare i32 @_obstack_begin(ptr, i32, i32, ptr, ptr) 294 295declare void @free(ptr) 296 297declare void @clear_edges() 298 299declare void @remove_edge(ptr) 300 301declare ptr @redirect_edge_succ_nodup(ptr, ptr) 302 303declare void @redirect_edge_pred(ptr, ptr) 304 305define void @check_bb_profile(ptr %bb, ptr %file) { 306entry: 307 br i1 false, label %cond_false759.preheader, label %cond_false149.preheader 308 309cond_false149.preheader: ; preds = %entry 310 ret void 311 312cond_false759.preheader: ; preds = %entry 313 br i1 false, label %cond_next873, label %cond_true794 314 315bb644: ; preds = %cond_next873 316 ret void 317 318cond_true794: ; preds = %cond_false759.preheader 319 ret void 320 321cond_next873: ; preds = %cond_false759.preheader 322 br i1 false, label %bb882, label %bb644 323 324bb882: ; preds = %cond_next873 325 br i1 false, label %cond_true893, label %cond_next901 326 327cond_true893: ; preds = %bb882 328 br label %cond_false1036 329 330cond_next901: ; preds = %bb882 331 ret void 332 333bb929: ; preds = %cond_next1150 334 %tmp934 = add i64 0, %lsum.11225.0 ; <i64> [#uses=1] 335 br i1 false, label %cond_next979, label %cond_true974 336 337cond_true974: ; preds = %bb929 338 ret void 339 340cond_next979: ; preds = %bb929 341 br label %cond_false1036 342 343cond_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 346 347cond_true1051: ; preds = %cond_false1036 348 ret void 349 350cond_next1056: ; preds = %cond_false1036 351 br i1 false, label %cond_next1150, label %cond_true1071 352 353cond_true1071: ; preds = %cond_next1056 354 ret void 355 356cond_next1150: ; preds = %cond_next1056 357 %tmp1156 = icmp eq ptr null, null ; <i1> [#uses=1] 358 br i1 %tmp1156, label %bb1159, label %bb929 359 360bb1159: ; preds = %cond_next1150 361 br i1 false, label %cond_true1169, label %UnifiedReturnBlock 362 363cond_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 367 368UnifiedReturnBlock: ; preds = %bb1159 369 ret void 370} 371 372declare void @dump_flow_info(ptr) 373 374declare i32 @max_reg_num() 375 376declare void @rtl_check_failed_flag(ptr, ptr, ptr, i32, ptr) 377 378declare i32 @reg_preferred_class(i32) 379 380declare i32 @reg_alternate_class(i32) 381 382declare zeroext i8 @maybe_hot_bb_p(ptr) 383 384declare zeroext i8 @probably_never_executed_bb_p(ptr) 385 386declare void @dump_regset(ptr, ptr) 387 388declare void @debug_flow_info() 389 390declare void @alloc_aux_for_edges(i32) 391 392declare void @clear_aux_for_edges() 393 394declare void @free_aux_for_edges() 395 396declare void @brief_dump_cfg(ptr) 397 398declare i32 @fputc(i32, ptr) 399 400declare void @update_bb_profile_for_threading(ptr, i32, i64, ptr) 401