| GNU Compiler Collection (GCC) Internals: GIMPLE_DEBUG |
|---|
Next:
GIMPLE_EH_FILTER
, Previous:
GIMPLE_COND
, Up: Tuple specific accessors [Contents][Index]
GIMPLE_DEBUG
Build a GIMPLE_DEBUG statement with GIMPLE_DEBUG_BIND of
subcode. The effect of this statement is to tell debug
information generation machinery that the value of user variable
var is given by value at that point, and to remain with
that value until var 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 the value 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 or PARM_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 assignment
RHS. It is not expected that user variables that could appear
as var ever appear in value, because in the latter we’d
have their SSA_NAMEs instead, but even if they were not in SSA
form, user variables appearing in value are to be regarded as
part of the executable code space, whereas those in var 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 a value
expression.
If value is GIMPLE_DEBUG_BIND_NOVALUE, debug information
generation machinery is informed that the variable var 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.
Modify the value bound to the user variable bound at stmt so
that the variable becomes unbound.
Return TRUE if stmt binds a user variable to a value,
and FALSE if it unbinds the variable.
Next:
GIMPLE_EH_FILTER
, Previous:
GIMPLE_COND
, Up: Tuple specific accessors [Contents][Index]