### 12.6 Operands

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 `GIMPLE_CALL`.

The target of an assignment is usually a variable, but can also be a `MEM_REF` or a compound lvalue as described below.