GCC Middle and Back End API Reference
bitmap.h File Reference
#include "obstack.h"
#include "array-traits.h"
Include dependency graph for bitmap.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  bitmap_usage
 
struct  bitmap_obstack
 
struct  bitmap_element
 
class  bitmap_head
 
struct  bitmap_iterator
 
class  auto_bitmap
 
class  base_bitmap_view< T, Traits >
 
class  bitmap_view< T, Traits, true >
 

Macros

#define BITMAP_WORD_BITS   (CHAR_BIT * SIZEOF_LONG * 1u)
 
#define BITMAP_ELEMENT_WORDS   ((128 + BITMAP_WORD_BITS - 1) / BITMAP_WORD_BITS)
 
#define BITMAP_ELEMENT_ALL_BITS   (BITMAP_ELEMENT_WORDS * BITMAP_WORD_BITS)
 
#define bitmap_compl_and(DST, A, B)
 
#define BITMAP_ALLOC   bitmap_alloc
 
#define BITMAP_GGC_ALLOC   bitmap_gc_alloc
 
#define BITMAP_FREE(BITMAP)
 
#define EXECUTE_IF_SET_IN_BITMAP(BITMAP, MIN, BITNUM, ITER)
 
#define EXECUTE_IF_AND_IN_BITMAP(BITMAP1, BITMAP2, MIN, BITNUM, ITER)
 
#define EXECUTE_IF_AND_COMPL_IN_BITMAP(BITMAP1, BITMAP2, MIN, BITNUM, ITER)
 

Typedefs

typedef unsigned long BITMAP_WORD
 

Functions

void bitmap_list_view (bitmap)
 
void bitmap_tree_view (bitmap)
 
void bitmap_clear (bitmap)
 
void bitmap_copy (bitmap, const_bitmap)
 
void bitmap_move (bitmap, bitmap)
 
bool bitmap_equal_p (const_bitmap, const_bitmap)
 
bool bitmap_intersect_p (const_bitmap, const_bitmap)
 
bool bitmap_intersect_compl_p (const_bitmap, const_bitmap)
 
bool bitmap_empty_p (const_bitmap map)
 
bool bitmap_single_bit_set_p (const_bitmap)
 
unsigned long bitmap_count_bits (const_bitmap)
 
unsigned long bitmap_count_unique_bits (const_bitmap, const_bitmap)
 
void bitmap_and (bitmap, const_bitmap, const_bitmap)
 
bool bitmap_and_into (bitmap, const_bitmap)
 
bool bitmap_and_compl (bitmap, const_bitmap, const_bitmap)
 
bool bitmap_and_compl_into (bitmap, const_bitmap)
 
void bitmap_compl_and_into (bitmap, const_bitmap)
 
void bitmap_clear_range (bitmap, unsigned int, unsigned int)
 
void bitmap_set_range (bitmap, unsigned int, unsigned int)
 
bool bitmap_ior (bitmap, const_bitmap, const_bitmap)
 
bool bitmap_ior_into (bitmap, const_bitmap)
 
bool bitmap_ior_into_and_free (bitmap, bitmap *)
 
void bitmap_xor (bitmap, const_bitmap, const_bitmap)
 
void bitmap_xor_into (bitmap, const_bitmap)
 
bool bitmap_ior_and_into (bitmap DST, const_bitmap B, const_bitmap C)
 
bool bitmap_ior_and_compl (bitmap DST, const_bitmap A, const_bitmap B, const_bitmap C)
 
bool bitmap_ior_and_compl_into (bitmap A, const_bitmap B, const_bitmap C)
 
bool bitmap_clear_bit (bitmap, int)
 
bool bitmap_set_bit (bitmap, int)
 
bool bitmap_bit_p (const_bitmap, int)
 
void bitmap_set_aligned_chunk (bitmap, unsigned int, unsigned int, BITMAP_WORD)
 
BITMAP_WORD bitmap_get_aligned_chunk (const_bitmap, unsigned int, unsigned int)
 
void debug_bitmap (const_bitmap)
 
void debug_bitmap_file (FILE *, const_bitmap)
 
void bitmap_print (FILE *, const_bitmap, const char *, const char *)
 
void bitmap_obstack_initialize (bitmap_obstack *)
 
void bitmap_obstack_release (bitmap_obstack *)
 
void bitmap_register (bitmap MEM_STAT_DECL)
 
void dump_bitmap_statistics (void)
 
void bitmap_initialize (bitmap head, bitmap_obstack *obstack CXX_MEM_STAT_INFO)
 
void bitmap_release (bitmap head)
 
bitmap bitmap_alloc (bitmap_obstack *obstack CXX_MEM_STAT_INFO)
 
bitmap bitmap_gc_alloc (ALONE_CXX_MEM_STAT_INFO)
 
void bitmap_obstack_free (bitmap)
 
void dump_bitmap (FILE *file, const_bitmap map)
 
void debug (const bitmap_head &ref)
 
void debug (const bitmap_head *ptr)
 
unsigned bitmap_first_set_bit (const_bitmap)
 
unsigned bitmap_clear_first_set_bit (bitmap)
 
unsigned bitmap_last_set_bit (const_bitmap)
 
hashval_t bitmap_hash (const_bitmap)
 
void bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map, unsigned start_bit, unsigned *bit_no)
 
void bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2, unsigned start_bit, unsigned *bit_no)
 
void bmp_iter_and_compl_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2, unsigned start_bit, unsigned *bit_no)
 
void bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
 
void bmp_iter_next_bit (bitmap_iterator *bi, unsigned *bit_no)
 
bool bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
 
bool bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
 
bool bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
 
void debug (const auto_bitmap &ref)
 
void debug (const auto_bitmap *ptr)
 

Variables

mem_alloc_description< bitmap_usagebitmap_mem_desc
 
bitmap_element bitmap_zero_bits
 
bitmap_obstack bitmap_default_obstack
 

Macro Definition Documentation

◆ BITMAP_ALLOC

#define BITMAP_ALLOC   bitmap_alloc

