Other jumps are expressed by either GOTO_EXPR
or RETURN_EXPR
.
The operand of a GOTO_EXPR
must be either a label or a variable
containing the address to jump to.
The operand of a RETURN_EXPR
is either NULL_TREE
,
RESULT_DECL
, or a MODIFY_EXPR
which sets the return value. It
would be nice to move the MODIFY_EXPR
into a separate statement, but the
special return semantics in expand_return
make that difficult. It may
still happen in the future, perhaps by moving most of that logic into
expand_assignment
.