In general, expressions in GIMPLE consist of an operation and the
appropriate number of simple operands; these operands must either be a
GIMPLE rvalue (is_gimple_val
), i.e. a constant or a register
variable. More complex operands are factored out into temporaries, so
that
a = b + c + d
becomes
T1 = b + c; a = T1 + d;
The same rule holds for arguments to a CALL_EXPR
.
The target of an assignment is usually a variable, but can also be an
INDIRECT_REF
or a compound lvalue as described below.