Referenced by add_candidate_1(), add_dependence(), equiv_oracle::add_equiv_to_block(), add_graph_edge(), add_implicit_graph_edge(), equiv_oracle::add_partial_equiv(), add_pred_graph_edge(), infer_range_manager::add_range(), add_scope_conflicts(), add_scope_conflicts_1(), add_stack_var_conflict(), add_to_partition_kill_list(), add_to_repl_tbl(), add_to_value(), alloc_gcse_mem(), alloc_mem(), analyze_all_variable_accesses(), loop_distribution::bb_top_order_init(), bb_valid_for_noce_process_p(), bbs_ok_for_cmove_arith(), strlen_pass::before_dom_children(), build_pred_graph(), calculate_bb_reg_pressure(), gori_map::calculate_gori(), can_move_insns_across(), canonicalize_induction_variables(), symtab_node::check_ifunc_callee_symtab_nodes(), cleanup_empty_eh_merge_phis(), cleanup_tree_cfg_noloop(), coalesce_bitint(), combine_stack_adjustments(), combine_stack_adjustments_for_block(), compute_builtin_object_size(), compute_dependence_clique(), compute_idf(), compute_live_vars(), consider_split(), copy_static_var_set(), create_nesting_tree(), dce_process_block(), dead_debug_add(), dead_debug_global_replace_temp(), dead_debug_insert_temp(), dead_debug_local_init(), dead_debug_promote_uses(), dead_debug_reset_uses(), dead_or_predicable(), decompose_multiword_subregs(), deps_ok_for_redirect_from_bb_to_bb(), determine_dominators_for_sons(), determine_group_iv_cost_address(), determine_group_iv_cost_cond(), determine_group_iv_cost_generic(), determine_group_iv_costs(), df_analyze(), df_analyze_loop(), df_chain_add_problem(), df_live_add_problem(), df_lr_add_problem(), df_mir_add_problem(), df_rd_transfer_function(), df_scan_alloc(), df_set_blocks(), df_word_lr_add_problem(), df_worklist_dataflow_doublequeue(), discover_loops(), ipa_icf::sem_item_optimizer::do_congruence_step(), ipa_icf::sem_item_optimizer::do_congruence_step_for_index(), do_rpo_vn_1(), do_store_motion(), doloop_optimize(), dom_oracle::dom_oracle(), dse_confluence_0(), dse_confluence_n(), dse_step0(), dse_step1(), dse_step3(), dse_step3_scan(), dse_transfer_function(), duplicate_loop_body_to_header_edge(), eliminate_dom_walker::eliminate_dom_walker(), equiv_oracle::equiv_oracle(), equiv_oracle::equiv_set(), path_oracle::equiv_set(), execute_split_functions(), ext_dce_init(), ext_dce_process_bb(), fast_dce(), find_always_executed_bbs(), find_call_stack_args(), find_inv_vars_cb(), find_invariant_insn(), find_pseudo_copy(), find_split_points(), find_tail_calls(), find_uses_to_rename_use(), gate_tm_init(), get_def_blocks_for(), get_group_info(), get_loop_body_in_if_conv_order(), get_loop_hot_path(), get_nonnull_args(), get_parm_default_def_partitions(), get_tm_region_blocks(), get_undefined_value_partitions(), gimple_lower_bitint(), gimplify_omp_for(), gimplify_size_expressions(), gori_map::gori_map(), hoist_code(), infer_range_manager::infer_range_manager(), init_function_info(), init_object_sizes(), init_pre(), init_var_map(), init_worklist(), intra_create_variable_infos(), ipa_init(), ipa_reference_read_optimization_summary(), ipa_sra_summarize_function(), ipa_tm_propagate_irr(), ipa_tm_scan_calls_transaction(), ipa_tm_scan_irr_blocks(), ipa_tm_scan_irr_function(), ipa_tm_transform_calls(), ira_allocate_bitmap(), ira_reassign_pseudos(), iterate_fix_dominators(), iv_ca_new(), path_oracle::killing_def(), label_visit(), lang_dependent_init(), live_vars_at_stmt(), lto_output(), make_dependent_on_partition(), mark_for_renaming(), mark_replaceable(), maybe_lower_iteration_bound(), maybe_skip_until(), merge_graph_nodes(), move_sese_region_to_fn(), new_cluster(), new_temp_expr_table(), new_var_info(), noce_convert_multiple_sets(), oacc_entry_exit_ok(), optimize_va_list_gpr_fpr_size(), param_change_prob(), partition_alloc(), partition_view_bitmap(), partition_view_init(), path_oracle::path_oracle(), peephole2_optimize(), perform_tree_ssa_dce(), perform_var_substitution(), phi_analyzer::phi_analyzer(), prescan_insns_for_dce(), phi_analyzer::process_phi(), process_replaceable(), propagate(), uninit_analysis::prune_phi_opnds(), prune_unused_phi_nodes(), equiv_oracle::record(), record_group(), record_store(), range_def_chain::register_dependency(), equiv_oracle::register_equiv(), equiv_oracle::register_equiv(), path_oracle::register_equiv(), equiv_oracle::register_initial_def(), regstat_compute_calls_crossed(), regstat_compute_ri(), release_ssa_name_after_update_ssa(), remove_unused_locals(), repair_loop_structures(), replace_read(), rewrite_into_loop_closed_ssa_1(), same_succ_alloc(), sbr_lazy_vector::sbr_lazy_vector(), scan_sharing_clauses(), scc_copy_prop::scc_copy_prop(), scc_visit(), sese_build_liveouts(), range_def_chain::set_import(), dom_oracle::set_one_relation(), set_ref_loaded_in_loop(), set_ref_stored_in_loop(), ipa_icf::sem_item::setup(), simplify_gimple_switch_label_vec(), solution_set_expand(), solve_graph(), split_function(), sra_initialize(), ssa_conflicts_add_one(), ssa_lazy_cache::ssa_lazy_cache(), ssa_prop_init(), start_recording_case_labels(), store_motion_loop(), substitute_and_fold_dom_walker::substitute_and_fold_dom_walker(), tail_merge_optimize(), fwd_jt_path_registry::thread_block_1(), thread_jump(), tm_memopt_init_sets(), tm_region_init(), tm_region_init_0(), tree_if_conversion(), tree_lower_complex(), tree_ssa_iv_optimize_init(), tree_unroll_loops_completely(), tree_unroll_loops_completely_1(), tree_unswitch_single_loop(), try_head_merge_bb(), update_alias_info_with_stack_vars(), update_list::update_list(), update_ssa(), use_pointer_for_field(), value_dies_in_block_x(), verify_non_ssa_vars(), verify_sese(), ssa_name_limit_t::visit_phi(), vt_initialize(), walk_aliased_vdefs_1(), and word_dce_process_block().

◆ bitmap_compl_and

#define bitmap_compl_and ( DST,
A,
B )
Value:
bitmap_and_compl (DST, B, A)
bool bitmap_and_compl(bitmap, const_bitmap, const_bitmap)
Definition bitmap.cc:1520

◆ BITMAP_ELEMENT_ALL_BITS

◆ BITMAP_ELEMENT_WORDS

◆ BITMAP_FREE

#define BITMAP_FREE ( BITMAP)
Value:
((void) (bitmap_obstack_free ((bitmap) BITMAP), (BITMAP) = (bitmap) NULL))
void bitmap_obstack_free(bitmap)
Definition bitmap.cc:820
class bitmap_head * bitmap
Definition coretypes.h:51
#define NULL
Definition system.h:50
Do any cleanup needed on a bitmap when it is no longer used.   

Referenced by add_scope_conflicts(), analyze_all_variable_accesses(), loop_distribution::bb_top_order_init(), bb_valid_for_noce_process_p(), bbs_ok_for_cmove_arith(), strlen_pass::before_dom_children(), bitmap_ior_into_and_free(), calculate_bb_reg_pressure(), can_move_insns_across(), canonicalize_induction_variables(), symtab_node::check_ifunc_callee_symtab_nodes(), cleanup_empty_eh_merge_phis(), cleanup_tree_cfg_noloop(), clear_edges_for_node(), coalesce_bitint(), combine_stack_adjustments(), combine_stack_adjustments_for_block(), compute_builtin_object_size(), compute_dependence_clique(), compute_live_vars(), consider_split(), dce_process_block(), dead_debug_global_finish(), dead_debug_local_finish(), dead_debug_reset_uses(), dead_or_predicable(), decompose_multiword_subregs(), delete_cluster(), delete_update_ssa(), delete_var_map(), delete_worklist(), deps_ok_for_redirect_from_bb_to_bb(), determine_dominators_for_sons(), determine_group_iv_cost_cond(), determine_group_iv_costs(), determine_known_aggregate_parts(), df_analyze(), df_analyze_1(), df_analyze_loop(), df_chain_free(), df_chain_fully_remove_problem(), df_finish_pass(), df_live_free(), df_lr_free(), df_rd_transfer_function(), df_scan_free(), df_scan_free_internal(), df_set_blocks(), df_word_lr_free(), df_worklist_dataflow_doublequeue(), ipa_icf::sem_item_optimizer::do_congruence_step(), do_rpo_vn_1(), do_store_motion(), doloop_optimize(), dse_step1(), dse_step3(), dse_step3_scan(), dse_step7(), duplicate_loop_body_to_header_edge(), end_recording_case_labels(), execute_lower_omp(), execute_split_functions(), ext_dce_finish(), ext_dce_process_bb(), fast_dce(), finalize(), find_call_stack_args(), find_invariant_insn(), find_split_points(), find_tail_calls(), fini_object_sizes(), finish_out_of_ssa(), finished_with_expr(), free_gcse_mem(), free_inv_motion_data(), free_loop_data(), free_loops(), free_mem(), free_sese_info(), free_store_info(), free_temp_expr_table(), get_loop_body_in_if_conv_order(), get_loop_hot_path(), get_tm_region_blocks(), gimple_infer_range::gimple_infer_range(), gimple_lower_bitint(), gimplify_omp_for(), gimplify_size_expressions(), hoist_code(), insert_phi_nodes(), insert_updated_phi_nodes_for(), intra_create_variable_infos(), ipa_sra_summarize_function(), ipa_tm_propagate_irr(), ipa_tm_scan_irr_blocks(), ipa_tm_scan_irr_function(), ipa_tm_transform_calls(), ira_reassign_pseudos(), iterate_fix_dominators(), iv_ca_free(), label_visit(), lto_output(), maybe_lower_iteration_bound(), move_sese_region_to_fn(), noce_convert_multiple_sets(), oacc_entry_exit_ok(), optimize_va_list_gpr_fpr_size(), uninit_analysis::overlap(), param_change_prob(), partition_free(), partition_view_fini(), peephole2_optimize(), perform_tree_ssa_dce(), perform_var_substitution(), prescan_insns_for_dce(), process_replaceable(), prune_unused_phi_nodes(), regstat_compute_calls_crossed(), regstat_compute_ri(), regstat_free_ri(), ipa_icf::sem_item_optimizer::release_split_map(), ipa_ref_opt_summary_t::remove(), same_succ::remove(), remove_from_partition_kill_list(), remove_preds_and_fake_succs(), remove_unused_locals(), repair_loop_structures(), replace_read(), set_group_iv_cost(), simplify_gimple_switch_label_vec(), solve_graph(), split_function(), sra_deinitialize(), ssa_conflicts_merge(), ssa_prop_fini(), store_motion_loop(), tail_merge_optimize(), fwd_jt_path_registry::thread_block_1(), thread_jump(), tm_region_init(), translate_vuse_through_block(), tree_if_conversion(), tree_lower_complex(), tree_optimize_tail_calls_1(), tree_ssa_iv_optimize_finalize(), tree_unroll_loops_completely(), tree_unroll_loops_completely_1(), tree_unswitch_single_loop(), unify_nodes(), union_stack_vars(), union_static_var_sets(), update_alias_info_with_stack_vars(), validate_arglist(), verify_non_ssa_vars(), verify_sese(), vt_finalize(), walk_aliased_vdefs(), walk_non_aliased_vuses(), word_dce_process_block(), crc_optimization::~crc_optimization(), eliminate_dom_walker::~eliminate_dom_walker(), mark_def_dom_walker::~mark_def_dom_walker(), scc_copy_prop::~scc_copy_prop(), ipa_icf::sem_item::~sem_item(), ssa_lazy_cache::~ssa_lazy_cache(), ssa_name_limit_t::~ssa_name_limit_t(), substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker(), and tree_loop_interchange::~tree_loop_interchange().

