GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | histogram_value_t |
Macros | |
#define | COUNTER_FOR_HIST_TYPE(TYPE) |
#define | HIST_TYPE_FOR_COUNTER(COUNTER) |
Typedefs | |
typedef struct histogram_value_t * | histogram_value |
typedef const struct histogram_value_t * | const_histogram_value |
typedef vec< histogram_value > | histogram_values |
Enumerations | |
enum | hist_type { HIST_TYPE_INTERVAL , HIST_TYPE_POW2 , HIST_TYPE_TOPN_VALUES , HIST_TYPE_INDIR_CALL , HIST_TYPE_AVERAGE , HIST_TYPE_IOR , HIST_TYPE_TIME_PROFILE , HIST_TYPE_MAX } |
#define COUNTER_FOR_HIST_TYPE | ( | TYPE | ) |
Referenced by compute_value_histograms(), and instrument_values().
#define HIST_TYPE_FOR_COUNTER | ( | COUNTER | ) |
typedef const struct histogram_value_t* const_histogram_value |
typedef struct histogram_value_t* histogram_value |
typedef vec<histogram_value> histogram_values |
enum hist_type |
Definitions for transformations based on profile information for values. Copyright (C) 2003-2024 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
Supported histogram types.
Enumerator | |
---|---|
HIST_TYPE_INTERVAL | |
HIST_TYPE_POW2 | |
HIST_TYPE_TOPN_VALUES | |
HIST_TYPE_INDIR_CALL | |
HIST_TYPE_AVERAGE | |
HIST_TYPE_IOR | |
HIST_TYPE_TIME_PROFILE | |
HIST_TYPE_MAX |
|
extern |
Instrument and/or analyze program behavior based on program the CFG. This function creates a representation of the control flow graph (of the function being compiled) that is suitable for the instrumentation of edges and/or converting measured edge counts to counts on the complete CFG. When FLAG_PROFILE_ARCS is nonzero, this function instruments the edges in the flow graph that are needed to reconstruct the dynamic behavior of the flow graph. This data is written to the gcno file for gcov. When FLAG_PROFILE_CONDITIONS is nonzero, this functions instruments the edges in the control flow graph to track what conditions are evaluated to in order to determine what conditions are covered and have an independent effect on the outcome (modified condition/decision coverage). This data is written to the gcno file for gcov. When FLAG_BRANCH_PROBABILITIES is nonzero, this function reads auxiliary information from the gcda file containing edge count information from previous executions of the function being compiled. In this case, the control flow graph is annotated with actual execution counts by compute_branch_probabilities(). Main entry point of this file.
References hash_set< KeyId, Lazy, Traits >::add(), add_noreturn_fake_exit_edges(), alloc_aux_for_edges(), loop::any_estimate, cfun, compact_blocks(), compare_freqs(), compute_branch_probabilities(), compute_function_frequency(), compute_value_histograms(), hash_set< KeyId, Lazy, Traits >::contains(), basic_block_def::count, cov_blocks(), cov_free(), cov_length(), cov_maps(), cov_masks(), coverage_begin_function(), coverage_compute_cfg_checksum(), coverage_compute_lineno_checksum(), coverage_counter_alloc(), coverage_end_function(), create_edge_list(), curr_location, current_function_decl, DECL_SOURCE_LOCATION, dump_file, dump_flags, dump_function_to_file(), ECF_RETURNS_TWICE, EDGE_INFO, ENTRY_BLOCK_PTR_FOR_FN, EXIT_BLOCK_PTR_FOR_FN, expand_location(), expected_loop_iterations_by_profile(), find_conditions(), find_spanning_tree(), flow_call_edges_add(), FOR_BB_BETWEEN, FOR_EACH_BB_FN, FOR_EACH_EDGE, free_aux_for_edges(), free_edge_list(), gcc_assert, gcc_checking_assert, GCOV_ARC_FAKE, GCOV_ARC_FALLTHROUGH, GCOV_ARC_FALSE, GCOV_ARC_ON_TREE, GCOV_ARC_TRUE, GCOV_TAG_ARCS, GCOV_TAG_BLOCKS, GCOV_TAG_CONDS, gcov_write_length(), gcov_write_string(), gcov_write_tag(), gcov_write_unsigned(), gimple_call_builtin_p(), gimple_call_flags(), gimple_call_internal_fn(), gimple_call_internal_p(), gimple_filename(), gimple_find_values_to_profile(), gimple_has_location(), gimple_init_gcov_profiler(), gimple_lineno(), gimple_location(), gsi_commit_edge_inserts(), gsi_end_p(), gsi_last_nondebug_bb(), gsi_next(), gsi_prev_nondebug(), gsi_start_bb(), gsi_start_nondebug_after_labels_bb(), gsi_stmt(), loop::header, i, edge_profile_info::ignore, basic_block_def::index, INDEX_EDGE, instrument_decisions(), instrument_edges(), instrument_values(), profile_count::ipa(), is_gimple_call(), array_slice< T >::is_valid(), last, LOCATION_FILE, LOCATION_LINE, make_edge(), MAX, n_basic_blocks_for_fn, profile_count::nonzero_p(), NULL, NUM_EDGES, edge_list::num_edges, offset, edge_profile_info::on_tree, output_location(), basic_block_def::preds, PROFILE_READ, profile_status_for_fn, qsort, record_niter_bound(), remove_fake_edges(), report_predictor_hitrates(), RESERVED_LOCATION_P, single_succ_edge(), single_succ_p(), split_block_after_labels(), split_edge(), basic_block_def::succs, TDF_DETAILS, sreal::to_nearest_int(), total_num_blocks, total_num_conds, total_num_edges, total_num_edges_ignored, total_num_edges_instrumented, and total_num_times_called.
Referenced by tree_profiling().
Dump all histograms attached to STMT to DUMP_FILE.
References dump_file, dump_histogram_value(), gimple_histogram_value(), histogram_value_t::hvalue, and histogram_value_t::next.
Referenced by gimple_dump_bb_buff(), and gimple_value_profile_transformations().
|
extern |
Performs file-level cleanup after branch-prob processing is completed.
References dump_file, i, total_hist_br_prob, total_num_blocks, total_num_blocks_created, total_num_branches, total_num_conds, total_num_edges, total_num_edges_ignored, total_num_edges_instrumented, total_num_passes, and total_num_times_called.
Referenced by gcc::pass_manager::finish_optimization_passes().
|
extern |
Return cgraph node for function with pid
References cgraph_node_map, cgraph_node::get(), NULL, and cgraph_node::profile_id.
Referenced by speculative_call_summary::dump(), dump_ic_profile(), and ipa_profile().
void free_histograms | ( | function * | fn | ) |
References free_hist(), NULL, and VALUE_HISTOGRAMS.
Referenced by release_function_body().
bool get_nth_most_common_value | ( | gimple * | stmt, |
const char * | counter_type, | ||
histogram_value | hist, | ||
gcov_type * | value, | ||
gcov_type * | count, | ||
gcov_type * | all, | ||
unsigned | n ) |
Return the n-th value count of TOPN_VALUE histogram. If there's a value, return true and set VALUE and COUNT arguments. Counters have the following meaning. abs (counters[0]) is the number of executions for i in 0 ... TOPN-1 counters[2 * i + 2] is target counters[2 * i + 3] is corresponding hitrate counter. Value of counters[0] negative when counter became full during merging and some values are lost.
References abs_hwi(), check_counter(), count, histogram_value_t::counters, dump_file, gimple_bb(), histogram_value_t::hvalue, i, PROFILE_REPRODUCIBILITY_MULTITHREADED, and PROFILE_REPRODUCIBILITY_PARALLEL_RUNS.
Referenced by dump_ic_profile(), gimple_divmod_fixed_value_transform(), gimple_stringops_transform(), and ipa_profile_generate_summary().
void gimple_add_histogram_value | ( | struct function * | fun, |
gimple * | stmt, | ||
histogram_value | hist ) |
Add histogram for STMT.
References histogram_value_t::fun, gimple_histogram_value(), histogram_value_t::hvalue, histogram_value_t::next, and set_histogram_value().
Referenced by autofdo::afdo_indirect_call(), compute_value_histograms(), gimple_duplicate_stmt_histograms(), and stream_in_histogram_value().
histogram_value gimple_alloc_histogram_value | ( | struct function * | fun, |
enum hist_type | type, | ||
gimple * | stmt, | ||
tree | value ) |
Allocate histogram value.
References histogram_value_t::hvalue, histogram_value_t::stmt, histogram_value_t::type, type(), and histogram_value_t::value.
Referenced by autofdo::afdo_indirect_call(), gimple_divmod_values_to_profile(), gimple_duplicate_stmt_histograms(), gimple_find_values_to_profile(), gimple_indirect_call_to_profile(), gimple_stringops_values_to_profile(), and stream_in_histogram_value().
void gimple_duplicate_stmt_histograms | ( | struct function * | fun, |
gimple * | stmt, | ||
struct function * | ofun, | ||
gimple * | ostmt ) |
Duplicate all histograms associates with OSTMT to STMT.
References histogram_value_t::counters, gimple_add_histogram_value(), gimple_alloc_histogram_value(), gimple_histogram_value(), histogram_value_t::hvalue, histogram_value_t::n_counters, histogram_value_t::next, NULL, histogram_value_t::stmt, and histogram_value_t::type.
Referenced by copy_bb(), gimple_duplicate_bb(), gsi_replace(), and move_block_to_fn().
|
extern |
References cfun, dump_file, dump_histogram_value(), FOR_EACH_BB_FN, FOR_EACH_VEC_ELT, gcc_unreachable, GCOV_TOPN_MEM_COUNTERS, gimple_alloc_histogram_value(), gimple_values_to_profile(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_stmt(), histogram_value_t::hdata, HIST_TYPE_AVERAGE, HIST_TYPE_INDIR_CALL, HIST_TYPE_INTERVAL, HIST_TYPE_IOR, HIST_TYPE_POW2, HIST_TYPE_TIME_PROFILE, HIST_TYPE_TOPN_VALUES, histogram_value_t::hvalue, i, histogram_value_t::intvl, histogram_value_t::n_counters, NULL, print_gimple_stmt(), histogram_value_t::steps, histogram_value_t::stmt, TDF_SLIM, and histogram_value_t::type.
Referenced by branch_prob().
|
extern |
Output instructions as GIMPLE trees to increment the average histogram counter. VALUE is the expression whose value is profiled. TAG is the tag of the section for counters, BASE is offset of the counter position.
References force_gimple_operand_gsi(), gimple_build_call(), gsi_for_stmt(), gsi_insert_before(), GSI_NEW_STMT, GSI_SAME_STMT, histogram_value_t::hvalue, NULL_TREE, prepare_instrumented_value(), histogram_value_t::stmt, tree_average_profiler_fn, and tree_coverage_counter_addr().
Referenced by instrument_values().
|
extern |
Output instructions as GIMPLE trees to increment the edge execution count, and insert them on E.
References gen_counter_update(), gsi_last(), NULL_TREE, PENDING_STMT, and tree_coverage_counter_ref().
Referenced by instrument_edges().
|
extern |
Output instructions as GIMPLE trees for code to find the most common called function in indirect call. Insert instructions at the beginning of every possible called function.
References build3(), build_addr(), build_int_cst(), cgraph_node::called_by_ifunc_resolver, cfun, current_function_decl, DECL_VIRTUAL_P, ENTRY_BLOCK_PTR_FOR_FN, force_gimple_operand_gsi(), gcov_type_node, cgraph_node::get(), gimple_build_call(), gimple_build_cond(), gimple_init_gcov_profiler(), gsi_after_labels(), gsi_insert_before(), GSI_NEW_STMT, GSI_SAME_STMT, gsi_start_bb(), ic_tuple_callee_field, ic_tuple_var, make_edge(), NULL, NULL_TREE, cgraph_node::only_called_directly_p(), cgraph_node::profile_id, ptr_type_node, single_succ_edge(), split_edge(), tree_indirect_call_profiler_fn, profile_probability::unlikely(), and profile_probability::very_likely().
Referenced by tree_profiling().
|
extern |
Output instructions as GIMPLE trees for code to find the most common called function in indirect call. VALUE is the call expression whose indirect callee is profiled. TAG is the tag of the section for counters.
References build3(), build_pointer_type(), force_gimple_operand_gsi(), get_gcov_type(), gimple_build_assign(), gsi_for_stmt(), gsi_insert_before(), GSI_SAME_STMT, histogram_value_t::hvalue, ic_tuple_callee_field, ic_tuple_counters_field, ic_tuple_var, make_temp_ssa_name(), NULL, NULL_TREE, ptr_type_node, histogram_value_t::stmt, tree_coverage_counter_addr(), unshare_expr(), and histogram_value_t::value.
Referenced by instrument_values().
|
extern |
Output instructions as GIMPLE trees to increment the interval histogram counter. VALUE is the expression whose value is profiled. TAG is the tag of the section for counters, BASE is offset of the counter position.
References build_addr(), build_int_cst_type(), force_gimple_operand_gsi(), gimple_build_call(), gsi_for_stmt(), gsi_insert_before(), GSI_NEW_STMT, GSI_SAME_STMT, histogram_value_t::hdata, histogram_value_t::hvalue, histogram_value_t::int_start, integer_type_node, histogram_value_t::intvl, NULL_TREE, prepare_instrumented_value(), histogram_value_t::steps, histogram_value_t::stmt, tree_coverage_counter_ref(), tree_interval_profiler_fn, and unsigned_type_node.
Referenced by instrument_values().
|
extern |
Output instructions as GIMPLE trees to increment the ior histogram counter. VALUE is the expression whose value is profiled. TAG is the tag of the section for counters, BASE is offset of the counter position.
References force_gimple_operand_gsi(), gimple_build_call(), gsi_for_stmt(), gsi_insert_before(), GSI_NEW_STMT, GSI_SAME_STMT, histogram_value_t::hvalue, NULL_TREE, prepare_instrumented_value(), histogram_value_t::stmt, tree_coverage_counter_addr(), and tree_ior_profiler_fn.
Referenced by instrument_values().
|
extern |
Output instructions as GIMPLE trees to increment the power of two histogram counter. VALUE is the expression whose value is profiled. TAG is the tag of the section for counters.
References force_gimple_operand_gsi(), gimple_build_call(), gsi_for_stmt(), gsi_insert_before(), GSI_NEW_STMT, GSI_SAME_STMT, histogram_value_t::hvalue, NULL_TREE, prepare_instrumented_value(), histogram_value_t::stmt, tree_coverage_counter_addr(), and tree_pow2_profiler_fn.
Referenced by instrument_values().
|
extern |
Output instructions as GIMPLE tree at the beginning for each function. TAG is the tag of the section for counters, BASE is offset of the counter position and GSI is the iterator we place the counter.
References build_int_cst(), cfun, ENTRY_BLOCK_PTR_FOR_FN, force_gimple_operand_gsi(), gen_counter_update(), get_gcov_type(), gimple_build_cond(), gsi_insert_before(), GSI_NEW_STMT, GSI_SAME_STMT, gsi_start_bb(), make_edge(), NULL, NULL_TREE, single_succ_edge(), split_edge(), tree_coverage_counter_ref(), tree_time_profiler_counter, and profile_probability::unlikely().
Referenced by instrument_values().
|
extern |
Output instructions as GIMPLE trees for code to find the most N common values. VALUE is the expression whose value is profiled. TAG is the tag of the section for counters.
References force_gimple_operand_gsi(), gimple_build_call(), gsi_for_stmt(), gsi_insert_before(), GSI_NEW_STMT, GSI_SAME_STMT, histogram_value_t::hvalue, NULL_TREE, prepare_instrumented_value(), histogram_value_t::stmt, tree_coverage_counter_addr(), and tree_topn_values_profiler_fn.
Referenced by instrument_values().
histogram_value gimple_histogram_value | ( | struct function * | fun, |
gimple * | stmt ) |
Get histogram list for STMT.
References NULL, and VALUE_HISTOGRAMS.
Referenced by dump_histograms_for_stmt(), gimple_add_histogram_value(), gimple_duplicate_stmt_histograms(), gimple_histogram_value_of_type(), gimple_move_stmt_histograms(), gimple_remove_histogram_value(), gimple_remove_stmt_histograms(), gimple_value_profile_transformations(), output_gimple_stmt(), and verify_histograms().
histogram_value gimple_histogram_value_of_type | ( | struct function * | fun, |
gimple * | stmt, | ||
enum hist_type | type ) |
Lookup histogram of type TYPE in the STMT.
References gimple_histogram_value(), histogram_value_t::hvalue, histogram_value_t::next, NULL, and histogram_value_t::type.
Referenced by dump_ic_profile(), gimple_divmod_fixed_value_transform(), gimple_mod_pow2_value_transform(), gimple_mod_subtract_transform(), gimple_stringops_transform(), ipa_profile_generate_summary(), and stringop_block_profile().
gcall * gimple_ic | ( | gcall * | icall_stmt, |
struct cgraph_node * | direct_call, | ||
profile_probability | prob ) |
Do transformation if (actual_callee_address == address_of_most_common_function/method) do direct call else old call
References add_phi_arg(), add_stmt_to_eh_lp(), profile_probability::always(), profile_count::apply_probability(), as_a(), build_addr(), cfun, basic_block_def::count, create_phi_node(), symtab_node::decl, duplicate_ssa_name(), ECF_NORETURN, find_fallthru_edge(), basic_block_def::flags, flags_from_decl_or_type(), fold_convert, FOR_EACH_EDGE, gimple_bb(), gimple_build_assign(), gimple_build_cond(), gimple_call_fn(), gimple_call_lhs(), gimple_call_set_fndecl(), gimple_call_set_lhs(), gimple_copy(), gimple_purge_dead_eh_edges(), gimple_set_vdef(), gimple_set_vuse(), gimple_vdef(), gsi_end_p(), gsi_for_stmt(), gsi_insert_before(), gsi_next(), GSI_SAME_STMT, gsi_start_phis(), profile_probability::invert(), lookup_stmt_eh_lp(), make_edge(), make_temp_ssa_name(), NULL, NULL_TREE, PHI_ARG_DEF_FROM_EDGE, PHI_ARG_DEF_PTR_FROM_EDGE, ptr_type_node, release_ssa_name(), remove_edge(), SET_USE, should_remove_lhs_p(), single_pred_edge(), split_block(), split_edge(), stmt_could_throw_p(), stmt_ends_bb_p(), basic_block_def::succs, TREE_CODE, UNKNOWN_LOCATION, unlink_stmt_vdef(), unshare_expr(), and update_stmt().
Referenced by cgraph_edge::redirect_call_stmt_to_callee().
|
extern |
In tree-profile.cc.
Create the type and function decls for the interface with gcov.
References build_decl(), build_fn_decl(), build_function_type_list(), build_pointer_type(), CONST_CAST, DECL_ARTIFICIAL, DECL_ASSEMBLER_NAME, DECL_ATTRIBUTES, DECL_EXTERNAL, DECL_INITIAL, free(), gcov_type_node, get_gcov_type(), get_identifier(), init_ic_make_global_vars(), integer_type_node, NULL, NULL_TREE, PROFILE_UPDATE_ATOMIC, ptr_type_node, tree_average_profiler_fn, tree_cons(), tree_indirect_call_profiler_fn, tree_interval_profiler_fn, tree_ior_profiler_fn, TREE_NOTHROW, tree_pow2_profiler_fn, TREE_PUBLIC, TREE_STATIC, tree_time_profiler_counter, tree_topn_values_profiler_fn, UNKNOWN_LOCATION, unsigned_type_node, and void_type_node.
Referenced by branch_prob(), and gimple_gen_ic_func_profiler().
Move all histograms associated with OSTMT to STMT.
References gimple_histogram_value(), histogram_value_t::hvalue, histogram_value_t::next, NULL, set_histogram_value(), and histogram_value_t::stmt.
void gimple_remove_histogram_value | ( | struct function * | fun, |
gimple * | stmt, | ||
histogram_value | hist ) |
Remove histogram HIST from STMT's histogram list.
References histogram_value_t::counters, free(), gimple_histogram_value(), histogram_value_t::hvalue, histogram_value_t::next, and set_histogram_value().
Referenced by autofdo::afdo_indirect_call(), gimple_divmod_fixed_value_transform(), gimple_mod_pow2_value_transform(), gimple_mod_subtract_transform(), gimple_remove_stmt_histograms(), gimple_stringops_transform(), ipa_profile_generate_summary(), and stringop_block_profile().
Remove all histograms associated with STMT.
References gimple_histogram_value(), gimple_remove_histogram_value(), and NULL.
Referenced by gsi_remove(), gsi_replace(), and move_block_to_fn().
|
extern |
GIMPLE based transformations.
References cfun, changed, dump_enabled_p(), dump_file, dump_histograms_for_stmt(), dump_ic_profile(), FOR_EACH_BB_FN, gimple_bb(), gimple_divmod_fixed_value_transform(), gimple_histogram_value(), gimple_mod_pow2_value_transform(), gimple_mod_subtract_transform(), gimple_stringops_transform(), gsi_end_p(), gsi_for_stmt(), gsi_next(), gsi_start_bb(), gsi_stmt(), print_gimple_stmt(), and TDF_SLIM.
Referenced by autofdo::afdo_annotate_cfg(), and tree_profiling().
|
extern |
In profile.cc.
Perform file-level initialization for branch-prob processing.
References i, total_hist_br_prob, total_num_blocks, total_num_blocks_created, total_num_branches, total_num_conds, total_num_edges, total_num_edges_ignored, total_num_edges_instrumented, total_num_passes, and total_num_times_called.
|
extern |
Only read execution count for thunks.
References cgraph_node::callees, cgraph_edge::count, cgraph_node::count, current_function_decl, symtab_node::decl, free(), profile_count::from_gcov_type(), and get_coverage_counts().
Referenced by tree_profiling().
|
extern |
Dump information about HIST to DUMP_FILE.
References bp_unpack_enum, bp_unpack_value(), cfun, histogram_value_t::counters, gcc_unreachable, gimple_add_histogram_value(), gimple_alloc_histogram_value(), histogram_value_t::hdata, HIST_TYPE_AVERAGE, HIST_TYPE_INDIR_CALL, HIST_TYPE_INTERVAL, HIST_TYPE_IOR, HIST_TYPE_MAX, HIST_TYPE_POW2, HIST_TYPE_TIME_PROFILE, HIST_TYPE_TOPN_VALUES, histogram_value_t::hvalue, i, histogram_value_t::int_start, histogram_value_t::intvl, histogram_value_t::n_counters, histogram_value_t::next, NULL, histogram_value_t::steps, streamer_read_bitpack(), streamer_read_gcov_count(), streamer_read_hwi(), streamer_read_uhwi(), and type().
Referenced by input_gimple_stmt().
|
extern |
Dump information about HIST to DUMP_FILE.
References bitpack_create(), bp_pack_enum, bp_pack_value(), histogram_value_t::counters, histogram_value_t::hdata, HIST_TYPE_INTERVAL, HIST_TYPE_MAX, histogram_value_t::hvalue, i, histogram_value_t::int_start, histogram_value_t::intvl, output_block::main_stream, histogram_value_t::n_counters, histogram_value_t::next, NULL, histogram_value_t::steps, stream_out_histogram_value(), streamer_write_bitpack(), streamer_write_gcov_count(), streamer_write_hwi(), streamer_write_uhwi(), and histogram_value_t::type.
Referenced by output_gimple_stmt(), and stream_out_histogram_value().
void stringop_block_profile | ( | gimple * | stmt, |
unsigned int * | expected_align, | ||
HOST_WIDE_INT * | expected_size ) |
References cfun, count, gimple_histogram_value_of_type(), gimple_remove_histogram_value(), HIST_TYPE_AVERAGE, HIST_TYPE_IOR, histogram, INT_MAX, and UINT_MAX.
Referenced by expand_builtin_memory_copy_args(), and expand_builtin_memset_args().
void verify_histograms | ( | void | ) |
Verify sanity of the histograms.
References hash_set< KeyId, Lazy, Traits >::add(), cfun, debug_gimple_stmt(), dump_histogram_value(), error(), error_found, FOR_EACH_BB_FN, gimple_histogram_value(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_stmt(), histogram_value_t::hvalue, internal_error(), histogram_value_t::next, histogram_value_t::stmt, VALUE_HISTOGRAMS, and visit_hist().
Referenced by verify_gimple_in_cfg().