gccint: Debug Information

1 
1 14.18 Variable Location Debug Information in RTL
1 ================================================
1 
1 Variable tracking relies on 'MEM_EXPR' and 'REG_EXPR' annotations to
1 determine what user variables memory and register references refer to.
1 
1  Variable tracking at assignments uses these notes only when they refer
1 to variables that live at fixed locations (e.g., addressable variables,
1 global non-automatic variables).  For variables whose location may vary,
1 it relies on the following types of notes.
1 
1 '(var_location:MODE VAR EXP STAT)'
1      Binds variable 'var', a tree, to value EXP, an RTL expression.  It
1      appears only in 'NOTE_INSN_VAR_LOCATION' and 'DEBUG_INSN's, with
1      slightly different meanings.  MODE, if present, represents the mode
1      of EXP, which is useful if it is a modeless expression.  STAT is
1      only meaningful in notes, indicating whether the variable is known
1      to be initialized or uninitialized.
1 
1 '(debug_expr:MODE DECL)'
1      Stands for the value bound to the 'DEBUG_EXPR_DECL' DECL, that
1      points back to it, within value expressions in 'VAR_LOCATION'
1      nodes.
1 
1 '(debug_implicit_ptr:MODE DECL)'
1      Stands for the location of a DECL that is no longer addressable.
1 
1 '(entry_value:MODE DECL)'
1      Stands for the value a DECL had at the entry point of the
1      containing function.
1 
1 '(debug_parameter_ref:MODE DECL)'
1      Refers to a parameter that was completely optimized out.
1 
1 '(debug_marker:MODE)'
1      Marks a program location.  With 'VOIDmode', it stands for the
1      beginning of a statement, a recommended inspection point logically
1      after all prior side effects, and before any subsequent side
1      effects.  With 'BLKmode', it indicates an inline entry point: the
1      lexical block encoded in the 'INSN_LOCATION' is the enclosing block
1      that encloses the inlined function.
1