◆ BITMAP_GGC_ALLOC

◆ BITMAP_WORD_BITS

◆ EXECUTE_IF_AND_COMPL_IN_BITMAP

#define EXECUTE_IF_AND_COMPL_IN_BITMAP ( BITMAP1,
BITMAP2,
MIN,
BITNUM,
ITER )
Value:
for (bmp_iter_and_compl_init (&(ITER), (BITMAP1), (BITMAP2), (MIN), \
&(BITNUM)); \
bmp_iter_and_compl (&(ITER), &(BITNUM)); \
bmp_iter_next (&(ITER), &(BITNUM)))
void bmp_iter_and_compl_init(bitmap_iterator *bi, const_bitmap map1, const_bitmap map2, unsigned start_bit, unsigned *bit_no)
Definition bitmap.h:652
#define MIN(X, Y)
Definition system.h:396
Loop over all the bits set in BITMAP1 & ~BITMAP2, starting with MIN
and setting BITNUM to the bit number.  ITER is a bitmap iterator.
BITNUM should be treated as a read-only variable as it contains
loop state.   

Referenced by compute_transp(), find_refs_for_sm(), sese_reset_debug_liveouts(), verify_ssaname_freelists(), and write_node_summary_p().

◆ EXECUTE_IF_AND_IN_BITMAP

#define EXECUTE_IF_AND_IN_BITMAP ( BITMAP1,
BITMAP2,
MIN,
BITNUM,
ITER )
Value:
for (bmp_iter_and_init (&(ITER), (BITMAP1), (BITMAP2), (MIN), \
&(BITNUM)); \
bmp_iter_and (&(ITER), &(BITNUM)); \
bmp_iter_next (&(ITER), &(BITNUM)))
void bmp_iter_and_init(bitmap_iterator *bi, const_bitmap map1, const_bitmap map2, unsigned start_bit, unsigned *bit_no)
Definition bitmap.h:583
Loop over all the bits set in BITMAP1 & BITMAP2, starting with MIN
and setting BITNUM to the bit number.  ITER is a bitmap iterator.
BITNUM should be treated as a read-only variable as it contains
loop state.   

Referenced by bitmap_find_leader(), path_range_query::compute_ranges_in_block(), iv_ca_narrow(), pre_expr_DFS(), loop_distribution::share_memory_accesses(), stream_out_bitmap(), and update_live_info().

◆ EXECUTE_IF_SET_IN_BITMAP

#define EXECUTE_IF_SET_IN_BITMAP ( BITMAP,
MIN,
BITNUM,
ITER )
Value:
for (bmp_iter_set_init (&(ITER), (BITMAP), (MIN), &(BITNUM)); \
bmp_iter_set (&(ITER), &(BITNUM)); \
bmp_iter_next (&(ITER), &(BITNUM)))
void bmp_iter_set_init(bitmap_iterator *bi, const_bitmap map, unsigned start_bit, unsigned *bit_no)
Definition bitmap.h:539
If you are modifying a bitmap you are currently iterating over you
have to ensure to
  - never remove the current bit;
  - if you set or clear a bit before the current bit this operation
    will not affect the set of bits you are visiting during the iteration;
  - if you set or clear a bit after the current bit it is unspecified
    whether that affects the set of bits you are visiting during the
    iteration.
If you want to remove the current bit you can delay this to the next
iteration (and after the iteration in case the last iteration is
affected).   
Loop over all bits set in BITMAP, starting with MIN and setting
BITNUM to the bit number.  ITER is a bitmap iterator.  BITNUM
should be treated as a read-only variable as it contains loop
state.   
See sbitmap.h for the other definition of EXECUTE_IF_SET_IN_BITMAP.   

Referenced by add_dependence(), add_exit_phis(), add_exit_phis_var(), add_iv_candidate_for_bivs(), equiv_oracle::add_partial_equiv(), add_partitioned_vars_to_ptset(), add_range_and_copies_from_move_list(), add_scope_conflicts_1(), path_range_query::adjust_for_non_null_uses(), analyze_all_variable_accesses(), apply_clusters(), assign_by_spills(), assume_query::assume_query(), bitmap_find_leader(), bitmap_first_set_bit(), bitmap_print(), bitmap_value_replace_in_set(), build_insn_chain(), calculate_bb_reg_pressure(), calculate_gen_cands(), calculate_loop_reg_pressure(), can_move_insns_across(), cand_trans_fun(), rt_bb_visited::check(), loop_distribution::classify_partition(), clear_modify_mem_tables(), coalesce_allocnos(), coalesce_bitint(), color_allocnos(), color_pass(), compute_builtin_object_size(), compute_dependence_clique(), path_range_query::compute_exit_dependencies(), compute_idf(), compute_live_loop_exits(), compute_optimized_partition_bases(), path_range_query::compute_ranges_in_block(), compute_transp(), control_parents_preserved_p(), create_edge_for_control_dependence(), create_new_ivs(), dead_debug_local_finish(), dead_debug_reset_uses(), dead_or_predicable(), debug_ter(), decompose_multiword_subregs(), delete_update_ssa(), determine_group_iv_costs(), determine_set_costs(), df_bb_refs_collect(), df_chain_create_bb_process_use(), df_chain_finalize(), df_chain_remove_problem(), df_dump_region(), df_entry_block_defs_collect(), df_exit_block_uses_collect(), df_insn_rescan_all(), df_live_alloc(), df_live_finalize(), df_live_init(), df_live_local_compute(), df_live_reset(), df_lr_alloc(), df_lr_init(), df_lr_local_compute(), df_lr_reset(), df_md_alloc(), df_md_init(), df_md_local_compute(), df_md_reset(), df_mir_alloc(), df_mir_local_compute(), df_mir_reset(), df_note_compute(), df_print_regset(), df_process_deferred_rescans(), df_rd_alloc(), df_rd_confluence_n(), df_rd_dump_defs_set(), df_rd_init_solution(), df_rd_local_compute(), df_rd_transfer_function(), df_reorganize_refs_by_insn(), df_reorganize_refs_by_reg_by_insn(), df_set_blocks(), df_word_lr_alloc(), df_word_lr_init(), df_word_lr_local_compute(), df_word_lr_reset(), df_worklist_dataflow(), ipa_icf::sem_item_optimizer::do_congruence_step(), do_ds_constraint(), do_remat(), do_sd_constraint(), dominated_by_forbidden(), dse_step2(), dse_step3(), back_threader::dump(), equiv_chain::dump(), path_range_query::dump(), phi_group::dump(), range_def_chain::dump(), dump_decl_set(), dump_live_info(), dump_names_replaced_by(), dump_pred_graph(), dump_solution_for_var(), dump_static_vars_set_to_file(), dump_tm_memopt_set(), dump_update_ssa(), dump_varinfo(), duplicate_loop_body_to_header_edge(), eliminate_indirect_cycles(), end_recording_case_labels(), ext_dce_init(), find_all_spills_for(), find_clusters_1(), find_hard_regno_for_1(), find_identical_invariants(), find_induction_variables(), find_moveable_pseudos(), find_or_generate_expression(), back_threader::find_paths_to_names(), find_reload_regno_insns(), find_same_succ_bb(), find_single_drs(), find_uses_to_rename(), find_what_var_points_to(), finished_with_expr(), fix_bb_live_info(), form_allocno_hard_regs_nodes_forest(), free_loop_data(), free_mem(), generate_summary(), get_inv_cost(), get_representative_for(), gimple_lower_bitint(), gimple_purge_all_dead_abnormal_call_edges(), gimple_purge_all_dead_eh_edges(), gimplify_size_expressions(), graphds_dfs(), graphds_scc(), hoist_code(), hoist_memory_references(), improve_allocation(), improve_inheritance(), inherit_in_ebb(), init_allocno_threads(), initialize_constant_pool_replacements(), insert_phi_nodes_for(), insert_updated_phi_nodes_for(), ipa_pta_execute(), ipa_tm_scan_irr_function(), ira_reuse_stack_slot(), iv_ca_add_group(), iv_ca_narrow(), iv_ca_prune(), iv_ca_replace(), iv_ca_set_add_invs(), iv_ca_set_remove_invs(), live_track_init(), live_track_process_def(), lra_assign(), lra_constraints(), lra_dump_bitmap_with_title(), lra_eliminate(), lra_split_hard_reg_for(), lra_undo_inheritance(), mark_control_dependent_edges_necessary(), mark_def_interesting(), fwd_jt_path_registry::mark_threaded_blocks(), ssa_lazy_cache::merge(), merge_overlapping_regs(), move_invariant_reg(), move_sese_region_to_fn(), multi_block_pseudo_p(), nearest_common_dominator_for_set(), nearest_common_dominator_of_uses(), number_of_rw_in_partition(), oacc_do_neutering(), optimize_inline_calls(), param_change_prob(), partition_view_bitmap(), partition_view_fini(), perform_var_substitution(), loop_distribution::pg_add_dependence_edges(), pp_points_to_solution(), pre_expr_DFS(), prepare_names_to_update(), print_loop_title(), process_bb_lives(), process_bb_node_lives(), phi_analyzer::process_phi(), propagate_freq(), propagate_pseudo_copies(), prune_insertions_deletions(), prune_unused_phi_nodes(), record_biv_for_address_use(), ref_indep_loop_p(), reg_set_to_hard_reg_set(), register_new_update_set(), regrename_analyze(), regstat_bb_compute_calls_crossed(), regstat_bb_compute_ri(), regstat_compute_ri(), release_defs_bitset(), remove_unreachable::remove_and_update_globals(), remove_edge_and_dominated_blocks(), remove_some_program_points_and_update_live_ranges(), remove_some_program_points_and_update_live_ranges(), remove_unused_ivs(), rewrite_blocks(), same_phi_alternatives(), same_succ_flush_bbs(), same_succ_hash(), scc_visit(), sese_insert_phis_for_liveouts(), set_cluster(), set_move_mark(), set_uids_in_ptset(), set_union_with_increment(), setup_live_pseudos_and_spill_after_risky_transforms(), setup_profitable_hard_regs(), setup_try_hard_regno_pseudos(), loop_distribution::share_memory_accesses(), should_hoist_expr_to_dom(), solution_set_expand(), spill_for(), spill_hard_reg_in_range(), spill_soft_conflicts(), pcom_worker::split_data_refs_to_components(), ssa_conflicts_merge(), tm_memopt_compute_antic(), topo_visit(), tree_unroll_loops_completely(), try_add_cand_for(), try_shrink_wrapping_separate(), undistribute_ops_list(), undo_optional_reloads(), union_stack_vars(), update_debug_stmts(), update_ebb_live_info(), assume_query::update_parms(), update_ssa(), loop_distribution::update_type_for_merge(), update_worklist(), relation_oracle::valid_equivs(), vect_lower_load_permutations(), verify_all_sra_access_forests(), visit_conflict(), and vn_valnum_from_value_id().

