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