diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2017-10-19 22:19:15 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2017-10-19 20:19:15 +0000 |
commit | ef30ab837c42b9555b3fc290454a5c02cb65487a (patch) | |
tree | 4369c2bc5c320d42e366fed603000b529e1d32b8 /gcc/tree-cfg.c | |
parent | 68581ee1c343fb52065f6ff39ea0d84175b12a66 (diff) | |
download | gcc-ef30ab837c42b9555b3fc290454a5c02cb65487a.zip gcc-ef30ab837c42b9555b3fc290454a5c02cb65487a.tar.gz gcc-ef30ab837c42b9555b3fc290454a5c02cb65487a.tar.bz2 |
asan.c (create_cond_insert_point): Do not update edge count.
* asan.c (create_cond_insert_point): Do not update edge count.
* auto-profile.c (afdo_propagate_edge): Update for edge count removal.
(afdo_propagate_circuit): Likewise.
(afdo_calculate_branch_prob): Likewise.
(afdo_annotate_cfg): Likewise.
* basic-block.h (struct edge_def): Remove count.
(edge_def::count): New accessor.
* bb-reorder.c (rotate_loop): Update.
(find_traces_1_round): Update.
(connect_traces): Update.
(sanitize_hot_paths): Update.
* cfg.c (unchecked_make_edge): Update.
(make_single_succ_edge): Update.
(check_bb_profile): Update.
(dump_edge_info): Update.
(update_bb_profile_for_threading): Update.
(scale_bbs_frequencies_int): Update.
(scale_bbs_frequencies_gcov_type): Update.
(scale_bbs_frequencies_profile_count): Update.
(scale_bbs_frequencies): Update.
* cfganal.c (connect_infinite_loops_to_exit): Update.
* cfgbuild.c (compute_outgoing_frequencies): Update.
(find_many_sub_basic_blocks): Update.
* cfgcleanup.c (try_forward_edges): Update.
(try_crossjump_to_edge): Update
* cfgexpand.c (expand_gimple_cond): Update
(expand_gimple_tailcall): Update
(construct_exit_block): Update
* cfghooks.c (verify_flow_info): Update
(redirect_edge_succ_nodup): Update
(split_edge): Update
(make_forwarder_block): Update
(duplicate_block): Update
(account_profile_record): Update
* cfgloop.c (find_subloop_latch_edge_by_profile): Update.
* cfgloopanal.c (expected_loop_iterations_unbounded): Update.
* cfgloopmanip.c (scale_loop_profile): Update.
(loopify): Update.
(lv_adjust_loop_entry_edge): Update.
* cfgrtl.c (try_redirect_by_replacing_jump): Update.
(force_nonfallthru_and_redirect): Update.
(purge_dead_edges): Update.
(rtl_flow_call_edges_add): Update.
* cgraphunit.c (init_lowered_empty_function): Update.
(cgraph_node::expand_thunk): Update.
* gimple-pretty-print.c (dump_probability): Update.
(dump_edge_probability): Update.
* gimple-ssa-isolate-paths.c (isolate_path): Update.
* haifa-sched.c (sched_create_recovery_edges): Update.
* hsa-gen.c (convert_switch_statements): Update.
* ifcvt.c (dead_or_predicable): Update.
* ipa-inline-transform.c (inline_transform): Update.
* ipa-split.c (split_function): Update.
* ipa-utils.c (ipa_merge_profiles): Update.
* loop-doloop.c (add_test): Update.
* loop-unroll.c (unroll_loop_runtime_iterations): Update.
* lto-streamer-in.c (input_cfg): Update.
(input_function): Update.
* lto-streamer-out.c (output_cfg): Update.
* modulo-sched.c (sms_schedule): Update.
* postreload-gcse.c (eliminate_partially_redundant_load): Update.
* predict.c (maybe_hot_edge_p): Update.
(unlikely_executed_edge_p): Update.
(probably_never_executed_edge_p): Update.
(dump_prediction): Update.
(drop_profile): Update.
(propagate_unlikely_bbs_forward): Update.
(determine_unlikely_bbs): Update.
(force_edge_cold): Update.
* profile.c (compute_branch_probabilities): Update.
* reg-stack.c (better_edge): Update.
* shrink-wrap.c (handle_simple_exit): Update.
* tracer.c (better_p): Update.
* trans-mem.c (expand_transaction): Update.
(split_bb_make_tm_edge): Update.
* tree-call-cdce.c: Update.
* tree-cfg.c (gimple_find_sub_bbs): Update.
(gimple_split_edge): Update.
(gimple_duplicate_sese_region): Update.
(gimple_duplicate_sese_tail): Update.
(gimple_flow_call_edges_add): Update.
(insert_cond_bb): Update.
(execute_fixup_cfg): Update.
* tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
* tree-complex.c (expand_complex_div_wide): Update.
* tree-eh.c (lower_resx): Update.
(unsplit_eh): Update.
(cleanup_empty_eh_move_lp): Update.
* tree-inline.c (copy_edges_for_bb): Update.
(freqs_to_counts): Update.
(copy_cfg_body): Update.
* tree-ssa-dce.c (remove_dead_stmt): Update.
* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
* tree-ssa-loop-im.c (execute_sm_if_changed): Update.
* tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
(unloop_loops): Update.
* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
* tree-ssa-loop-split.c (connect_loops): Update.
(split_loop): Update.
* tree-ssa-loop-unswitch.c (hoist_guard): Update.
* tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
* tree-ssa-reassoc.c (branch_fixup): Update.
* tree-ssa-tail-merge.c (replace_block_by): Update.
* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
(compute_path_counts): Update.
(update_profile): Update.
(recompute_probabilities): Update.
(update_joiner_offpath_counts): Update.
(estimated_freqs_path): Update.
(freqs_to_counts_path): Update.
(clear_counts_path): Update.
(ssa_fix_duplicate_block_edges): Update.
(duplicate_thread_path): Update.
* tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
(case_bit_test_cmp): Update.
(collect_switch_conv_info): Update.
(gen_inbound_check): Update.
(do_jump_if_equal): Update.
(emit_cmp_and_jump_insns): Update.
* tree-tailcall.c (decrease_profile): Update.
(eliminate_tail_call): Update.
* tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
(vect_do_peeling): Update.
* tree-vect-loop.c (scale_profile_for_vect_loop): Update.
* ubsan.c (ubsan_expand_null_ifn): Update.
(ubsan_expand_ptr_ifn): Update.
* value-prof.c (gimple_divmod_fixed_value): Update.
(gimple_mod_pow2): Update.
(gimple_mod_subtract): Update.
(gimple_ic): Update.
(gimple_stringop_fixed_value): Update.
From-SVN: r253910
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index b5e0460..a7c7348 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1062,8 +1062,8 @@ gimple_find_sub_bbs (gimple_seq seq, gimple_stmt_iterator *gsi) edge_iterator ei; FOR_EACH_EDGE (e, ei, bb->preds) { - if (e->count.initialized_p ()) - cnt += e->count; + if (e->count ().initialized_p ()) + cnt += e->count (); else all = false; freq += EDGE_FREQUENCY (e); @@ -1072,8 +1072,6 @@ gimple_find_sub_bbs (gimple_seq seq, gimple_stmt_iterator *gsi) if (all || profile_status_for_fn (cfun) == PROFILE_READ) bb->count = cnt; bb->frequency = freq; - FOR_EACH_EDGE (e, ei, bb->succs) - e->count = bb->count.apply_probability (e->probability); bb = bb->next_bb; } @@ -2843,7 +2841,7 @@ gimple_split_edge (edge edge_in) new_bb = create_empty_bb (after_bb); new_bb->frequency = EDGE_FREQUENCY (edge_in); - new_bb->count = edge_in->count; + new_bb->count = edge_in->count (); e = redirect_edge_and_branch (edge_in, new_bb); gcc_assert (e == edge_in); @@ -6372,7 +6370,7 @@ gimple_duplicate_sese_region (edge entry, edge exit, if (entry->dest->count.initialized_p ()) { total_count = entry->dest->count; - entry_count = entry->count; + entry_count = entry->count (); /* Fix up corner cases, to avoid division by zero or creation of negative frequencies. */ if (entry_count > total_count) @@ -6542,7 +6540,7 @@ gimple_duplicate_sese_tail (edge entry, edge exit, if (exit->src->count > 0) { total_count = exit->src->count; - exit_count = exit->count; + exit_count = exit->count (); /* Fix up corner cases, to avoid division by zero or creation of negative frequencies. */ if (exit_count > total_count) @@ -6597,10 +6595,8 @@ gimple_duplicate_sese_tail (edge entry, edge exit, sorig = single_succ_edge (switch_bb); sorig->flags = exits[1]->flags; sorig->probability = exits[1]->probability; - sorig->count = exits[1]->count; snew = make_edge (switch_bb, nentry_bb, exits[0]->flags); snew->probability = exits[0]->probability; - snew->count = exits[1]->count; /* Register the new edge from SWITCH_BB in loop exit lists. */ @@ -8335,7 +8331,6 @@ gimple_flow_call_edges_add (sbitmap blocks) } e = make_edge (bb, EXIT_BLOCK_PTR_FOR_FN (cfun), EDGE_FAKE); e->probability = profile_probability::guessed_never (); - e->count = profile_count::guessed_zero (); } gsi_prev (&gsi); } @@ -8847,14 +8842,12 @@ insert_cond_bb (basic_block bb, gimple *stmt, gimple *cond, new_bb = create_empty_bb (bb); edge e = make_edge (bb, new_bb, EDGE_TRUE_VALUE); e->probability = prob; - e->count = bb->count.apply_probability (prob); - new_bb->count = e->count; + new_bb->count = e->count (); new_bb->frequency = prob.apply (bb->frequency); make_single_succ_edge (new_bb, fall->dest, EDGE_FALLTHRU); /* Fix edge for split bb. */ fall->flags = EDGE_FALSE_VALUE; - fall->count -= e->count; fall->probability -= e->probability; /* Update dominance info. */ @@ -9252,8 +9245,6 @@ execute_fixup_cfg (void) basic_block bb; gimple_stmt_iterator gsi; int todo = 0; - edge e; - edge_iterator ei; cgraph_node *node = cgraph_node::get (current_function_decl); profile_count num = node->count; profile_count den = ENTRY_BLOCK_PTR_FOR_FN (cfun)->count; @@ -9266,9 +9257,6 @@ execute_fixup_cfg (void) ENTRY_BLOCK_PTR_FOR_FN (cfun)->count = node->count; EXIT_BLOCK_PTR_FOR_FN (cfun)->count = EXIT_BLOCK_PTR_FOR_FN (cfun)->count.apply_scale (num, den); - - FOR_EACH_EDGE (e, ei, ENTRY_BLOCK_PTR_FOR_FN (cfun)->succs) - e->count = e->count.apply_scale (num, den); } FOR_EACH_BB_FN (bb, cfun) @@ -9343,10 +9331,6 @@ execute_fixup_cfg (void) gsi_next (&gsi); } - if (scale) - FOR_EACH_EDGE (e, ei, bb->succs) - e->count = e->count.apply_scale (num, den); - /* If we have a basic block with no successors that does not end with a control statement or a noreturn call end it with a call to __builtin_unreachable. This situation can occur |