Typedef Documentation

◆ BITMAP_WORD

typedef unsigned long BITMAP_WORD
Fundamental storage type for bitmap.   

Function Documentation

◆ bitmap_alloc()

bitmap bitmap_alloc ( bitmap_obstack *obstack CXX_MEM_STAT_INFO)
extern
Allocate and free bitmaps from obstack, malloc and gc'd memory.   

◆ bitmap_and()

void bitmap_and ( bitmap dst,
const_bitmap a,
const_bitmap b )
extern

◆ bitmap_and_compl()

◆ bitmap_and_compl_into()

◆ bitmap_and_into()

◆ bitmap_bit_p()

bool bitmap_bit_p ( const_bitmap head,
int bit )
extern
Return true if a bit is set in a bitmap.   
Return whether a bit is set within a bitmap.   

References BITMAP_ELEMENT_ALL_BITS, BITMAP_ELEMENT_WORDS, bitmap_list_find_element(), bitmap_tree_find_element(), BITMAP_WORD_BITS, bitmap_element::bits, and bitmap_head::indx.

◆ bitmap_clear()

void bitmap_clear ( bitmap head)
extern
Clear a bitmap by freeing up the linked list.   
Clear a bitmap by freeing all its elements.   

References bitmap_elt_clear_from(), bitmap_tree_splay(), head::first, gcc_checking_assert, bitmap_element::indx, NULL, and bitmap_element::prev.

Referenced by add_candidate_1(), add_dependence(), add_exit_phis(), add_partitioned_vars_to_ptset(), add_scope_conflicts_1(), add_store_equivs(), analyze_function(), assign_by_spills(), mark_def_dom_walker::before_dom_children(), bitmap_and_compl(), bitmap_and_compl_into(), bitmap_compl_and_into(), bitmap_copy(), bitmap_ior_into_and_free(), bitmap_move(), bitmap_obstack_free(), bitmap_release(), bitmap_set_free(), bitmap_union_of_preds(), bitmap_union_of_succs(), bitmap_xor(), bitmap_xor_into(), break_superblocks(), build_insn_chain(), build_pred_graph(), calculate_equiv_gains(), calculate_gen_cands(), calculate_live_on_exit(), cand_av_con_fun_0(), cand_pav_con_fun_0(), cand_trans_fun(), canonicalize_induction_variables(), cleanup_control_flow_pre(), ssa_lazy_cache::clear(), control_dependences::clear_control_dependence_bitmap(), update_list::clear_failures(), clear_modify_mem_tables(), coalesced_allocno_conflict_p(), compute_antic(), compute_antinout_edge(), compute_available(), compute_builtin_object_size(), compute_earliest(), compute_farthest(), compute_live_vars_1(), compute_topo_order(), cse_main(), dce_process_block(), dead_debug_global_init(), dead_debug_local_init(), decompose_multiword_subregs(), destroy_live_vars(), determine_group_iv_cost_cond(), determine_group_iv_costs(), df_chain_create_bb(), df_chain_remove_problem(), df_compact_blocks(), df_get_eh_block_artificial_uses(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), df_get_regular_block_artificial_uses(), df_insn_rescan_all(), df_live_alloc(), df_live_free_bb_info(), df_live_init(), df_live_local_compute(), df_live_reset(), df_live_verify_solution_end(), df_live_verify_transfer_functions(), df_lr_alloc(), df_lr_free_bb_info(), df_lr_init(), df_lr_local_compute(), df_lr_reset(), df_lr_verify_solution_end(), df_lr_verify_transfer_functions(), df_md_alloc(), df_md_bb_local_compute_process_def(), df_md_free_bb_info(), df_md_local_compute(), df_md_reset(), df_mir_alloc(), df_mir_confluence_0(), df_mir_free_bb_info(), df_mir_reset(), df_mir_verify_solution_end(), df_note_bb_compute(), df_note_compute(), df_process_deferred_rescans(), df_rd_alloc(), df_rd_bb_local_compute(), df_rd_dump_defs_set(), df_rd_free_bb_info(), df_rd_init_solution(), df_rd_transfer_function(), df_scan_free_internal(), df_set_blocks(), df_word_lr_alloc(), df_word_lr_free_bb_info(), df_word_lr_init(), df_word_lr_local_compute(), df_word_lr_reset(), df_worklist_dataflow(), do_hoist_insertion(), do_remat(), draw_cfg_nodes_no_loops(), dse_step2(), dse_step3(), dse_step3_scan(), dse_step5(), phi_analyzer::dump(), eh_region_outermost(), eliminate_phi(), eliminate_unnecessary_stmts(), emit_common_heads_for_components(), emit_common_tails_for_components(), expand_call(), ext_dce_finish(), ext_dce_rd_transfer_n(), fast_dce(), fill_always_executed_in(), find_call_stack_args(), find_moveable_pseudos(), find_removable_extensions(), find_replaceable_in_bb(), find_what_var_points_to(), fini_reassoc(), finish_live_solver(), finish_reg_info(), finish_remat_bb_data(), fix_bb_placements(), fold_marked_statements(), free_chain_data(), free_loop_data(), free_loop_data(), get_address_cost(), get_computation_cost(), get_live_on_other_edges(), get_nonnull_args(), hoist_code(), hoist_memory_references(), inherit_in_ebb(), init_alias_analysis(), init_dce(), init_live_subregs(), init_rename_info(), init_separate_shrink_wrap(), init_update_ssa(), initialize_uninitialized_regs(), inline_small_functions(), inverted_rev_post_order_compute(), ira_restore_scratches(), crc_optimization::is_crc_checked(), live_track_add_partition(), live_track_clear_base_vars(), live_worklist(), lra(), lra_assign(), lra_coalesce(), lra_eliminate(), lra_inheritance(), lra_live_ranges_finish(), lra_remat(), lra_split_hard_reg_for(), make_edges(), mark_dfs_back_edges(), mark_reachable_handlers(), vect_optimize_slp_pass::materialize(), back_threader::maybe_thread_block(), multiplier_allowed_in_address_p(), oacc_entry_exit_ok(), perform_tree_ssa_dce(), perform_var_substitution(), post_order_compute(), prescan_insns_for_dce(), process_bb_lives(), phi_analyzer::process_phi(), propagate_necessity(), propagate_pseudo_copies(), prune_clobbered_mems(), prune_expressions(), prune_insertions_deletions(), prune_unused_phi_nodes(), ana::reachability< GraphTraits >::reachability(), reachable_at_most_once(), equiv_oracle::register_equiv(), regrename_analyze(), remove_path(), remove_reachable_equiv_notes(), remove_some_program_points_and_update_live_ranges(), remove_some_program_points_and_update_live_ranges(), path_oracle::reset_path(), same_succ_reset(), sarif_artifact::sarif_artifact(), sarif_location_relationship::sarif_location_relationship(), scc_info::scc_info(), setup_live_bytes_from_ref(), setup_try_hard_regno_pseudos(), should_hoist_expr_to_dom(), single_pred_before_succ_order(), spill_for(), spill_pseudos(), split_all_insns(), spread_components(), vect_optimize_slp_pass::start_choosing_layouts(), tail_duplicate(), jump_threader::thread_across_edge(), thread_prologue_and_epilogue_insns(), tree_dce_init(), tree_unroll_loops_completely(), tree_unroll_loops_completely_1(), try_peel_loop(), try_unroll_loop_completely(), undistribute_ops_list(), unroll_loop_runtime_iterations(), unroll_loop_stupid(), update_bad_spill_attribute(), update_dominators_in_loop(), update_live_info(), update_ssa(), update_worklist(), vect_slp_check_for_roots(), vect_transform_slp_perm_load_1(), verify_loop_structure(), verify_ssa(), vt_find_locations(), word_dce_process_block(), crc_optimization::xor_calculates_crc(), and auto_bitmap::~auto_bitmap().

