#include "config.h"#include "system.h"#include "tree.h"#include "rtl.h"#include "tm_p.h"#include "hard-reg-set.h"#include "basic-block.h"#include "insn-config.h"#include "regs.h"#include "flags.h"#include "output.h"#include "function.h"#include "except.h"#include "toplev.h"#include "recog.h"#include "expr.h"#include "ssa.h"#include "timevar.h"#include "obstack.h"#include "splay-tree.h"

Go to the source code of this file.
| #define HAVE_epilogue 0 |
Definition at line 162 of file flow.c.
Referenced by cfg_layout_finalize(), df_record_exit_block_uses(), mark_regs_live_at_end(), propagate_one_insn(), rs6000_output_function_epilogue(), and thread_prologue_and_epilogue_insns().
| #define HAVE_prologue 0 |
Definition at line 165 of file flow.c.
Referenced by df_record_entry_block_defs(), final_scan_insn(), final_start_function(), propagate_one_insn(), rs6000_output_function_prologue(), and thread_prologue_and_epilogue_insns().
| #define HAVE_sibcall_epilogue 0 |
| #define MAX_MEM_SET_LIST_LEN 100 |
| static void add_to_mem_set_list | ( | struct propagate_block_info * | pbi, | |
| rtx | mem | |||
| ) | [static] |
Definition at line 2421 of file flow.c.
References alloc_EXPR_LIST(), GET_MODE, GET_MODE_SIZE, i, MAX_MEM_SET_LIST_LEN, PROP_AUTOINC, PUT_MODE, rtx_equal_p(), shallow_copy_rtx, and XEXP.
Referenced by init_propagate_block_info(), and mark_set_1().
Definition at line 1522 of file flow.c.
Referenced by life_analysis(), recompute_reg_usage(), rest_of_compilation(), rest_of_handle_life(), rest_of_handle_partition_blocks(), and schedule_ebbs().
| static void calculate_global_regs_live | ( | sbitmap | blocks_in, | |
| sbitmap | blocks_out, | |||
| int | flags | |||
| ) | [static] |
Definition at line 1092 of file flow.c.
References abort, ARG_POINTER_REGNUM, basic_block_def::aux, BASIC_BLOCK, BITMAP_AND, BITMAP_AND_COMPL, BITMAP_IOR, bitmap_operation(), BITMAP_XOR, changed, CLEAR_REG_SET, basic_block_def::cond_local_set, COPY_REG_SET, edge::dest, EDGE_EH, EH_USES, ENTRY_BLOCK_PTR, EXECUTE_IF_SET_IN_SBITMAP, EXIT_BLOCK_PTR, FIRST_PSEUDO_REGISTER, fixed_regs, edge::flags, flow_obstack, FOR_BB_BETWEEN, FOR_EACH_BB, for_each_successor_phi(), FRAME_POINTER_REGNUM, free(), FREE_REG_SET, basic_block_def::global_live_at_end, basic_block_def::global_live_at_start, i, in_ssa_form, basic_block_def::index, INITIALIZE_REG_SET, INVALID_REGNUM, IOR_REG_SET, basic_block_def::local_set, n_basic_blocks, NULL, OBSTACK_ALLOC_REG_SET, PIC_OFFSET_TABLE_REGNUM, basic_block_def::pred, edge::pred_next, propagate_block(), queue(), REG_SET_EQUAL_P, regs_invalidated_by_call, reload_completed, rescan(), sbitmap_zero(), SET_BIT, set_phi_alternative_reg(), SET_REGNO_REG_SET, edge::src, STACK_POINTER_REGNUM, basic_block_def::succ, edge::succ_next, TEST_BIT, TEST_HARD_REG_BIT, tmp, and xmalloc().
Referenced by update_life_info().
| void check_function_return_warnings | ( | ) |
Definition at line 355 of file flow.c.
References cfun, EXIT_BLOCK_PTR, get_insns(), get_max_uid(), insn, INSN_UID, lang_missing_noreturn_ok_p, max_uid, NEXT_INSN, NULL, TREE_THIS_VOLATILE, warn_missing_noreturn, warn_return_type, and warning.
Referenced by rest_of_compilation().
Definition at line 4360 of file flow.c.
References BASIC_BLOCK, basic_block_def::end, EXECUTE_IF_SET_IN_SBITMAP, free_INSN_LIST_list(), get_insns(), basic_block_def::head, i, INSN_P, LOG_LINKS, and NEXT_INSN.
Referenced by update_life_info().
| int count_or_remove_death_notes | ( | sbitmap | blocks, | |
| int | kill | |||
| ) |
Definition at line 4292 of file flow.c.
Referenced by convert_from_ssa(), reg_alloc(), regrename_optimize(), rest_of_compilation(), rest_of_handle_remove_death_notes(), rest_of_handle_sched2(), rtl_seqabstr(), and update_life_info().
Definition at line 887 of file flow.c.
Referenced by cleanup_cfg(), fixup_reorder_chain(), life_analysis(), rest_of_compilation(), rest_of_handle_combine(), rest_of_handle_cse(), rest_of_handle_cse2(), and rest_of_handle_gcse().
| int delete_noop_moves | ( | f | ) |
Definition at line 841 of file flow.c.
References delete_insn_and_edges(), basic_block_def::end, find_reg_note(), FOR_EACH_BB, fprintf(), gen_rtx_INSN_LIST, basic_block_def::head, insn, INSN_P, next, NEXT_INSN, next_real_insn(), noop_move_p(), NULL_RTX, REG_LIBCALL, REG_NOTES, REG_RETVAL, rtl_dump_file, and XEXP.
Referenced by combine_instructions(), copyprop_hardreg_forward(), and life_analysis().
Definition at line 4227 of file flow.c.
Referenced by debug_regset(), dump_bb(), dump_bb_info(), dump_flow_info(), print_rtl_with_bb(), and rtl_dump_bb().
Definition at line 1406 of file flow.c.
References GET_CODE, NULL_RTX, REG, REGNO, find_regno_partial_param::regno_to_find, find_regno_partial_param::retval, SUBREG_REG, and XEXP.
Referenced by initialize_uninitialized_subregs().
Definition at line 4165 of file flow.c.
Referenced by find_use_as_address(), and try_auto_increment().
| rtx first_insn_after_basic_block_note | ( | basic_block | block | ) |
Definition at line 399 of file flow.c.
Referenced by eliminate_phi(), examine_flow_edges(), for_each_successor_phi(), insert_phi_node(), make_equivalent_phi_alternatives_equivalent(), make_forwarder_block(), make_regs_equivalent_over_bad_edges(), optimize_unexecutable_edges(), rename_block(), and rtl_split_block().
| void free_basic_block_vars | ( | int | keep_head_end_p | ) |
Definition at line 818 of file flow.c.
References basic_block_info, clear_edges(), ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, last_basic_block, n_basic_blocks, NULL, and VARRAY_FREE.
Referenced by if_convert(), life_analysis(), optimize_sibling_and_tail_recursive_calls(), rest_of_clean_state(), rest_of_compilation(), rest_of_handle_final(), and sh_output_mi_thunk().
| void free_propagate_block_info | ( | struct propagate_block_info * | pbi | ) |
Definition at line 2041 of file flow.c.
Referenced by clear_regs_live_in_seq(), collect_pattern_seqs(), dead_or_predicable(), and propagate_block().
| struct propagate_block_info* init_propagate_block_info | ( | basic_block | bb, | |
| regset | live, | |||
| regset | local_set, | |||
| regset | cond_local_set, | |||
| int | flags | |||
| ) | [read] |
Definition at line 1879 of file flow.c.
Referenced by clear_regs_live_in_seq(), collect_pattern_seqs(), dead_or_predicable(), and propagate_block().
| int initialize_uninitialized_subregs | ( | void | ) |
Definition at line 1453 of file flow.c.
Referenced by rest_of_compilation(), and rest_of_handle_life().
| static int insn_dead_p | ( | struct propagate_block_info * | pbi, | |
| rtx | x, | |||
| int | call_ok, | |||
| notes | ||||
| ) | [static] |
Definition at line 2135 of file flow.c.
References anti_dependence(), ARG_POINTER_REGNUM, canon_rtx(), FIRST_PSEUDO_REGISTER, fixed_regs, flag_non_call_exceptions, frame_pointer_needed, FRAME_POINTER_REGNUM, GET_CODE, GET_MODE, GET_MODE_SIZE, global_regs, HARD_FRAME_POINTER_REGNUM, HARD_REGNO_NREGS, i, may_trap_p(), mem, MEM, MEM_VOLATILE_P, n, NULL_RTX, r, REG, REG_INC, REG_NOTE_KIND, REGNO, REGNO_REG_SET_P, reload_completed, rtx_equal_p(), SET, SET_DEST, SET_SRC, STACK_POINTER_REGNUM, USE, volatile_refs_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by insn_dead_p(), libcall_dead_p(), and propagate_one_insn().
Definition at line 2470 of file flow.c.
References GET_CODE, GET_RTX_CLASS, invalidate_mems_from_set(), x, and XEXP.
Referenced by mark_set_1(), and mark_used_regs().
| static void invalidate_mems_from_set | ( | struct propagate_block_info * | pbi, | |
| rtx | exp | |||
| ) | [static] |
Definition at line 2489 of file flow.c.
References free_EXPR_LIST_node(), next, NULL_RTX, prev, reg_overlap_mentioned_p(), and XEXP.
Referenced by invalidate_mems_from_autoinc(), mark_set_1(), and propagate_one_insn().
| static int libcall_dead_p | ( | struct propagate_block_info * | pbi, | |
| rtx | note, | |||
| rtx | insn | |||
| ) | [static] |
Definition at line 422 of file flow.c.
References allocate_bb_life_data(), allocate_reg_life_data(), ARRAY_SIZE, bitmap_initialize(), CLEAR_HARD_REG_SET, delete_dead_jumptables(), delete_noop_moves(), dump_flow_info(), elim_reg_set, ELIMINABLE_REGS, end_alias_analysis(), EXIT_BLOCK_PTR, FRAME_POINTER_REGNUM, free_basic_block_vars(), i, init_alias_analysis(), int, mark_regs_live_at_end(), memset, notice_stack_pointer_modification(), NULL, optimize, PROP_ALLOW_CFG_CHANGES, PROP_AUTOINC, PROP_LOG_LINKS, PROP_REG_INFO, PROP_SCAN_DEAD_STORES, regs_ever_live, reload_completed, SET_HARD_REG_BIT, subregs_of_mode, UPDATE_LIFE_GLOBAL, and update_life_info().
Referenced by branch_target_load_optimize(), convert_from_ssa(), convert_to_ssa(), ip2k_reorg(), m68hc11_reorg(), reg_alloc(), rest_of_compilation(), rest_of_handle_life(), rest_of_handle_stack_adjustments(), rest_of_rtl_seqabstr(), rtl_find_values_to_profile(), rtl_init_edge_profiler(), rtl_seqabstr(), and sh_output_mi_thunk().
Definition at line 956 of file flow.c.
References abort, FIRST_PSEUDO_REGISTER, GET_MODE, HARD_REGNO_NREGS, n, REGNO, and SET_REGNO_REG_SET.
Definition at line 979 of file flow.c.
References current_function_calls_alloca, current_function_calls_eh_return, current_function_sp_is_unchanging, diddle_return_value(), EH_RETURN_DATA_REGNO, EH_RETURN_HANDLER_RTX, EH_RETURN_STACKADJ_RTX, EPILOGUE_USES, EXIT_IGNORE_STACK, FIRST_PSEUDO_REGISTER, fixed_regs, flag_omit_frame_pointer, frame_pointer_needed, FRAME_POINTER_REGNUM, FRAME_POINTER_REQUIRED, global_regs, HARD_FRAME_POINTER_REGNUM, HAVE_epilogue, i, INVALID_REGNUM, LOCAL_REGNO, mark_reg(), PIC_OFFSET_TABLE_REGNUM, REG_P, regs_ever_live, regs_invalidated_by_call, reload_completed, SET_REGNO_REG_SET, STACK_POINTER_REGNUM, TEST_HARD_REG_BIT, and tmp.
Referenced by life_analysis().
| static void mark_set_1 | ( | struct propagate_block_info * | pbi, | |
| enum rtx_code | code, | |||
| rtx | reg, | |||
| rtx | cond, | |||
| rtx | insn, | |||
| int | flags | |||
| ) | [static] |
Definition at line 2597 of file flow.c.
References add_to_mem_set_list(), alloc_EXPR_LIST(), alloc_INSN_LIST(), ARG_POINTER_REGNUM, asm_noperands(), BLOCK_NUM, canon_rtx(), CLEAR_REGNO_REG_SET, FIRST_PSEUDO_REGISTER, fixed_regs, for_each_rtx(), frame_pointer_needed, FRAME_POINTER_REGNUM, gen_rtx_REG(), GET_CODE, GET_MODE, GET_MODE_SIZE, HARD_FRAME_POINTER_REGNUM, HARD_REGNO_NREGS, i, invalidate_mems_from_autoinc(), invalidate_mems_from_set(), LOG_LINKS, long, MEM, NULL_RTX, optimize, PATTERN, PROP_AUTOINC, PROP_DEATH_NOTES, PROP_LOG_LINKS, PROP_SCAN_DEAD_STORES, REG, REG_BASIC_BLOCK, REG_BLOCK_GLOBAL, REG_BLOCK_UNKNOWN, REG_FREQ, REG_FREQ_FROM_BB, REG_LIVE_LENGTH, REG_N_DEATHS, REG_N_REFS, REG_N_SETS, REG_NOTES, REG_UNUSED, REGNO, regno_reg_rtx, REGNO_REG_SET_P, regs_ever_live, reload_completed, SET_REGNO_REG_SET, side_effects_p(), STACK_POINTER_REGNUM, SUBREG_BYTE, SUBREG_REG, subreg_regno_offset(), UNITS_PER_WORD, XEXP, XVECEXP, XVECLEN, and is::y.
Referenced by mark_set_1(), mark_set_regs(), and propagate_one_insn().
| static void mark_set_regs | ( | struct propagate_block_info * | pbi, | |
| rtx | x, | |||
| rtx | insn | |||
| ) | [static] |
Definition at line 2524 of file flow.c.
References abort, cond, COND_EXEC_CODE, COND_EXEC_TEST, GET_CODE, i, mark_set_1(), NULL_RTX, REG_INC, REG_NOTE_KIND, REG_NOTES, SET, SET_DEST, sub, XEXP, XVECEXP, and XVECLEN.
Definition at line 3566 of file flow.c.
References alloc_EXPR_LIST(), ARG_POINTER_REGNUM, reg_cond_life_info::condition, const0_rtx, dead_or_set_regno_p(), elim_reg_set, find_regno_note(), FIRST_PSEUDO_REGISTER, FRAME_POINTER_REGNUM, GET_MODE, HARD_REGNO_NREGS, i, NULL, NULL_RTX, reg_cond_life_info::orig_condition, PROP_AUTOINC, PROP_DEATH_NOTES, PROP_LOG_LINKS, REG_BASIC_BLOCK, REG_BLOCK_GLOBAL, REG_BLOCK_UNKNOWN, REG_DEAD, REG_FREQ, REG_FREQ_FROM_BB, REG_N_DEATHS, REG_N_REFS, REG_NOTES, REGNO, regno_reg_rtx, REGNO_REG_SET_P, regs_ever_live, SET_REGNO_REG_SET, splay_tree_insert(), splay_tree_lookup(), splay_tree_remove(), reg_cond_life_info::stores, TEST_HARD_REG_BIT, splay_tree_node_s::value, XEXP, and xmalloc().
Referenced by mark_used_regs(), and propagate_one_insn().
| static void mark_used_regs | ( | struct propagate_block_info * | pbi, | |
| rtx | x, | |||
| rtx | cond, | |||
| rtx | insn | |||
| ) | [static] |
Definition at line 3758 of file flow.c.
References abort, anti_dependence(), ARG_POINTER_REGNUM, ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_LENGTH, bitmap_set_bit(), COND_EXEC_CODE, COND_EXEC_TEST, CONST, CONSTANT_POOL_ADDRESS_P, FIRST_PSEUDO_REGISTER, fixed_regs, flags, for_each_rtx(), frame_pointer_needed, FRAME_POINTER_REGNUM, free_EXPR_LIST_list(), free_EXPR_LIST_node(), GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, HARD_FRAME_POINTER_REGNUM, i, invalidate_mems_from_autoinc(), mark_used_reg(), MEM, MEM_VOLATILE_P, next, NULL_RTX, optimize, PATTERN, PC, prev, PROP_AUTOINC, PROP_SCAN_DEAD_STORES, REG, REG_BYTES, REGNO, reload_completed, RTX_CODE, SET, SET_DEST, SET_SRC, SUBREG_REG, subregs_of_mode, UNITS_PER_WORD, XEXP, XVECEXP, and XVECLEN.
Referenced by mark_used_dest_regs(), mark_used_regs(), and propagate_one_insn().
Definition at line 928 of file flow.c.
References current_function_calls_alloca, current_function_sp_is_unchanging, insn, INSN_P, NEXT_INSN, note_stores(), notice_stack_pointer_modification_1(), NULL, and PATTERN.
Referenced by life_analysis().
Definition at line 912 of file flow.c.
References current_function_sp_is_unchanging, GET_CODE, GET_RTX_CLASS, MEM, stack_pointer_rtx, and XEXP.
Referenced by notice_stack_pointer_modification().
| static void add_to_mem_set_list PARAMS | ( | (struct propagate_block_info *, rtx) | ) | [static] |
Definition at line 77 of file cplus-dem.c.
| static void mark_set_1 PARAMS | ( | (struct propagate_block_info *, enum rtx_code, rtx, rtx, rtx, int) | ) | [static] |
| static int libcall_dead_p PARAMS | ( | (struct propagate_block_info *, rtx, rtx) | ) | [static] |
| static int insn_dead_p PARAMS | ( | (struct propagate_block_info *, rtx, int, rtx) | ) | [static] |
| static void verify_local_live_at_start PARAMS | ( | (regset, basic_block) | ) | [static] |
| static void verify_wide_reg PARAMS | ( | (int, basic_block) | ) | [static] |
| int lang_missing_noreturn_ok_p PARAMS | ( | (tree) | ) |
| int propagate_block | ( | basic_block | bb, | |
| regset | live, | |||
| regset | local_set, | |||
| regset | cond_local_set, | |||
| int | flags | |||
| ) |
Definition at line 2078 of file flow.c.
Referenced by calculate_global_regs_live(), dead_or_predicable(), rtl_split_block(), split_block(), and update_life_info().
Definition at line 1548 of file flow.c.
References delete_insn_and_edges(), find_reg_note(), GET_CODE, i, LABEL_NUSES, LABEL_PRESERVE_P, len, ndead, next, next_nonnote_insn(), NULL, NULL_RTX, PATTERN, REG_LABEL, XEXP, XVECEXP, and XVECLEN.
Referenced by propagate_one_insn().
Definition at line 1598 of file flow.c.
References before, delete_insn_chain_and_edges(), first, ndead, PREV_INSN, and XEXP.
Referenced by propagate_one_insn().
| rtx propagate_one_insn | ( | struct propagate_block_info * | pbi, | |
| rtx | insn | |||
| ) |
Definition at line 1612 of file flow.c.
Referenced by clear_regs_live_in_seq(), collect_pattern_seqs(), dead_or_predicable(), and propagate_block().
Definition at line 4279 of file flow.c.
References allocate_reg_life_data(), NULL, update_life_info(), and UPDATE_LIFE_LOCAL.
Referenced by reg_alloc(), and rest_of_compilation().
| int regno_clobbered_at_setjmp | ( | int | regno | ) |
Definition at line 2407 of file flow.c.
Referenced by setjmp_args_warning(), setjmp_vars_warning(), and uninitialized_vars_warning().
| int regno_uninitialized | ( | unsigned int | regno | ) |
Definition at line 2389 of file flow.c.
References ENTRY_BLOCK_PTR, FIRST_PSEUDO_REGISTER, fixed_regs, FUNCTION_ARG_REGNO_P, global_regs, n_basic_blocks, and REGNO_REG_SET_P.
Referenced by uninitialized_vars_warning().
Definition at line 1074 of file flow.c.
References SET_REGNO_REG_SET.
Referenced by calculate_global_regs_live().
| int update_life_info | ( | sbitmap | blocks, | |
| enum update_life_extent | extent, | |||
| int | prop_flags | |||
| ) |
Definition at line 633 of file flow.c.
Referenced by branch_target_load_optimize(), copyprop_hardreg_forward(), ia64_reorg(), life_analysis(), purge_all_dead_edges(), recompute_reg_usage(), regrename_optimize(), rest_of_compilation(), rest_of_handle_life(), rest_of_handle_partition_blocks(), rest_of_handle_reorder_blocks(), rest_of_handle_sms(), schedule_ebbs(), split_all_insns(), and update_life_info_in_dirty_blocks().
| int update_life_info_in_dirty_blocks | ( | enum update_life_extent | extent, | |
| int | prop_flags | |||
| ) |
Definition at line 776 of file flow.c.
Referenced by cleanup_cfg(), combine_instructions(), if_convert(), rest_of_handle_see(), and struct_equiv_init().
| static void verify_local_live_at_start | ( | regset | new_live_at_start, | |
| basic_block | bb | |||
| ) | [static] |
Definition at line 566 of file flow.c.
References abort, debug_bitmap_file(), dump_bb(), EXECUTE_IF_SET_IN_REG_SET, fprintf(), fputs(), basic_block_def::global_live_at_start, i, if(), basic_block_def::index, REG_SET_EQUAL_P, REGNO_REG_SET_P, reload_completed, rtl_dump_file, verify_wide_reg(), and XOR_REG_SET.
Referenced by update_life_info().
| static void verify_wide_reg | ( | int | regno, | |
| basic_block | bb | |||
| ) | [static] |
Definition at line 533 of file flow.c.
References abort, dump_bb(), basic_block_def::end, end, for_each_rtx(), fprintf(), basic_block_def::head, INSN_P, NEXT_INSN, PATTERN, r, rtl_dump_file, and verify_wide_reg_1().
Referenced by verify_local_live_at_start().
Definition at line 513 of file flow.c.
References BITS_PER_WORD, GET_CODE, GET_MODE, GET_MODE_BITSIZE, REG, REGNO, and x.
Referenced by verify_wide_reg().
HARD_REG_SET elim_reg_set [static] |
Definition at line 222 of file flow.c.
Referenced by df_hard_reg_init(), df_ref_record(), life_analysis(), and mark_used_reg().
| int flow2_completed |
Definition at line 188 of file flow.c.
Referenced by find_if_block(), rest_of_clean_state(), rest_of_compilation(), rest_of_handle_flow2(), split_1(), try_optimize_cfg(), and try_redirect_by_replacing_jump().
| int max_regno |
Definition at line 192 of file flow.c.
Referenced by allocate_reg_life_data(), build_web_parts_and_conflicts(), choose_reload_regs(), dead_or_predicable(), df_ri_alloc(), df_urec_local_compute(), dump_conflicts(), dump_flow_info(), dump_global_regs(), dump_local_alloc(), dump_regclass(), emit_colors(), expand_inline_function(), find_reg(), finish_spills(), global_alloc(), if_convert(), local_alloc(), make_accurate_live_analysis(), modify_reg_pav(), reg_alloc(), reload(), reload_as_needed(), renumbered_reg_set_to_hard_reg_set(), rest_of_compilation(), rest_of_handle_local_alloc(), rest_of_handle_old_regalloc(), rest_of_handle_sms(), setup_renumber(), setup_save_areas(), spill_hard_reg(), subst_reloads(), update_equiv_regs(), update_life_info(), and v850_reorg().
int ndead [static] |
Definition at line 290 of file flow.c.
Referenced by delete_trivially_dead_insns(), propagate_block_delete_insn(), propagate_block_delete_libcall(), and update_life_info().
Definition at line 196 of file flow.c.
Referenced by allocate_reg_info(), dump_flow_info(), and free_reg_info().
Definition at line 213 of file flow.c.
Referenced by global_alloc(), loop_optimize(), and move_movables().
| int regset_bytes |
| int regset_size |
1.5.6