GCC Middle and Back End API Reference
valtrack.h File Reference
This graph shows which files directly or indirectly include this file:

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)
 

Enumeration Type Documentation

◆ debug_temp_where

This type controls the behavior of dead_debug_insert_temp WRT
UREGNO and INSN.   
Enumerator
DEBUG_TEMP_BEFORE_WITH_REG 
DEBUG_TEMP_BEFORE_WITH_VALUE 
DEBUG_TEMP_AFTER_WITH_REG 
DEBUG_TEMP_AFTER_WITH_REG_FORCE 

Function Documentation

◆ dead_debug_add()

void dead_debug_add ( struct dead_debug_local * debug,
df_ref use,
unsigned int uregno )
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().

◆ dead_debug_global_finish()

void dead_debug_global_finish ( struct dead_debug_global * global,
bitmap used )
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().

◆ dead_debug_global_init()

void dead_debug_global_init ( struct dead_debug_global * debug,
bitmap used )
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().

◆ dead_debug_insert_temp()

int dead_debug_insert_temp ( struct dead_debug_local * debug,
unsigned int uregno,
rtx_insn * insn,
enum debug_temp_where where )
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().

◆ dead_debug_local_finish()

void dead_debug_local_finish ( struct dead_debug_local * debug,
bitmap used )
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().

◆ dead_debug_local_init()

void dead_debug_local_init ( struct dead_debug_local * debug,
bitmap used,
struct dead_debug_global * global )
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().

◆ propagate_for_debug()

void propagate_for_debug ( rtx_insn * insn,
rtx_insn * last,
rtx dest,
rtx src,
basic_block this_basic_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().