◆ bitmap_clear_bit()

bool bitmap_clear_bit ( bitmap head,
int bit )
extern
Clear a single bit in a bitmap.  Return true if the bit changed.   

References BITMAP_ELEMENT_ALL_BITS, BITMAP_ELEMENT_WORDS, bitmap_element_zerop(), bitmap_list_find_element(), bitmap_list_unlink_element(), bitmap_tree_find_element(), bitmap_tree_unlink_element(), BITMAP_WORD_BITS, bitmap_element::bits, and bitmap_head::indx.

Referenced by add_range_and_copies_from_move_list(), add_scope_conflicts_1(), dom_opt_dom_walker::after_dom_children(), apply_clusters(), assign_by_spills(), assign_temporarily(), bitmap_clear_range(), bitmap_set_subtract_values(), bitmap_value_replace_in_set(), loop_distribution::break_alias_scc_partitions(), build_insn_chain(), build_pred_graph(), calculate_bb_reg_pressure(), calculate_gen_cands(), check_argument_store(), check_for_plus_in_loops_1(), clean(), cleanup_control_flow_pre(), ssa_lazy_cache::clear_range(), collect_object_sizes_for(), color_pass(), compute_antic(), compute_antic_aux(), compute_live_vars_1(), compute_transp(), condense_visit(), create_variable_info_for_1(), cse_extended_basic_block(), cselib_expand_value_rtx_1(), dead_debug_insert_temp(), dead_debug_reset_uses(), df_clear_bb_dirty(), df_insn_delete(), df_insn_info_delete(), df_insn_rescan(), df_insn_rescan_debug_internal(), df_lr_bb_local_compute(), df_md_bb_local_compute_process_def(), df_md_simulate_artificial_defs_at_top(), df_md_simulate_one_insn(), df_mir_simulate_one_insn(), df_note_bb_compute(), df_notes_rescan(), df_simulate_defs(), df_simulate_finalize_backwards(), df_simulate_initialize_backwards(), df_word_lr_mark_ref(), disqualify_candidate(), do_remat(), find_moveable_pseudos(), back_threader::find_paths_to_names(), fix_bb_live_info(), fix_bb_placements(), gimplify_size_expressions(), hoist_memory_references(), insert_store(), insert_updated_phi_nodes_for(), invalidate_insn_data_regno_info(), iv_ca_set_no_cp(), path_oracle::killing_def(), ssa_name_limit_t::leave_phi(), live_track_remove_partition(), loe_visit_block(), lra_create_live_ranges_1(), lra_pop_insn(), make_hard_regno_dead(), mark_elimination(), mark_reachable_blocks(), mark_regno_dead(), mark_regno_death(), prepare_names_to_update(), propagate_freq(), prune_clobbered_mems(), prune_insertions_deletions(), uninit_analysis::prune_phi_opnds(), regstat_bb_compute_calls_crossed(), regstat_bb_compute_ri(), release_defs_bitset(), reload(), remove_unreachable::remove_and_update_globals(), remove_edge_and_dominated_blocks(), remove_from_partition_kill_list(), same_succ_flush_bb(), scan_reads(), scan_rtx_reg(), scan_stores(), gori_map::set_range_invariant(), set_reg_known_equiv_p(), ssa_propagation_engine::simulate_stmt(), sm_seq_valid_bb(), solve_graph(), spread_components(), ssa_conflicts_merge(), ssa_propagation_engine::ssa_propagate(), tree_transform_and_unroll_loop(), try_peel_loop(), try_unroll_loop_completely(), undistribute_bitref_for_vector(), undo_optional_reloads(), unify_nodes(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), update_bb_reg_pressure(), update_ebb_live_info(), update_lives(), update_worklist(), and vt_find_locations().

◆ bitmap_clear_first_set_bit()

unsigned bitmap_clear_first_set_bit ( bitmap a)
extern
Return and clear the bit number of the first set bit in the bitmap.  The
bitmap must be non-empty.   

References a, and bitmap_first_set_bit_worker().

Referenced by cleanup_tree_cfg_noloop(), compute_idf(), df_worklist_dataflow_doublequeue(), do_rpo_vn_1(), rewrite_blocks(), and simple_dce_from_worklist().

◆ bitmap_clear_range()

◆ bitmap_compl_and_into()

◆ bitmap_copy()

void bitmap_copy ( bitmap to,
const_bitmap from )
extern
Copy a bitmap to another bitmap.   

References bitmap_clear(), bitmap_element_allocate(), bitmap_element::bits, gcc_checking_assert, bitmap_element::indx, bitmap_element::next, and bitmap_element::prev.

Referenced by equiv_oracle::add_equiv_to_block(), add_ranges_and_copies(), analyze_all_variable_accesses(), bitmap_and(), bitmap_compl_and_into(), bitmap_intersection_of_preds(), bitmap_intersection_of_succs(), bitmap_ior_and_compl(), bitmap_set_copy(), bitmap_union_of_preds(), bitmap_union_of_succs(), build_insn_chain(), calculate_bb_reg_pressure(), calculate_global_remat_bb_data(), calculate_loop_reg_pressure(), can_move_insns_across(), color_pass(), combine_stack_adjustments_for_block(), compute_builtin_object_size(), compute_earliest(), hybrid_jt_simplifier::compute_exit_dependencies(), path_range_query::compute_exit_dependencies(), compute_farthest(), compute_idf(), compute_laterin(), compute_nearerout(), path_range_query::compute_ranges(), consider_split(), convert_local_omp_clauses(), convert_nonlocal_omp_clauses(), copy_static_var_set(), create_new_chain(), dce_process_block(), dead_debug_local_init(), df_chain_create_bb(), df_compact_blocks(), df_insn_rescan_all(), df_live_verify_solution_start(), df_live_verify_transfer_functions(), df_lr_confluence_0(), df_lr_init(), df_lr_local_compute(), df_lr_verify_solution_start(), df_lr_verify_transfer_functions(), df_md_confluence_0(), df_md_init(), df_mir_confluence_n(), df_mir_verify_solution_start(), df_note_bb_compute(), df_process_deferred_rescans(), df_rd_init_solution(), df_set_blocks(), df_update_entry_block_defs(), df_update_exit_block_uses(), df_word_lr_init(), loop_distribution::distribute_loop(), do_remat(), dse_confluence_0(), dse_confluence_n(), dse_step1(), dse_step3(), dse_transfer_function(), emit_common_heads_for_components(), emit_common_tails_for_components(), ext_dce_rd_transfer_n(), find_moveable_pseudos(), find_removable_extensions(), gen_call_used_regs_seq(), gimplify_size_expressions(), hoist_code(), hoist_memory_references(), init_separate_shrink_wrap(), label_visit(), fwd_jt_path_registry::mark_threaded_blocks(), back_threader::maybe_thread_block(), peephole2_optimize(), process_bb_lives(), propagate(), propagate_pseudo_copies(), prune_unused_phi_nodes(), regrename_analyze(), regstat_bb_compute_calls_crossed(), regstat_bb_compute_ri(), remove_unreachable::remove_and_update_globals(), should_hoist_expr_to_dom(), simulate_backwards_to_point(), sm_seq_valid_bb(), solve_graph(), spill_for(), spread_components(), tm_memopt_compute_antin(), tm_memopt_compute_avin(), tree_unswitch_single_loop(), try_shrink_wrapping(), undo_optional_reloads(), and word_dce_process_block().

