On Dec 20, 2007, Ian Lance Taylor <[EMAIL PROTECTED]> wrote:

> It is technically feasible but problematic for other reasons.
>     i = i * m + ((i / j) + k) / n;
> On a two register machine like the x86 i will change several times
> during that calculation.

No.  The register used to hold its initial value will.  Keep in mind
the separation between user variables and implementation locations.
The user variable 'i' is only supposed to change when assignment
operation is performed, (even if only in a theoretical level), when
the final value of the RHS is available and stored in the location
then assigned to hold the value of variable 'i'.

Now, it is possible that the previous value of 'i' becomes unavailable
while the expression is evaluated.  Then, in order to represent this
correctly, we just have to note that 'i' is no longer available as
soon as all locations holding its original value are clobbered, and
that it's available again when its new location holds the assigned
value.

-- 
Alexandre Oliva         http://www.lsd.ic.unicamp.br/~oliva/
FSF Latin America Board Member         http://www.fsfla.org/
Red Hat Compiler Engineer   [EMAIL PROTECTED], gcc.gnu.org}
Free Software Evangelist  [EMAIL PROTECTED], gnu.org}

Reply via email to