In the RTL SSA form, most reads or writes of a resource are
represented as a
rtl_ssa::access_infos are organized into the following
rtl_ssa::access_info | +-- rtl_ssa::use_info | +-- rtl_ssa::def_info | +-- rtl_ssa::clobber_info | +-- rtl_ssa::set_info | +-- rtl_ssa::phi_info
rtl_ssa::use_info represents a read or use of a resource and
rtl_ssa::def_info represents a write or definition of a resource.
As in the main RTL representation, there are two basic types of
definition: clobbers and sets. The difference is that a clobber
leaves the register with an unspecified value that cannot be used
or relied on by later instructions, while a set leaves the register
with a known value that later instructions could use if they wanted to.
rtl_ssa::clobber_info represents a clobber and
rtl_ssa::set_info represent a set.
rtl_ssa::use_info records which single
provides the value of the resource; this is null if the resource is
completely undefined at the point of use. Each
in turn records all the
rtl_ssa::use_infos that use its value.
If a value of a resource can come from multiple sources,
rtl_ssa::phi_info brings those multiple sources together
into a single definition (see RTL SSA Phi Nodes).
are call clobbers, which are generally represented separately.
See the comment above
rtl_ssa::insn_info for details.