◆ bitmap_count_bits()

◆ bitmap_count_unique_bits()

unsigned long bitmap_count_unique_bits ( const_bitmap a,
const_bitmap b )
extern
Count the number of unique bits set across the two bitmaps.   
Count the number of unique bits set in A and B and return it.   

References a, b, bitmap_count_bits_in_word(), BITMAP_ELEMENT_WORDS, bitmap_element::bits, count, bitmap_element::indx, and bitmap_element::next.

Referenced by initialize_conflict_count().

◆ bitmap_empty_p()

bool bitmap_empty_p ( const_bitmap map)
inline
True if MAP is an empty bitmap.   

References map.

Referenced by add_dependence(), add_partitioned_vars_to_ptset(), bitmap_and_compl(), bitmap_and_compl_into(), bitmap_compl_and_into(), bitmap_ior_and_compl(), bitmap_ior_and_compl_into(), bitmap_ior_and_into(), bitmap_single_bit_set_p(), build_insn_chain(), canonicalize_induction_variables(), cleanup_tree_cfg_noloop(), combine_and_move_insns(), compute_builtin_object_size(), compute_idf(), consider_split(), dce_process_block(), dead_or_predicable(), debug_ter(), decompose_multiword_subregs(), determine_group_iv_costs(), df_rd_dump_defs_set(), df_rd_transfer_function(), df_worklist_dataflow_doublequeue(), disqualify_problematic_components(), do_hoist_insertion(), do_rpo_vn_1(), dse_classify_store(), dse_step5(), equiv_chain::dump(), gori_map::dump(), range_def_chain::dump(), dump_components(), dump_pred_graph(), dump_update_ssa(), dump_varinfo(), eliminate_dom_walker::eliminate_cleanup(), eliminate_indirect_cycles(), emit_common_heads_for_components(), emit_common_tails_for_components(), empty_p(), ssa_lazy_cache::empty_p(), execute_update_addresses_taken(), ext_dce_process_sets(), find_call_stack_args(), back_threader::find_paths_to_names(), find_replaceable_exprs(), find_replaceable_in_bb(), generate_setjmp_warnings(), gimple_infer_range::gimple_infer_range(), infer_range_manager::has_range_p(), hoist_memory_references(), ifcombine_replace_cond(), insert_prologue_epilogue_for_components(), insert_updated_phi_nodes_for(), ipa_tm_scan_irr_function(), label_visit(), live_track_remove_partition(), lra(), lra_dump_bitmap_with_title(), lra_eliminate(), mem_might_overlap_already_clobbered_arg_p(), move_insn_for_shrink_wrap(), optimize_va_list_gpr_fpr_size(), sarif_artifact::populate_roles(), pp_points_to_solution(), phi_analyzer::process_phi(), propagate(), propagate_pseudo_copies(), prune_unused_phi_nodes(), pt_solution_empty_p(), release_defs_bitset(), reload(), remove_unreachable::remove_and_update_globals(), remove_from_partition_kill_list(), remove_inheritance_pseudos(), repair_loop_structures(), replace_read(), rewrite_blocks(), rewrite_into_loop_closed_ssa_1(), simple_dce_from_worklist(), sm_seq_valid_bb(), solve_constraints(), solve_graph(), spill_for(), split_function(), spread_components(), ssa_propagation_engine::ssa_propagate(), store_motion_loop(), substitute_and_fold_engine::substitute_and_fold(), tree_unroll_loops_completely(), try_shrink_wrapping_separate(), undistribute_bitref_for_vector(), undo_optional_reloads(), fwd_jt_path_registry::update_cfg(), update_live_info(), update_ssa(), validate_arglist(), and word_dce_process_block().

◆ bitmap_equal_p()

◆ bitmap_first_set_bit()

◆ bitmap_gc_alloc()

bitmap bitmap_gc_alloc ( ALONE_CXX_MEM_STAT_INFO )
extern

◆ bitmap_get_aligned_chunk()

BITMAP_WORD bitmap_get_aligned_chunk ( const_bitmap head,
unsigned int chunk,
unsigned int chunk_size )
This is the get routine for viewing bitmap as a multi-bit sparse array.
Return a set of CHUNK_SIZE consecutive bits from HEAD, starting at bit
CHUNK * chunk_size.    

References BITMAP_ELEMENT_ALL_BITS, BITMAP_ELEMENT_WORDS, bitmap_list_find_element(), bitmap_tree_find_element(), BITMAP_WORD_BITS, bitmap_element::bits, CHAR_BIT, gcc_checking_assert, bitmap_head::indx, and pow2p_hwi().

Referenced by sbr_sparse_bitmap::bitmap_get_quad().

◆ bitmap_hash()

hashval_t bitmap_hash ( const_bitmap head)
extern
Compute bitmap hash (for purposes of hashing etc.)   
Compute hash of bitmap (for purposes of hashing).   

References BITMAP_ELEMENT_WORDS, bitmap_element::bits, head::first, gcc_checking_assert, bitmap_element::indx, and bitmap_element::next.

Referenced by equiv_class_lookup_or_add(), same_succ_hash(), shared_bitmap_add(), and shared_bitmap_lookup().

◆ bitmap_initialize()

void bitmap_initialize ( bitmap head,
bitmap_obstack *obstack CXX_MEM_STAT_INFO )
inline
Initialize a bitmap header.  OBSTACK indicates the bitmap obstack
to allocate from, NULL for GC'd bitmap.   

References bitmap_register(), head::first, NULL, obstack, and PASS_MEM_STAT.

Referenced by assign_by_spills(), auto_bitmap::auto_bitmap(), auto_bitmap::auto_bitmap(), bitmap_alloc(), bitmap_gc_alloc(), bitmap_set_new(), calculate_equiv_gains(), calculate_loop_reg_pressure(), compute_live_vars(), control_dependences::control_dependences(), create_new_chain(), create_remat_bb_data(), df_chain_create_bb(), df_live_alloc(), df_live_verify_solution_start(), df_live_verify_transfer_functions(), df_lr_alloc(), df_lr_verify_solution_start(), df_lr_verify_transfer_functions(), df_md_alloc(), df_md_local_compute(), df_mir_alloc(), df_mir_verify_solution_start(), df_note_compute(), df_rd_alloc(), df_rd_dump_defs_set(), df_rd_local_compute(), df_rd_transfer_function(), df_scan_alloc(), df_set_blocks(), df_word_lr_alloc(), do_hoist_insertion(), ext_dce_init(), find_exits(), find_moveable_pseudos(), find_removable_extensions(), init_live_reload_and_inheritance_pseudos(), init_lives(), init_rename_info(), initialize_lra_reg_info_element(), initiate_live_solver(), lra(), lra_assign(), lra_coalesce(), lra_eliminate(), lra_inheritance(), lra_live_ranges_init(), lra_remat(), lra_split_hard_reg_for(), mem_ref_alloc(), new_live_track(), new_tree_live_info(), regrename_analyze(), remove_scratches(), sbr_sparse_bitmap::sbr_sparse_bitmap(), spill_pseudos(), pair_fusion_bb_info::track_tombstone(), tree_ssa_lim_initialize(), update_bad_spill_attribute(), and update_ssa().

◆ bitmap_intersect_compl_p()

bool bitmap_intersect_compl_p ( const_bitmap a,
const_bitmap b )
extern
True if the complement of the second intersects the first (their
AND_COMPL is non-empty).   
Return true if A AND NOT B is not empty.   

References a, b, BITMAP_ELEMENT_WORDS, bitmap_element::bits, gcc_checking_assert, bitmap_element::indx, bitmap_element::next, and NULL.

Referenced by assign_spill_hard_regs(), df_live_verify_transfer_functions(), df_lr_verify_transfer_functions(), and discover_loops().

◆ bitmap_intersect_p()

◆ bitmap_ior()

◆ bitmap_ior_and_compl()

◆ bitmap_ior_and_compl_into()

◆ bitmap_ior_and_into()

bool bitmap_ior_and_into ( bitmap a,
const_bitmap b,
const_bitmap c )
extern
DST = A | (B & C).  Return true if DST changes.   
A |= (B & C).  Return true if A changes.   

References a, b, BITMAP_ELEMENT_WORDS, bitmap_elt_copy(), bitmap_elt_ior(), bitmap_empty_p(), bitmap_ior_into(), bitmap_element::bits, changed, gcc_checking_assert, bitmap_element::indx, bitmap_element::next, and NULL.

Referenced by df_md_local_compute(), and do_hoist_insertion().

◆ bitmap_ior_into()

bool bitmap_ior_into ( bitmap a,
const_bitmap b )
extern
A |= B.  Return true if A changes.   

