Next: <code>GIMPLE_EH_FILTER</code>, Previous: <code>GIMPLE_COND</code>, Up: Tuple specific accessors
GIMPLE_DEBUG
Build a
GIMPLE_DEBUG
statement withGIMPLE_DEBUG_BIND
ofsubcode
. The effect of this statement is to tell debug information generation machinery that the value of user variablevar
is given byvalue
at that point, and to remain with that value untilvar
runs out of scope, a dynamically-subsequent debug bind statement overrides the binding, or conflicting values reach a control flow merge point. Even if components of thevalue
expression change afterwards, the variable is supposed to retain the same value, though not necessarily the same location.It is expected that
var
be most often a tree for automatic user variables (VAR_DECL
orPARM_DECL
) that satisfy the requirements for gimple registers, but it may also be a tree for a scalarized component of a user variable (ARRAY_REF
,COMPONENT_REF
), or a debug temporary (DEBUG_EXPR_DECL
).As for
value
, it can be an arbitrary tree expression, but it is recommended that it be in a suitable form for a gimple assignmentRHS
. It is not expected that user variables that could appear asvar
ever appear invalue
, because in the latter we'd have theirSSA_NAME
s instead, but even if they were not in SSA form, user variables appearing invalue
are to be regarded as part of the executable code space, whereas those invar
are to be regarded as part of the source code space. There is no way to refer to the value bound to a user variable within avalue
expression.If
value
isGIMPLE_DEBUG_BIND_NOVALUE
, debug information generation machinery is informed that the variablevar
is unbound, i.e., that its value is indeterminate, which sometimes means it is really unavailable, and other times that the compiler could not keep track of it.Block and location information for the newly-created stmt are taken from
stmt
, if given.
Return the user variable var that is bound at
stmt
.
Return the value expression that is bound to a user variable at
stmt
.
Return a pointer to the value expression that is bound to a user variable at
stmt
.
Modify the user variable bound at
stmt
to var.
Modify the value bound to the user variable bound at
stmt
to value.