Do we know the value of this operand at compile-time?
If we do then it may be possible to constant propagate (one case:
We also know it is also an ImmutableLiteral).
- true if a known compile-time value.
Can we replace every use of a variable 'v' that contains the value of this operand
with the operand itself? This takes importance when there are at least two uses
of 'v' within this scope.
Ex: v = [1,2,3]; x = v; y = v
In this case, we cannot replace the occurences of 'v' because we would then get
x = [1,2,3]; y = [1,2,3] which would then result in two different array objects
being constructed instead of a single one.
- true if it is safe to copy-propagate the operand.
Append the list of variables used in this operand to the input list -- force every operand
to implement this because a missing implementation can cause bad failures.