References a, b, bitmap_elt_copy(), bitmap_elt_ior(), changed, gcc_checking_assert, bitmap_element::indx, bitmap_element::next, and NULL.

Referenced by range_def_chain::add_def_chain_to_bitmap(), add_dependence(), equiv_oracle::add_equiv_to_block(), add_new_name_mapping(), add_partitioned_vars_to_ptset(), add_scope_conflicts(), add_scope_conflicts_1(), analyze_memory_references(), assign_by_spills(), bitmap_ior_and_compl_into(), bitmap_ior_and_into(), gori_map::calculate_gori(), calculate_live_on_exit(), calculate_loop_reg_pressure(), cand_pav_con_fun_n(), coalesce_ssa_name(), compute_antic_aux(), compute_live_vars(), compute_live_vars_1(), compute_partial_antic_aux(), df_live_confluence_n(), df_lr_confluence_n(), df_md_confluence_n(), df_rd_bb_local_compute(), df_rd_confluence_n(), df_rd_transfer_function(), df_scan_blocks(), df_scan_verify(), df_simulate_fixup_sets(), df_word_lr_confluence_n(), ipa_icf::sem_item_optimizer::do_congruence_step(), do_ds_constraint(), do_hoist_insertion(), dse_step2_init(), dse_step3(), dse_step3_exit_block_scan(), phi_analyzer::dump(), ext_dce_rd_transfer_n(), find_split_points(), get_live_on_other_edges(), get_tm_region_blocks(), ipa_tm_scan_irr_function(), label_visit(), lra_assign(), lra_coalesce(), lra_constraints(), lra_eliminate(), lra_inheritance(), lra_split_hard_reg_for(), mark_replaceable(), gori_map::maybe_add_gori(), merge_chains(), merge_clusters(), merge_graph_nodes(), loop_distribution::partition_merge_into(), phi_analyzer::process_phi(), process_replaceable(), propagate_modified_regnos(), propagate_pseudo_copies(), pt_solution_ior_into(), loop_distribution::rdg_build_partitions(), record_important_candidates(), range_def_chain::register_dependency(), equiv_oracle::register_equiv(), path_oracle::register_equiv(), remove_unreachable::remove_and_update_globals(), remove_edge_and_dominated_blocks(), scan_reads(), set_bb_regs(), range_def_chain::set_import(), set_union_with_increment(), sm_seq_valid_bb(), solution_set_expand(), solve_add_graph_edge(), solve_graph(), spill_for(), spill_pseudos(), spill_pseudos(), ssa_conflicts_merge(), store_motion_loop(), tm_memopt_compute_antic(), tm_memopt_compute_available(), tree_unroll_loops_completely_1(), unify_nodes(), union_static_var_sets(), update_live_info(), update_reg_eliminate(), and verify_ssaname_freelists().

◆ bitmap_ior_into_and_free()

bool bitmap_ior_into_and_free ( bitmap a,
bitmap * b_ )
extern
A |= B.  Return true if A changes.  Free B (re-using its storage
for the result).   

References a, b, bitmap_clear(), bitmap_elt_ior(), BITMAP_FREE, bitmap_list_insert_element_after(), bitmap_list_unlink_element(), changed, gcc_assert, gcc_checking_assert, bitmap_element::indx, bitmap_element::next, and NULL.

Referenced by condense_visit().

◆ bitmap_last_set_bit()

unsigned bitmap_last_set_bit ( const_bitmap a)
extern
Return the bit number of the first set bit in the bitmap.  The
bitmap must be non-empty.   

References a, BITMAP_ELEMENT_ALL_BITS, BITMAP_ELEMENT_WORDS, bitmap_popcount(), BITMAP_WORD_BITS, bitmap_element::bits, gcc_assert, gcc_checking_assert, bitmap_element::indx, and bitmap_element::next.

Referenced by compute_trims().

◆ bitmap_list_view()

void bitmap_list_view ( bitmap head)
Change the view of the bitmap to list, or tree.   
Convert bitmap HEAD from splay-tree view to linked-list view.   

References bitmap_tree_listify_from(), bitmap_tree_rotate_right(), head::first, gcc_assert, and bitmap_element::prev.

Referenced by coalesce_ssa_name(), release_defs_bitset(), and update_ssa().

◆ bitmap_move()

void bitmap_move ( bitmap to,
bitmap from )
extern

◆ bitmap_obstack_free()

void bitmap_obstack_free ( bitmap map)
extern
Release an obstack allocated bitmap.   

References bitmap_clear(), map, and release_overhead().

◆ bitmap_obstack_initialize()

void bitmap_obstack_initialize ( bitmap_obstack * bit_obstack)
extern
Initialize and release a bitmap obstack.   
Initialize a bitmap obstack.  If BIT_OBSTACK is NULL, initialize
the default bitmap obstack.   

References __alignof__, bitmap_default_obstack, bitmap_default_obstack_depth, bitmap_obstack::elements, bitmap_obstack::heads, NULL, bitmap_obstack::obstack, obstack_chunk_alloc, obstack_chunk_free, and OBSTACK_CHUNK_SIZE.

Referenced by cgraph_node::add_new_function(), cgraph_node::analyze(), analyze_functions(), block_range_cache::block_range_cache(), symtab_node::check_ifunc_callee_symtab_nodes(), symbol_table::compile(), control_dependences::control_dependences(), df_live_alloc(), df_lr_alloc(), df_md_alloc(), df_mir_alloc(), df_mir_verify_solution_start(), df_rd_alloc(), df_scan_alloc(), df_word_lr_alloc(), dom_ranger::dom_ranger(), dse_step0(), equiv_oracle::equiv_oracle(), execute_tm_memopt(), cgraph_node::expand(), expand_thunk(), find_replaceable_exprs(), gate_tm_init(), infer_range_manager::infer_range_manager(), init_alias_vars(), init_dce(), init_live_reload_and_inheritance_pseudos(), init_lives(), init_pre(), init_ssa_renamer(), init_update_ssa(), init_vars_expansion(), ipa_init(), ipa_passes(), ipa_reference_read_optimization_summary(), ipa_tm_execute(), ira(), lang_dependent_init(), lower_nested_functions(), lto_output(), new_live_track(), new_tree_live_info(), path_oracle::path_oracle(), perform_var_substitution(), phi_analyzer::phi_analyzer(), range_def_chain::range_def_chain(), reorg_loops(), rest_of_handle_df_initialize(), rewrite_into_loop_closed_ssa_1(), run_rtl_passes(), toplev::run_self_tests(), ipa_icf::sem_item_optimizer::sem_item_optimizer(), solve_graph(), ssa_conflicts_new(), ssa_lazy_cache::ssa_lazy_cache(), pair_fusion_bb_info::track_tombstone(), tree_ssa_lim_initialize(), and update_list::update_list().

◆ bitmap_obstack_release()

void bitmap_obstack_release ( bitmap_obstack * bit_obstack)
extern
Release the memory from a bitmap obstack.  If BIT_OBSTACK is NULL,
release the default bitmap obstack.   

References bitmap_default_obstack, bitmap_default_obstack_depth, bitmap_obstack::elements, gcc_assert, bitmap_obstack::heads, NULL, and bitmap_obstack::obstack.

Referenced by cgraph_node::add_new_function(), cgraph_node::analyze(), analyze_functions(), calculate_live_ranges(), symtab_node::check_ifunc_callee_symtab_nodes(), symbol_table::compile(), compute_transaction_bits(), delete_live_track(), delete_points_to_sets(), delete_tree_live_info(), df_live_free(), df_lr_free(), df_md_free(), df_mir_free(), df_mir_verify_solution_end(), df_rd_free(), df_scan_free_internal(), df_word_lr_free(), do_reload(), dse_step7(), execute_tm_memopt(), cgraph_node::expand(), expand_thunk(), finalize(), find_replaceable_exprs(), fini_dce(), fini_pre(), fini_ssa_renamer(), fini_vars_expansion(), finish_live_reload_and_inheritance_pseudos(), finish_lives(), free_var_substitution_info(), gate_tm_init(), ipa_passes(), ipa_reference_cc_finalize(), ipa_tm_execute(), lower_nested_functions(), lto_output(), propagate(), remove_preds_and_fake_succs(), reorg_loops(), rest_of_handle_df_finish(), rewrite_into_loop_closed_ssa_1(), run_rtl_passes(), toplev::run_self_tests(), solve_graph(), ssa_conflicts_delete(), tree_ssa_lim_finalize(), block_range_cache::~block_range_cache(), control_dependences::~control_dependences(), dom_ranger::~dom_ranger(), equiv_oracle::~equiv_oracle(), infer_range_manager::~infer_range_manager(), pair_fusion_bb_info::~pair_fusion_bb_info(), path_oracle::~path_oracle(), phi_analyzer::~phi_analyzer(), range_def_chain::~range_def_chain(), ipa_icf::sem_item_optimizer::~sem_item_optimizer(), ssa_lazy_cache::~ssa_lazy_cache(), and update_list::~update_list().

