GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | dead_debug_global_entry |
struct | dead_debug_hash_descr |
struct | dead_debug_global |
struct | dead_debug_use |
struct | dead_debug_local |
Enumerations | |
enum | debug_temp_where { DEBUG_TEMP_BEFORE_WITH_REG = -1 , DEBUG_TEMP_BEFORE_WITH_VALUE = 0 , DEBUG_TEMP_AFTER_WITH_REG = 1 , DEBUG_TEMP_AFTER_WITH_REG_FORCE = 2 } |
Functions | |
void | dead_debug_global_init (struct dead_debug_global *, bitmap) |
void | dead_debug_global_finish (struct dead_debug_global *, bitmap) |
void | dead_debug_local_init (struct dead_debug_local *, bitmap, struct dead_debug_global *) |
void | dead_debug_local_finish (struct dead_debug_local *, bitmap) |
void | dead_debug_add (struct dead_debug_local *, df_ref, unsigned int) |
int | dead_debug_insert_temp (struct dead_debug_local *, unsigned int uregno, rtx_insn *insn, enum debug_temp_where) |
void | propagate_for_debug (rtx_insn *, rtx_insn *, rtx, rtx, basic_block) |
enum debug_temp_where |
|
extern |
Add USE to DEBUG, or substitute it right away if it's a pseudo in the global substitution list. USE must be a dead reference to UREGNO in a debug insn. Create a bitmap for DEBUG as needed.
References BITMAP_ALLOC, bitmap_set_bit, dead_debug_global_replace_temp(), debug, dead_debug_use::next, NULL, and dead_debug_use::use.
Referenced by dce_process_block(), df_note_bb_compute(), move_insn_for_shrink_wrap(), and word_dce_process_block().
|
extern |
Release GLOBAL->used unless it is the same as USED. Release the mapping hash table if it was initialized.
References BITMAP_FREE, dead_debug_global::htab, NULL, and dead_debug_global::used.
Referenced by fast_dce().
|
extern |
Initialize DEBUG to an empty list, and clear USED, if given.
References bitmap_clear(), debug, NULL, and rtx_def::used.
Referenced by fast_dce().
|
extern |
If UREGNO is referenced by any entry in DEBUG, emit a debug insn before or after INSN (depending on WHERE), that binds a (possibly global) debug temp to the widest-mode use of UREGNO, if WHERE is *_WITH_REG, or the value stored in UREGNO by INSN otherwise, and replace all uses of UREGNO in DEBUG with uses of the debug temp. INSN must be where UREGNO dies, if WHERE is *_BEFORE_*, or where it is set otherwise. Return the number of debug insns emitted.
References BITMAP_ALLOC, bitmap_bit_p, bitmap_clear_bit(), bitmap_set_bit, candidate(), cleanup_auto_inc_dec(), dead_debug_global_find(), dead_debug_reset_uses(), debug, DEBUG_EXPR_TREE_DECL, DEBUG_INSN_P, debug_lowpart_subreg(), DEBUG_TEMP_AFTER_WITH_REG, DEBUG_TEMP_AFTER_WITH_REG_FORCE, DEBUG_TEMP_BEFORE_WITH_VALUE, DF_REF_INSN, DF_REF_REAL_LOC, DF_REF_REGNO, dead_debug_global_entry::dtemp, emit_debug_insn_after(), emit_debug_insn_before(), gcc_checking_assert, gen_rtx_VAR_LOCATION(), GET_CODE, GET_MODE, GET_MODE_BITSIZE(), hard_regno_nregs(), INSN_UID(), INSN_VAR_LOCATION_LOC, make_debug_expr_from_rtl(), dead_debug_use::next, NULL, NULL_RTX, dead_debug_global_entry::reg, REG_NREGS, REG_P, REGNO, regno_reg_rtx, SET_DEST, SET_SRC, single_set(), subreg_lowpart_p(), SUBREG_REG, dead_debug_use::use, VAR_INIT_STATUS_INITIALIZED, and volatile_insn_p().
Referenced by dce_process_block(), dead_debug_promote_uses(), df_create_unused_note(), df_note_bb_compute(), df_set_unused_notes_for_mw(), move_insn_for_shrink_wrap(), and word_dce_process_block().
|
extern |
Reset all debug insns with pending uses. Release the bitmap in it, unless it is USED. USED must be the same bitmap passed to dead_debug_local_init.
References BITMAP_FREE, dead_debug_promote_uses(), dead_debug_reset_uses(), debug, df_insn_rescan(), DF_INSN_UID_SAFE_GET, EXECUTE_IF_SET_IN_BITMAP, and df_insn_info::insn.
Referenced by dce_process_block(), df_note_bb_compute(), prepare_shrink_wrap(), and word_dce_process_block().
|
extern |
Initialize DEBUG to an empty list, and clear USED, if given. Link back to GLOBAL, if given, and bring in used bits from it.
References BITMAP_ALLOC, bitmap_clear(), bitmap_copy(), debug, NULL, and dead_debug_global::used.
Referenced by dce_process_block(), df_note_bb_compute(), prepare_shrink_wrap(), and word_dce_process_block().
|
extern |
Replace all the occurrences of DEST with SRC in DEBUG_INSNs between INSN and LAST, not including INSN, but including LAST. Also stop at the end of THIS_BASIC_BLOCK.
References rtx_subst_pair::adjusted, BB_END, DEBUG_BIND_INSN_P, df_insn_rescan(), end(), gen_lowpart_for_debug(), rtl_hooks::gen_lowpart_no_emit, gen_rtx_UNKNOWN_VAR_LOC, rtx_subst_pair::insn, INSN_VAR_LOCATION_LOC, last, NEXT_INSN(), propagate_for_debug_subst(), simplify_replace_fn_rtx(), this_basic_block, rtx_subst_pair::to, and volatile_insn_p().
Referenced by attempt_change(), and try_combine().