◆ bitmap_print()

void bitmap_print ( FILE * file,
const_bitmap head,
const char * prefix,
const char * suffix )
extern

◆ bitmap_register()

void bitmap_register ( bitmap MEM_STAT_DECL)
extern

Referenced by bitmap_initialize().

◆ bitmap_release()

void bitmap_release ( bitmap head)
inline
Release a bitmap (but not its head).  This is suitable for pairing with
bitmap_initialize.   

References bitmap_clear(), and bitmap_head::crashme.

Referenced by calculate_loop_reg_pressure(), df_live_free(), df_md_free(), df_md_local_compute(), df_rd_local_compute(), lra_inheritance(), and pair_fusion_bb_info::~pair_fusion_bb_info().

◆ bitmap_set_aligned_chunk()

void bitmap_set_aligned_chunk ( bitmap head,
unsigned int chunk,
unsigned int chunk_size,
BITMAP_WORD chunk_value )
Set and get multiple bit values in a sparse bitmap.  This allows a bitmap to
function as a sparse array of bit patterns where the patterns are
multiples of power of 2. This is more efficient than performing this as
multiple individual operations.   
Set CHUNK_SIZE bits at a time in bitmap HEAD.
Store CHUNK_VALUE starting at bits CHUNK * chunk_size.
This is the set routine for viewing bitmap as a multi-bit sparse array.   

References BITMAP_ELEMENT_ALL_BITS, bitmap_element_allocate(), BITMAP_ELEMENT_WORDS, bitmap_list_find_element(), bitmap_list_link_element(), bitmap_tree_find_element(), bitmap_tree_link_element(), BITMAP_WORD_BITS, bitmap_element::bits, CHAR_BIT, gcc_checking_assert, bitmap_element::indx, bitmap_head::indx, and pow2p_hwi().

Referenced by sbr_sparse_bitmap::bitmap_set_quad().

◆ bitmap_set_bit()

◆ bitmap_set_range()

◆ bitmap_single_bit_set_p()

bool bitmap_single_bit_set_p ( const_bitmap a)
extern
True if the bitmap has only a single bit set.   
Return true if the bitmap has a single bit set.  Otherwise return
false.   

References a, BITMAP_ELEMENT_WORDS, bitmap_empty_p(), bitmap_popcount(), bitmap_element::bits, count, bitmap_element::next, NULL, and bitmap_element::prev.

Referenced by curr_insn_transform(), pt_solution_singleton_or_null_p(), and same_succ_flush_bb().

◆ bitmap_tree_view()

void bitmap_tree_view ( bitmap head)
Convert bitmap HEAD from linked-list view to splay-tree view.
This is simply a matter of dropping the prev or next pointers
and setting the tree_form flag.  The tree will balance itself
if and when it is used.   

References head::first, gcc_assert, bitmap_element::next, NULL, and bitmap_element::prev.

Referenced by coalesce_ssa_name(), compute_idf(), df_worklist_dataflow_doublequeue(), dom_jt_state::dom_jt_state(), equiv_oracle::equiv_oracle(), find_always_executed_bbs(), ifcombine_replace_cond(), maybe_skip_until(), release_defs_bitset(), sbr_sparse_bitmap::sbr_sparse_bitmap(), sorted_array_from_bitmap_set(), ssa_prop_init(), update_ssa(), and walk_aliased_vdefs_1().

◆ bitmap_xor()

◆ bitmap_xor_into()

◆ bmp_iter_and()

bool bmp_iter_and ( bitmap_iterator * bi,
unsigned * bit_no )
inline
Advance to the next nonzero bit of an intersecting pair of
bitmaps.  We will have already advanced past the just iterated bit.
Return true if there is a bit to iterate.   

References BITMAP_ELEMENT_ALL_BITS, BITMAP_ELEMENT_WORDS, BITMAP_WORD_BITS, bitmap_element::bits, bitmap_iterator::bits, bmp_iter_next_bit(), bitmap_iterator::elt1, bitmap_iterator::elt2, gcc_checking_assert, bitmap_element::indx, bitmap_element::next, and bitmap_iterator::word_no.

◆ bmp_iter_and_compl()

bool bmp_iter_and_compl ( bitmap_iterator * bi,
unsigned * bit_no )
inline
Advance to the next nonzero bit in the intersection of
complemented bitmaps.  We will have already advanced past the just
iterated bit.   

References BITMAP_ELEMENT_ALL_BITS, BITMAP_ELEMENT_WORDS, BITMAP_WORD_BITS, bitmap_element::bits, bitmap_iterator::bits, bmp_iter_next_bit(), bitmap_iterator::elt1, bitmap_iterator::elt2, gcc_checking_assert, bitmap_element::indx, bitmap_element::next, and bitmap_iterator::word_no.

◆ bmp_iter_and_compl_init()

void bmp_iter_and_compl_init ( bitmap_iterator * bi,
const_bitmap map1,
const_bitmap map2,
unsigned start_bit,
unsigned * bit_no )
inline

◆ bmp_iter_and_init()

void bmp_iter_and_init ( bitmap_iterator * bi,
const_bitmap map1,
const_bitmap map2,
unsigned start_bit,
unsigned * bit_no )
inline

◆ bmp_iter_next()

void bmp_iter_next ( bitmap_iterator * bi,
unsigned * bit_no )
inline
Advance to the next bit in BI.  We don't advance to the next
nonzero bit yet.   

References bitmap_iterator::bits.

Referenced by equiv_relation_iterator::next(), and gori_export_iterator::next().

◆ bmp_iter_next_bit()

void bmp_iter_next_bit ( bitmap_iterator * bi,
unsigned * bit_no )
inline
Advance to first set bit in BI.   

References bitmap_iterator::bits, and gcc_assert.

Referenced by bmp_iter_and(), bmp_iter_and_compl(), and bmp_iter_set().

◆ bmp_iter_set()

bool bmp_iter_set ( bitmap_iterator * bi,
unsigned * bit_no )
inline
Advance to the next nonzero bit of a single bitmap, we will have
already advanced past the just iterated bit.  Return true if there
is a bit to iterate.   

References BITMAP_ELEMENT_ALL_BITS, BITMAP_ELEMENT_WORDS, BITMAP_WORD_BITS, bitmap_element::bits, bitmap_iterator::bits, bmp_iter_next_bit(), bitmap_iterator::elt1, gcc_checking_assert, bitmap_element::indx, bitmap_element::next, and bitmap_iterator::word_no.

Referenced by equiv_relation_iterator::get_name(), and gori_export_iterator::get_name().

◆ bmp_iter_set_init()

◆ debug() [1/4]

void debug ( const auto_bitmap & ref)
extern

References debug.

◆ debug() [2/4]

void debug ( const auto_bitmap * ptr)
extern

References debug.

◆ debug() [3/4]

void debug ( const bitmap_head & ref)
extern

References dump_bitmap().

◆ debug() [4/4]

void debug ( const bitmap_head * ptr)
extern

References debug.

◆ debug_bitmap()

void debug_bitmap ( const_bitmap head)
extern
Debug functions to print a bitmap.   
Function to be called from the debugger to print the contents
of a bitmap.   

References debug_bitmap_file().

◆ debug_bitmap_file()

void debug_bitmap_file ( FILE * file,
const_bitmap head )
extern
Debugging function to print out the contents of a bitmap.   

References bitmap_tree_to_vec(), debug_bitmap_elt_file(), head::first, HOST_PTR_PRINTF, i, and bitmap_element::next.

Referenced by debug_bitmap(), and dump_rdg_partitions().

◆ dump_bitmap()

void dump_bitmap ( FILE * file,
const_bitmap map )
inline
A few compatibility/functions macros for compatibility with sbitmaps  

References bitmap_print(), and map.

Referenced by create_new_invariant(), debug(), df_rd_start_dump(), dump_cand(), dump_split_point(), find_iv_candidates(), loop_distribution::partition_merge_into(), and ssa_conflicts_dump().

◆ dump_bitmap_statistics()

void dump_bitmap_statistics ( void )
extern
Output per-bitmap memory usage statistics.   

References bitmap_mem_desc, and BITMAP_ORIGIN.

Referenced by dump_memory_report().

Variable Documentation

◆ bitmap_default_obstack

◆ bitmap_mem_desc

mem_alloc_description<bitmap_usage> bitmap_mem_desc
extern
Bitmap memory description.   
Functions to support general ended bitmaps.
   Copyright (C) 1997-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/>.   
Memory allocation statistics purpose instance.   

Referenced by bitmap_list_find_element(), bitmap_register(), bitmap_tree_find_element(), bitmap_tree_splay(), dump_bitmap_statistics(), register_overhead(), and release_overhead().

◆ bitmap_zero_bits

bitmap_element bitmap_zero_bits
extern